Corporation Unknown Logo

It Lives!

(There is no Easter-related content here; the timing is pure coincidence.)

I just received word that the 2.0 update to ESPN Passport—the last fruits of my contracting with the fine folks of RogueSheep before joining Black Pixel—went live on the App Store today. What started out as “add Facebook Places functionality” became a much smoother, more efficient and focused application that I was proud to have a part in.

If you’re at all interested in adding a social network aspect to your sports watching, go check it out. It’s free, but you’ll need to sign up for a free ESPN Passport login to get the most out of it (Facebook and Twitter logins add even more).


(By the way, have you tried RogueSheep’s latest app, Easy Alarms? I played no part in it, but it rocks all the same.)

iPad and the Digital Hub, Revisited

Apple released iOS 4.3 yesterday, and it looks like iTunes Home Sharing provides almost everything I had wished for in my original post.

There seem to be some quirks (all videos and podcasts are marked as unplayed on the device) and other behaviors I’d like changed (watching/listening to a podcast on the device doesn’t report that to the shared library). These niggles are really just small issues compared to the big advance of having access to my full library.

Thank you, iOS team!

Year in Review 2010

It’s still the first half of January, so I’m in the grace period for a “Year in Review” post.

2010 was one heck of a slingshot year for me and Corporation Unknown. I started the year unemployed and thin on contract work, and finished it with Corporation Unknown’s highest revenue in its 3-year history and a job offer I can’t refuse.

Bughunting a Bashful Table View

I ran down a strange bug yesterday that I thought I would recount in the hopes of saving someone else the half day of frustration.

I was going along, minding my own business, implementing a typical -tableView:didSelectRowAtIndexPath: delegate method to create a view controller, push it onto the navigation stack, and then…nothing. The view didn’t appear, and the app interface became unresponsive. Numerous pauses in the debugger showed what would appear to be normal stacks in the running of the app—no infinite recursion going on, thankfully.

The view was actually in a strange nesting of UITableViewControllers, UINavigationControllers and UITabBarControllers, so I reworked that to the bare bones of a UITableViewController pushing a freshly made UITableViewController onto its navigationController. I verified that it was being initialized properly, and that I had a valid navigationController to push onto (and other view controllers did push with the same navigationController). Still no change.

Sudden Termination

Today, Tim Bray commented about Android applications needing to frequently save their restore state and be ready and able to gracefully terminate without notice. (This behavior also applies to iOS apps, of which I have much more experience than Android.)

At some point, after I’d explained a few times why you have to write software this way on Android, I started wondering why all software, without exception, isn’t written this way by default.

As of 10.6, Apple added enableSuddenTermination and disableSuddenTermination calls to the NSProcessInfo API to allow you to implement similar behavior on the desktop.

iPad and the Digital Hub

Yesterday I tweeted about a feature I would like:

Want: iPod on iPad able to browse desktop iTunes à la Home Sharing. Watching WWDC videos on iPad w/o having to sync first—yum.

I received a few recommendations for Air Video and StreamToMe. I’d forgotten that I’d downloaded Air Video but hadn’t set up the server; I’d also forgotten about StreamToMe even though I subscribe to Matt Gallagher’s blog.

I fired up the Air Video Server and started it serving the iTunes U playlist. Connecting and browsing from the iPad client was simple and straightforward. Trying to stream a WWDC video paused to buffer annoyingly often—which I blame less on the software than the 2GHz Mini it was running on, which probably also had the misfortune to have Time Machine kick in at the same time. But it doesn’t seem to have a functionality I implied by the “Home Sharing” reference: Copy the video to the iPad to watch elsewhere later. StreamToMe looks to have similar features (and lack thereof) to Air Video, so I didn’t test it.

I appreciate the recommendations, I really do. But neither of these can get past the one requirement I didn’t specify: I don’t want a third-party solution. My tweet was really a passive-aggressive desire to have Apple implement this.

My Accessorizer Configuration

Due to “overwhelming demand,” I am sharing my configuration set for Accessorizer here. I think there needs to be some explanation to many of the decisions, though, so here you go. This is not intended to be an interminable discussion of coding style and practices, though—if you disagree, go ahead and make your own configuration based on mine. This is also not intended as comprehensive documentation for Accessorizer—read its included documentation, explore tooltips, and experiment freely.

WWDC: Eat the Lunch

‘Tis the season for WWDC Survival Guides. I don’t really have anything to add from my post last year, but I want to state an opinion contrary to the prevailing common wisdom: Don’t be afraid to eat the lunches.