Archive for the 'Computers' Category

Thoughts on Flash

Following on from my recent post on the Apple-Adobe spat regarding Apple’s banning of Flash-authored applciations on iPhone OS, Steve Jobs has today published on Apple’s website his thoughts on Flash and Apple’s mobile devices.

He gives some history on the relationship between Apple and Adobe, discusses open standards, hardware versus software video decoding, security, performance and battery life.  He goes on to explain why Apple doesn’t want there to be a third party system between its platform and developers.

This is a good read for anyone interested in Apple’s position regarding Flash on iPhone OS.  It explains the issues and the basis for Apple’s decisions very clearly.

Advertisements

Apple, Adobe and developing for iPhone OS

A spat between Apple and Adobe has over the last few days become one of the biggest stories on tech blogs and forums across the internet.  There’s been so much written and argued about it that I almost feel this wouldn’t be a proper blog unless it included my take on things, so here goes…

The issue at hand is a change to Apple’s iPhone Developer Program Licence Agreement, which states:

“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).”

This means that if developers want to create applications for the iPhone, iPod Touch or iPad, Apple essentially requires them to use Xcode, its very own integrated development environment (IDE).  Xcode includes a software development kit (SDK) for iPhone OS, which makes it easy for developers to write native applications that can take advantage of all of the technologies and broad range of application programming interfaces (APIs) that are included in the OS.  The APIs are well documented and registered members of the development program have access to many additional resources aimed at making the development process easier.

What developers are not permitted to do is write their code in another IDE using a non-native language and non-native APIs, and then have their code translated into Apple code by making use of an intermediary layer in their applications.  And that is something that Adobe is not happy about.  Why?  Well, Adobe have built a new feature into Flash which allows Flash developers to export their code to iPhone applications.  The new feature means that Flash devs can create iPhone apps from their ActionScript code without needing to know anything about Objective-C, Cocoa Touch or any of the frameworks or APIs that Apple includes in iPhone OS.  Apple’s new condition is bad timing for Adobe as the iPhone export feature is the new big thing in Flash CS5, due to be released shortly (they are already taking pre-orders).

There are all sorts of arguments and opinions flying about, hysteria, anger, accusations.  It’s all be rather dramatic.  Here are some points that I think are worth considering:

Flash devs would love to take advantage of the huge market for iPhone applications, but don’t want to have to move out of their comfort zone

Some Flash devs will argue that Apple is wrong to be ‘locking in’ developers to Apple’s APIs and that it is anti-competitive behaviour that will ultimately result in alienated developers, less development taking place and less choice for customers.  If that were the case, then surely the platform would be doomed to failure and worth avoiding at all costs, would it not?

I can understand their disappointment, having been promised free access to the iApp market by Adobe only to find out that Adobe’s solution has never had Apple’s blessing.  It must have been a dream come true to think that they could start selling applications through the iTunes App Store without having to spend any time at all on building an understanding of Apple’s frameworks.  Too good to be true, even.  Well that’s exactly how it’s turned out.  Adobe have really screwed over their own customers by making promises they couldn’t keep, so it’s probably just as well for them that this has surfaced before everyone rushes out to buy CS5.  Had Apple supported Adobe’s plans and then backed out, that would be a different story, but Apple and Adobe have not worked together on this at all (not that I have any insider knowledge, but from what I’ve read nobody has reported any such circumstance).

Learning another programming language, new frameworks and APIs, is an overhead, an investment one makes to increase skills and broaden abilities.  There are plenty out there to learn, all with different features, advantages and potential markets.  What you choose to learn has some impact on what markets are available to you, and of course the more you learn, the broader your options.  If you want to write applications for iPhone OS and take advantage of the huge market that Apple has created, then learning Objective-C and Apple’s IDE is an investment in time that you need to make.  Following Apple’s guidelines and programming natively with Apple’s APIs is a robust and informed way to develop good quality applications that can directly take advantage of all of the features included in the OS.  Many developers from non-Apple backgrounds have already started developing for iPhone OS and met with great success.  For developers experienced in object oriented program design, or C++, the transition isn’t that difficult.

Developers for iPhone OS have churned out over 145,000 applications since Apple released the first SDK in 2008.  That’s an impressive statistic.  Granted many of them would already have had knowledge of developing Cocoa apps for OS X, which is an advantage, but many others have not.  There has been some noise about the App Store approval process, but largely the existing iPhone developers do not seem to feel ‘locked in’ as some of the Flash mob would have us believe.  To have produced that many applications in under two years has certainly not limited customer choice either.  If any current Flash developers want to experiment with iPhone programming then they should take the plunge, join the Developer Program and start learning the ropes.  To gain access to a big new market for little to no effort is a bit unrealistic.

Apple wish to maintain quality

As a long time Mac user, I’ve experienced a lot of applications that have been straight ports from other platforms and they are, for the most part, pretty awful, so I can understand from this why Apple wants to keep these kinds of apps away from its mobile devices.  Apple have created a good SDK with APIs that help developers to produce applications that fit Apple’s style guidelines and ultimately provide a superior user experience.  Anyone familiar with OS X development will know how much Apple push their developers to produce clean and intuitive interfaces.  They even have a document entitled “Apple Human Interface Guidelines” which specifies how applications should be designed to fit visually and functionally with OS X.  This is not an attempt by them to control developers – anyone can release an OS X application – it’s just that those applications which follow the guidelines will be a better fit with other applications including the OS, and will have a more intuitive feel for the end user.  This is all good for developers as their apps will likely receive better reviews and recommendations, thus resulting in more sales (I know there’s more to making a successful app than just having an intuitive interface, but that’s another issue).  Apps that don’t follow these guidelines, like those that have been ported from other platforms and not coded natively, stick out like a sore thumb.  They are generally bland, clunky and difficult to understand.

Why would Apple, having gone to a lot of effort to produce a solid SDK, want apps being sold for their mobile devices that have not been developed natively?  They are going to want to keep a certain amount of control on what goes on to their devices, as if the floodgates opened and half the apps on the App Store ended up being substandard ports from Flash or other IDEs, it would reflect badly on Apple’s devices and result in fewer sales.

It could be argued that the App Store approval process should weed out any such apps.  It could also be said that some of the apps currently available in the App Store are not particularly good, even if they have been developed natively.  There is unfortunately always going to be a range of quality amongst applications, as with everything in the world.  That can’t be avoided.  But if Apple were to start rejecting apps purely on the basis of whether they liked them or not, they would eventually alienate a huge number of developers who had put time and effort into creating native applications.  That wouldn’t be fair.  Apple therefore need to maintain some objectivity in their approval process.  This new rule is one such flag of objectivity.  Apple wish to keep app quality high, and to that end they desire their developers to code natively for iPhone OS.  It’s perfectly reasonable.

Developers should not be reliant on Adobe for the feature set available to their apps

Imagine that Apple were to allow iApps to be ported from Flash.  The pool of developers would be distilled with the new Flash-based crowd.  Some existing developers could stop coding natively for iPhone OS as they would be able to create their apps in Flash and distribute them as web apps at the same time, reaching a greater audience.  Then Adobe would add Android, Blackberry & other export options to Flash.  Soon enough Flash would be the only IDE in use and platforms including, but not limited to, iPhone OS would be at the mercy of Adobe.

If Apple were to introduce new features and efficiencies to their hardware and APIs, they would have to wait for Adobe to implement them in its Flash translation layer before the features would really become available to developers and end users.  Even the most willing and motivated of developers would not be able to get around that, they would have to wait for Adobe to add the capabilities before they could take advantage of them in their apps.

In the end, Apple would lose sales and credibility, and good developers would get screwed because they wouldn’t be able to outpace their competitors in updating their apps to take advantage of new features.  Everyone would become ‘locked in’ to Adobe (so much for developers being locked in by Apple).  Given Adobe’s poor history when it comes to timely bug fixes and support of its OS X applications, I do not think that this ‘lock in’ would be a nice place to find yourself, whether you’re Apple, a developer or an end user.

Bear in mind also how Apple and Adobe make their money.  Apple sells hardware and software.  They sell the iPhone, the iPod Touch and the iPad, all of which run on iPhone OS, and they additionally take a 30% cut of App Store sales.  Apple needs to keep its products desirable so that they can keep sales up, so it’s in their best interests to ensure that what’s running on their products is a credit to them.

Adobe on the other hand, sells design software, including Flash.  They make no money from sales of Apple’s mobile devices.  They therefore have no motivation to ensure that Apple’s devices or the applications that run on them remain at a high standard.  The fact that they’ve produced a feature that can export ActionScript from Flash to iPhone applications has nothing to do with them wanting to support Apple’s platform, or work together with them to produce great products.  Adobe has just seen that the market for iApps is massive and that by including their new export feature in the next version of Flash they will generate substantial sales of CS5.  These would include sales to many existing customers that would not otherwise have found a compelling reason to upgrade from a previous version.

Another point to note is that if you are a UK customer, Adobe Flash CS5 will set you back £653.30 for the boxed edition or £672.76 for the download (which make no sense to me at all).  Apple’s Xcode, on the other hand, is free.  You just need to have a Macintosh.  Apple does not stand to make anything directly from Xcode, so this is not a battle against Adobe for commercial success in the iPhone OS developer tools market, as such a market does not exist.  They are therefore not abusing any monopoly as some people have been quick to insinuate.  Apple provides all of the tools that developers need to make good iPhone apps and Adobe’s meddling would do nothing but devalue the market that Apple has built from scratch.

Apple is completely within their rights to limit iPhone OS development to their IDE.  If developers don’t like Apple’s stance then they can happily go and develop for other platforms and buy other products.  But if they want to be in on the action and have a taste of the lucrative iPhone OS-based mobile application market that Apple has created, then they should take the plunge and move to Xcode.

These are my just views on the issue.  Many others have written on this topic far better than I.  Here are some links for further reading:

John Gruber at Daring Fireball

Thomas Fitzgerald

Jason Snell at Macworld (scroll down to the heading “Blocking out Adobe”)

Steve Cheney

Jean-Louis Gassée on Monday Note

Struggling iMac

I’m finally starting to come to terms with the fact that my trusty iMac is no longer able to handle everything I need it to do in quite the same way that it used to.  It’s not that its capability has become impaired, far from it.  It’s every bit as powerful as it was when I got it.  Infact it’s probably more powerful now as it’s had hard disk and optical drive upgrades and the memory has been maxed out to a whole gig of (formerly quite fast) PC133 SDRAM.  It’s just that operating systems and applications have become far more demanding as time has gone by, keeping pace with improvments in hardware technology and reductions in the cost of components.

I bought a second generation G4 iMac in 2002 and managed to secure one from the first batch of new 17″ models to arrive in the UK.  It came with an 800 MHz processor, DVD rewriter, 32 MB graphics card, Firewire 400 and USB1.1.  The design of the machine is impressive – all of the internals are packaged into an ice-white half-sphere while the widescreen TFT monitor “floats” in the air on the end of a chrome plated lampneck.  The monitor can be raised, lowered, turned and tilted with such ease, and that adjustability is constantly put to use whenever I want to change how I’m sitting (or standing) or when I want to show what’s on the screen to someone else.

17" iMac G4 (2002)

17" iMac G4 (2002)

It was a very cutting edge piece of kit in 2002.  It shipped with OS X 10.2 (Jaguar) which had just been released and had an option to alternatively boot into OS9 or run OS9 apps in classic mode.  The dock was a nicely implemented feature of the Finder and with magnification turned on it proved to be a great source of amusement (for the first few days at least).  The applications on the machine even included an OS X version of Microsoft Internet Explorer (which Microsoft subsequently dropped after Apple released their own Webkit-based browser, Safari).

As much as anything, it was nice to be reacquanited with Macintosh after a few years of having had no home computer and only Windows NT at work.  My prior computer experience had begun with an Apple IIe at the age of four, followed by Macs from the SE, LC and Quadra ranges seeing me through to 1997 (with a good dash of DOS, Windows and other short-lived OSs along the way).  But then all of a sudden I had a brand new iMac running OS X, it was quite refreshing!

Apple II

Apple II complete with monochrome monitor and two 5.25" floppy disk drives

Macintosh SE 30

Macintosh SE 30

Macintosh LC III

Macintosh LC III

But, oh how times change.  Along came USB2 with a significantly faster data transfer rate.  Apple released iMacs with even bigger monitors.  The G4 was superseded by the G5, the G5 by Intel’s range of Core processors.  IDE gave way to SATA.  System bus and RAM speeds increased progressively and typical computer memory capacity grew.  Graphics cards with astounding abilities started showing up in new products.  A new version of iTunes saw Apple put an end to iPod synching over Firewire in favour of USB2.  I was stuck with the far more sluggish USB 1.1, but at least it still worked.  My 802.11b wifi card couldn’t compete with 802.11g so I restricted the iMac’s network connection to ethernet so I could run my wireless network as g only (it’s now n).

27" iMac (current)

27" iMac (current)

The latest iMac, in contrast to my own, can be bought with a 27″ screen, Intel Core i7 processor, Firewire 800, SD card reader, 802.11n, a super-charged graphics card and take up to 8 GB of (ten times faster) RAM.

I upgraded the OS on the iMac as new versions were released through to 10.4 (Tiger) and the machine still held up well.  Then 10.5 (Leopard) came along and G4s running as slowly as mine were for the chop.  Leopard required a G4 to be running at a minimum of 867 MHz, my 800 MHz was just not enough.  Just 67 MHz difference.  Unfortunately I couldn’t even accept the lack of support and just stick the OS on my machine, the installer prevented it.  Was that not unfair that my happy, Tiger-capable machine was not going to be supported on the latest OS?  Was it not just a marketing ploy to get users to buy new hardware?

Well, yes and no.  Of course Apple want users to keep buying new hardware, that’s where they make their money.  They (seemingly – no insider knowledge here) plan revisions to their products years in advance, not introducing too many features in one go so as to give their customers compelling reasons to upgrade as new products are released.  It’s good business on their part.  It means that they can stay in the public eye and keep customers interested with frequent product refreshes.  If they were to release a new product which contained all possible bells and whistles in one go, they could well then find themselves unable to release a follow-up with the same wow factor.  Public interest would quickly start to decline in such circumstances.

But it wouldn’t be fair of me to jump to such a conclusion.  The other reason they prevent installation on lower spec machines is that they are well aware of the bad press they’d get if users were unhappy with the OS running too slowly.  That’s quite reasonable really.  Rather than having users running the OS sluggishly on sub-par machines and then complaining that it’s rubbish, it’s probably better to be upfront and say, “This software cannot be used on this computer”.  Of course, I didn’t settle for doing as I was told and I modified my installer so that it would work for me.

When I did a straight upgrade, the resulting installation was so slow that the machine was unusable.  So I restored to Tiger and at the next opportunity, I performed an “Erase and install”.  That was far better, it was working.  It was perhaps a bit slower, but all of my applications worked once I’d reinstalled them.  So I was on 10.5 and the machine was usable!  But it was a bit slower.  My massive iTunes and iPhoto libraries were certainly slowing down their respective applications, more so than they were in Tiger.  Multitasking performance was also reduced, particularly when combined with heavy data transfer.  The downsides to running 10.5 were apparent.  I’ve managed to stick it out for over a year so far though, glad to be on the most recent OS and the same one that’s on my wife’s notebook (although it’s no longer the latest: 10.6 (Snow Leopard) has been out for a while and is Intel-only).

But I am now starting to feel the strain more heavily and find myself watching the spinning beachball far too often.  Recently, high definition and h264 video, amongst other technologies, have become increasingly prevelant and the 2002 vintage iMac with its puny graphics card just can’t handle them.  Flash video just cripples my browser in all but optimal conditions, and the higher the resolution, the worse it fares.  In fact, my machine struggles with any complex Flash app on the web, for which reason I’ve installed ClickToFlash.   I tried to watch a presentation at Macworld by John Gruber on YouTube last night and after listening to the first 15 minutes (and viewing the odd frozen frame) the audio became mangled and started cutting out every two seconds.  My attempts to reduce CPU and memory usage in other parts of the system didn’t help.  I battled with it for quite a while and ended up resorting to watching the remainder of the video on my phone, which I should probably have tried to do in the first place as it worked flawlessly.

So I realise that I need a new computer, especially as my phone can now perform a number of similar tasks with greater efficiency, but it will have to wait until I have some more available cash.  Money isn’t the only reason for waiting though.  My iMac is the last of its kind to have USB1.1, all of the following revisions have had USB2.  Although not in particularly high production yet, USB3 is ready to go and should start to appear in a lot of computers and peripherals during 2010.  It has a ten-fold bandwidth advantage over USB2 and is likely to feature as a major inclusion in the I/O interfaces of computers over the next few years (at least until the optical Light Peak technology is finalised and brought to market).  It is probably worth my while waiting for USB3 as it will allow me to take advantage of the next generation of high speed peripherals.  It has been tough being stuck with USB1.1 for the last few years while everyone else has been on 2, but USB2 has now been around for ten years (and in wide usage for the last seven) so it’s no longer the new kid on the block.  I don’t want to find myself in the same position again, so a slightly longer wait is manageable.

I don’t think I could bear to part with my iMac, so I’ll need to repurpose it once I have a replacement.  When that time comes, I’ll likely reinstall Tiger on it to make it a bit faster for general use, and ensure that I throw any demanding tasks at whatever my new machine happens to be!  Perhaps it could live out the rest of its days as a pretty file server or something.  Leave a comment if you can think of any other interesting uses for an old G4 iMac.


Me elsewhere

Categories

Recent tweets