Underscore Price Dynamics

Marco Arment in his blog post Underscore Price Dynamics:

I’m sure of one thing, though: the market for paid-up-front apps appealing to mass consumers is gone. If you have paid apps in the store, you’ve probably seen the writing on the wall for a while.

Spot on. He is absolutely right and it has been this way for a long time. I’m certain Marco was experiencing this with Instapaper and may be one of the reasons he decided to move on.

We are at the end of an era. The entire software business is adjusting and we, as developers attempting to make a living (at least) from our work, must adjust.

Joel Spolsky commented on Hacker News:

The only business models I want to work on any more have some mass-market component that is absolutely free, and a niche companion product that makes money off of the exhaust fumes of the mass-market component.

The last two businesses I started are Stack Overflow, which is free, where the careers business on the side makes money on the small fraction of Stack Overflow users who are looking to get better jobs, and Trello, which is free, but the business of providing administrative tools to large organizations using Trello can sustain the whole business.

This is more than just “freemium” or “advertising-supported.” Freemium and Ad-supported business models are special cases of this general model. The real insight is that the free product has a chance to reach an enormous audience which provides distribution/advertising/marketing making it trivial to go to market with your paid product.

What Marco is reporting here is that the old-fashioned “make something and get people to pay for it” business is much harder to pull off and likely to always be left in the dust by someone making the same thing for free, getting 100x the user base, and getting 1% of them to pay for some value added feature.

Very well said. We should all be searching for the same.

Make Money Make Art

Fascinating first chapter of a book about Jim Henson and how he mixed art with capitalism:

The dance involves art and money, but not at the same time. In the first stage, it is paramount that the artist “reserves a protected gift-sphere in which the art is created.” He keeps money out of it. But in the next two phases, they can dance. The way I see it, Hyde’s dance steps go a little something like this:

1. Make art.
2. Make art make money.
3. Make money make art.

It is the last step that turns this dance into a waltz—something cyclical so that the money is not the real end. Truly, for Jim Henson, money was a fuel that fed art.

This so succinctly sums up how I’ve approached Infinity Softworks the past two years. We are about to release what I consider our art, Equals, but it doesn’t make money yet. So we’ve used our craft to make money. Contract work fills in the gaps. Hopefully over time, our increased skills and Equals itself will generate money, allowing us to make more art.

I grew up poor. At one point we were on food stamps. I never understood the relationship between art and money. In my early life I saw money as a corrupting evil. Over the last dozen or so years, though, my opinion has changed. Now I see it as an ends to a means, where the means is my ability to make more art.

Paulson’s Bullshit

Hank Paulson in a Businessweek issue commemorating the financial crash five years ago:

I get asked all the time, “What’s the likelihood of another financial crisis?” And I begin by saying it’s a certainty. As long as we have markets, as long as we have banks, no matter what the regulatory system is, there will be flawed government policies.

Now, I’m not about to sit here and say that the financial mess was not a bi-product of failed government policies, but to insinuate that Wall Street was complicit, well, that takes balls. It was Wall Street that funneled money to Democrats and Republicans across government with the express intention of loosening regulation. It was Wall Street that played fast and loose with other people’s money, as always. It was Wall Street that fell under its own weight and then begged the government to bail it out.

Paulson’s policies failed the American public by propping up Wall Street. The banks should have been allowed to fail. Government should have then bailed out the American public. You know, those of us it exists to support: A government of the people, by the people and for the people.

Apple’s New Support For Older Devices

Every year, as the new OS version ships, some older devices can’t upgrade. This year the first generation iPad and iPhone 3gs are left behind, never to move beyond iOS 6.1. The problem, as a developer, is that our customers are still using these devices so we need to continue supporting them, even though Apple has moved on and may or may not even give us the ability to target those older operating system versions.

Last week Apple released a very nice new feature. Instead of those customers who didn’t upgrade being screwed, now at least they have the option of recovering an older version of the app, the version that last ran on that version of the OS.

There is a problem with this, of course, in that some older versions of the app just can’t run anymore on any OS. For instance Twitter changed their API and old versions of Tweetie or Twitterific just won’t function anymore. Kyle Richter talked about this on his blog (the image is also from him):

The common misconception here is when an app is updated it is updated to add new features and maybe some bug fixes. These new features may require a newer version of iOS so old users are left in the cold. The truth is a lot happens under the covers during updates, API endpoints are updated, data models changed, multiplayer protocols changed, even legal issues are addressed.

The likelihood of any complex app, especially anything API driven, working after several years of neglect are slim. Those that do work may be incredibly unreliable and buggy.

First of all, there are tons of apps in the app store that would work perfectly fine under these new Apple policies. Our app, powerOne, is a perfect example. It gives me the opportunity to put old OS versions behind me as long as I make sure these are stable before I release a new version. In fact, I already used this feature. Since the bug we fixed last week only impacted iOS 7, I lopped off support for iOS 4.3-6.0 devices at the same time knowing that Apple would cover those people if they lose the app. This allowed me to do more comprehensive testing on just two OS versions rather than six or seven.

Furthermore, I will make future design decisions based on this knowledge. Let’s say I wanted to change the add-on library. Instead of just changing what we already have visible, I’d probably create a new version, making sure my old customers don’t lose out on access.

Of course Kyle is right: there are some apps that this just won’t work for. But if I’m a customer using an old version on an old device, I’ll take “some” rather than “none.” And if the old versions really won’t work, Apple added an option for us developers to turn off the feature.

Luck Be A Lady Tonight

Sometimes luck is with me. A month ago we did a bunch of work on powerOne to get it ready for iOS 7. We haven’t updated the interface yet — that’s still coming — but what we did do is make sure bugs were fixed and added a couple of small features.

While I hadn’t started working on iOS 7 yet what was clear is that any work we did do on it was going to have to be for iOS 7 only. There were just too many changes to also try to support the older operating systems. Because of this we wanted to make sure any remaining, known bugs were resolved for the iOS 4.3 to 6.1 customers who can’t or don’t want to upgrade. We were all ready and we did plenty of testing on iOS 7 as well as the earlier OS versions.

iOS 7 shipped last Wednesday and all was quiet. I upgrades devices and iTunes and XCode just like always.

Thursday night, suddenly, I received three bug reports, all in an area of the app I had tested. In some cases — but not always — an error was appearing when a calculation occurred in RPN input mode. Stuff like 5 ENT 6 + would work correctly and 6 ENT 5 + would fail. I could try things one time and it would work, try other things and come back to the original later and it would fail.

At this point I started to panic. There was no way, with the current version of XCode, to target iOS 6.1 and lower devices exclusively and targeting iOS 7 meant that the entire interface of the app was a mess. Furthermore I leave on Sunday for a business trip and did not have the time to completely re-do the interface before I left, not to mention my nightmare scenario of having to figure out some critical issue while away without a laptop.

So we fixed the bugs Thursday night. I didn’t sleep much that night, rolling options around in my head. The only two I could come up with was ignore the problem and tell customers to use algebraic input mode instead (not much of an option) or hustle everything out for iOS 7 (something I didn’t think possible in less than 48 hours without my designer’s help, who was on deadline).

If I could only get the previous XCode version back!

Friday morning, after a couple of conversations with co-workers on the topic, I realized I could get the previous version of XCode back. Time Machine to the rescue!

I’ve had Time Machine backing up my Mac for years now and never once needed to use it. (I also have it backed up to the cloud with CrashPlan.) I was able to recover the previous version of XCode, open powerOne in it, do some testing and submit the fixes to the app store.

I feel lucky this time.