Wednesday, January 30, 2008

Social RIAs will save lives

I heard an amazing story last night about the connection between a health and social interaction. Studies have found that being involved in any group of people might be the healthiest decision you can make on a daily basis - better than dieting or not smoking.

The person I heard speaking was quoting from the book Everybody's Normal Till You Meet Them by John Ortberg, where he sites two different medical studies linking health and community. Here's the excerpt:
"One of the most thorough research projects on relationships is called the Alameda County Study. Headed by a Harvard social scientist, it tracked the lives of 7,000 people over nine years. Researches found that the most isolated people were three times more likely to die than those with strong relational connections. People who had bad health habits (such as smoking, poor eating habits, obesity, or alcohol use) but strong social ties lived significantly longer than people had great health habits but were isolated. In other words, it is better to Twinkies with good friends than to eat your broccoli alone. Harvard researcher Robert Putnam notes that if belong to no groups but decide to join one, 'you cut your risk of dying over the next year in half.'

For another study, as reported in the Journal of the American Medical Association, 276 volunteers were infected with a virus that produces the common cold. The study found that people with strong emotional connections did four times better fighting off illness that those who were more isolated. These people were less susceptible to colds, had less virus, and produced significantly less mucous than relationally isolated subjects."
(from Everybody's Normal Till You Meet Them)

In an age of increasingly fractured social structures, omni-present online communities can provide the sense of belonging and connectedness that many of us have started to lose in our success-driven, work-intense, post-family, post-modern fragmented lives.

I'm talking about social networking, of course. Since business types realized the success of MySpace and Facebook, we've been desperately cramming social networking features into every web application we can think of, and many of the resulting "features" have left we-the-developers wondering whether any of this craze is really worth the effort. The answer is a clear yes, though we should certainly be more discerning with the way we implement them.

It's the fragmentation piece that's really getting to us. Even when we have communities, they're cut and spread across so many different geographical and online places that we still feel fractured. There's a sense of liberation in knowing your friends from group A will probably never hear about your common interests with group B, and there certainly needs to be a continued emphasis on personal privacy, but there's something very healthy and liberating about collapsing all of the various random mutations you've made of yourself into a single person and being that person 24/7.

I think Facebook has had a huge impact on reducing online fragmentation by encouraging people to be themselves. It's that single core feature of the application that keeps me interested and supportive despite the frustration of ignoring all the senseless message inviting me to become a zombie or a ninja or whatever and annoy my friends with spam. Facebook nailed social networking by focusing on simply creating online community and reducing the temptation to engage in the sort of anonymous jack-assery that most previous social forums have suffered from.

As we continue to build social RIAs, let's focus on helping our users engage in social communities in that kind of healthy way. Let's help reduce fragmentation by focusing on enhancing existing communities rather than creating totally new ones and focus our social features on things users really want rather than social networking for social networking's sake. I know that's a little preachy for a Wednesday, but these things are central to building good experiences.

Tuesday, January 29, 2008

Is Digg really a design pattern?

The Yahoo Design Patterns library sure seems to think it is.

According to Yahoo's own definition, "A pattern describes an optimal solution to a common problem within a specific context."

I guess here the "common problem" is, how can you get millions of users to come back to your site every day without having to create any of the content myself? Why, you implement the "vote to promote" pattern of course!!

If Digg's pattern is "vote to promote", what's Facebook's? The "indulge voyeurism" pattern? The "spam your friends" pattern?

Monday, January 28, 2008

Ted Patrick on Flex Performance and Minimalist Programming

I read a really good "intro" level article by Ted Patrick on performance in the flash player. I'm sure we've all read this stuff before, but it was a really good reminder for me, and the article is short.

Here are the best parts:

"The Flash Player uses a logical unit of work called a frame which consists of 2 phases which occur one after another in a loop:

1. Process ActionScript
2. Render Graphics
3. GOTO 1

After each of these phases is a buffer to handle delays ( say you render to much or loop over a ton of data ). When both of these phases have completed we call that a frame. Each SWF file you create has a framerate (frames/second) which represents the fastest rate that the Flash Player will loop over these phases. When Flash Player encounters delays in processing either phase it will elongate the time to process the frame and thus your framerate will slow but will never exceed the framerate set in the SWF file."

"Flex was built to handle application behavior in a minimalist fashion if used properly. I continue to see developers execute to much ActionScript on a single event and not think in terms of processing data across frames. Using events properly is a great place to start. Make sure you know how long and how often methods are being called from events."

Saturday, January 26, 2008

Forward Thinking: RIA predictions

I read Ted Patrick's 2008 RIA predictions a while ago and have been mulling over the future of RIA's ever since. Where is this technology going? How is it going to get there? I think Ted does a pretty good job talking about 2008, so I'm going to agree with him and look a bit farther into the future.

While I love the changes RIA technologies have made to our software experieinces in the last few years, I have to give the skeptics some credit. Flash has been around for a long time now, and applications developed for the web or enabled by the internet aren't exactly new either. That both of these have been lumped together under the title "RIA" and seen as something relatively novel in the past few years deserves some of the derision it's received on the web.

Yet the benefits of the things we call RIA technology are real and vast, and they're not going away any time soon. As the whole "user experience" and "usability" issue continues to influence and permeate web-society, the call for new interfaces and better ways of visualizing data is only going to get better established in the years to come.

So here's my prediction: by 2015 we'll all stop saying 'RIA'. The spectrum of different RIA's will be so vast and so deeply embedded in all of our software that it won't make sense to talk about a special class of applications that provide rich features and deal with the internet. Rich features will be in every interface you use, and accessibility to the internet, at least in the first world, so unlimited that all of our front-end applications will be, in the literal sense, RIA's. Software will require a new set of classifications and differentiators to talk about differences in interface development, if indeed any still exists.

Unfortunately, I don't predict flying cars until 2061, when all our food is cloned and HAL forces everyone to wear matching track suits.

Monday, January 21, 2008

EffectiveUI an OnMedia top 100 company

I'm not really sure what this means just quite yet, but EffectiveUI was recently selected as a top 100 company by Always On. Here's how they selected us:

"For the AlwaysOn Media 100 list, hundreds of private companies—spanning numerous sectors, all stages of corporate development, as well as the globe—were nominated. To make the final selection of companies that excel in AlwaysOn’s five primary evaluation criteria—innovation, market potential, commercialization, stakeholder value creation, and media attention or “buzz”—the panel drew on industry expertise from KPMG; Bridge Bank; Merrill Corporation; Manatt,Phelps & Philips; and AlwaysOn editors."

Apparently this is a big deal. I like it because I enjoy seeing our name on other people's websites. Oppressed laptops of the world take note: we were chosen for the "Technology Enablers" category. That's right people - if you have a technology, we'll enable it. We're like feminism, but for iPhones; William Wallace for your Web Apps. FREEEEEDOOOMMMM!!

The best part of this is that our fearless leader, Anthony L. Franco, will be on stage at the Always On OnMedia event in NYC next week presenting to some of the industry's best and brightest. Best of luck boss, and be sure to enjoy some great sushi after the conference - you've earned it.

Wednesday, January 16, 2008

Programmers are like bees...

One of the best and shortest articles (like 3 paragraphs) I've read on coding, development, programming, management and business in a really long time was sent to me today by Sean Christmann. Not surprisingly, it was written by Orson Scott Card of Ender's Game fame. Here's a snippet:

"Here's the secret that every successful software company is based on: You can domesticate programmers the way beekeepers tame bees. You can't exactly communicate with them, but you can get them to swarm in one place and when they're not looking, you can carry off the honey."

Scott forgot to mention that also like bees, most worker programmers are sterile.

Saturday, January 12, 2008

Adobe looking to over-productize

I read an article this morning announcing a new Adobe product code-named Bordeaux. Bordeaux is a tool that will allow graphic designers to make great Flash content without knowing Actionscript - it's like Thermo for Flash.

This strikes me as a little weird because I thought Flash WAS the graphic designer tool for making flash content. When did flash become a "developer" tool? And if it is, why does the AS console still feel like an afterthought?

It feels to me like Adobe's taking this whole "flash content for designers" idea a little too far, and needs to bunker down and consolidate. Rather than making two new products and charging us all another $500 a piece to use them, they should focus on consolidating their features into the existing tools. Flash should be the graphic design framework for Flash content, and Flex should be the developer framework.

Without this, Flex is quickly turning into Flash with a layout manager and a different developer environment. That just doesn't seem like a big enough deal to merit an entirely separate product to me. I'd rather see the entire Flex and Flash teams working to make a single great product than trying to play catch-up and maintain divergent streams of the AS3 code base.

Tuesday, January 8, 2008

Passing URL variables into your facebook application

As it turns out, passing url variables into your facebook application is pretty easy.

The link you add your application external to facebook is:

http://www.facebook.com/add.php?api_key=yourApiKeyGoesHere

You can find your api key on your application's settings in the "Developers" application. Go to "My Applications" and you should see it in the application's description. Note that this isn't the same as your application's id.

To pass variables on this string, just append "&next?var1=val1&var2=val2" etc.

I had to escape the '&' character in this string as %26.

This link will first send the user to the facebook homepage, where they'll be directed to login. After logging in they'll be given the option to add your application. If they do, they'll be directed to whatever you specified as the "post-add" url -- it's this page whose URL will be appended with whatever params you specified in the link.

Assuming your post-add page is a php page, you can then read the vars using a simple $_GET[varName];

Not difficult at all, but also not really documented in any easy to find place by Facebook themselves.

Monday, January 7, 2008

Flex and AIR User Group Pre-release Tour

From Adobe this morning:

"Flex 3 and AIR are getting close to launch and in preparation, the Adobe
Platform Evangelist team is traveling to select cities to show off the
great new features and some brand new demos.

Flex 3 is a feature-packed release, adding new UI components like the
advanced datagrid and improved CSS capabilities; powerful tooling
additions like refactoring; and extensive testing tools including memory
and performance profiling, plus the addition of the automated testing
framework to Flex Builder.

Adobe AIR is game-changing in so many ways, extending rich applications
to the desktop, enabling access to the local file system, system tray,
notifications and much more. Now you can write desktop applications
using the same skills that you've been already using to create great web
apps including both Flex and AJAX.

Don't miss out on the opportunity to see and hear about this highly
anticipated release of Flex 3 and AIR during this special pre-release
tour. Plus, in addition to giving away some one of a kind Flex/AIR
branded schwag, we will also be raffling off a copy of Flex Builder 3
Professional (pending availability) and a full commercial copy of CS3
Web Premium at this event!

Check out the comprehensive listing of dates at flex.org/tour to see if
the tour is coming to your city! "

Thursday, January 3, 2008

Cynergy rocks the Wiimote

This week Cynergy became the latest interactive company to develop something totally awesome with a Wiimote. As the video below shows, they've combined the wiimote with some reflective gloves to make a very realistic "minority report" interface that they demonstrate with some cool photo-viewing effects.



The whole thing was built in Silverlight, which probably made integration with the wiimote-sensitive backend pretty easy - much easier than when we did our wiimote game last summer. That's right kids - before the days of Johnny Lee, we wiimote-enthusiasts had to hack together our own Java libraries and connect them to flash through a socket connection API we called Artemis. And we walked to school up hill, both ways, in the snow. Ah, those were the days...



Anyway, I'm really excited to see Cynergy's interface in action. It's by far the coolest wiimote integration I've seen and I can't wait to see how it will affect the future of interfaces. I don't think it's out of the question to imagine the next mac book pro having specific IR sensitive modes for it's web cam and coming with a few of these sweet gloves. Who needs a touch screen?

Wednesday, January 2, 2008

Degrafa Beta released

A beta version of the declarative graphics language Degrafa was released recently to google code. Degrafa is cool because it provides an easy way to do things that are normally unnecessarily complicated in Flex like linear gradients, gradients around rounded strokes, repeating shapes, etc.

Degrafa doesn't allow you to do anything new in Flex - it just makes the things you already do easier. It adds some more complex building blocks to your current set, making programmatic graphics and skinning a far less painful task.

Degrafa is also a good example of a real working open source Flex project. A small team of really talented developers (including my co-worker Andy) from many different organizations got together and made this work in a really short time. A lot of the rest of us dream great dreams and gather small groups of like minded developers, but inevitably client work gets in the way of open source development and our projects fall by the wayside -- this didn't. Check it out.