Find Me Online

HTML5 Powered with CSS3 / Styling, and Semantics

Is Objective-C Really a Bad Thing For Apple?

Whenever flash on iPhone is debated, one of the thing that’s mentioned is that Objective-C is really terrible and Flash (or Action Script) is a much easier language to learn and to use. Of course, Action Script is loosely based on Javascript, a scripting language and Objective-C is a layer on top of C, so that does confer Action Script an advantage when it comes to ease of use.

What people seem to be forgetting however is that there’s more to life than ease of use. By using Objective-C and the Cocoa Touch APIs, Apple has a set of technology that’s not that hard to use (really, try to learn it, you’ll see) but also, a set of technology that while open, is also pretty much only used by them. I’ve said this before in my last post, but forcing people to learn Apple technologies is not a bad thing. It’s certainly a bad thing for flash developers looking to make quick bucks by quickly porting existing code, but for the rest of us, it means the developer has to spend some time on the Mac, learning how it works, what the UI paradigms are and why things work the way things work. Ultimately, this leads to a developer that might spend more time thinking about the UI issues and how to really optimize the interface for an iOS device.

Objective-C has been pretty successful for Apple on the desktop for years. When Apple “forced” developers to ditch Carbon APIs (C APIs) for Cocoa APIs a few years ago to benefit from the latest advances in the OS, many balked and predictions of doom were also thrown by many. As far as I can tell, my Mac seems to have survived and so did all of the apps I’ve used. Certainly it means that companies like Adobe and Microsoft had and have a lot more work ahead of them rewriting large portions of legacy code. You know what though? At the end of the day, we get stuff like Outlook for Mac, a newly written app that takes full advantage of Mac OS X instead of Entourage.

During WWDC, Apple announced that Farmville was coming to iOS. It’ll be interesting to see if that version will take advantage of iOS 4′s Game Center feature when it launches. By being a native app, it certainly has the potential.

Meanwhile, iOS 4 is coming out today for all users. Grab it, it’s a great update.

Apple Versus Flash : Round 1

Something funny happened lately and I’m not talking about me moving and me being away from this blog for several weeks. No, I’m talking about Apple and the fact that everyone and their mother seem to now be against them.

Of course, that’s not a bad thing. It usually means you’re doing things correctly when your competitors start considering you as a worthy opponent. With the many weeks away from the blog, there’s so much to talk about. Let’s start with Flash.

When Steve Jobs wrote his open letter explaining why Apple wouldn’t support Flash, it started arguments all over the Web between Apple fans and Adobe fans. Clearly, Apple believes Flash is bad for the Web and they have no intention of caving in. Adobe obviously disagrees. Unfortunately for Adobe however, Jobs’ points are pretty good. Sure, you can laugh at the irony of Steve Jobs admonishing Adobe for creating a closed platform, but at the end of the day, performance of Flash on Macs (and Linux) has sucked for years and years. Why should we think it’ll be different on a mobile device? Ends up it’s not. Shocked yet?

That whole thing is just stupid anyway. Flash, clearly, isn’t that good. It’s not good for the Web, and it certainly isn’t a good tool to create mobile apps. Not because Adobe makes it, but because Adobe has never been able to make Flash performance acceptable on OS X. They’ve had more than 10 years now. If I was Adobe, I’d create great tools to easily create HTML5 and JS/Ajax piece of software. Instead of creating Action Script, output to standard JS.

Google, itself in a fight with Apple was quick to ally itself with Adobe and announce Flash support in Android during Google I/O. If I was Adobe however, I’d be a little worried because during that same conference, Google spent a few minutes on Flash and the rest of the conference talking about how HTML5 was the answer and how their JS engine was faster than the competition. Google is Adobe’s friend for now, because it gives them a way to differentiate themselves from Apple, but let’s face it, Google isn’t a huge fan of Flash. Just look at all the Google products. None of them ever use Flash, except for Youtube. The same Youtube that’s slowly moving to HTML5 and H.264.

Some people have construed by Anti-flash tweets as being anti-android but that really isn’t true. I’ll be blogging about Froyo soon, but I’ll say right away that I’m quite impressed and I’m glad to see some great competition for Apple. iPhoneOS needs to innovate. Hopefully that competition will help speed things up.

Flash for me is in the same category as IE6. It used to be great, it used to be the best way to go, but we’ve moved past and now it’s time to put it to rest. Adobe loves to say you don’t get the full web without Flash on the iPhone and iPad, but for the most part, all I’m missing these days is flash banners. Somehow, I think I’ll live.

Keep it Pure (I’m Going To Sound Selfish Here)

Today, Apple announced a new version of the iPhone OS, the software that powers their mobile platforms like the iPhone, the iPod Touch and the newly released iPad (I’ll have my review soon). As part of that announcement, they have released a beta version of the SDK for us developers to play with but so far, the biggest news to come out of this is a little something they added to the license agreement.

John Gruber on Daring Fireball has a couple of post on this. To sum it up, Apple seems to have banned the use of Adobe’s Flash CS5 to iPhone technology or anything similar to that. What Apple has done basically, is force everyone to use their standards and their tools to code on their platform. Anything else is forbidden. That also impacts other tools like the Mono to iPhone stuff that’s also available.

John makes the point that it’s in Apple’s best interest and his arguments are good. I highly recommend you read the article in question but I’m going to go one step further here : I’m actually glad they did it and I think it’s a great thing for everyone involved except of course for Adobe and Flash-only developers. Here’s why.

If the Mac is known for anything, it’s for being a platform where attention to details is important. On OS X, we’ve seen a lot of application succeed because of the look and usability alone. The name “Delicious generation” was used to describe apps like these. Mac users expect apps to not only function well, but to look good, to act like a native app and to work like a native app. As such, the vast majority of apps available on OS X today are apps coded using Apple’s standards.

So what about the iPhone OS then? Well, by forcing people to use Apple’s tools, it forces people to be Mac users to develop for the iPhone platform. By doing so, it at least forces people to have a minimal knowledge of what it’s like to be on that platform. With any luck, that’ll end up improving the quality of apps on available on the App Store. Most people switching to Macs in my experience tend to become addicted to nice Apps anyway even if that was never really a concern before. It’s just part of the Mac mentality I guess.

I can understand why Flash developers are not happy and I can certainly sympathize with them, but I’m glad Apple did this. Let’s face it, Flash apps and Flash sites are not known for their great usability. They are known for flashy animations, terrible performance and for being generally harder to use.

From the start, the iPhone platform has never been an “open platform”. There are other platforms out there that are more open and equally great like Android. This is a closed garden. That comes with big advantages, but it also means you need to conform to the rules if you want to play in it.

Why We Need To Kill Flash

Anytime there’s a discussion these days about the iPhone and its competitors, Flash is usually mentioned early on in the discussion along with Multitasking. Today I want to address Flash because it’s something I strongly believe we need to kill. The topic came to me last week when the news came out that Adobe was blocking the adoption of HTML5. We still don’t have all the details there, but it did remind me of my hatred for Flash in general.

Flash is a weird product. On the one hand, it did things very well. When Macromedia (now Adobe) introduced it in 1996, they managed to make it so ubiquitous that it now has 98%+ install base. That’s quite the achievement.

On the other hand, Flash is terrible and that’s something most people agree with except perhaps for Flash designers. It’s being used today mainly for 3 things : video streaming/playback, entire or parts of web sites and banner ads.

It’s too bad Web standards are so slow to be adopted because for video streaming, there’s already a much better solution than Flash. Youtube, UStream and many others are (slowly) moving to it as more and more browsers are supporting it. Of course, as always, Internet Explorer will be the one slowing us down for this. For Web sites, the “new” technologies like the latest revisions of Javascript and DOM scripting can absolutely compete with Flash.

There are 3 major problems with Flash. Let’s review:

First, the flash player is very poorly implemented on OS X and Linux. Performance is terrible and it sucks battery life out of your laptop in record time since it pegs the CPU to 100% in seconds. That makes it inappropriate for things like cellphones in my opinion. If you visit a site with banner ads and a few flash movies, does this means you will lose 20-30% of your battery life in minutes?

As a second issue, I would point out that the flash authoring app is way too pricy. In a world where everything gets pirated, it may not seem like a big deal, but Flash, unlike Visual Studio from Microsoft and XCode from Apple has no free versions for people at home to play with. Coupled with Adobe’s usual upgrade routine every 18 months, it make Flash to be extremely expensive.

The third problem is that Flash is controlled by one company. That company decides if the Mac OS X version will be performing well. That company alone decides when a new version is released.

Add to these 3 problems the fact that many Flash websites are terribly designed and would be hard to see on a smaller screen and that these sites are usually badly (if at all) indexed in search engines and you start to understand why Apple is refusing to include it on the iPhone.

Because of all this, I’m actually happy Apple is doing this. It has forced some sites to reconsider the use of Flash and I hope it’s a trend that will continue.

Hopefully more companies will be bullish like Apple and take a stand.