ruby, Technology

Flex Remoting in Ruby? Easy Choice.

I’ve had a rocky relationship with Adobe Flex.  An awkward attempt to migrate an existing app to Flex caused several strong reactions and cost a good bit of developer goodwill.  The details of that decision are messy and irrelevant.  The experience sucked.

On the other hand, I could not have built the FeatureFrame technology without Flex.  There’s no simpler way to build a widgetized video player with embedded applications.  The same pains of horrible documentation, irrational design decisions, insidious bugs, and painful workarounds remain, but the things it makes easier pale in comparison to the obstacles of any other approach.

And of course in building a virtual world such as Elf Island, Flex is an obvious choice if you want to play it in the browser and build maintainable code (binary Flash files make a poor foundation for a sustainable product).

For most languages you might want to build a Flex app in, free, open options are available.  I had a recent need to prototype a solution that might also turn into a test fixture for our vendors to use in producing Flash apps, so Rails seemed the natural solution for simplicity of deployment and prototyping speed.

The main choices to support Flex Remoting calls in Ruby are RubyAMF and WebORB.

In trying to decide, I encountered a very useful comment in this thread:

"The biggest difference between what WEBorb provides and what RubyAMF(only
AMF alternative I am aware of) provides is workflow.  Weborb is a great
product written by guys who do java primarily.  So it follows the patterns
of having a Service layer that connects you to your application.

RubyAMF is written by a ruby developer."

Immediately, I know what my choice is.  WebORB is obviously the trap of over-architecture and suffering that pervades “correct” Java development.  A quick search on how to use RubyAMF (in a controller) confirmed my suspicions:

respond_to do |format|
format.html # index.rhtml
format.xml { render :xml => @people.to_xml }
format.amf { render :amf => @people }

When I see code like this and compare it to the WebORB or GraniteDS implementations, I just can’t imagine choosing those other paths.

Rails + RubyAMF is concise, clean and obvious in what it’s doing.  Yes, please.

Atlanta, Java, Technology

The Next Episode

Back in March, I reached a decision to leave WeTheCitizens and spend some time in a contract role with Premiere. At the time, I expected that a contract gig would let me spend less after-hours time thinking about the day job, and more time on side projects and other interests. It turns out that even as a contractor, I cared about what I was working on. I consider that a good thing, we built up a good team, cranked out some pretty cool software, met some awesome people – I truly enjoyed my time at Premiere. The challenge for me on contract, was balancing life with billing more hours. In some ways, having a dollar amount directly attached to each hour of your time helps you better value your time. In other ways, it’s easy to imagine how working just a few more hours that week can earn you a shiny new gadget.

In spite of that, I was able to hatch FeatureFrame during my off-hours. It did occupy much of my creativity, and the process of building a product prototype, a pitch for Startup Riot, filing a provisional patent, designing a logo and business cards, and creating an actual business entity has been exciting, challenging, and in a twisted sense, fun. Many thanks to my Twitter posse, who often functioned as my co-founder, providing feedback and helping with decisions where I needed more than just my opinion. No I do not have stock options for any of you. Some interesting FeatureFrame news may yet be around the corner. It is still an interest and a passion of mine, and it will live on, but it’s not quite ready to be my main job.

The other thing I suspected when I left WeTheCitizens was that there were some interesting opportunities out there that weren’t crossing my inbox either because they were being filled by recruiters we’d used at WeTheCitizens, or because people generally seem to have the (often correct) impression that an executive in a startup isn’t really looking for another opportunity, at least until the startup’s been bought/folded and the earn-out is done. Being on contract actually did seem to send a clear signal, “Hey, I won’t be doing this new gig for too long, and I’ll need something interesting to do after that.”

A few moderately interesting things came and went, but one opportunity stood out, and I’m now a few weeks into my new role with Good Egg Studios. For all the times we jabbed at one of my Premiere colleagues for his work on, I never thought I would be working to build a virtual world for kids.  But here I am working on Elf Island.  A glance at the site and the blog should begin to make it obvious why.  This is an amazingly talented team, with the right marketing, the right funding, and the right product at the right time. The creativity and talent of the creative team is off the charts, and has combined with some talented technical resources to build a virtual world that a generation ahead of what kids are currently using.  The $2 billion valuation of Webkinz and Disney’s $700 million acquisition of Club Penguin are both examples of companies who have made this space extremely profitable.  The “secret” of Elf Island and our “play games, do good” mantra (which allows users to directly help non-profit causes) are going to be very sticky features that I think kids and adults will enjoy (even before launch, we’ve already had eager & hopeful users build us a fan site).  Our office space in west Atlanta is a win both for commute and for awesomeness – I need to take some photos, or come by and visit some time.

So that’s the news.  We are hiring a Java developer, a Flex developer, and a technical project manager (dev mgr?), so if you are somebody or know somebody who would enjoy such a role, do let me know.