Recent Posts

Flash on the iPhone

June 23, 2008 — 0 comments

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.

Compiling MySQL on Leopard for Ruby

June 17, 2008 — 0 comments

This is partially for me in the future just in case I'm stuck doing this again, and it's partially for the lone googler in the future who comes by needing a quick fix.

So, the short version:

Getting MySQL

Grab the 64bit version from MySQL ("Mac OS X 10.5 (x86_64)"). Easiest way is to grab the DMG, use the installer, and then add the preference pane.

Setting up MySQL

It's probably helpful to add an alias for mysql in your ~/.profile:

alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin

Preparing for Ruby

Grab your Leopard DVD and install Xcode if you haven't already... it'll help you compile some of the native C code involved with the MySQL gem.

Install the gem

Rock this:

sudo env ARCHFLAGS="-Os -arch x86_64 -fno-common" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

That'll build your MySQL gem for you. Most of the issues with errors like "lazy symbol binding failed" are the result of not setting those architecture flags; something with Leopard pushing multiple architectures but MySQL expecting only one.

Those are the main sticklers; if I missed a step along the way it's probably easy enough that a quick Googling would solve. Kudos to http://cho.hapgoods.com/wordpress/?p=158 and its commenters in helping figure out some of those pesky details.

The deal with WWDC

June 15, 2008 — 0 comments

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.

The status of me, Good-Tutorials, and... well, me.

June 01, 2008 — 0 comments

The last few weeks have been rather hectic for me, personally. Let's recap:

Graduation

I graduated from Carnegie Mellon University with a degree in Information Systems and a minor in History. Commencement itself was really interesting... we had Al Gore as our keynote speaker, and Randy Pausch was a sort of "surprise" final speaker. As always, Pausch is able to turn his speeches into really inspirational stuff. We're lucky to have him at CMU.

Moving

First leg of my trip after graduation was home in North Dakota. That meant clearing out my apartment, boxing things up, and shipping them home (which isn't cheap). I stayed at home for a few weeks visiting old friends and tying up a few loose ends, and then did the process all over again.

Moving (again)

So again I packed up my stuff (luckily a lot of it was still in boxes or suitcases), shipped some things out ahead of time, and shipped myself out to Palo Alto, California, which will be my new home. Yeah, I'm doing the startup thing. Tomorrow I start work at PAC, a cool Mac-flavored Rails company that has some really cool plans for the whole employment process (which, if my last year is an indication, sucks, since the job hunt in general is one huge long headache). Looking forward to picking up a lot about Rails and software development in general. Plus, on top of that, I'm in Palo Alto... how cool is that? Work+location+everything should just be a blast. If you're in the region, drop me a comment, email, tweet, what have you.

Good-Tutorials

I'm assuming a lot of you are interested more in this section. What is the status on this fabled new version, anyway? Things were wrapping up quite nicely in early May, but then between graduation and two moves across the country, well, things unraveled a bit. It's to be expected. Now that I start getting settled in here over the next week or so, I'll start getting back on the horse, so to speak, in earnest. I'm hoping to push out the new version come July, give or take. You'll know more as I know more. Lots of fun and exciting new things in store, though.

iPhone apps that don't suck

May 27, 2008 — 0 comments

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

twinkle

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

streetflow

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.

MobileScrobbler

mobilescrobbler

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

Tap Tap Revolution

taptaprevolution

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.