April 8, 2008

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.

April 8, 2008

Note: This is a little out of date, since the Beta 3 build automatically generates an empty XIB and the code for including it in new projects. If you’re looking for Apple’s introductory tutorial on how to build applications with Interface Builder, click here.

So, the trick to using Interface Builder is figuring out where to put the files, and plugging the XIB interface into the app.

The file question is easily answered: File > Write Class Files to the directory in your project where the rest of your classes live. For really simple apps with a single view, select your existing AppDelegate class and IB will merge the changes for you. You’ll also see a new .xib file in your classes directory, containing your interface.

April 7, 2008

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:

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.

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.

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

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.

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.

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.

October 17, 2007

In February I’ll officially run out of reasons to not buy an iPhone. Direct from the horses mouth:

Let me just say it: We want native third party applications on the iPhone, and we plan to have an SDK in developers’ hands in February. We are excited about creating a vibrant third party developer community around the iPhone and enabling hundreds of new applications for our users. With our revolutionary multi-touch interface, powerful hardware and advanced software architecture, we believe we have created the best mobile platform ever for developers.

[…]

P.S.: The SDK will also allow developers to create applications for iPod touch.

May 31, 2007

I crapped a brick the first time I saw the iPhone, and another when I heard that it wasn’t going to be open to third party developers or applications. I understand their reluctance to let other people’s software near their proprietary media platform, but come on — for the iPhone to be a “revolution,” they need the support of the businesses and individuals who are chomping at the bit to write widgets that solve problems Apple hasn’t even dreamed of.

Anyhow, I guess the clamor over the last few months has been loud enough to be heard at Apple:

For Jobs, the question of third-party software was now a question of “when” rather than “if:” the main issues now were to protect the phone against crashes and security holes, which he said have frequently ruined the experience for smartphones in the past. Pressure on the firm to change its current, closed-off approach was evident in Jobs’ reactionary tone.

“We would like to solve this problem,” he said. “And if you could just be a little more patient with us, we’ll do it.”