My mobile journey

If you are a mobile developer and haven’t read Chet Haase’s latest book “Androids: The team that built the Android operating system” go read it now! It’s a delightful read and a wonderful trip into Android’s history!

The team that created Android didn’t just create a new mobile OS they also created a new career path for software engineers like me. I’ve been coding for Android since November 2008, which means almost 13 years! The projects that I’ve worked on have been very… diverse.

When the team announced their Android device, I wasn’t living in the US (yet) and they weren’t selling it in the Netherlands yet. I was intrigued by what it was, a smartphone or really a portable tiny computer. Fortunately, for work at that time, I was going to be in Austin, TX in Nov 2008 for SuperComputing 2008 to demo a multi-touch device. After the conference was over, I went to a T-Mobile store and tried to purchase a G1. Back then they didn’t like it when you would try to just buy the device without service, but with a bit of patience they eventually sold one to me.

The first app that I wrote wasn’t going to be “Hello World”, nah, I needed a bigger challenge so I tried porting a Chip 8 emulator that I had written for Windows sometime earlier. When I ported it to Java using Eclipse (yep before Android Studio was a thing), the first game I tried was Space Invaders. I was so excited that the code ran and I was able to play it with the hardware keyboard!

Running Space Invaders (via emulation) on my G1 

At that time I was still active on EFnet and Freenode chat servers, I thought it would be cool to have an IRC client to check in every now and then from my phone. That’s when I started to work on fIRC which was released just before Christmas of 2008. I never expected so many people would download and use it. By default it would drop users in #android-chat on Freenode which became very popular and often time had hilarious chatter going on.

The old version started with great ratings and high number of downloads… until it didn’t work so well on newer Android devices as I had a lot of layout things hardcoded for landscape use 🤦‍♂️

Funny enough, fIRC was also the reason I got in touch with, San Mehat, one of the Android engineers who used to idle in the chatroom too (I think most Android engineers were on #android on Freenode back then). As fIRC was gaining traction, at some point there was so much talk in different languages going on that it became hard to follow any conversations. At one point he yelled “WILL YOU MORONS SPEAK ENGLISH?” and that’s how a new IRC topic was born.

 

In the spring of 2009, I was still doing research work on multi-touch tech and was invited to come to the Interactive Displays Conference in San Jose. As I had never been in the area before (and it was my first trip to the US by myself), I was asking for some ideas on IRC in #android-chat on things to do in the SF area (as I knew a bunch of them where SF locals). San saw the message and said that we should meet up! We actually did end up meeting in person… (what was I thinking? meeting up with a stranger from the internet??). San is a great guy, even though I was just starting out as a software developer, we had a great chat and geeked out a bit over the G1. I still remember he offered me to come to the Google Mountain View campus but unfortunately I was there only for about a week and the schedule didn’t allow for it. I still regret that.

Late 2011 I started freelancing via Epic Windmill and one of my friends (Seth Sandler) asked me if I could help porting over one of his successful iOS apps to Android. I was up for the challenge and it was the first time for me to be exposed to the complicated side of Android development. NodeBeat was written in C++ using openFrameworks. Porting meant that I had to create a native Android UI as well as getting the ‘cross-platform’ common code to work via JNI (some tech details here). Fortunately things worked out well and we released NodeBeat in October of 2011.

While Android was gaining traction, BlackBerry was trying to convince Android developers to make BB10 apps too. Initially I ported over my IRC chat app for a free device and later on I wrote an openFrameworks add-on (ofxQNX) that would allow apps build with that to run on the BlackBerry PlayBook (tablet) and BB10 devices. It also helped me port over NodeBeat to BB10 which got featured on the BlackBerry blog (yay!)!
 
Sometime in 2012 because of my work on NodeBeat, I was also introduced to Dan Comerchero who needed some help for an Android port of Quiztones, an ear training for EQ app. I don’t remember it being too hard other than the issue where the audio files had to be decompressed WAVs else there would be a playback lag somehow. I guess back then decoding audio from ogg/mp3 wasn’t as smooth.
 
The biggest challenge was yet to come though… via Twitter in late 2012, Terry Cavanagh was asking around for experienced Android developers and was looking to have his game Super Hexagon ported over to Android. Initially I was contracted to do the Android port but later also worked on the BB10 version and the Ouya game console port.
 
I remember that I was pretty much done early January 2013 after a few weeks of intense coding and we (me and Terry) were reviewing the game and Terry noticed that something was off on the Nexus 7 (It ran fine on my Nexus One). It seemed like the game was less responsive on that particular device which for an intense game like Super Hexagon matters a lot. Unsure what could be the cause I reached out to Romain Guy on IRC (I wasn’t sure if he was going to respond but I’m glad he did!) I think I asked him because I had seen some other low level graphics related work from him. He put me in touch with Jeff Brown and fortunately he figured out what the cause was. He pointed out that in openFrameworks the physics and render loops were out of sync and recommended us to use the Choreographer to make the game run on Android Jelly Bean devices. The game should still be available from: https://superhexagon.com/
 

“I’m up to thirty something seconds now.  So it’s all about the dancing pentagons.  Whee!” – Jeff Brown

I’m grateful that the Android team was kind enough to help out, as I’m sure they were all swamped with work for the next Android release.
 
The Ouya port on a 720p TV…
Running on the Nexus One, BlackBerry PlayBook, Dev Alpha B device (which would become the Z10)
Running on a square screen, Dev Alpha C device (which would become the Q10)
 
After the different ports for Super Hexagon, I continued writing some apps for BB10. It was basically like the Android early days experience, not a lot of apps where out there so if you were the first, it was easier to become successful. I wrote a utility app SMS Backup for BB10 which allowed you to import/export SMS. It became a success and received the Built for BlackBerry badge that boosted the sales by a lot.
 
Early 2014 I was contracted by a startup that had technology that would allow you to run Android apps on non-Android platforms such as Tizen. For about 9 months I worked on their internal test tool as well as rewriting their own Android distribution app, the AppMall. It was a great learning experience with many challenges. At some point I had to make the app work on devices like the Pine Neptune which had a tiny screen (320×240). Unfortunately, the company wasn’t going to make it and I had to look for a new job.
 
The AppMall
The Neptune device had such a tiny screen but I made it work.
 
Late 2014 I joined Wanderu and helped creating a successful ground transportation travel app from scratch (for iOS and Android) that is loved by many.
 
 

Leave a reply