The more I sit and contemplate MobileMe, the more impressed I am of its sheer audacity.
Apple decided to suddenly unleash this product to the world whose purpose is to keep your data in sync no matter where in the world you are, no matter which machine you happen to be using, no matter which operating system you happen to be sitting in front of. Marketing aside, pushing this data all around is one pretty heavy feat.
It's not an easy thing to do. Look at MobileMe's launch, which was plagued with problems for days (weeks if you include the email issues some users faced). Amazon's tried the cloud computing for a year or two now, and they've had some well-publicized downtime. Google's just starting its own foray into the market with Google AppEngine, and they've had some issues as well, possibly to a greater extent than Amazon due to its role as the newcomer.
The problem is that the classic SLA mentality that has stuck with web hosting for the last decade or so just doesn't mesh with the idea of the cloud. Your website goes down, it sucks for you and your visitor. S3 goes down and it sucks hard for you, your visitors, your competitors, their visitors, your favorite social networking site, all of its visitors, and so on. It's the classic centralized/decentralized problem: in a decentralized model the reliability of the system is unmatched, and in a centralized system you gain in terms of efficiency and performance. On top of that, MobileMe has a special consideration: if it bombs more than a beached failwhale and things like your phone contacts get lost on your iPhone, people are going to be pissed off. Business information is one thing, but with MobileMe tackling personal information — phone numbers, photos, calendars — some really important data is at stake.
So let's assume that MobileMe will sort out the kinks and maintain a relatively workable uptime. Once it gets reliable and Apple has the ability to scale and maintain the cloud, some really interesting things can happen. One of the most audacious is ubiquitous media. My 16GB iPhone can certainly hold a large amount of music (remember, the first generation iPod started at five gigabytes). But even with that amount of space available right now, it's going to be awhile until I can squeeze my nearly 300GB iTunes library onto one device. For the last three to four years we've been playing the scaling game. First we scale hard drives (jumping from 1st generation iPod's 5GB to today's 160GB iPod Classic). Then we scale flash memory (from a 1GB iPod Nano to today's 32GB iPod Touch). We've been so reliant on the increasing expansion of storage that we've missed sight of some other bigger possibilities. With Wi-Fi built into every Touch and Wi-Fi and cellular connectivity in iPhones, we're hitting the point where you really don't need to have all of your media in pocket as long as you can access it. Last.fm has pushed out a pretty innovative iPhone app that lets you stream recommendations to you (or stream your actual library to you if you pay for their premium service). Pandora also has made a perhaps superior iPhone app that also lets you stream recommended music to your iPod. Just today, Simplify Media released their app that brings you even closer to this ubiquitous ideal; set up their software and you actually can stream your very songs from your Mac or PC at home. It still could be quite some time before Apple could reach the point of supporting such a bold strategy, but the foundations are being built: Back to My Mac keeps track of your devices and lets you talk directly to them no matter where they (or you) are, iTunes is getting better at streaming between iPhones and iPods and Apple TVs and Macs, the MobileMe cloud is starting to be reliably scaled, and with iPhone 3G we can start reaching a state of ubiquitous high speed connections for music streaming.
At that point, it's not a big stretch to imagine video, documents, perhaps even scaled-down (or full?) applications running in parallel between an iPhone and a Mac at home. Why do you need to somehow figure out a way to sync your personal finance desktop app over USB with your mobile app when you could just shoot updates between the two over the cloud? We've been struggling for decades to hit some sort of thin client utopia, but seemingly no one could figure out a good way to make the jump into mobile. Bill Gates has been pushing speech recognition and the Tablet PC for at least a decade, and even though it has produced some cool stuff, we haven't nearly met the visions that Gates and Microsoft themselves had made for the late 1990's. For years, Palm was getting closer and closer... its platform was perpetually two years away from making the leap from business mobile needs to the normal consumer, thus bringing about a revolutionary new way of life. Never happened. Even today, hundreds of whiz-bang web 2.0 sites are struggling to fill this niche that everyone knows will be conquered but at the same time no one has the slightest idea how to go about it. Microsoft had the desktop but not the mobile device. Palm had the device but not the desktop. Today's websites have the cloud but not much else.
Maybe Apple's in the best position to finally crack this nut. They seem to be holding or trying to acquire all of the cards. Their mobile device is fresh, new, and most importantly, selling. Their traditional desktop business is blooming, and even if their Mac business collapses tomorrow, MobileMe works on a PC, too. And MobileMe is the cloud that, while new, aims to unify everything else. You could make even make the argument that if MobileMe itself collapses tomorrow, Apple could still be in a good position to succeed here: those whiz-bang web 2.0 sites, while mostly harmless, are onto something big. MobileSafari (and WebKit, in a broader sense) is literally pushing web development every step of the way. If Google Apps ultimately win out, or Microsoft's forays succeed, or SuprCuilBetaSpaceAwesome 2.3 comes out of nowhere and takes the world by storm, Apple is still in a good position with a solid mobile browser to build on top of the winning platform.
IBM vs. Apple is dead. Apple vs. Microsoft is dead. Microsoft vs. Apple is dead. Microsoft vs. Netscape is dead. The early part of the millennium left us broke, stagnant, and without a Great battle. The browser wars were finished, search was just starting to get re-invented, and we were a bit shell-shocked from the blistering pace of innovation during the nineties. Even four years ago you could do some digging and find a general feeling of "oh, well, things are always interesting in the technology sector, but the glory days are behind us". We might not reach the days of the bubble again (for better or worse), but it's shaping up to be a battle of epic proportions: Microsoft, Google, Amazon, Apple, the countless bright-eyed entrepreneurs in the Valley and around the world. It's hard to count anyone out at this point. Each of those four companies + startups are the type of places that tend to attract the smartest, most energetic employees in the world. They're led by bright people that understand technology who have been through rough times before. It's not Xerox pissing away PARC redux or HP ignoring Woz and his invention or IBM not really caring about the implication of a couple of nerds selling some sort of OS.
It's going to be an exciting decade.
Ever since the iPhone came out, there's been a mildly vocal minority who want Apple and Adobe to work together to put Flash on the phone. John Gruber has already nicely summed up some of the technical and legal reasons why it won't happen; what we should try to understand is why there's a demand for it in the first place.
There are very few times when I'm on MobileSafari and find that I can't do a certain task. Sometimes it's a case of just wanting to be on a full computer — writing a blog post, for example — but I still could get it done if I needed to. When I do legitimately run into a roadblock on my phone in regard to Flash, well, it's important to determine why I'm hitting that roadblock to begin with.
Flash is used online in three broad forms: advertising, rich content experiences, and video. I think in virtually all instances the general consumer could care less about the first two. 3G is going to be fast, but not fast enough where you wouldn't notice the extra KB loading an ad or two, or loading up some design shop's Flash-based design. As Gruber mentioned on The Talk Show, a lot of the speed difference on the iPhone is processor-based; even over Wi-Fi the iPhone does take noticeably longer to render a page than on your desktop (although it does perform extremely well in comparison to other phone s' render times over Wi-Fi). It's not a question of speed, it's a question of how fast of a processor you can really cram into a phone without compromising battery life or physical size. I can't imagine adding another layer on top of that — a Flash engine — would be anything but bad for rendering times. Even if the processing hit can be managed, the additional overhead will still have some type of impact; iPhone, for example, keeps previous "tabs" open on the phone with the content rendered until MobileSafari maxes out its share of memory. At that point it slowly garbage collects old tabs one by one until it reaches a more appropriate memory usage. That's why you can have five tabs open, but when you hit a larger page and then try to return to a previous tab you'll find that you'll have to make your request over again.
That brings us to the last form of Flash online: video content. This is the stickler, and I suspect this is the area that most people are clamoring for. I admit, it's a bit of a pain in the ass to see a link on reddit or via email or whatever, only to click on it and see that you can't run it because it's an embedded YouTube video or a different video service all together. If it's the former, there are ways to get around it. The problem is that, while iPhone's YouTube player is actually pretty slick, if the code is embedded on a page outside of YouTube.com, the YouTube app can't pick up on that. The easy option is to get a bookmarklet like iTransmogrify, which uses JavaScript to parse the current page's DOM looking for YouTube embed code. If it finds it, it writes a floating div into the page that lets you tap straight into the YouTube app. Given the current rumors surrounding iPhone 2.0, it sounds like this type of functionality will be added come July so we won't need to deal with workarounds.
We have a decent YouTube solution, and for some people that might be enough. YouTube has a commanding lead in online video. But there are still times where you might want to see a video on Vimeo, for example. How do we tackle that problem? There isn't a Vimeo app (although I suspect this might change as we move into the post-2.0 state: perhaps more and more site-specific apps will start coming out free of charge). The problem is that from the looks of it, the SDK doesn't give any hooks into MobileSafari. I believe YouTube's app is able to work with iTransmogrify through some sort of youtube:// protocol that it calls, similar to Google Maps integration on the phone. It remains to be seen whether a developer could add a vimeo:// handler, although it sounds like this isn't the case.
It leads to a lackluster state of affairs, then. Even if someone were to build a MobileFlash and got around the legal issues of doing so, there's really just not a way to hook into the SDK to make it useful. I don't think the way to build it is to mimic the desktop experience: you just don't want to have to suffer through performance degradation just to load up an ad or to play around with Flash navigation that isn't build for finger-based input anyway. Even on-page video would be frustrating: given screen real estate, you'd have to manually expand the content so that you could watch it close to full-screen rather than trying to squint to make it out on a zoomed-out page. The solution is to either build a separate Flash app similar to YouTube's app or MobileQuickTime: a "click to view" link that transports you out of MobileSafari for full-screen viewing and controlling.
The SDK prohibits code that runs code, and there currently isn't a way to link MobileSafari to new apps, so it looks like we're stuck. It does look like there's a reason to want Flash on the iPhone, it's just that it's usually outweighed by the many more situations when you don't want to have to waste time loading ads, for example. Given the limitations of the SDK, I don't think we're approaching a time where MobileFlash is feasible. Given the limited reasons of why someone would want Flash on the iPhone, I don't think we're approaching a time where Apple feels that the limitations of the SDK should be lifted.
A week after WWDC and I'm still rather underwhelmed. I at least wanted to be a little whelmed.
There were three parts to WWDC this year: stuff that was recapped, stuff that wasn't unexpected, and stuff that was new. They weren't there in equal proportions, either.
What was irritating for me was such an emphasis on the recapped portions of the keynote. We knew about the SDK, we had been shown a walkthrough of Interface Builder, we knew people were building cool apps (Super Monkey Ball again?). These weren't rumors; they were shown at the last Apple event. Admittedly, it is the developer's conference, so a tech-centric focus was inevitable, but you can get so much more out of a smaller session than you can with paired programming in the Moscone Center.
Admittedly, part of the thrill of an Apple event is the surprise. There's nothing quite like a "oh, and there's one more thing" in the tech industry. The rumors sites had most of the details pegged: 3G iPhone (obviously), MobileMe (most of it), Snow Leopard (in and of itself a yawn right now). It takes a little bit of the fire out of the event, of course, but that's part of the game.
The problem was that when everything's said and done, there really wasn't much being offered here. iPhone now has GPS and 3G — likely enough for me to upgrade my own — and MobileMe has some cool aspects (web apps look gorgeous), but when you get down to it it's just a tweaked iPhone and a tweaked .Mac. On top of that, you can't get anything right now. iPhone's not for another month, likely the same for MobileMe, and AppStore's somewhere in there, too. Given their SDK launch event a few months back it sounded like WWDC would be the target release for AppStore. I am looking forward to both AppStore and MobileMe, but the wait kills the buzz a bit.
Hopefully this all means that the next event Apple does will be killer. Apple's hardware is where the real sparkle comes from, and it was mostly absent for WWDC. Throw some new radical design changes on the ancient (and tried-but-true) PowerBook and iBook designs and things will start feeling fresh again in a hurry.
We're slowly rounding the corner of the long year and a half to the official iPhone SDK. Momentum has been growing and growing; Apple's main iPhone SDK site is now at positions 2 and 3 on Google for "SDK". Cocoa developers are tweeting away at all of the possibilities for the iPhone once the proper SDK is released, and there's quite a few who throw out the term "game-changer".
But fuck it. It's mid-May and by golly, who wants to wait. Installer.app has been around for months now, and it's really matured. It serves as a virtual "AppStore" until the real deal comes along, and lets you install, update, and uninstall apps on the fly. These aren't the officially-supported web-based apps that have been around for half a year or so; these apps run native on your phone. So, until the floodgates open up around WWDC, let's take a peek at some of the cooler native apps out there right now.
Twinkle is a location-aware Twitter client. It taps into the same technology that powers the latest Google Maps update: it uses your surrounding wifi connections in conjunction with cell phone tower triangulation to come up with your location. When I start up Twinkle, I can see the number of recently-made tweets made "near me", which is a rather interesting aspect added on top of Twitter. When I was on campus at Carnegie Mellon, I chatted with a few different perspective students who were on-campus doing their college visits. Answered a few questions, offered to meet up (though our timing didn't work out), that type of thing. Another time I was driving a few hours into Ohio to enjoy an excellent day at Cedar Point (best roller coasters in the world), and I was able to strike up a conversation with a few people just by driving along the interstate and stumbling on random tweets as I went. It certainly makes for some interesting it's-a-small-world-out-there experiences.
Another cool thing is that Twinkle lets you attach images to your tweets. Other Twinkle users can see your posted image, and I believe they've since added a way for regular Twitter, non-Twinkle users to see it online, too.
StreetFlow is relatively new, coming on the scene a few weeks ago. It's one of my favorite apps, and it's something that could really benefit from a greater number of active users. Think of it as a social restaurant app. There's a few of them online already, but having a simple one in your pocket is pretty helpful. Like Twinkle, it's location-aware, so it can give you a listing of restaurants closest to you. It also has reviews, so other users can rate and review those restaurants and help out the cloud. You can also take a snapshot and attach it to the restaurant's profile, although I think there's a fair amount of functionality that needs fleshing out there.
It's an app that is pretty cool, but given the AppStore and a few hundred thousand or million people more, it could be really good. I'm not sure how much the developer is intending to continue work on StreetFlow, but if it becomes abandonware, it shouldn't be a huge problem for someone else to recreate it with a proper SDK. If iPhone 2.0 has built-in GPS, StreetFlow could be even more useful, too.
If you're a Last.fm user, MobileScrobbler is a bit of a natural extension for you. I've usually had issues with the Last.fm OS X client when it comes to getting my iPod-listened tracks added on my Last.fm listening history. MobileScrobbler handles that for you: when you play a song on your iPhone, it will send that off to Last.fm's servers in the background and you'll then see the track added to your play history. It was a pretty seamless process; it took me a good two or three days before I even noticed that it was scrobbling tracks in the background for me.
On top of that, you score some pretty crazy music streaming capabilities. You can stream your playlist, your neighborhood, or recommended tracks. It acts like the normal music player at that point—you can lock your screen, get up, take a walk, and so on (provided you still have access to wireless).
Okay, I'm not one of those guys that really get sucked into Dance Dance Revolution or Guitar Hero or Rock Band or anything. I've enjoyed about three hours on Guitar Hero, but that's about it. Tap Tap Revolution is the natural evolution of DDR on the iPhone. It's surprisingly pretty fun. Two cool aspects here: the songs come from your own library, and the other is that the beats to those songs comes from other iPhone users. It's pretty straightforward, fun, and if my friends are any indication, the one app that people steal my iPhone away from me the longest to play.
Admittedly this will impact a very minor number of you out there, but I've been enjoying my newfound iPhone 1.1.3 capabilities, specifically in terms of fun new icons I can toss on my iPhone's desktop for a quick link to a website somewhere.
I started looking around, trying to see which one of the sites I normally frequent have super-special iPhone/iPod Touch icons around (like this fantastic site). It's a bit of a pain to do it all one at a time, so I looked at my feed reader.
NetNewsWire has an OPML export option, and I'm sure other readers do, too. I figured, hey, let's just try to see if I can parse that export to see which of my subscribed feeds have WebClips. It's a bit of a hack job since I only wanted to spend 10-15 minutes working on it, but it works decently for what it needs to do (and I had some help which shaved a few minutes off of the process).
require 'rubygems'
require 'hpricot'
def valid_url?(url)
uri = URI.parse(url)
http_conn = Net::HTTP.new(uri.host, uri.port)
resp, data = http_conn.head("/apple-touch-icon.png" , nil)
resp.code == "200"
end
filename = ARGV.first
doc = open(filename) { |f| Hpricot(f) }
(doc/"outline[@htmlurl]").each do |item|
url = item.attributes['htmlurl']
puts url if valid_url?(url)
end
Nothing really groundbreaking here- just toss that in a file and then pass it the name of your OPML file, presuming they're both in the same directory. It'll then trawl through your subscriptions and spit out any domains that have WebClip icons. So, type something like
ruby webclip.rb subscriptions.opml
This also assumes Hpricot is installed
sudo gem install hpricot
Hooray. iPhone home screen icons.