My first mobile Hackathon experience

On Saturday October 15th 2011 I attended the ATT Mobile App Hackathon held at the AOL headquarters in Dulles Virginia. It was quite a drive for me to get there, on top on waking up early on a Saturday morning but I figured it was worth it, I was already on a roll attending the UM Technology Startup Bootcamp the day before, which was informative in its own right. So i got to the AOL building a little after 10:00 enjoying 45 minutes or so of good reggae in my car and when I got into the building I was surprised by the “hipness” of it all. The event was held on the fifth floor and getting to the actual conference room just confirmed what I suspected at that point: AOL means business now. I met TeamAOL’s main man Christopher Gibson who gave me a card right away and let me know AOL was hiring mobile developers (A good man, if you are looking for a solid mobile dev gig, email ). After a healthy fruit based breakfast, I milled around, networking with the other developers and met others who like me were there for the first time.

At around 11:00am is my memory serves me right, presentations started and the first one was by AppMobi, who were introduced by Alex Donn of the  ATT Developer Program who did a good job introducing the platform. I got to play with their PhoneGap SDK offered as a Chrome plugin and was impressed by the whole package. Deploy to cloud options, emulators for different platforms including Iphone, Ipad and Droid among others. That presentation was followed by one from Apigee, which like AppMobi I had never heard of before and was actually impressed by their offering. OAuth seems to be giving everybody trouble coding and they offered a streamlined simplified API to work with, definitely something to consider for me in the future. There were other presentations from Pearsons who introduced their new API, and ViaFo , App47 and Sierra Wireless. To not also was the demo of the new Android app by the Winamp team of AOL Music and I have to say it was impressive software.

I got lunch (Thai s’il vous plait) and sat around, until Chris got me in touch with Omar and Amira who had ideas for apps but no technical know how, so together with Kyle, a developer from Fort Washington, and Rajish, we became Team Fresh and decided on a Recipe Finder app that would search for recipes entered by users and find a list of ingredients and nearby stores where they can be purchased. Since I was the de-facto tech lead, i set out to first find our data source and wound up on the PunchFork site which provides a recipe API with some paid extra features. I decided to go wit AppMobi as my dev platform and my first task was to get data from PunchFork. It turned out to take longer than I expected due to my inexperience with the AppMobi aUX API. Kyle left around 3:00PM followed by Omar and Amira around 5:00PM and I was left to figure things out with Rajish, who although being a backend .Net developer helped me along and was quite a good conversation partner. I went back and forth with the AppMobi support team (John and Tyler) who were gracious and very helpful. John ended sending me code for a sample app that was actually very similar in structure to what we were trying to achieve but by that time, I was already headachy and hacking the code would have taken too long to meet the 7:00PM deadline for app submission.

It was the end of the day for me, I was mad I could not finish, but the learning experience was invaluable. It made me happy to be around other developers and geek out to the fullest. It’s an environment where as a developer you are understood and it was welcomed for a change. AOL has some very fancy offices and breakout rooms, and as I told Chris Gibson and Chida Chidambaram who were our very gracious hosts, this event helped turned around my opinion of AOL. From the media coverage I assumed i would be going into old offices, populated by old people who were not in with what’s current, even dismissing calls from recruiters about possible opportunities at AOL (which is physically too far for me in any case), but it was quite the contrary. The dynamism I have seen from Chris Gibson and his team, their helpfulness, and the Winamp demo helped me change my mind. They might have taken a fall but they are definitely working their way back up and I am sure I will hear soon in the future about the things that will get done by their mobile development team. If you are counting AOL out, all I know is, as far as their mobile team, you might be surprised so hold judgement.

I left the venue a little after 7:00PM and went home happy with my day. It was productive and I learned a lot. I got some free tee shirts, something for the wife, some stickers and got to play with a Windows 7 phone, which I hadn’t had the opportunity to do yet. My advice for first timers:

  • Attend, don’t be afraid, there are other people like whose first time it is as well, so you won’t stand out, believe me.
  • BRING A LAPTOP, otherwise, you will be bored and are defeating the purpose.
  • Come prepared, if you are a developer, having an idea is good, to really make the most of your time, if you already have a time, plan it all out before hand and use the hackathon time as a collaborative development time to actually get it done.
  • Hackathon organizers: make it easier for devs/business people to create teams before hand so that time spent on design is reduced and we can get a finished product at the end of the day.
  • Fail if needed like I did, you will learn along the way. Nobody is expecting a shiny new app at the end of the day with all the bells and whistles. You’ll see that just having something that works is very satisfying.
  • Attend another one

That last point is well taken. I will be at the Education Hackday in Baltimore next month, and they have actually started building teams around ideas, so make sure to attend if you are in the area.

The First Rule Of Development: Nothing will work as expected!

Allow me to be bold with this one, but today I ran again into another one of those environment set up issues that make you question your sanity. No need to get into the details, but ever since the beginning of my career, which has involved quite a bit of J2EE development, one of the things that have amazed me is the ramp up time it took to get started on a project. I am not talking about merely perusing through the code, trying to understand the architecture, get a feel for what’s going on, but simply checking out a project from repository, into Eclipse, and being able to run it on my localhost. “What about the documentation?” I hear you say, you smug devil,  and I smile with full teeth at your foolish smugness. Documentation? Who has time for “Documentation”. “Documentation” means one eager programmer like you was kind enough to flesh out the major steps that should get you to where you need, but in development: THE DEVIL IS IN THE DETAILS…

Why is it that nothing ever works as expected?(Hint: Because we need enjoy the gift of debugging to become expert debuggers)  “Copy the so and so .jar to the WEB-INF folder, change this line in web.xml and you are good to go!” said the instructions, yet it’s one week later and Tomcat still won’t start.   I remember on one of the J2EE projects that i worked on, which was an offshoot of an existing project with a 50+ pages outdated development environment set up document, it took me close to two months to get an environment going. I followed the steps, but with each one a pitfall, a bug, that I had to extract a solution for from the minds of not-always-willing-to-share previous developers. It was so obvious in their minds, but not written in the documentation:

“Oh yeah, we had to change this because this and this happened, this is what you need to do…” Thanks, that could have saved me two days!

“Oh that piece of code, unless you are working on this and that you won’t need that!” Thanks, I just spent the last three days trying to get it to work.

Bottom line is that we as developers have to do a better job at documenting what we do (I hope the developers that came upon my documentation agree), and that for the sake of other developers, and not assume that a) it is not such a big deal or b) others will be able to fill in the gaps. I thought J2EE development environments were the worst but I’ve had my share of mishaps in LAMP environments as well.  I am curious, though, as I always assumed that .Net programmers must be somewhat free of those problems being that the word was MS did a good job of providing a polished development environment,  is the grass greener on the other side? Is it an open source software issue? I am interested in hearing about your experience with how easy (or not) it is to become productive within your chosen programming language and associated development environment.

Leverage your web developer skills for mobile development

In the world of mobile application development, you can either build applications the standard way, which means using Objective-C to write Apple iOs applications, or Java with the Android SDK for your Android applications etc etc, you get the point. But a new paradigm has appeared that is very appealing to web developers like me as complementary to a skill set I already possess: writing mobile applications using HTML, CSS and Javascript. The tool that makes this magic possible is called PhoneGap and version 1.0 has just been released to I bet, the delight of many mobile developers out there. The concept behind PhoneGap is simple:

  • Build your app using HTML and Javascript
  • Access the native phone APIs through the PhoneGap wrappers
  • Deploy to multiple platforms

The appeal here is reminiscent of the early Java slogan, “Write Once Run Anywhere” or WORA, for those who still remember, and PhoneGap is even lauching a beta for PhoneGap Build, a service that will allow you to “write your app using HTML, CSS or JavaScript, upload it to the PhoneGap Build service and get back app-store ready apps for Apple iOS, Google Android, Palm, Symbian, BlackBerry and more”.  There are a  number of Javascript frameworks out there that can be used to build apps in conjunction with PhoneGap, the  two most popular are JQuery Mobile and Sencha Touch. Both are very capable frameworks that make use of the latest advances in CSS3 and HTML5. Your choice in a guttural way would depend on your familiarity with their browser counterpart (JQuery or ExtJS). What you have to understand at the end of the day with the PhoneGap architecture is that your finished app would basically be a web page running within a browser. Here are a couple tutorials to get you going either on Sencha Touch or JQuery Mobile.

Combined as I mentioned earlier with the fact that by using HTML, CSS and Javascript the learning curve for a web developer is suddenly cut into mere hours instead of the days or even weeks required to learn and master a new heavy language like Objective C or Java, you have to wonder how come every mobile developer out there is not rushing to adopt PhoneGap. Well there are limitations when it comes to building an application using PhoneGap and here is a shortlist (By no means exhaustive, feel free to inform me of more in the comments, I will add them to the list) :

  • Running from within a browser your app won’t have the native built-in styles available unless you use CSS to mimic them. There are frameworks that have been created to that effect. Sencha Touch comes with two default themes for iOs and Android and there are JQuery Mobile Themes available as well.
  • Performance will take a hit because of the extra layer between the app and the OS.
  • Access to the some of the native phone high level functionality is sometimes limited.
  • Support is sometimes hard to come by for specific issues, since this is a community supported project.

Those issues withstanding, I still think that PhoneGap is only poised to get better, and improve support for more native functionality. I think it is complimentary to my web development skills and allow me to expand into a new market without really stepping out of my comfort zone. If you are worried about native feature support or exploiting more of the native SDK, you should definitely look into Titanium, from Appcelerator which offers to “translates your hard won web skills into native applications that perform and look just like they were written in Objective-C [iPhone and iPad] or Java [Android]”.

Here is a list of links I found useful on the matter:

Programming: “It pays the bills” vs “It satisfies me”

At this point in my career I find myself increasingly frustrated with my day to day work. You see, living in the DMV area (DC-MD-VA), a lot of the jobs available are in government contracting and as many will tell you, those are well paying jobs with a certain level of job security added. For a while I did it and enjoyed it but deep inside i knew that this was not really what i want to be doing for the rest of my life. With things being the way they are, even when trying to switch jobs, it has been easier to do so going from one government contract to the next, with my attempted moves to the private sector being unsuccessful primarily because first my experience is mostly related to government projects, and second, the pay range was below was I was willing to go for. It is not greed on my part, but being married with kids means ” I got mouths to feed man! “(<= in Dave Chappelle’s voice) and obligations I have to tend to and can’t ignore.

This has limited the number of opportunities I considered and from a passing thought in the back of my mind it has grown into a daily contemplation of my future in this business. Over the years, I have gravitated toward doing and enjoying more of the front end work, and it’s a coincidence that the field in itself, especially when it comes to enterprise J2EE development, is becoming a full position in itself as opposed to being lumped in the “Java Developer” category just a couple of years ago (It still is, i just got another inquiry from a recruiter looking for a Java Developer where most of the work is front end related). My frustrations with the projects I have been on mostly stem from the technological limitations of working on government projects which sometimes involves outdated technologies,  security limitations and convoluted requirements that end up taking the fun out of the development process. From a design and functionality point of view, these applications lacked the “Wow” factor and being internal applications, even if they were, they were not of the “living portfolio” type of web applications that customers companies want to see when interviewing a developer.

I’ve realized that the type of work I want to be involved with has to be challenging, innovative, and current to what’s getting done today. It has to be a good mix of creative and technological skills that keeps me on my toes and gets the “Cool!” approval from family and friends when presented with it or when explained to, instead of a blank stare and a “Uh?”.

To work towards achieving that goal, I’ve started working on projects of my own, ideas i have been nurturing for a while with the hope of turning it into a startup if it gains traction. It’s a combination web/mobile app developed with CakePHP and Sencha Touch that has helped me turn some of the concepts and techniques I have been reading about and itching to try into actual code and challenged my thinking and skills in a way I had never experienced before. It has forced me to step out of my comfort zone and try new skills I didn’t practice before and it is a continually rewarding experience. I’ve also started working on side projects for friends of mine in order to expand my skill set and keep it sharp and relevant.

Through discussions with others (friends and colleagues) I’ve found out I was not the only suffering from this programmer’s “existential malaise” but some choose to go with the status quo while others like me find other projects to get involved with on the side that keeps them interested and challenged.Some have started their own startups, non-profits and organizations, building on the skills they have and pushing into new directions. Me, I figured I could spend my free time better than racking up “The Feared” accolades on Modern Warfare 2 or shouting angrily at my TV because my players messed up again in Fifa 11.

All this in waiting for that project that will bring the good mix of creativity, innovation, coolness and most of all, “will keep the kids fed, man!”(<= in Dave Chappelle’s voice).