Catching The Next Wave

April 8, 2008

Note: The Pages o’ Peat have moved to http://peat.org/ — please update your bookmarks and references accordingly. Thank you!

Every now and then a set of technologies gets twisted together by a small group of dedicated people, and a new industry is born — a watershed event that demonstrates a new way of thinking about things, and throws out a lot of old rules.

There are a three that are coming together to trigger another watershed.

The first is open, popular, mobile Internet devices.  Think Blackberry, iPhone, or the slew of new MIDs that Intel showed off a few days ago in Shanghai.   These are built around the assumption of ubiquitous access to the Internet, high resolution displays, multimedia capabilities, and a bit of horsepower under the hood.  Any college student can get their hands on the Android or iPhone or Windows Mobile SDKs and build a hot little application in their spare time.

The second is web services.  It doesn’t matter if it’s WS* or REST or XML or JSON — the point is being able to query and manipulate data at a distance, with open protocols across public and private networks.  Pick your web framework of choice … building a web service is almost a drag and drop process today.

The third and final piece is cheap and scalable cloud computing.  The physical infrastructure capable of serving billions of transactions is available to anyone with a credit card and a little spare time on the weekend.  Amazon’s Web Services, Google’s App Engine, and a slew of smaller providers sell scalable computing and bandwidth by the hour and gigabyte.

These three fit together to form a fundamentally different picture of mobile computing:  light weight applications that fit in your pocket that take advantage of the local hardware, but seamlessly tap into “Internet scale” computing power and storage.

I’ve talked with a dozen entrepreneurs in as many months who are exploring these waters.  Streaming media (push and pull), information discovery and analysis, mobile social interactions, and location aware applications all depend on this trinity of capabilities.  I’m just one guy in a groundswell of people who are looking at the landscape and thinking “hot damn!”

What makes this so exciting is how easy it is to do today.  You don’t need a dozen engineers and a multi-million dollar budget.  You don’t need to negotiate with a corporate gatekeeper.  You don’t need to pitch to VCs.  You don’t need to wait.

2009 is going to bring a wave of media rich, location aware, always connected mobile applications to hundreds of millions of people.  I’m confident we’ll see a real forehead slapper by the end of 2008 — a tool or service that is painfully obvious, but fundamentally changes how we think about a day to day task.  It’ll make a millionaire or two, at the very least.

This will be fun.  🙂

Note: The Pages o’ Peat have moved to http://peat.org/ — please update your bookmarks and references accordingly. Thank you!

I spent the weekend building a native iPhone app.  It’s unfinished, and a little rough around the edges … but I’m happy with the experience so far.

The concept is relatively simple:  I want an app to search through (and show off) my collection of international banknotes when I’m out and about.

There are a few hurdles, though.

For example, it’s been over a decade since I worked on a reasonably sized C application.  So, I’m getting back into the swing of things with Objective-C style pointers and memory management, and remembering how much I hate segmentation faults and bus errors.

Also, being new to Objective-C and Mac development, this learning curve looks a bit like a wall.  Thankfully, there is quite a bit of sample code out there, but it’s not entirely consistent … which I guess is par for the course for a beta development system and a OS that hasn’t been released yet.

I’m learning, but I’m pretty sure my code is gnarly enough to make a Real Mac Developer nauseous.  That said, if you are a Real Mac Developer with a strong stomach, please drop me a line — I’d love to show you what I have, just so that you can tell me how bad it really is (and, hopefully, tell me how I can make it better).

At this point in the game, there are a few things I’m very pleased with:

  1. Interacting with the Internet and web services is incredibly easy.  Support for synchronous and asynchronous HTTP requests and very flexible caching policies make for a happy web service developer. This is particularly nice since the guts of the database and searching features will be powered by a Rails app siting on a server somewhere else.
  2. Working with XML is also very pleasant.  NSXML can handle proper XPath and XQuery searches, which is really quite nice.  The documentation is very mature for this and the other supported NS* classes, and there are plenty of examples out there on the net.
  3. UIKit follows very sane MVC and delegation patterns.  It’s pretty straight forward and consistent.

And, of course, a few things I’m rather surprised to find, and desperately hope for resolution on:

  1. The iPhone simulator isn’t entirely safe. My hamfisted techniques have somehow caused other apps (including Finder) to crash several times.  It’s terribly frustrating, and makes me a bit nervous about experimenting. I’m not sure if I’m getting better, or if the recent betas have been more stable, but I haven’t had any catastrophic errors recently.
  2. No (official) coverflow interface.  Wow.  This is perfectly suited for what I want to do, and a big part of what makes the iPhone such a compelling platform to develop for.  Please, please, please include this in the final release.
  3. I see Interface Builder … but absolutely no documentation on how to use it for an iPhone.  Can someone point me at an example? Apple now has a step-by-step guide to building a simple app on the iPhone with Interface builder. I also found an example here and posted my own followup summary for people who are already familiar with Interface Builder, and just want to see how to plug in their interfaces.

Anyhow, good points and bad points, but on the whole it’s been a good experience so far.  The NS* classes are all stable and well documented, and the UI* classes and documentation are about what you’d expect from an API in beta.

I’m keen to get a code review from someone who knows what they’re doing, and I’m eagerly awaiting the next update to see what’s changed.  Unfortunately, I think I’ll have to have to wait until June to get a real iPhone — I’m betting that the next generation iPhone will be released along with the SDK and OS 2.0 at WWDC ’08.

Update:  I found an Interface Builder + iPhone tutorial, and I posted a short summary about how to interface with the IB files.

Happy Anniversary

March 17, 2008

Note: The Pages o’ Peat have moved to http://peat.org/ — please update your bookmarks and references accordingly. Thank you!

Seven years ago today we were introduced at a birthday party.

Six years ago today I figured out how special you were.

Four years ago today we sat in a pub in Ireland and toasted to a life together.

Three years ago today I proposed to you in Germany.

Two years ago today we were married.

Today we have a family, and you’re even more magnificent than ever.

Cheers, to my wonderful wife.

Cheers!

Elliott Alexander Bakke

March 11, 2008

Elliott Alexander Bakke

Born March 11th, 2008 at 5:03 in the morning.

8 pounds, 13 ounces, 22 inches long, and 100% awesome.

We’re exhausted and happy.

Behind the Curtain

October 4, 2007

Here’s an interesting excerpt from Werner Vogels’ Dynamo paper about some of the guts behind Amazon’s e-commerce platform:

“For example a page request to one of the e-commerce sites typically requires the rendering engine to construct its response by sending requests to over 150 services. These services often have multiple dependencies, which frequently are other services, and as such it is not uncommon for the call graph of an application to have more than one level.”

There’s no doubt Amazon uses extensive caching to keep performance up, but 150+ service calls to render a page is remarkable, regardless of how you cut it. Even more impressive is how all of these services are built around the assumption that something, somewhere is failing: disks are crashing, networks are flapping, and processes are dying.

Check out the paper for more details.

Update:  It looks like Ars Technica got interested and put together a little write up on Dynamo.

Coda Text Editor

April 23, 2007

Panic, the mighty fine Mac development gurus here in Portland, have released a new product:  Coda.  It’s a text editor specifically geared towards editing web pages.  I’ve tinkered with it a little, and it’s nice …

… But the website is just plain awesome.

No, really.  It’s just dripping with gorgeous presentation techniques, and they all fit together like an Italian bespoke suit.  I can’t think of a better way to market a web development tool than with a killer web site.

Wow.

Quote of the Day

April 11, 2007

“One Dutch researcher estimates that there are some five trillion spiders in the Netherlands alone, each of which consumes about a tenth of a gram of meat a day. Were the victims people instead of insects, they would need only three days to eat all sixteen and a half million Dutchmen.”

– Burkhard Bilger, “Spider Woman” (PDF – The New Yorker. March, 2007)