Wednesday, December 17, 2008

MAX slides posted to Slideshare, embedded here

Slides from my presentation at MAX titled "A Deep Dive Into the Flex 3 Framework" are available up on slideshare:

Flex3 Deep Dive Final
View SlideShare presentation or Upload your own. (tags: flex adobe)

We got great reception and generally good reviews for this presentation, but some people were underwhelmed. Some thought that the "deep dive" didn't dive quite as deeply as they would have liked, and others thought the title was misleading. I agree with you on both accounts. :)

Matt Chotin actually picked the title and by the time we put the talk together it was too late to change it. A better title might have been "Flex 3 Junk Drawer: something things you never knew about classes you use all the time."

Balancing the depth of a talk like this is difficult. We needed to give some "intro" level discussion for people who are new to Flex, but we also wanted to dive "deep" into some topics people hadn't learned before. In the end, I really wish I would've had time to dive deeper into the style manager, but I thought Brad's presentation of Collections and Binding were both really good. It's difficult to go too deep into the SystemManager, since it's not a class many people interact with. I was hoping that information on how it works (particularly the section on the structure of the Flex-produced swf file) would be helpful all by itself, since it's a very interesting topic that most developers get away with never touching.

In our section on Data Binding we mentioned a talk given by Michael Labriola at 360 Flex San Jose. Michael also has those slides on slideshare, but I thought it more appropriate to link you to his post on the Digital Primates blog rather than embedding them myself. This is by far the best discussion I've ever heard on Binding, and I'd encourage every one, even those who consider themselves experts in Flex, to take a look.

All in all, I thought the MAX talk went pretty well. 60 minutes is a pretty short time to co-present something as blended as this talk, and I think we provided value to our attendees. If you attended and have more feedback I'd love to hear it, or if you've just checked out the slides and have questions or feedback, please let me know. I want to know how to make these talks better! rj dot owen at

Saturday, December 13, 2008

Keep It Simple, CNet

CNet's Don Reisinger completely misses the point.  It's specifically the LACK of all these additional features that makes Twitter popular.  Same goes for Facebook.  I don't WANT a social networking tool that specifically enables authors to upload their work.  Have they ever seen a blog?

Friday, December 5, 2008

Spore's DRM backfires, makes it most downloaded game of the year

TechDirt is reporting that Spore's insanely draconian DRM, much the bane of every video-gamer interested in the game, has completely backfired and made the game the most downloaded (the hacked version) this year despite being out only a few months.

When you look at the issue from a customer experience perspective, the DRM controversy is a no-brainer, and DRM loses.  DRM provides absolutely no value to customers - only pain.  Probably more than any other medium, video games are successful only when they create good and immersive experiences.  Furthermore, gamers are probably one of the more passionate demographics out there - they know they know what a good gaming experience looks like, and they get passionately involved in them.  

Starting players off with a frustrating registration process and then subjecting them to the restraints of a silly DRM system is a pretty good recipe for pissing people off, and in this case EA's customers have made their frustration loudly known.  Some paying customers have downloaded the hacked version to avoid the DRM, and a few and even filed a class action lawsuit against EA.  Sony had similar problems back when it published music CD's with rootkits, but they've since recanted - hopefully EA will see the benefit of good customer service and quit this sort of nonsense.  

Until they do, I won't be buying any EA games.  Companies like EA (and on a larger scale, the entire entertainment industry) need to hear loud and clear that we won't put up with this.  Every part of the user experience matters, and those that unnecessarily subject we-the-customers to this degree of frustration should be shunned like the plague.

Wednesday, December 3, 2008

WWII as an RTS

This is just about the funniest thing I've seen in a while - WWII as an RTS game:

Here's a sample:
*Roosevelt has joined the game.*
*Stalin has joined the game.*
*deGaulle has joined the game.*
Roosevelt: hey sup
T0J0: y0
Stalin: hi
Churchill: hi
Hitler[AoE]: cool, i start with panzer tanks!
paTTon: lol more like panzy tanks
T0JO: lol
Roosevelt: o this fuckin sucks i got a depression!

And it goes on from there. :)

Thursday, November 20, 2008

10 reasons I hate CafePress

In no particular order....

10. Their usage policies are vague and arbitrarily enforced.  Campaign materials for both candidates were featured on the home page, but technically anything featuring the likeness of a celebrity is in violation.

9. Their web interface is poorly designed, and requires far too many page refreshes for the world of web 2.0 to deal with.

8. They don't let you see records of sales for periods less than 3 months.

7. If you make less than $25 on your account, they never pay you

6. There's no easy way to change the design on all of your products at once; you have to do it for each individually.  Want to resize that image on the 20 different types of shirts you sell?  Better block off an hour.

5. The ability to design shirts is ridiculously constrained.  You can upload small images that will be displayed in small areas on the front and back only.

4. It's really expensive.  $12 for a plain white t-shirt.  You only get a percentage of your mark-up.

3. Their customer service is frustrating.  When one of your images gets blocked, you receive a completely un-informative form email informing you of the block without telling you why.  It's up to you to guess and then reply with reasons they should turn your account back on.

2. They require your social security number "for tax purposes" when it's likely they'll never send you a check.

1. and are easier to remember.  It's weak, but I needed a 10th.

Tuesday, November 11, 2008

Watch Scott Adam's draw Dilbert

A cool insight into the way technology has innovated drawing comics.  Scott uses Photoshop and a really cool drawing touch screen.

The video is on Amazon, who of course doesn't let me embed it.  You have to visit the link so they can try to sell you the new Dilbert book. :)

Friday, November 7, 2008

Adobe ADC email FAIL

Like the rest of you in the Adobe Developer Community, I got this email this morning:

"Dear RJ,

introNetworks has sent you an introMail regarding: IMPORTANT MESSAGE

Please log in here <>  to retrieve your messages.


The Adobe Developer Connection team"

SPOILER ALERT: The special message was this:


Please note that as of November 10, 2008 the Adobe Developer Connection introNetworks application will no longer be available.  Be sure to copy any important content or contacts you want to save prior to that date.

If you have any questions or concerns email Edward Sullivan at

Why the hell did I have to log in to your system for that?  Why couldn't you just email me that important message in the first place?  There's nothing remotely important or secret about it.

Making people login, remember passwords, etc. unnecessarily is a huge user-experience FAIL.  Most likely the reason you're canceling the ADC is that none of us have logged in since MAX last year.

Tuesday, October 21, 2008

MAX 2008 game: Rescue Princess Chotin!

Near the end of this past summer, our intern Scott had very little to do and wanted to learn some Actionscript.  He'd been here all of four weeks, hired on to help do some last minute HR and pre-screen interview candidates.  We came up with a project that had very few requirements:

1.) Make a game,
2.) featuring the FlexBot,
3.) that somehow involves Matt Chotin.

Scott really exceeded our expectations.  First, he de-compiled the root swf to get a real animation of the FlexBot walking back and forth, which is no small task for someone with just about zero Flash experience going into the project.  Then he coded up a simple game where the 'bot can shoot lightning (press "shift"), fight "bugs", and ultimately take on a deranged version of the PhotoShop Penguin who's taken "Princess" Matt Chotin hostage for undisclosed reasons.

It's pretty great - click the image above to go give it a spin.

Wednesday, September 17, 2008

Our 360 Flex Presentation is online!

Here you go!  

Thanks to Ted Patrick for getting this up and posting it on his blog.  I've been watching the 360 Flex RSS feed on Adobe Media Player for weeks now and never saw it, but Ted has it posted.  Enjoy, and please give us your feedback!

I've posted the slides on SlideShare here.  Email me at rj {dot} owen at if you want the originals to use for yourself.  Please feel free to use these at user groups, conferences, or to impress attractive members of the opposite sex.

Saturday, September 13, 2008

Microsoft Surface in the house

I'm happy to announce today that our embargo on surface blogging has been dropped, and I can announce that we upgraded our standard coffee table to a Microsoft Surface about two months ago and have started developing some basic applications for it.

The surface comes loaded with some pretty basic applications to start - a small keyboard, some applications to demo its ability to display, resize, and manipulate photos, four-way pong, a few basic test apps showing the types of information it can process, and a water simulation that ripples when touched.

My reactions thus far have been pretty mixed.  On the one hand, nothing about the surface feels sleek, elegant, or in any way portable - it's huge and heavy - but it's alpha technology at this point and meant to be a table, so all of that should be forgiven.  It uses a camera to detect multi-touch (as opposed to pressure or heat in other devices), which has some real benefits: it's able to detect and react to many objects other than the human hand.  While the test applications aren't anything very impressive, they're fun and so intuitive that the technology is invisible, and that's what good user experience is all about.

Another thing that's worth mentioning is how helpful Microsoft has been in learning to program for the Surface.  We identified a few employees really interested in doing R&D work on the surface, and Microsoft did a lot to bring them up to speed, including conducting a special training session for them in Redmond.  Say what you will about office or Windows - Microsoft knows how to treat developers.

I'm pretty excited to see what our team comes up with for the surface.  Interfaces like this are going to be everywhere in the not-too-distant future, and it's exciting to be working with some of that technology now.

If you're in Denver and interested, stop by our office sometime and check it out.

Tuesday, September 9, 2008

Apple did what?

For a company who's touted as having nailed user experience through simplicity, Apple's new set of iPod features are very confusing.  Here's a list of things we never wanted in our iPod, and the exclusion of which made the iPod so successful during it's early days:

- voice recording on the Nano
- 10 different colors to choose from
- "Shake to Shuffle"
- lots and lots of different price points

The voice recording is specifically weird.  Apple's been praised by numerous analysts specifically for NOT including that feature.  

The most recent place I read about this was in Subject to Change - Adaptive Path's book / video on building user experience design into your company's process and culture.  The iPod and iPhone are case studies in simplicity - in being late to market, and beating your competition by offering fewer features in better integrated systems.

I guess Apple's moved out of the "user experience" stage into the "repeat buyer" stage - they've come to dominate the market, and now they need a new gimmick to get all of their existing iPod customers to buy another.  I'm sorry, Steve - the new colors are cool and all, but at the end of the day the features I really care about haven't changed.  I don't need another one.

Friday, August 22, 2008

John Wilker joins EffectiveUI!

I'm happy to welcome John Wilker (of 360Flex fame) to EffectiveUI.  John made the announcement this morning on his blog and is going to be something called a "Community Evangelist."  Juan Sanchez is reportedly working on his tracts right now.

John's going to bring a lot to solidifying the community events that EffectiveUI is involved in.  A lot of us are doing a lot of independent and disorganized work to help broaden the RIA market, educate the Flex community, and promote the applications EffectiveUI builds and the brands we work with.  John's going to bring some much-needed focus to that, and I'm really excited to see what happens.

Welcome, John!

Friday, August 15, 2008

Using Photographs to Enhance Video

Really amazing video about a new video-enhancement technique using still photographs.  Thanks to Zach Pinter for sending this out:

Tuesday, August 5, 2008

What the heck, Aurora?

Ryan Stewart:
"Aurora is a new “inspire” concept by Adaptive Path and Mozilla to give people a look at what the browser looks like in the future. It’s awesome. The user interface is great, it has lots of important visual queues, and it enables real time collaboration and user generated content."

Wow, Ryan.  Awesome?  Really? I couldn't disagree with you more on this.  I'm really surprised this came from Adaptive Path - I really expect a little more from those guys. 

  • using the Z-axis for time
  • blurring the online/offline aspects and moving online content to the desktop 
  •  Holy clutter Batman! This is simply not a well organized interface. With things moving around and being hidden and lots of weird symbols to memorize (that petal-of-dots interface makes zero sense), it looks like it's set up for a very awkward and confusing user experience.  ORGANIZE my data - show me more files in a more organized way.  The last thing I want is a dock on every side of my screen and a giant cloud of content on my desktop.
  • What's with that giant arm thing she's holding? There aren't any interactions she does that benefit from the huge peripheral.  I think there's huge untapped potential in new interfaces and peripherals to power them.  This simply doesn't cut it - it's a step backwards from my mouse and keyboard.
  • What's with all those annoying sounds? There's a reason we stopped doing those back in 1995 - they're horribly distracting.  The last thing I want when I click something is for it to yell back, in some insanely happy voice, "HI! THANKS FOR CLICKING ME! LET'S PLAY!"  Sounds should be used quite sparingly, and when they are, they should be as short and simple as possible.  The quiet mouse "click" is about as intense as most of us can handle.
  • Real-time collaboration is really distracting. The last thing I need is a bunch of people trying to voice chat me all day. IM and email are great because they're passive communication - we don't need to collaborate on everything all the time.  If you want to enhance the way we collaborate and communicate, try organizing and consolidating all our passive communication forms into a more centralized hub.
  • Why the heck would you demonstrate your awesome next-gen design ideas in a video featuring farmers arguing about rainfall?
In conclusion, please don't make me use that thing.

Sunday, July 20, 2008

Maikel Sibbald Joins EffectiveUI

This announcement is long overdue.  About a month ago, one of the most talented underground 3d Flex developers I've ever seen joined EffectiveUI.  His name is Maikel Sibbald, and he runs the popular blog.  If the URL didn't give it away, Maikel lives in the Netherlands, where he has two sons and a lot of tatoos, but is currently visiting Denver.

Maikel's hiring a EffectiveUI is a funny story that speaks to the power of taking initiative.  Maikel's a proficient Away3D programmer, and after seeing some of the stuff we did for Discovery Earth Live he decided to copy it's globe.  We discovered Maikel because of the copy, started talking, and the rest is history.  The motto of Maikel's story is simple: if you want to get a cool job at a sweet RIA company, copy some of their work.

Maikel joins a few other EffectiveUI Europe team members, including his fellow degrafa-contributor Jason Hawryluk, who lives in France.  On behalf of everyone, welcome to the team, and sorry I didn't blog about you a month ago. :)

Friday, July 18, 2008

ebay desktop hits 1 million downloads!

Today it was announced that eBay desktop reached 1 million downloads.  Mike Potter from Adobe, who had the initial idea for the application and got us involved, wrote a great summary of it on his blog, which I've reprinted here:

"Earlier this week the eBay desktop was downloaded for the 1 millionth time. That's a great accomplishment for one of the first AIR apps that's been developed.

That application was originally built by a summer intern of mine, Charles Bihis, who is now working at Adobe in Seattle. He developed the initial AS 3 APIs and a very earlly alpha version of eBay Desktop. The team at effectiveUI took the project on after a conversation I had with them in a bus in San Francisco after the first Adobe component developer summit run by Ted Patrick. They're the ones who have made it look so great and added most of the functionality that it has today.

Congrats Alan on the great success. The project would be dead without your great support."

What a great testament to the success of AIR and the power of user experience.  eBay invested a lot of time, effort and money in user testing and getting user feedback, and as a result it continues to be one of the most successful applications I've ever been a part of.  Congrats to eBay for investing in their users!

Monday, July 14, 2008

360 Flex - closing fast

Title: I'm going to be at 360|Flex San Jose 2008, In August. You should be too!
Body: I'll be speaking at 360|Flex! You should be attending so we can hang out! Tom and John are cool too! Register now!
Link for "Register now":

Friday, July 11, 2008

360Flex frags me

John Wilker and Tom Ortega caught up with me on XBox live, where it seems I dual-wield a nine-barreled shot-gun and the Sword Of Ultimate Truth.  Check out the hilarious interview John and Tom put together, and then go register for 360Flex.

Wednesday, July 2, 2008

EffectiveUI and Discovery Channel win a Stevie

EffectiveUI and Discovery Channel won an Stevie Award for "best web, software or programming design" for Discovery Earth Live. The award was actually listed for Interface Design.

Congratulations to the entire design team who contributed to this project, including Patrick Hansen, Bobby Jamison, and Jeremy Gratson. Congratulations are also due to our development team, which consisted of Brad Umbaugh, Kevin Skrenes, and myself. 

Discovery Earth Live was a great example of the sort of designer/developer collobration I was talking about yesterday: our designers made some initial mock-ups, but the entire design changed several times during development. Design and Dev worked very closely to rapidly change the entire interface several times during the course of the project, and this award is a testament to the success of that method.

Congratulations also to the team at Discovery, including Andra Gregory, Lori Wark, Betty Chu and Randy Rieland, who brought the initial vision and contributed a wealth of great ideas to the process.  Discovery is a client who really knows exactly how to engage creative agencies and Discovery Earth Live's success is a testament to their hard work as well. 

Here's a video of Betty Chu from Discovery accepting the award:

Tuesday, July 1, 2008

Agile UX Development?

Jeff Patton has an amazing post up about how to get started adding Agile to UX Development practices.  Please ignore some of the more obvious typos, especially in the opening line. :)

Here at EffectiveUI, we've been trying for a while to work out our process. We started off with something that was very similar to the waterfall and have since gotten more agile, but it's still pretty undefined.  As we move towards more definition, a lot of us developers are pushing for less process and more software.  We believe that the only real metric for measuring and testing sofware ideas is software itself, and at times it sounds like what we're advocating is scraping the design process altogether.

We're not, and perhaps we get a little too excited sometimes.  Jeff's post is a great way to realistically approach Agile-like development with UX design in mind, and I highly recommend it for anyone in a similar situation.

The only real disagreement I have with Jeff's post is the strong distinction he makes between designers and developers.  Maybe that's necessary and appropriate in other fields, but I don't feel it has to be with RIA's, and I'm not the only one - this idea is months old and already agreed upon in our community.  I hate the idea of developing two time boxes behind.  I want to be involved in the design and involved in the feature validation.  I'm a part of this process too you know - not just the code monkey who builds whatever you geniuses think up. :)  He does go on to encourage a lot of collaboration, but I want to do more than just collaborate - I want to help design!

Lastly, this is what I think of the silly made up jargon word "ideate":

Saturday, June 14, 2008

The internet causes "staccato" attention spans?

Yesterday a friend sent me a fascinating article by Nicholas Carr of The Atlantic entitled, Is Google Making Us Stupid?  It's a great article that's definitely worth reading.  I think it brings up some good topics worth discussing, but Carr's insightful discussion is unfortunately lead astray by some common myths about the internet.  Here's my take on the article:

At first it seems he's saying we don't have the ability to process information.  All of his admittedly unscientific stories at the beginning are about an inability to process information, mostly focused on a reduced attention span.  While he's right that the internet is helping to reduce our attention span, the idea that this impedes our ability to process is total bullshit.  It's bullshit because the internet encourages us to respond - blogging, twitter, email, facebook - the entire sharing and commenting on content encourages us to process information.  Our short attention spans require that we pack every sentence of that response with information, and the need for brevity requires even more processing.  It's also bullshit because the study he sites focuses on research students.  No one likes spending time researching information they don't need, so with the ability to quickly search articles of course research students read less.  This highlights a failure of the academic institution's idea of "research" far more than any problem on the internet.  Lastly, it's bullshit because he flat out contradicts this later in the article, around the time when he gets to google.

The real problem with the way we think post-internet is something he barely touches on - it's our inability to remember details.  He's certainly right that the internet changes the way we think and makes us more like computers, and he hits the nail on the head when he calls us processing units.  The real problem here isn't just the internet either - it's the technology that's sprung up around it. Our technology, from our laptops to iphones, encourage us to forget details like names, places, addresses, phone numbers, and rely on our machines.  The availability of information storage and rapid retrieval encourages us to forget, but it actually makes us process BETTER.  This should be his point - not that we can't bother to really read any more, but that we remember so little of the information we're basing our lives around.

There are ways to work against this within the confines of the internet.  First, forcing ourselves to respond, even in a short blog article, encourages us to remember.  Second, keeping a healthy balance on information is essential.  Third, we limit our use of the features that make us forget - there are some numbers in my cell phone I always dial because I want to ensure that I'll remember them if I lose my phone.  I loved the author's point at the end - that we ought to be skeptical of our own skepticism - and loved and agreed with every point he made about the way we criticize technological progress.  This bit was really refreshing - I haven't heard a good criticism of criticism in an anti-internet article in...forever.

Whether the internet, techonology, and computers make our lives better is certainly something worth debating.  You all know where I stand on this issue - I love the internet and I love technology - but I'll admit that it has some detrimental effects on my life.  Case in point: right now, I'm reading and responding to this article in my living room.  It's dinner time, and my wife has interrupted me at least three times to ask me questions I have to stop reading / writing and think about.  It's annoying to me, but it's my fault.  If this laptop and the ability to communicate and process and retrieve information were bound to my study, or if conversations like this were limited to times when we were all together in real life, I'd certainly be a more focused, sane, and probably happier person.  But that's not really the internet's fault - that's mine.  I need to use this tool wisely, and know when and how to limit myself.

On that note, I look forward to your thoughts on the article. :)  Post 'em in the comments, if you please.

Tuesday, June 3, 2008

Announcing jobs @ effectiveui

Know someone with RIA designer or developer skillz?  Bubble or not, web 2.0 is blowing up right now, and we're looking for top talent to keep on top of the work.  Today we're happy to announce - a hip looking site that entrances, delights, and hopefully garners even more resumes than all these conferences we've been pimping ourselves at:

Whether you're already a skilled RIA'er looking to join up with some cutting-edge pros or just getting into the business and looking to grow, give the site a look and, well, you know, fax us your email address.

WebMonkey is back in business!

Many old web one-dot-oh developers will remember Webmonkey: an active resource for all things related to web programming and an essential part of our early web development education.  It featured tutorials on every web technology under the sun as well as news about things going on in the web development world.  The tutorials were in depth, accessible, and interesting, and the content was always fresh.

Unlike many other "how-to" sites, Webmonkey was fun.  It had style, class, and the tutorials had just enough pizzaz to keep you interested in learning things like CSS, complex table layouts, and sax vs. dom (ah, those were the days.)  Like many of you, I was an avid reader and big fan of Webmonkey, and was sorry to see it fall by the wayside sometime after the bubble's bursting.

Well friends, I have good news: the monkey is back in business.  Wired announced in their magazine last month that the site had been updated and revamped, and after cruising around a little I have to say it's looking good.  I'm excited to see Webmonkey's return, and you should be too.

Right now Webmonkey seems to be focused on the more standard, less-proprietary aspects of the web, be they Javascript or Rails.  Hopefully they'll embrace the Flash/Flex/AIR/Silverlight branches soon and get some content for us rich developers.

Wednesday, May 21, 2008

localToGlobal vs. contentToGlobal in Flex

If you hadn't heard, there are a set of functions in Flex called contentToGlobal and globalToContent that Sean Christmann and I discovered this afternoon doing some hacking.  If you're ever using globalToLocal or localToGlobal, you probably should be using the analagous "content" versions instead.  Here's why.

Let's say your application consists of two red boxes.  One of them is on your root or Application level stage, and the other is nested in a component who's x position is set to 5.  The Application level box is placed at x=10.  Let's say we want to make it so that both red boxes are at the same X position.  Since the box that contains the child is already 5 pixels from the left, we set our second red box's x to 5, combining for a total of 10.

Rather than doing these calculations by hand, Flex has a set of helpful methods that make it easy.  Traditionally I would do this using the "globalToLocal" and "localToGlobal" methods.  To calculate the X value using these methods we'd traditionally do something like this inside of our child container:

//get the application level red box's x coordinate
var box1_x : int = Application.application.box1.x;

//convert this x value into a global coordinate
var pt : Point = new Point(box1_x, 0);
var box1_global_x : int = Application.application.localToGlobal(pt).x;
//note: since box 1 is on the "global" stage, localToGlobal shouldn't do anything.
//I've just included it here for completeness.

//convert the global coordinate into our container's coordinate system
var pt2: Point = new Point(box1_global_x, 0);
var final_value : int = this.globalToLocal(pt2).x;

These five steps convert the box's x value into a global point and then back from global into our container's local coordinate system.  Setting box 2's x value to our "final_value" gives the desired result, as shown above.

The problems start showing up when your child's container uses a border.  Let's say we give our container a border thickness of 2.  If we run the code above to set our box's x position, we wind up with something like this:

Our second box renders displaced by a number of pixels equal to the border thickness from where we want it.

This is because Flex containers place their children inside a nested container called a "contentPane."  Content panes are separate containers that have their own coordinate systems - think of it as a box within a box.  In the outer box the component renders borders.  All children and their content are renderered in the inner box - the content box.  globalToLocal and localToGlobal calculations use the container's root coordinate system (the "outer box").  Since children are rendered inside of the content pane, globalToLocal type calculations really aren't "local" to these children.

The answer is to use contentToGlobal and globalToContent instead.  Replacing localToGlobal and globalToLocal in our previous example, the red box renders correctly, like this:

If you don't have any borders or padding then the two boxes line up and localToGlobal / globalToLocal works just fine, but if you do have them, these methods will fail you because they're based on the "outer box" coordinate system and not the content pane.

Friday, May 16, 2008

Intern Inside

We've got an intern starting monday.  I made this sweet logo for his laptop and thought I'd share with all the other great geek interns out there.

Wednesday, May 14, 2008

Flash Player 10 released

With Ryan Stewart hinting on Twitter about exciting news to come from Adobe tonight, I stayed up for a while and was rewarded to be one of the first to learn about the release of Flash Player 10.  I gave a full synopsis of it on InsideRIA so I won't repeat that here - check it out!

I can't get the PixelBender to work in Safari - anyone else have any luck?

Wednesday, April 30, 2008

Joined the Twitter Reformation

I joined twitter this week after DHH was singing it's praises.  Interestingly enough, he wasn't on twitter himself at the time but joined up two days later and had over 1,000 followers by Tuesday.

So far it's been good, but I can't help but feel like this is another social network that's going to dry out soon.  Robert Walton put it well:

"Almost all of my friends are on Twitter now, which has become the new Facebook, which has become the new Myspace, which has become the new.."

My thoughts exactly.  Facebook was great for a few months but I never go there anymore.  It's too diversified...I don't need all the updates, I don't need another mailbox to check, and I definitely don't need another IM client (if you ask me, whenever a website introduces their own IM system it's a clear sign it's jumped the shark.)  I couldn't stand myspace from the beginning. 

Twitter's boiled down feature set is all I want right now.  Twitter's really just a group chatroom where none of us are chatting with the same mix of people.  It's fun for today, but we'll see if it lasts.

Saturday, April 26, 2008

Friday, April 25, 2008

Hire Healthy People

The Illustrious DHH has a great post up on the 37Signals' blog about how he enjoys working with Family people that I really agree with, and not just because I'm now a family person myself.  The post really isn't about working with parents; it's about working with people who keep a healthy work-life balance.  Having immutable constraints on your time forces you to ignore the little details and get things done.

One of the things we ask in our interview process here at Effective UI is whether or not you're involved in any extra-curricular activities (having a family certain counts.)  Regardless of what those are, it shows us you're probably forced to keep a healthy perspective on work when you're doing other things as well.

Another good characteristic of people who live outside of work that DHH didn't mention is that they know how to commit.  If you're committed to volunteering or playing soccer or doing anything that requires regularly sacrificing your time, it's more likely that you'll commit to our company and be a more enjoyable person to work with.  Being committed means you're more likely to enjoy your time with us, more likely to get involved in fixing company processes, and more likely to care about what happens to the rest of us.  No one concerned with company culture wants to hire a mercenary.

TypeRacer: Fun, fun, fun.

There's a lot of talk these days about "user experience" - how can we create great experiences that drive business results? How can we tie people emotionally to our software? What kinds of interfaces do people like to use? What's the common denominator for the best applications out there?

These questions have many answers, and the inquiry is certainly worthwhile. But sometimes, I think, we get too hung up on the details. We worry so much about technology choices and whether or not we can implement drag-and-drop/mashups/social networking/slick animations/3D that we forget about something pretty simple. That's right, kids: we forget about fun.

Not TypeRacer, though. They didn't forget an ounce of the fun (full disclosure: I'm a sucker for typing games. I remember my seventh grade typing class, and the inexplicable drive I felt to conquer the terrible IIgs typing game we played all class, every class. Years later, I became hopelessly addicted to PopCap's TyperShark). Not since iSketch have I been so hooked on an online game.

TypeRacer is dead simple: type in your name, wait for the green light, and type a pre-defined sentence as fast as you possibly can. The faster you type, the faster your little VW Bug moves across the screen -- hopefully fast enough to beat all of the other players competing against you in the same heat. I found myself playing over and over again -- "this is really my last game, for real this time" -- loving the feeling of waxing the chumps puttering across the screen at 25wpm (no offense, of course), and losing my cool when I get beat after mistyping strange words like "ultraviolence".

But here's the beauty of it: it's crazy fun. And there's hardly anything to it. The technology? HTML and Javascript. That animation of the VW Bug moving across the screen? Just an image getting moved about 50px at a time. The login process? Just type your name, no password required. The spoils of victory? An ever-shifting leader board (on which I was excited to find myself competing against the revered Mr. Jamis Buck). The sentences you type? Repetitive at best.

But I'll tell you what, I can't stay away: there's nothing like a little head-to-head competition, a simple interface, and an assault on my pride to keep me coming back for more. Yeah, I'd love to be able to play against my friends, and the leader board could use a better way of tracking scores (I'm not exactly sure when scores seem to randomly drop off). But these are small quibbles with a great app.

So here it is: you don't need the latest technology. You don't need whiz-bang effects. You don't need crazy, exciting, innovative new features. What you need is a good idea, boiled down to its core, and a great, accessible, fully-realized implementation of that idea with as much of the complexity removed as possible. It doesn't matter what technology you choose (remember how they shot The Blair Witch Project on tiny little camcorders?); let the zealots have the religious wars while you make a great piece of software. Use what you know. Make something people have a lot of fun using, and you'll certainly be a success.

Wednesday, April 23, 2008

We're on The Flex Show!

Brad Umbaugh and I were interviewed on The Flex Show last week discussing our use of 3D in Discovery Earth Live. You can check out the full interview here if you're interested.

In the interview we discuss the nature of 3D interfaces, some things to think about when attempting 3D, and just barely scratch the surface on the differences between Papervision3D and Away3D. Kinda timely given Andrew's post on 3D just a few days ago.

Finding the "right" way to use rich innovative features like 3D is a topic I'm really passionate about. We didn't get into the usability aspects of it as much as I'd liked in the interview, but I'm hoping to do a panel at MAX or Web 2.0 NYC later this year and get more into it. Is that something you'd be interested in? Leave us a comment if you don't mind.

Wednesday, April 9, 2008

Want a job at Google?

Here's a posting I got from a friend today.  If you're interested, send me an email at rj [dot] owen [at] effectiveui [dot] com and I'll put you in touch.


Search Quality Associate (Webmaster Communications) - Mountain View  

Do you have a passion for Google and the Internet? Do you desire to help improve the quality of Google's search results while impacting millions of users on a daily basis?  
Google's Search Quality Evaluation team is recruiting enthusiastic, web-savvy individuals to work with new technologies in order to improve the quality of Google's core search product. With a focus in webmaster communications, you'll be responsible for maintaining external communication with web publishers while also focusing on search quality improvements. The ideal candidate will be detail-oriented, have strong analytical skills, and bring innovative ideas to improve access to relevant information on the web. Candidates will also be passionate about technology, be familiar with typical web practices such as managing a domain name as well as with Internet infrastructure, including WHOIS directories and Internet Protocol. 

  • Investigate designated domains and URLs and identify areas of concern and interest
  • Troubleshoot technical issues and collaborate with engineering teams to make large-scale search quality improvements
  • Establish and maintain proactive communication with external web publishers
  • Work on special projects and cross-functional initiatives within Google


  • BA/BS degree
  • 1-3 years related experience in an Internet company and with web research a plus
  • Fundamental understanding of HTML and JavaScript
  • Familiarity with typical web practices such as managing a domain name
  • Familiarity with internet infrastructure such as DNS, TCP/IP and WHOIS
  • Previous experience with a programming language such as Perl or Python a plus
  • Public speaking experience a plus
  • Blogging or online content editing samples a plus


Tuesday, April 8, 2008

re: HuddleChat

37Signals CEO Jason Fried's response to HuddleChat:

"We're flattered Google thinks Campfire is a great product.  We're just disappointed that they stooped so low to basically copy it feature for feature, layout for layout. We thought that would be beneath Google, but maybe its time to reevaluate what they stand for."

"Oh shit.  Google's giving something better away for free."

Copying Campfire "feature for feature, layout for layout" is about as complicated as copying a single text field, a single button, and big viewing area - it's not exactly patentable rocket science here.  Sorry, Jason, but there are good reasons most web companies don't charge for these insanely simple apps, and one of those is how easy it is to replace them.  

Lest you misunderstand, let me go on record as saying that, for the most part, I love 37Signals.  I love the simplicity of their applications and the perspective they bring to the web community on their blog.  I even think they have a right to be upset - if I sold burritos and someone opened a burrito shop next door that sold bigger burritos I'd be mad too.  But that's not unethical; that's competition.  When you boil a problem down to the basics and provide a very basic solution, it's pretty hard to compete without copying, at least in part.  Since problem boiling is 37Signals' bread and butter, they should be used to this by now.

What makes this response a that Jason and everyone at 37Signals are usually very forthright and very reasonable.  They're a little arrogant and sometimes silly, but this sort of smug posturing just seems out of character.

If HuddleChat manages to take any large set of users away from Campfire, it will only be because 37Signals failed to incorporate enough of the features their users requested and failed to make the application free, and that's not stealing - that's called innovation.

Apparently Jason's not the only one at 37Signals to get a little upset about HuddleChat.

Update:  Google killed HuddleChat last night, fearing the ill will of the development community.  I guess competing with 37S wasn't on their radar after all.

Tuesday, April 1, 2008

AIR + Linux = .....Lair? Airlix? whatever

After a long month of relaxation, I'm happy to announce that I'm back at working, heartily blogging again. For those of you who may be concerned, I was out on paternity leave and am happy to announce the birth of my daughter Quinn, who was born March 4th. She's already shown herself to be good at criticizing user interfaces, having run in to a few diapers and bottles that just didn't work the way they should. She made them pay, believe you me.

On to business!

Adobe announced recently that AIR will be released for Linux and has released a beta version on their beta site. My buddy Dave Meeker has a great analysis of what this means for the desktop on his blog, so I won't repeat it here. Check it out.

Second, I've been accepted as a regular blogger on - an O'Reilly blog about all things RIA. I'm very excited to join the team and will do my best to keep both blogs updated regularly. Today we had a ground breaking post talking about some new features in the next version of Silverlight that might cause Adobe some problems - check it out. ;)

Wednesday, February 27, 2008

Flex Optimization: beware bindable VO's

We ran into a situation today in an application processing a large data set and seeing some really exhorbenant parsing times on the Flex side.  We're transferring the data using AMF and it's still taking up to 5 times longer to parse the data than transfer it (500 ms to transfer, up to 4.5 seconds to parse it.  Yikes!)

Part of the problem is that someone made a key VO bindable.  The data set we're loading is about 5,000 objects in size.  Each object gets parsed in a method that makes reference to properties on this vo at least 6 different times in a while loop which can loop hundreds of times depending on the data point.

When the VO is bindable, this means 6 different method calls, since bindable objects have their public properties replaced with getter and setter methods to support binding.  Having these calls made from inside the while loop lead to roughly 1 million excess method calls in parsing the data alone.

There are other inefficiencies in our data parsing yet to be found, but removing the "bindable"
tag on this object lead to an immediate 30% increase in speed.  Removing the tag hasn't had any noticable effects so far.  

It's likely someone wanted to bind to a data provider before the data had been created and then used the data object itself as part of an MXML tag.  Even though the data will never be updated and thus doesn't really need to be bindable, FlexBuilder can't tell that and produces a warning message asking that the object be bindable.  Clearning up this tiny warning had disastrous results, though we didn't find them until now. :)

Since the VO itself is never updated in our application, there's no reason it ever should've been bindable.  If you did need a bindable VO there are several ways to avoid our problem still.  First, we could've cached the VO's values outside of our while loop, operated on them within the loop, and then updated afterwards if necessary.  Second, we could've listened for a more general "loaded" event on the entire collection rather than binding to something on the individual VO's themselves, since they should all update at more or less the same time.

Finding performance bugs like this is key to enhancing user experiences in Flex.  I'd heard all of the standard performance enhancements before (type your variables, don't nest for loops, etc.) but hadn't heard anyone mention anything about binding before, so this was sort of a revelation for me even though it probably should've been obvious.

If you're suffering from performance degradation and can't figure out why, look at your binding.  Fire up that brand new shiny profiler and see how many times your bindable methods are being called - I bet it's more than you'd think.

Monday, February 11, 2008

Discovery Earth Live: behind the scenes

Discovery Earth Live, an application we've been working on since early August '07, went officially live today. I say "officially" because it's been up on Discovery's site for a while now, and a few reporters (including Wired) broke the news early on Friday.

In summary, Earth Live is an application that allows users to view global data on a 3D surface. It's maintained and updated daily by Discovery, who provides content about climate issues directly from scientists and NASA and NOA (in the "featured stories" area) and allows users to make their own global "stories" with data sets compiled from the last 24 hours (in the "create a story" area.) Any story, whether featured or created, can then be shared on a users blog, myspace, facebook, etc. in a widgetized form. Here's an example of the widget with no layers, which is how I like it best:

You must have the Adobe Flash player installed to see this app. Please download flash here.

Earth Live was exciting to build and features some interesting technical hurdles. We wanted to incorporate an interface that was fun to use but still conveyed the data, and that was difficult because until about half way through the project the data itself wasn't well defined. I heard someone speaking at Max this summer say something that should be obvious: data comes first, interfaces second. Making an interface for data you don't have yet is always a risky thing. In this case I think we lucked out and the interface fits the data pretty darn well, but I still wish we'd seen it sooner.

We decided early on that the globe should be a real 3d object for a number of reasons. First, this was the way our sales guy pitched it to the client. His big idea was to mask a giant repeating flat map so that it APPEARED to be a real sphere - we in the development department were having none of that. If it was going to look like a globe, then by golly it was going to BE a globe. Second, our designers convinced us that 3d globes are just more fun to use. We'd used PaperVision3d on a few projects before and read about it's recently increased performance, so we decided to give it a go.

From the beginning Discovery had been interested in using this app to support their Earth Live blog, which tracks the adventures of scientists around the globe. We'd planned on building this feature out as clickable push-pins in the globe. The feature worked but with weird bugs around the edges in PaperVision. Though John Grden assures me this is not a bug, we made the switch to Away3D - a PaperVision spinoff project contriubted to by my buddy Peter Kapelyan - and everything was fine. Away 3D also gave us some increases in performance which were greatly appreciated.

We planned the application to display two kinds of data: flat image files and KML drawings. Flat image files were easy to do in PaperVision but the KML piece was more work. Brad Umbaugh, who did most of our globe development, spent about two weeks working on the KML piece, but in the end we decided it just didn't look right and so it's not being used. The functionality is in there, hoping and waiting for an eventual upgrade in version 2.0.

Somewhere around the beginning of October we started working with the real data and Discovery came to us with an exciting proposition: how about videos? In theory it worked, but in practice the performance sucked. It sucked bad - browser crashing, slow as molasses, 2 fps bad. Brad spent a few weeks tweaking it and with the help of some other EUI staff (Jim Cheng in particular) we came up with the following system:
  • All of our videos are embedded in swfs.
  • When we load a video into the app, we immediately strip all of it's frames out into raw image files during the first pass through the video.
  • In the second pass, we flatten those images with any other layers on the globe at that time (though Discovery isn't currently layering any images on their videos, the capability exists.)
  • After this, the globe updates it's wrapper material once every frame and it looks like a video. Performance is still rough on older machines, but it's decent on most and great on anything made in the last 3 years.
One really exciting part of the app was a frantic last-minute re-design. While at MAX, with our latest development deadline just two weeks out, we received info from Discovery that the app was going to need to be 200 pixels slimmer than we'd previously thought. Patrick Hansen and I sat in the back of our booth and quickly sketched out what later developed into the new design. Brad and developer Kevin Skrenes, who was responsible for more or less all of the UI that wasn't the globe, helped us massage it over the next week and Kevin bore the brunt of the re-development effort.

During the last month Kevin and Brad transitioned off and I worked bugs and updated the widget. I went through some hurdles learning the Facebook integration process, partially defined in a post here, and finally got it all working late last week. That's right - right before the deadline. You know how it goes. :)

All in all, this was a great project. Discovery is by far one of my favorite clients ever - they're amazingly enthusiastic and easy to work with. I also want to give major credit to Bobby Jamison and Jeremy Graston, who worked on things from the design angle, and Shannon Garret, who built all of our marketing materials including the Earth Live logo.

A final note to developers: the app currently throws a run time exception you might see in the debugger:

TypeError: Error #1034: Type Coercion failed: cannot convert to

This is an Adobe issue documented on their bug base here. I'd like to find the offending piece of code that dispatches the bug and catch it, but it's not a high priority now since it's only visible to users running the debug player -- non-developers will never see it. :)

Tuesday, February 5, 2008

Flex 'Super Tuesday' Map from BBC

The BBC has a map on their site displaying information about the "Super Tuesday" primary voting scheduled to take place today. It also has an interesting feature that will show the state by state election results for the Presidential race back to 1956.

My favorite things about the map are that it's extremely lean (~300k) and extremely simple.
It's minimally skinned and contains bare-bones functionality (with the exception of a weird button that removes half the navigation - what's the deal with that?) Most users really won't have any idea they're playing with Flash content. This app definitely could have been done in Ajax, but I bet it was a lot easier to code in Flex. All in all, it's a good example of Flash done "right" in a way that subtley enhances the normal BBC content without taking over.

Please don't call me a "devigner"...

because it's a silly term, and those unfamiliar with our space will likely think me the sort of fellow gifted in finding water with sticks.

Exhibit A:

No, Deseloper is not a better term.

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:

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 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.