Apple's Thoughts on Flash

There’s a very interesting article up on Apple’s site from Steve Jobs himself discussing the decision to keep Flash off Apple iPhones and iPads.  I thought I’d select a couple of the most interesting:

Flash was designed for PCs using mice, not for touch screens using fingers. For example, many Flash websites rely on “rollovers”, which pop up menus or other elements when the mouse arrow hovers over a specific spot. Apple’s revolutionary multi-touch interface doesn’t use a mouse, and there is no concept of a rollover. Most Flash websites will need to be rewritten to support touch-based devices. If developers need to rewrite their Flash websites, why not use modern technologies like HTML5, CSS and JavaScript?

In addition to the above, there’s also video which: decoding video to display on a computer screen using software requires a lot of the CPU (and kills battery life), while using a hardware-based encoding (H.264) is much more efficient.  Flash didn’t support H.264 until very recently.

We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform. If developers grow dependent on third party development libraries and tools, they can only take advantage of platform enhancements if and when the third party chooses to adopt the new features. We cannot be at the mercy of a third party deciding if and when they will make our enhancements available to our developers.

One of the most intriguing points Jobs makes is the concept of being beholden to a third-party to make updates to their libraries whenever Apple introduces a new technology.  With the speed of changes in the iPhone OS, I can see his point.

Perhaps Adobe should focus more on creating great HTML5 tools for the future, and less on criticizing Apple for leaving the past behind.

via Thoughts on Flash.

How Apple Can Support True Background Applications on the iPhone

At the WWDC in June, Apple announced their Push Notifications system, which will give iPhone applications a way to display messages to the user even when their app isn’t running. While this will give chat, microblogging and feed reading applications some semblance of running in the “background”, many users (including myself) haven’t been thrilled with this solution (and not just because it’s still not out yet!), as it doesn’t allow for cases like music streaming, or background location polling.

At the SDK event, Apple gave a number of reasons why they didn’t want to support true background processes for iPhone applications:

  1. Having lots of applications running could quickly use up the limited resources and battery on the iPhone, causing performance problems.
  2. They didn’t want the user to have to worry about managing active programs with some kind of complicated “Task Manager” interface.
  3. If applications could continue to run in the background without any visual cues to the user, it would be that much easier for apps to perform unintended/unrequested operations.

I think there’s a way for the iPhone to provide better support for background applications, without breaking the requirements listed above. Think about what happens when you’re on a call, and you tap the Home button. You can launch applications, and pretty much do whatever you like while still on the call. Here’s what this looks like:

You’re aware that you’re still on a call because of the bar at the top of the display, and you can tap to return to the call if you wish. I think background applications could work the same way, and in so doing wouldn’t break any of Apple’s requirements:

  1. Only one app could be in the background at a time, so you wouldn’t have lots of apps hogging the resources of the phone. Yes, you’d have another process using resources in addition to the foreground application, but it wouldn’t need to use any of the graphics framework, and in my experience the iPhone would be powerful enough to handle this kind of limited processing.
  2. Nothing is hidden from the user. They know exactly what’s happening in the background because they’re being told at the top of the screen, and can tap that bar to return to the app. Another nice benefit here is that perhaps the application could customize what gets displayed in this line, so an app like Pandora could have the row say “Now Playing: Enter Sandman by Metallica”.
  3. No Task Manager is necessary. The way users interact with the background app is intuitive because background phone calls already work the same way.

Of course, this isn’t a perfect solution since only one app is running in the background at once. If you want something to run 100% of the time, then you’d never be able to run an additional background app on top of that. However, I think a system like this in addition to the Notifications framework solves most of the desired use cases for background apps: music playing/streaming, location polling, real-time text updates, and so on.

What do you think? Would this kind of system solve the problems you have with background apps on the iPhone?

From Gmail to MobileMe

When I purchased an iPhone 3G (upgrading from the first gen), I also purchased the companion MobileMe service, and I’ve been giving it a test run since.  At the time, I was hoping for a replacement to Google’s Gmail, but unfortunately, it’s not quite there yet.  I thought I’d take a few minutes to offer some tips to the MobileMe Email team, as well as start a discussion on email services in general.

[Read more...]

Internet radio as the killer iPhone app

Since Apple launched the App Store for iPhone OS 2.0, I’ve been keeping my eyes out for what might be the next killer app for the iPhone.  I’ve often thought the iPhone would be a game-changer in the mobile environment, allowing people to think of their phones in a new way.  These mobile devices are no longer simply a phone with added-on Internet access, but a complete communications and personal computer system.  With games and other non-communication-oriented apps the iPhone has achieved much towards this end, but there’s one additional category that has the potential to be a game changer in an unexpected way: internet radio.

The Pandora and AOL Radio apps are designed to allow you to stream radio to your iPhone or iPod Touch.  The introduction of fast 3G Internet access on the iPhone represents a significant threat to satellite radio and, to a lesser extent, terrestrial radio.  Consider the implications.  A user has an iPhone that’s the same size as an iPod (or a Sirius Stiletto) that can stream radio while in the car, walking down the street, or inside a building.  The iPhone can hop onto WiFi networks (same with the iPod Touch) or use 3G.  Even Edge connectivity allows for decent streaming.  All that adds up to great wireless access – as good as, or better than, satellite technology, since 3G and Edge connections work indoors whereas satellite doesn’t.

Accessibility aside, the real advantage is the phenomenal flexibility streaming radio provides.  Take Pandora for example.  It’s a streaming radio program for the iPhone that creates a customized radio station matched exactly to your tastes.  But even the simple ability to skip over songs you don’t like, a basic feature of Pandora, is inherently absent from any pre-programmed content station.  Such a simple feature goes a long way to improving your listening experience, and it’s almost embarrassing in the age of TiVo to not be able to skip over content you don’t find interesting.

With greater accessibility and significantly greater flexibility, streaming Internet radio will become one of the biggest threats to satellite radio over the next few years and will become a killer app for the iPhone.  Cell technology is getting better at providing high-speed Internet access, and already there are a number of very good streaming services that match listener’s tastes to music.  As the iPhone becomes increasingly popular among consumers and access speeds increase, satellite will suffer.  Satellite’s only hope to stay competitive is to offer enough exclusive content that listeners won’t be able to part ways with satellite radio without missing their favorite programs, but even that strategy is tenuous at best – it will only be so long before the content creators themselves decide to head for the greener pastures that Internet streaming radio provides.

12 Notes on Setting up Gmail IMAP with Apple Mail

Just like Ryan, I’ve been in the process of moving to Gmail to handle all my email, now that they provide IMAP access. In no particular order, here are some notes and thoughts on the process of setting up Gmail IMAP with Apple’s Mail.app:

  1. Rather than restate all the steps I took, I’ll link to this post that I found useful. In particular, configuring Gmail’s Drafts, Junk, Trash and Sent folders to match those in Mail is nice.
  2. The way Gmail implements IMAP wasn’t very intuitive to me and took some getting used to. For example, deleting a message from a mailbox doesn’t really delete it, it just removes that label (or at least that’s how it’s supposed to work; more on that later). I found this page helpful in getting used to how IMAP functions match Gmail actions.
  3. I know this has probably been discussed ad nauseum, but I wish Gmail would loose the “labels” concept and move to “folders”. While I’ve eventually gotten used to it within Gmail, the problem is only made worse with IMAP. For example, if a message has two labels, you’ll see it in two folders, which means it’ll show as two unread messages.
  4. I figured as long as I was setting all this up, I’d use Gmail to backup all my old messages, as described by Ryan. This meant copying over my old mbox files, importing them to Mail, and moving them into the appropriate folders in Gmail. It’s definitely a slow process, but you can view the progress from the Activity window (under Window -> Activity). There were a few times when the moving failed: I believe it was due to cases where messages had very large bodies. Although it failed partway through, I was able to start over without having any duplicate messages, so it looks like Gmail is smart enough not to add an exact duplicate.
  5. To help speed the process a bit, I’d recommend turning off caching while doing any importing or moving of messages. This is done under “Keep messages for offline viewing” in the Advanced tab of the Gmail Account preferences. Once everything is set how you like it, you can turn cacheing back on. For a large number of messages the caching process can also take a while.
  6. It took me a while to find a setup for my outgoing messages that works for me. In the past, I’ve had my email client set to automatically BCC myself on any emails I send. This way my messages get categorized properly, and my emails will be in the same mailbox as the rest of a thread. With Gmail, my sent messages were getting put into the Sent Mail folder in Gmail, which means I never got a chance to filter them into any labels. BCCing myself didn’t help, since Gmail already had a copy of the message in Sent Items. What I’ve done now is to remove Gmail’s Sent folder as Mail’s Sent mailbox, which means the only copy that Gmail receives is the one that gets BCCed, which means I can have it filtered however I like. Update: Turns out I was wrong on this.  Any email sent through Gmail’s SMTP will be added to “Sent Mail”, so BCCing won’t help.
  7. An unfortunate annoyance with Gmail IMAP is that unless you have a message filtered to automatically archive (in Gmail context this means moving it to “All Mail”), it’ll show up twice in Mail: once in the Inbox, and once in “All Mail”. So far I haven’t found a way to avoid this.
  8. The filters in Gmail are rather basic and limited, especially compared to Mail. For example, I don’t think there’s any way to match messages whose subjects start with a string, instead of just containing the string.
  9. Rather than set up a complex set of filters for all the email I get, I got an idea from Ryan to only create filters for less important messages, like automated log messages. Anything important will to go my inbox, and then I can choose how to label it or to delete it. This also has the benefit that on my iPhone, I can just check my Inbox and have important new emails in one place.
  10. Although Google Help says that deleting a message will just remove its label, it won’t necessarily work this way in Mail. Although deleting a message will remove the label (or if it’s in the Inbox, archive it), moving it to the Trash will actually put it in the Trash, which puts it in line for deletion. I think you could prevent this by not having Mail’s Trash mailbox be Gmail’s Trash, but the whole “deleting a message to remove the label” feature isn’t something I really need to use.
  11. I love the new Todos in Mail, but getting them working in Gmail also required some changes. From what I can tell, you can have Mail store the Todos locally or on Gmail (although there doesn’t seem to be a simple Preferences change for this). If it’s on the server, each Todo is stored as an email, and if you want to specify a Calendar for an item, it means defining a new set of Calendars in iCal. If you store the items on the server, each corresponding message shows up in a nice human readable format, but unfortunately on the iPhone all you see is a Mime attachment. Hopefully in the future Apple will provide a simple way to access Todos on the iPhone.
  12. Reading back on these notes, I see how complicated Gmail IMAP can be! I don’t think it’s quite ready for average users yet. That said, it’s nice to know that 1) I now have all my email accounts coming to one place, 2) my old emails are backed up online, and 3) I can access all my email from my computer, my phone, or a browser.

My MacBook died

MacBookI’m very sad – the logic board on my MacBook died on me several days ago. I’m very glad I bought the AppleCare extended warranty, though, as it was almost exactly one year and one month since I bought it (and would have been one month out of warranty had I not purchased the extended plan).

It’s currently being repaired now, which means I’m stuck using an old machine until I get it back (an aging Windows Pentium 4 I had). It’s tough going back to Windows now that I’ve been used to the Mac for so long, but I’m still able to get work done. I’m using Gmail for my email (I had set it up to automatically download all of my work email to Gmail before my Mac died, so I have most of my important messages there), the e text editor, which is very similar to TextMate, WinSCP (to replace Cyberduck), and Putty for my terminal.

When the MacBook died, I was getting very nervous, as I had a deadline (today) for a client. I brought the laptop to the Apple Store nearest me, and they helped me get the documents I needed off the drive before sending it in for repair (they pulled out the drive and inserted it into another MacBook, as I had FileVault turned on – big mistake – where I was able to plug in my external USB hard disk and trasfer the docs I needed). That was way cool, and extremely helpful, as I wasn’t able to get it to boot into target mode.

So, long story short, I should have it back early next week. First problem I’ve had with it, and luckily I had all my important documents backed up (and I met my deadline!). So the process was about as painless as it could have been, and I should have it back early next week.

Update: I got my Macbook back from Apple.  It powered on and was working fine until I went to plugin the power adapter.  Turns out the light on the power adapter (green or orange) doesn’t light up, and it doesn’t charge my battery.  Very frustrating, so I brought it back to the Apple Store, which they are now repairing (again).

MacBook Happiness

There have been a lot of things discussed across the blogosphere regarding problems with the MacBook laptops, such as random shutdowns and case discoloration.  Well, I just wanted to point out that not everyone is having these problems: I bought my MacBook in May and have been using it on a daily basis since without a single problem.  I use it as my main desktop computer at work, and it’s performed great (I’m even writing this on it now).

My MacBook has been the best all-around laptop I’ve yet owned, and based on my experiences, I’d highly recommend it to anyone considering buying a new laptop.  My next purchase will probably be a Mac Mini towards the end of the year.