Snitter on AIR Beta 2

A week ago, Adobe released a new version of the AIR runtime. Shortly thereafter, I released a new version of Snitter, my Twitter client that I built on top of the runtime. Since then, I've been adding in a bunch of new features, bug fixes and tweaks.

Dan Rubin did the design on the new Snitter version and it's been very well received. That, along with themes, has proven to be very welcome additions. When you can't please everybody, create themes! (Truly, I've had people complain about the green and refuse to use the application because of it — to others who, despite the new features, have said that the green is still the best. Go figure.)

What's new in the runtime

Many of the complaints with the original release of Snitter were unfortunately limitations of the AIR platform. Input controls and scroll widgets were hideous, keyboard text selection was non-existant, among other deficiencies.

Beta 2 luckily fixed most of the major issues (with US keyboard layout being the remaining one on my list). The new version of Webkit also offered up the ability to make use of border radius which allowed for a very flexible UI.

New security sandbox

From a development perspective, there's also a new security sandbox which offers up limitations that can be difficult to work around at times. The application sandbox prevents you from using eval or new Function. With AIR's ability to access the file system, the ability to run arbitrary code from an external source does pose a risk.

To get around this, you place the functionality within a child sandbox via an IFRAME. Within the child sandbox, you no longer have access to the AIR interface except through a parentSanboxBridge object. Methods are added to this object from within the application sandbox and allows you to isolate functionality exposed to the child sandbox.

While there was an initial hassle to rearrange the application, it's been fairly easy to work with since. It does mean that design decisions should be settled on early on as to how code and UI should be split between the two sandboxes.

Difficulties in Development

One of the biggest headaches in development has been dealing with two moving targets: the AIR runtime and the Twitter site.

Having functionality shift within AIR did mean a rewrite of a chunk of functionality but the more troublesome has been the Twitter site. Between the site going down and shifts in the API, it's difficult to put together functionality for an app and be confident that it'll continue to work weeks out.

My personal words of wisdom: if offering an API, build it and then extend it. Changing it afterwards should not be an option. Likewise, error messaging should always be returned in the format specified. As it stands, when Twitter goes down or does an upgrade, the response back is HTML, not XML or JSON.

One thing I've definitely noticed is that when Twitter goes down, the application gets blamed. Some early converts jumped ship because of error alerts that occurred in other apps. In the end though, we all connect to the same service and all suffer the same consequences. The bigger lesson here is how one should handle an error. Sometimes, it's important to be in a person's face but sometimes, as it is in this case, not forcing a user to respond to an error message makes the application appear to work better.

Following feedback

One of the joys of releasing an application like this is building something that you know people are using every day and enjoy using. I've been using twittersearch to search for mentions of Snitter and respond to feedback both positive and negative. Many people will be vocal about what they like or don't like but never provide that feedback directly to the source (ie: me).

All-in-all, I'm really pleased with where Snitter is right now. I set out originally to build something that simply had the features that I wanted but has since turned into something that I want to be considered the best desktop Twitter client out there, OSX or Windows. Feature wise, I think I've done just that (with more features to come).

Published October 09, 2007
Categorized as Adobe AIR
Short URL: https://snook.ca/s/849

Conversation

18 Comments · RSS feed
Lewis said on October 09, 2007

Any chance of a screenshot? I don't use Twitter but interested in seeing what it looks like.

Uriel Katz said on October 09, 2007

me too!

Jonathan Snook said on October 09, 2007

Yeah, head on over to the Snitter page and there's a screenshot there. I also have a shot up on Flickr of a couple of the themes.

Chris Harrison said on October 09, 2007

Seeing Snitter grow over the past couple of weeks has been awesome. You've done an amazing job with it. I will continue to give you feedback as I use the app. I'm committed to doing whatever I can to help you make this application better!

Dan Rubin said on October 09, 2007

Nice job, Jon! Themes are going to be popular, and as the UI continues to improve and become more polished, people will flock to the cult of Snitter :)

Steve Fleischer said on October 09, 2007

Chris Harrison said everything I wanted to say! :-)

I'd be lost without Snitter - it's a great app. which just gets better and better. keep up the excellent work.

Ben Schwarz said on October 17, 2007

How did you find using HTML along with the same CSS rendering issues that previously exist in IE or Webkit?

Jonathan Snook said on October 17, 2007

@Ben Only having to deal with one rendering engine (Webkit, in this case) is extremely liberating. They're using a fairly recent version of the Webkit build so there's support for things like border radius, border image, and multiple backgrounds. Fun stuff!

stef said on October 18, 2007

hey jon - great work!! have you summarized your thoughts on AIR anywhere - i like in an article or something? i'm always curious to get your view on things. cheers! stef

MaXeR said on October 18, 2007

still not accept Arabic Letter..!
hope you add some support for other languages soon :)

Evan Sims said on October 24, 2007

Dude, this thing is awesome! So glad to finally see a beautifully designed, cross platform Twitter client with decent functionality. Twitterific is nice, but I've hated not having something suitable for the times I'm using Windows.

Keep up the good work, man. Brilliant stuff.

Manda said on October 24, 2007

Snitter is amazing. I must say. You've done an excellent job with it. I love the look. :) My question is, would you ever consider doing a messenger based application for adobe air, with the same look/feel as Snitter. I mean something simple like triallian and the others to use aim, yahoo, msn, gtalk, etc through? I've only been able to find two for Adobe Air, and frankly they're very ugly, and odd to use.

So basically I was just wondering if it might be in your future to do something like that? :) I hope it is!

Jonathan Snook said on October 25, 2007

@Manda yes, I've thought about doing an IM app. The only problem is that communicating with an IM service is a lot more complicated than communicating with Twitter. Maybe one day. :)

Shane said on November 02, 2007

This application is amazing. It would be even "amazingr" if it also updated Tumblr, Jaiku, and (insert the other few dozen micro-blogging tools here). I am, of course, biased with Tumblr, Jaiku, and Twitter. Wow, am I demanding on a Friday... :)

Well done!

David Blumenstein said on November 04, 2007

Snitter is a truly a breath of fresh air (no pun intended). I have been singing its praises and then my peers have been bombarding me with avisos to look at the new version of Twitterrific, and I would recommend, implementing a number of the new features into Twitter: colour coding, keyboard shortcuts to input replies and direct messages, as well as cursor navigation.

Thanks so much for all of your work

Pat Teglia said on November 04, 2007

Pretty Sweet Jonathan! I just wish I could figure out how to get Air to use Flock instead of IE as default browser, then I would be a totally blissed out Snitter-bug.

Btw, I think your use of icons in this is perfect, they look great!

Alisha said on November 20, 2007

I just found out about Snitter today and love it (even the default Snitter Green theme). I'm just wishing it showed everything I track like it does in GTalk.

ctevjbywbe said on December 07, 2007

Hello! Good Site! Thanks you! qdsngngaoz

Sorry, comments are closed for this post. If you have any further questions or comments, feel free to send them to me directly.

Want to learn about scaling CSS for large projects?

I'm available for full and half-day workshops on scalable CSS architecture. I can provide on-site training for your team. Interested?
Get in touch.