Why nomee uses Adobe AIR
Recently, we released version 1.2 of nomee, a social media desktop app written in Adobe AIR. When I look back, I realize it's been more then a year since we started down the path to build nomee. As I prepare for my presentation at Adobe MAX this week, I thought it would be a good idea to share why we chose Adobe AIR as our development platform and why it makes so much sense – both for our customers and for our business.
Originally, nomee was going to be a native Windows application. However, we quickly realized that it would take too long to build a Windows version and then a separate Mac version. Not to mention the problem of keeping two different applications in sync as we add new features – think of the duplicate code we'd have to write. For a consumer product like this, it has to run on both operating systems, or run as a Web application, from the beginning. That decision is what started us on the Adobe AIR path. But it didn't end with cross-OS support. When we started looking at the benefits of AIR for nomee, we found a few reasons that made it a better solution than creating just another Web application.
1. Offline – For nomee to become a full relationship and information management tool, you need to be able to use it anywhere (on a plane after a conference, for example). We have basic offline support now in nomee – login offline, open cards, get contact information, and so on. And we have even more plans on the roadmap, such as editing and sending cards while offline.
2. Customer Experience – There are a lot of things we can do in a desktop application, which we can't do on the web, to give the user a better experience. We aren't limited by browser sand boxes. We can access local resources to build better caching layers and local data stores, as well as to add native drag-n-drop support. In a web application, every time you login in you need to pull the data back from the server that you saw the last time you used the application – plus anything that has happened since. With an AIR application, you can keep the data you've already pulled cached locally and only pull new data, requiring less bandwidth for the clients and server while decreasing the round-trip to the server.
3. Always Working – By creating a desktop application, we are able to give users a tool that is always monitoring their friends' and families' sites for updates and alerting them as things change. If nomee was a web application, users would need to remember to open a browser and login to see updates. And if they didn't login, they would never know something has happened with someone they care about.
4. Security – For some reason, we live in a world where people don't mind giving out usernames and passwords to random web sites and letting them impersonate you as they login and pull in your data. We don't like that. We don't believe that our db should have copies of every user's login name and password. However, in an application like nomee where we do need to pull in users' data from across the web - at times we do need to ask for a username and password. Because nomee is a desktop application, when we do need to get your credentials, we don't save it on the server. Instead, we save it in an Encrypted File Store that only lives on your computer.
5. Infrastructure Costs – AIR saves us money! And as a start-up, that's important. Let me explain. With an AIR application, you are able to push a lot of the work for each client back to the client. Work like pulling feeds, parsing feeds, etc. Remember a browser is nothing more then a dumb terminal. Granted there is a lot you can do with one, but it is limited in certain ways. If we were to have started out as a web application, we would need to build server farms of dozens – if not hundreds – of servers to do all of the social web parsing that our nomee clients do.
As we dig in to our next nomee build (an engineer's work is never done), I'd love to hear what you think. What makes a desktop application right for you? I'd also encourage you to take nomee for a spin and send us your feedback.
