Monday, December 22, 2008

Flex and Rails: The Book is Here!

It's been a long time coming, and a lot of hard work, and it's finally happening. Flex on Rails, Building Rich Internet Applications with Adobe Flex 3 and Rails 2 is up in final form on Safari and due to be released in paper form soon.

Daniel and I spent a lot of weekends and nights and cajoled and prodded each other for just slightly less than a year, and we're both proud of the results. I hope to hear some feedback soon so we can tell how it's being received, but we've been glad to do our part to bring these two communities together.

Friday, December 19, 2008

Setting Indeterminate Progress Bar in ListActivity

In Android it's fairly easy to set the indeterminate progress indicator of the current window spinning from an Activity while a thread is working or something. This code outlines it how to do it.

I figured it was that easy when I went to do it for a ListActivity, but it turns out there's a twist. For that feature request to work, you need to call setContentView, but ListActivities come with a default view already set, so setContentView never gets called. That means the indicator never gets requested and doesn't show up.

To get around that problem one way, just set a custom list view, as described here, and in onCreate call setContentView.

Just a quick PSA incase you thought I forgot about this blog.

Friday, August 22, 2008

Welcome John Wilker!

My company, EffectiveUI, made a really cool hire - one that I'm pretty excited about. John Wilker will be coming on board as our first Community Evangelist.

It's the first time we've attempted something like this, so we're making it up as we go, but I think it will benefit us by letting us take the time to show the work we've been doing, have a better vehicle for recruitment and collaboration, and encourage and give something back to the community.

One thing that we all want to make clear is that EffectiveUI isn't buying 360|Conferences, nor are we buying our way into free sponsorships or easy speaking opportunities. Tom and John will continue to run that venture separately, and we all have an interest in keeping them an objective third party. The value of 360|Flex, built on community, would go down if any one company in the community took over.

In any case, everyone's excited, and now we get to see what John can help us do.

Wednesday, August 20, 2008

See the Data, Be the Data at 360|Flex

Juan Sanchez and I just got done with what turned out to be a really fun presentation on Data Visualization at 360|Flex. We had code samples that we didn't get to, but hearing feedback it seems like people were fine with that and enjoyed the chat about theory a bit.

Here's the presentation:

See the Data, Be the Data
View SlideShare presentation or Upload your own. (tags: juan sanchez)

The code samples are up here - if you're not using git, you can still click the download link and get a tarball of the source code. Thanks to everyone who came to see the talk.


I noticed that this preso is up on AMP now, and as I watched it I noticed how I failed to answer the question about the 2D picture for 1D data in the olympics example. I talked about lying and all that stuff, but what I didn't get was that as long as the *area* of the circles showing the gold medals was in proportion, then the graph was true to the data. Sorry for being misleading, there, I was a little thrown by the question, but I should have be able to get it.

Flex on Rails at 360|Flex

My Flex and Rails presentation at 360 went really well, and thanks to everyone who came that early in the morning.

All the code can be found at Git-hub here

And the presentation can be found up here, or embedded right here:

Flex And Rails
View SlideShare presentation or Upload your own. (tags: flex 360)

Luckily the 360 Guys also had a sweet video set up which you can watch through Adobe Media Player. Ted Patrick has more here, since I'm not sure how to include the badge that links directly in just yet:

Again, thanks a lot for showing up and I hope the presentation was helpful.

Monday, August 11, 2008

DHH on the UIRC

I was fortunate to be able to take part in an interview with David Heinemeier Hansson on the User Interface Resource Center.

As always, David was on point about the ingredients of good software, both from a framework and an interface perspective.

Process is on my mind a lot these days: process for building great software, process for dealing with clients and features, and it's great to have a public figure like DHH to be able to point to, who's made the arguments again and again, and just has the rap down.

Great read, and some nice audio clips too.

Thursday, July 17, 2008

Use blank fixtures for Bj tables when testing with Bj

I have an integration test where I need to test a web process that starts a background process with Ara T Howard's awesomely named Bj plugin (Background Job - but never has overhearing talk about Rails testing cause so many funny looks and stifled laughs).

I found some great notes here: which show how to wait for a job to finish during a test.

One problem I ran into, though, was that I somehow had a bad job that got stuck in the testing database table, and that was messing up testing results because Bj would wake up during the test, see the old bad job, and resubmit it. It took a while to track that down.

I fixed it by simply putting blank fixtures in test/fixtures for each of the Bj tables: bj_config, bj_job, and bj_job_archive. That way Bj starts from a blank slate when each test starts. There's a Bj protip for you. Another one is to watch the Bj logs for the test environment.

Monday, July 14, 2008

360's coming, did you bring your coat?

So Tom and John have really been putting on the pressure to blog, so here I am! Finally blogging!

I'm going to be at 360 Flex in San Jose on August 17th (register at, and if you're new to that conference, you should definitely think about going. 360 is more fun than a lot of other conferences I've been to in the past because of the close-knit community and the effort that Tom and John put into making the event work smoothly and fun for everyone.

I'm going to be speaking about my perennial topic, Flex and Rails, this time with more focus on RubyAMF and getting things connected. I'm also lucky enough to be presenting on Data Visualization with Juan Sanchez of fame, a friend and colleague. We're going to try to put on a good show for you guys, so, we'll see you there right?

Sunday, July 13, 2008

UIRC scores Iron Man Interview

Ok, maybe not with Iron Man himself, but close. The User Interface Resource Center, (UIRC) which is sponsored by my company EffectiveUI, has a great interview up with Kent Seki, the designer in charge of visualizations and HUDs for the Iron Man movie.

Not only is this a great interview, but I like the way the UIRC is approaching talking about UIs. This interview and another one a little bird told me is coming up are some great cross-cutting looks into people who think hard about designing innovative interfaces.

Wednesday, June 25, 2008

Flex Needs Some New Thinking

Anyone who's used Ruby or another dynamic language (I suppose Python is good, but I can't stand the syntax and whitespace-nazism) and started to really grok it and what you can do with a dynamic language with a friendly syntax generally feels a resistance from deep down in their soul-area when they have to go back to Java-land or worse.

I feel less of that resistance when I switch from Ruby to ActionScript via Flex, but it's still there. Especially since I know that a lot of dynamic capabilities are available, but bad for performance and confusing to other developers expecting the more common approaches.

I happen to like Cairngorm just fine, although a lot of people complain about its red tape and preponderance of boilerplate code and I would be happy to use something less bloaty. I like PureMVC as well, but I don't find it to be any better than Cairngorm at what people usually complain about Cairngorm for. There's nothing wrong with Cairngorm that a code generator and Prana won't fix for me, but I'm a little set in my ways, nothing against PureMVC at all.

In fact any of the other frameworks that are popping up as alternatives to Cairngorm, PureMVC, or Roll-your-own, like Mate and Swiz are mostly just cutting down on clutter, but using the same ideas. There's merit to that, but I want to see what thinking like a Rubyist could do for us.

I'd like to try to learn from the dynamic language community and try some new thinking and new approaches to solving framework issues, and it's good to see others thinking about it too:

Jay Fields has got a lot of experience from the Rails and Rails testing world and has some great thoughts on testing in Flex and on Flex in general that resonate with me. I'm excited to see some favorable views on Flex from the Rails community and I hope it continues so we can get some new thinking, new techniques, and get that stuff recognized and incorporated in the Flex community.

Friday, May 30, 2008

AS3 Git Library

Scott Chacon, author of the Peepcode Git Internals pdf and of, has released an Actionscript library for traversing local Git trees. A very cool starting point to being able to build Git visualizations at least... and maybe if someone's crazy enough to do the transport stuff a whole Git client - we'll see.

Very cool - check it out.

How the heck did I not include a link?

AIR with Rails @ RailsConf

Thank you! to everyone that came to our talk today. It's a very hard balance to cover people who haven't heard of a technology to people who just want to hear one or two tips or tricks that get them to the next level all in a 4 hour talk with hands on code.

I think we did a fairly good job of covering the bases, and if you didn't hear something you were wanting to hear, let us know, here or over the channels we presented in the talk.

Once again, the slides and presentation examples are up on github at

Thanks also to everyone who stayed a little bit extra to hear about RubyAMF as well. You guys are awesome!

Saturday, May 24, 2008


RailsConf is coming up fast - next week in fact. If you're coming to the hands on tutorial part on Thursday (29th) come and see Daniel Wanja and I talk about Powering AIR Applications with Rails. We'll have information on the APIs, strategies for using AIR, and lots of sample code integrating Rails with AIR.

If you're not going to make the hands on portion, at least say hi if you run into me (my picture's on the session topic link above).

Wednesday, May 21, 2008

FlexManiacs Presentation

Thanks to everyone that attended my FlexManiacs talk on Flex and Rails. It went well I think, if a little rushed - there was a lot of material to get through.

I'm trying something out to see how it works, and putting all the presentation files and code up on my personal googlecode site.

Thanks again! Next? AIR at RailsConf, baby.

Wednesday, May 14, 2008

The Clash of the Devices

Look, in 8-10 years I want to be spending less time in front of the computer. "As we know it", I should have added. I hope it doesn't take that long either.

I want a small network of devices that are specialized for certain situations, with form factors to match and knowledge of each other. Maybe that means a lot of my data is in the cloud, maybe it doesn't - I don't care about that.

What I do care about is that a laptop costs a lot and is fragile, and a desktop ties me to my desk. Sometimes I need to sit at a desk, but the rest of the time I'd rather be pacing around thinking, collaborating with friends or co-workers on code or music or writing, or playing games that make me more active, but give me an immersive experience only a computer can provide (think of an FPS that's somehow tied to the geometry of your office or something like that - I don't know yet).

Anyhow, back in the now I want to see the shift starting, and I see it with iPhone and Android. Which should I throw my puny, insignificant weight behind?

The iPhone has a lot going for it. That's an understatement. The device is beautiful, the experience is something only Apple could devise, and the SDK sucks. I mean it. It's going to get a lot of app developers where they want to go - iPhonesville, but the ride won't be a fun one.

I'll never get excited about using Cocoa. It's an ugly, crufty language. Only that sweet, juicy iPhone carrot at the end of that uglystick is enough to even get me to try.

Not only does the language suck, the platform is locked down tight as a drum (admittedly only by the software agreement, AFAIK). Can I daemonize a task from my app? No. Can I wake my app up on a location or time based API event? No. Can I share data between different apps? No. Can I replace any of the default software with software I like better? No.

Android says yes to all of those things. It even says "yes, please can I help you with that would you like anything else, sir?".

And as someone who prefers dynamic, readable languages like Ruby, far be it from me to cry up the merits of Java, but compared to Cocoa it's freaking poetry. Not only that, but Android has A DECLARATIVE LAYOUT LANGUAGE!

That means I can build interfaces in a way that makes sense, not in programmatic code, and not in a silly drag and drop interface builder. I don't want to drag and drop. I want to say what I want in a human readable format. That's what Flex has right. It's a language for describing interfaces. It's the best language for describing interfaces. Android's is subpar. But it's better than interface builder, that's for sure.

Android has one thing against it, and it's big. It's not going to run on the iPhone. It may relegate it to the scrappy underdog ghetto smartphone SDK for a long time. It will probably stay the platform of geeks and hackers and open source advocates and people who wear suspenders and sport long santy clause beards. Unless some visionary device maker frees it and lets it soar. We're all counting on you, device makers.

What kind of apps will people make for these platforms? Well, Apple will force the experience into a very rigid, consistently good, calming, happy, user experience. That's mostly good.

Android will sport a bunch of crazy, ugly, hacky apps, just like Linux does. The user experience will be a mixed bag, because any old geek that comes 'long and cranks out a sweet app won't take the time to make it as clean as the iPhone SDK will force apps to be.

The big deal, and here's what gets me, is there will be way more innovation on the Android platform. Why? The open API, for one. The fact that Third Party Apps are first class citizens. The fact that I can publish and share data between apps - even apps that I didn't mean to publish and share with - by describing my data in a conducive manner. The fact that the software that ships with the Android platform is only a suggestion and I can tout my app as a replacement for it and have the other apps on the phone work with my software as if it were the original.

iPhone software quality will be compressed and consistently good. What you can do with third party apps will feel good, but be limited. With Android the lows will be lower and the highs will be higher. Hackers will discover new ways to do innovative things, and I want in on that.

*Sigh* I'll still be in line in June/July/Whenever for my iPhone 2.0 and try to make cool iPhone apps, though, just like the rest of you. You can't make me like it though. At least not as much as Android.

Saturday, May 10, 2008

User Interface Resource Center Goes Live

If you're interested in discussion and learning about better User Interfaces, you should check out the User Interface Resource Center, an initiative by EffectiveUI with some help from partners Adobe and Microsoft to build a community around UIs.

There are already some great articles up about the design and development of the eBay Desktop and discussion about designers and developers working together.

Read up, and then get involved!

Friday, April 4, 2008

Come see a great panel at the Web 2.0 Expo

Well, tomorrow, the wife and kid and I are off to Italy, and while I'm not looking forward to the day spanning, multi leg, long flight with a 1.5 year old, I know I'll dig it when I get there.

Right after I get back I'm off to the Web 2.0 Expo in San Francisco. I'm going to be hosting an all star panel that I know you're going to want to see, titled "Failing Fast: Get Your App out of the Lab and Into the Arena". Sitting on the panel is Randy Reiland from the Discovery Channel, Scott Green from Google's SketchUp, Ryan Stewart from Adobe, ZDNet, and The Internet, and last but not least, Alan Lewis from eBay, of eBay Desktop fame.

We've got some great topics to discuss in the general area of how to actually pull off an open process where users are involved in the direction of software you build. What does that mean for brand? How can you sell that process externally and internally? and more. Come see them in action and bring your questions. It's going to be a great panel.

Friday, February 15, 2008

EffectiveUI Releases Discovery Earth Live

Last week Discovery Earth Live, built by co-workers and friends at EffectiveUI. There's a better write up at

Anyhow aside from being fun to play with - this is the funnest globe experience I've seen online - this application has the potential to be a nice little educational application. Here's a 'story' I created showing the all the man-made lights on the globe overlayed with yesterday's Nitrogen Dioxide emissions. Of course coincidence doesn't indicate correlation, I just thought they looked cool together. However that fun little exploration experience could trigger some interesting questions and, I'm sure, fuel some heated discussions. Paging Mr. Gore....

Here's the story I created:
You must have the Adobe Flash player installed to see this app. Please download flash here.

Of course, the widget embedded there is fun to play with, but all the 3D gee gaws don't mean a thing if you don't have something useful backing it up. The data is the king here. This is an object lesson to anyone who builds interfaces and experiences. Make things as flashy as you like, but if you don't offer my anything besides a quick deversion, I have no reason to keep using your application.

Hopefully Discovery will keep feeding this application with the data that allows us to explore and discover relationships between events, not just an excuse to play a quick game of "As the world turns".

Tuesday, January 29, 2008

RailsConf Baby!

I have the official word, Daniel Wanja and I are presenting a tutorial at RailsConf 2008. This is as exciting for me as speaking at MAX - two great technologies that I love to work with, and I get to help cross pollinate them. I'm really grateful for the privilege.

Here's the information:

Watch here for more information.

Monday, January 28, 2008

ScaleNine's Juan Sanchez joins the EffectiveUI team

I'm really excited to say that Juan Sanchez, whom you may know from, has joined the EffectiveUI team.

Not only does he bring a great design sensibility to the team, but he's also one of the Prime Movers behind Degrafa, which is a really exciting project.

I don't know what the heck posessed him to move to Denver, but it's going to be great to have him around the office and he'll a valuable addition to the EffectiveUI User Experience team.

Tuesday, January 22, 2008

Speaking at WebManiacs in DC

I was invited to speak at the WebManiacs conference in May. I'll be speaking on Flex with Rails, similar to my talk at MAX, but with more meat and more RubyAMF.

Here are some details from the site:

The WebManiacs 2008 conference schedule has been finalized and registration is open. Early bird pricing ends Jan 31. Consisting of a two-day ColdFusion conference ("CFManiacs") coupled with a three-day Flex conference (FlexManiacs), hosting over 70 speakers and 130 distinct topics (some of which are hands-on), WebManiacs promises to have the most comprehensive coverage of Flex, AIR, and ColdFusion at the lowest price. Seating is limited, so folks should register early in order to get into the more popular sessions.

Monday, January 21, 2008

SEO with Flash

One of the classic protests to Flash on the web is SEO. Some of that new content I was talking about on InsideRIA is already here, an example of which is a great rundown of SEO with Flash using Adobe's SDK by Andre Charland.

Have a look at it here, and have your answer ready next time the Slashdotters start hatein'

O'Reilly's new RIA Destination

O'Reilly has released a new site devoted to all aspects of RIA design and development at InsideRIA. The site is centered around blog posts and articles from a panel of experts, headed by Rich Tretola and Andre Charland.

The first content up today is mostly hello world and introductory messages, but make sure you RSS it, because there should be some great stuff up there consistently.

Of course I have an interest in mentioning it since for the next while a forthcoming O'Reilly Shortcut I've authored is going to be serialized there. Here's the first installment. I believe there are 20 installments, so watch that space, and this one, for more updates.