So a while ago I decided not to write another blog post whilst I was in the employ of my previous corporate overlord. This was in part due to the fact that, if I blogged based on what I saw there, I would have simply been reinventing an already tried and true but ultimately career limiting formula. Well, I am out from under that particular (and particularly evil) corporate heel now, and figured it was about time to put some thoughts down on keyboard.

What on?  Well, in the last month I have left one workplace, started at another, started a company with a friend of mine, as well as enjoying my fair share of Christmas cheer.  So lots happening.

Most recently though, I have been spending quite a lot of time with MonoTouch helping write my companies first iPhone application. For those who haven’t come across it before, MonoTouch essentially allows C# code to compile down to native applications for the iPhone. No Objectionable-C. What’s not to like?

Point form? Did someone say point form?  Well…

  1. MonoTouch is expensive. Although there are now three license cost levels, if you want to look like a company (or entity) it costs well over $1000 AUD. An individual license costs somewhere around $400. There are two people in my ‘company’. You do the maths. Still, it’s a tax I am willing to pay to avoid Objective-C. More on that later.
  2. Turns out, not much later. Objective-C, Cocoa and the whole Apple Developer toolset? Nope. Fail. Not quite epic fail, as a lot of people seem to like it. But it just feels, well…old. Wrong. Backwards. And one of the problems with MonoTouch is that sometimes it exposes enough of the underlying design to scare you scrambling back into the modern warmth and comfort of C#.  And I tried using Xcode, albeit very briefly.  All it did was make me wish that more Mac developers would try using Visual Studio.  The world would be a better place, if only because the acceptance among developers that Xcode is second rate tooling would be more prevalent, but more importantly there might be enough pressure on Apple to do something about it.
  3. And yet, as you cosy up with your Mono/MonoTouch/C#/Apple/MacOSX Frankendeveloper Rig, things are not quite what they seem. All the cool stuff in C# that is modern and takes the pain out of the drudgery of coding? Good news. It’s all there. It’s just that you may not get to use it. You see, it’s a little slow. Now, I understand that under the hood LINQ is doing quite a bit of magic. But a ten-fold decrease in speed compared to a FOR loop? I mean, I have had to rewrite every LINQ statement with FOR loops. Not even FOREACH. FOR.  To compound this, with MonoTouch you won’t know you have a performance issue in your code  until you get it on a device (after you pay for the license – see point 1), because…
  4. ….the iOS  Simulator sucks (did I mention the Apple toolset?). Remember when the first 286 PCs came out? And they had a Turbo button that you always had switched on unless you were playing an old game written for a slower chipset? In which case you turned it off so things didn’t whiz around the screen way too quickly? Remember? (Am I showing my age?). Anyways, it feels like the simulator needs a turbo button. And it needs to be turned off. Some of our code executes ten times faster on the simulator compared to an iPhone 4. 10x. Seriously. And that is on a six year old MacBook Pro (heaven help those with the bankroll to fund a real computer to develop on!).  Now some could point out that, due to the simulator being ten times faster, and LINQ being ten times slower, it should all average out in the end.  But we can all agree that their maths suck.And then there is the issue of security and sandboxing. You see, the device has these things, but the simulator doesn’t. This means that you can write code that works on the simulator just fine, but which will never work on the device. Ever. By design. Seems like it would be an easy thing to, well, simulate…
  5. And to enjoy this goodness with any expectation of future riches, you need to join the Apple developer programme. You need to pay money for this, which I am fine with. At some point in the future I want to be able to make money off this adventure, so that seems fair. What surprised me was receiving an email from Apple in America asking me to fax them further details to complete the process. Yep, an email requesting a fax reply.I owned a fax once. It wasn’t this millennia. It makes me nervous that a technology company I am going to be relying on to distribute any product I develop still requires this method of communication. But then, I look at Objective-C, another technology from the disco error (era? I get confused). There is definitely a pattern emerging.

Still very happy to have an application I helped write using C# running on my iPhone.  Next step is to get you to pay me to have it running on yours!  More on those plans later…