Sunday, October 12, 2008

Zen and the Art of Financial Collapse

Last Friday, I twittered:
A message to panicking shareholders: look outside. The birds are still flying, the trees still standing. Nothing is different.
This was just one of the little realizations from taking a couple of days of reflection on Whidbey Island. It was interesting to read about the financial panic around the world, look at the tumbling stock prices, seeing the politicians and stock brokers' distraught faces and then look out at the water from my balcony. The seagulls didn't seem to care at all. Neither did the heron, or the trees, or the dogs running up and down the beach. Why? Because nothing has actually changed.

The companies whose value is dropping so dramatically are really the same companies they were four weeks ago. Or four months ago. For the most part, the same people go to work there and they are doing the same things. Yet, people have decided to have a nice panic. Sure, there were a bunch of greedy and either dishonest or insanely stupid people decided that it was ok to lend people more money than they could afford to pay back, but this has been going on for years. Just look at the crazy number of credit card applications that show up in every college student's mailbox. Debt has become the new patriotism. But it is really no different today than it was 6 months or a couple of years ago when things were "just fine."

The interesting thing is that the banks and others in the financial industry have decided to stop trusting each other. Now they decide to not loan money even to each other because they're afraid they might not get it back. I'm not sure where that thinking was over the past seven or so years when they were making the bad loans, but their new-found realism is causing them to start hiding their money in their industrial sized mattresses.

The fact is, though, that the core of this problem is in our minds. The vast majority of those bad mortgages will still be paid off, particularly if the people who have them can get the interest rates down to a reasonable number. A percentage of them will fail no matter what, but the actual numbers are probably not that high. This is why the government was so excited to get in and buy large quantities of them - it is a good money making opportunity if you can buy lots and lots of loans at pennies on the dollar and then end up with a 10% real default rate.

Ah, but see? I've gotten myself into playing armchair economist when the real point is this: Today is not different from yesterday. The trees are still standing, the water is still flowing and the sun will rise again in the morning. The only thing that has changed is our minds.

We just need to chill out and breathe.

Monday, October 06, 2008

iPhone Applications Ungagged

I've spent a lot of time over the past couple of months working on a couple of iPhone applications including TeeShot and PracticeTee.  Until recently, though, we were not able to talk about what it was like to write these applications, or even talk in public about the APIs used due to an NDA from Apple that applied to all developers in the program.  Fortunately, Apple dropped that NDA a few days ago, so we should start seeing lots more information on the web about how to write iPhone apps and how to work around some of the issues that we run into building on a platform that is new and growing.

With that out of the way, I figured now would be a good time to post a few thoughts about what it has been like to build and deploy several versions of applications for the iPhone.

The Good
Building an iPhone application is remarkably similar to building a Macintosh application.  One of the best things that Apple did in the creation of the iPhone SDK was to start from the Cocoa framework and then tweak some of the UI layers to be more specific to the iPhone form factor.  This means that in many places, I can copy and paste code between a Macintosh application like CourseBuilder and my iPhone application.  Also, since Cocoa is such a mature environment by now, with very strong development tools, much of the underlying framework is very robust and secure.  The graphics capabilities of the iPhone are outstanding, having a full networking stack and the cellular network at your disposal means applications are always connected and the fact that every iPhone comes with SQLite built in means that writing rich data applications is very simple.  This is fantastic.

For the most part, the development tools are really great to work with and I don't just mean the XCode IDE.  The performance monitoring tools are very strong, though sometimes a little quirky still and the iPhone emulator is really top notch.  It is even useful for testing websites to see how they will look on the iPhone.

Even with all of the complaints people have had about the iTunes App store (banning applications, slow to post updates, light reporting) it is a real game changer for there to be a distribution mechanism that automatically hits all potential customers for the application and provides both payment and download/update infrastructure as part of the deal.  Services like this allow very small development shops - like just one developer - to deliver their applications to users much more simply.  I worry about getting the application feature set right, making it simple and stable and Apple takes care of delivering it to customers and getting the money from them to me.  This makes for two very fun days every month - reporting day and funds transfer day.

The Bad
Application Security
While the app signing features make it significantly harder for users to get your application without paying for it, they also make several parts of application development harder.  Every time you build the application for a device, it must be signed before it will install or run.  This process, though, is full of issues that pop up and when they do, they are extremely difficult to work through.   I set up a new development machine after a hard drive failure and while I can build applications that are signed for distribution, my development certificate have never been the same since.  The errors are vague in these cases and there is not much you can do to track it down. 

Yes, the iTunes Application Store is a godsend for many reasons, but waiting for weeks for an application to go from upload to release is frustrating for developers and customers.  It looks like Apple has started working through the kinks in the system because my last update was much faster than the previous ones, but when developers are used to immediate updates for our websites and desktop applications (thanks Sparkle), waiting days or weeks for an application to be released is a drag.

Customer Access
The downside of Apple handling distribution is that we lose a direct connection with our customers.  While they can and often do contact us with support or feature requests, we don't have a direct way to let our customers know about upcoming features, issues to be aware of, or special offers that are available for them.  The only information we get from Apple is how many people from each country have purchased the application.

The Ugly
I think one of the biggest issues is how the iTunes Application store currently makes it difficult to market our products effectively.  There is currently no way to offer discounts to repeat customers or customers of business partners.  There is no way to charge for major upgrades to products without effectively releasing an entirely new product.  There is no way to give out free copies to reviewers or influentials without using up a very limited ad hoc device key.  My product is a very seasonal product and it would be nice to be able to have a bundle with another product or service, or offer it free to users who have purchased other products or services but currently the store is too limited for such promotions.  The good news is that this is a very solve-able problem.

Assuming Apple doesn't change their mind, I hope to do several more posts about writing iPhone apps in the coming weeks.  Hopefully, I will even be able to compare it with writing for other platforms and frameworks.