Let’s take a break from guns to talk about another thing I do: programming.
I’ve been a professional Mac software developer for about 15 years, and non-professional for many years prior. My work up until recently has been in desktop work, and now I’m starting to delve into mobile development.
Of course, iOS (iPhone/iPad/iPod Touch) is a natural progression for me, but one cannot deny what’s going on with Android. Blackberry is losing ground and Windows Phone… well, let’s just move along.
So reall, iOS and Android are the two places to focus. I’ve been dabbling with iOS stuff. On the one hand, it feels very natural because its paradigms, foundations, toolset, etc. are things I’ve been using for many years. On the other, specific behaviors of iOS and even considerations (e.g. tight memory, no true virtual memory, a very different app design approach) are different and something to get used to. I admit some struggle at wrapping my head around how the whole UIViewController stuff is to mesh together in more complex apps, but it’s coming along.
Then there’s Android. I haven’t gotten too deep into it yet, because I first need to back up. Android development uses the Java programming language and I haven’t used Java in over a decade. I’ve been refreshing myself on Java and learning how much it’s evolved since I last looked at it (generics, cool!). I’ve also done a little reading and talking with people on Android specifics and well… there’s a bit of excitement but also a bit of wind out of my sails. Making the actual GUI feels like a massive step backwards in terms of developer tools, plus there’s really not much for instrumentation (e.g. profiling code). And for all that people go on about the joys of garbage collection, it’s not without warts.
What I’ve really been looking for is information on how to deal with development for both platforms, but that information has been hard to come by. In the end it seems that well… you can’t. I mean, you can, but it’s painful. The languages are different, the paradigms provided are different, and things just won’t mesh very well. Sure there’s the Android NDK but that’s barely a solution. My hope was to be able to code my data model in a neutral way and share at least that logic, but it just doesn’t seem like it would work out, at least not without a lot of pain. It seems better to design the app in a neutral way, such as with UML, then just recode everything “natively” on each platform. That sucks.
But in searching around I find some interesting reviews of development for both platforms. Over at Code By Coffee an overview of comparing and contrasting development for the two platforms is done, and it seems pretty even-handed, but you can see that coming from the Mac world there’s some iOS bias. Then you get David Green at the JavaLobby who is a long time Java developer and so his bias ends up being towards favoring Android development. Reading Mr. Green’s article felt like I was sifting through a lot of whining by someone not willing to take the time to understand because “it’s too hard!!!!11!!”… and that Android feels better because it’s what he already knows. So, what I know is good, what I don’t know is bad and I’m unwilling to understand it. Well, that’s open-mindedness for you. 😉 Still, it’s good to read articles like that because it does demonstrate that iOS does have a higher bar of entry, not just in terms of how Apple runs the dev program (e.g. $99 annual fee, App Store submission issues, etc.) but also in terms of just getting started with programmer nuts and bolts.
I want to like Android because I see great potential in it. Time and experience will tell how it pans out for me.
Meantime, I’m working on some projects via Hsoi Enterprises LLC. We’ll see where things pan out. If nothing else, it’s exciting to work on some new things.