Avoiding the Chasm

April 11, 2010

A Step Too Far

Filed under: Software — Tags: , , — vextasy @ 10:14 pm

AppleLogoOver at www.knowing.net Larry O’Brien discusses the craziness of of Steve Jobs’ latest edict – namely the changes to the iPhone developers licence that says:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.
Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine,
and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link
to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

Larry’s article is a good read and I wholeheartedly agree with what he has to say. In a funny kind of way I feel a sense of relief at this latest ridiculous declaration from Apple. I wanted so much to develop for the Apple platform that I purchased a book on Cocoa programming with a view to progressing to iPhone development. I started to read the Objective C tutorial but the stench of the 1980s was so  overwhelmingly strong that, try as I might, I couldn’t complete the chapter. No one voluntarily writes code like that these days do they?

So my next thought was to investigate ways of using F# or C# to sidestep the inevitable insanity that would have resulted from Spaghetti-C Objective-C but now Steve Jobs has put a stop to all of that. A number of interesting products exist. The two that jumped out at me were – MonoTouch and Unity. But both of these break the new commandment and so have, as things currently stand, been removed from my list of options.

For those developers who have already made the commitment to prostitute themselves for the financial gain that comes from writing for the iPhone platform this is probably no big deal. But, for every other developer out there who was considering investing in the platform the message is a very negative one, and one that I think Apple will pay for in 12 or 18 months time when they no longer have such a perceived lead in the mobile application market.

Developers are used to working to an API. We view it as the dividing line between the bits that we have to write and the bits that the system will do for us – a contract of sorts. Most platforms are keen to expose their APIs in as many languages as possible and the choice of language and supporting toolset is usually left to the developer – after all a good craftsman knows which is the best tool for a job. In general, as long as we satisfy the requirements of the API we can use whatever steps we like to get there. But not with Apple. in his post on the subject Greg Slepak likens Steve Jobs to “the ignorant boss” who knows nothing about programming but still insists that you use a particular tool and that is exactly how it feels.

There is a good reason why few, if any, other big platforms are using Objective-C as the application development language of choice and that is because things have moved on in the last twenty years. There are now much more reliable ways to write applications and all good developers know that. Not only do Apple insist on choosing the language for us but they also restrict our freedom to choose our own tools and these two things together really are a step to far.

So the decision has been made for me – I now feel like a great weight has been lifted from my shoulders and I look forward to the freedom I’m going to have with the Android and the forthcoming Microsoft Windows 7 mobile platforms.

Perhaps I won’t upgrade my iPhone when they announce the new models this year but instead look further afield. After all, Apple are still fretting about multitasking when Microsoft are applying themselves to addressing the problems of multithreading in F# – and let’s face it Microsoft will be the good guys soon.


February 10, 2009

A Solution to the "iTunes has stopped working" Problem on Vista

Filed under: Technology — Tags: , , — vextasy @ 9:16 am

iTunesAppleAbout a week ago iTunes began crashing each time I synced my iPhone. Initially it happened right at the end of the sync and so, although irritating,  it was possible to ignore it while simultaneously searching for a solution online. The problem started immediately after I had installed the new version of Google Earth and so my initial thoughts were that it was in some way related to a change that had been made as part of that install. But uninstalling Google Earth had no effect.

The nature of the problem was that the more I ignored it the further forward in the sync process it got until eventually iTunes would crash immediately on recognising the iPhone and display the "iTunes has stopped working" popup.

The Apple support forums were of little help. They seemed to contain little in the way of advice from Apple and a lot in the way of posts from similar and confused iTunes users who were experiencing similar problems to me.

One apparently useful suggestion from the forums was that the issue might be resolved by uninstalling QuickTime and then re-installing iTunes+QuickTime together. This had no effect either.

Following another line of hope I performed a restore on the iPhone which reloads the firmware and attempts to recover the iPhone settings from the most recent backup. Again, no solution.

After a number of frustrating evenings of tinkering I stumbled on the solution that worked for me: From the iTunes store menu choose "Deauthorize Computer…" followed by "Authorize Computer…". I have no idea why that solved the problem but I can now sync again and if you have stumbled upon this post because you have the same problem I really hope it works for you.

I can’t understand how Apple can produce such a wonderful user experience on the iPhone and Apple TV and such an awful one on iTunes and the Apple support web site.

Blog at WordPress.com.