Hiltmon

On walkabout in life and technology

Low App Prices Unsustainable

David Barnard, of AppCubby, writing in The Sparrow Problem, where he competently works out that the sales and income numbers for Sparrow were not enough to sustain the team, and therefore the business, concludes:

The age of selling software to users at a fixed, one-time price is coming to an end. It’s just not sustainable at the absurdly low prices users have come to expect. Sure, independent developers may scrap it out one app at a time, and some may even do quite well and be the exception to the rule, but I don’t think Sparrow would have sold-out if the team — and their investors — believed they could build a substantially profitable company on their own. The gold rush is well and truly over.

Craig Hockenberry predicted this in 2008 in an open letter to Steve Jobs in ringtone apps:

The problem now is funding those products.

We have a lot of great ideas for iPhone applications. Unfortunately, we’re not working on the cooler (and more complex) ideas. Instead, we’re working on 99¢ titles that have a limited lifespan and broad appeal. Market conditions make ringtone apps most appealing.

The argument that you can make up for the low price of iOS applications in volume sold has proven to be specious, as predicted by Craig.

Look, the cost of making a great iOS application has not gone down. But with hundreds of thousands of “ringtone” or el-cheapo apps, the odds of making it into the top 100 where you’ll get noticed and the real money is have become exceptionally low. And even if you do have a few days in the top 100, and make enough to pay off the development to date, where do you get the money to fund ongoing development?

I think David and Craig are both right, you may be able (if lucky) to pay off the cost of developing an iOS product, but you need either VC funding or to sell out to sustain yourself as a iOS developer.

Or the business model needs to change.

How Many 99c Apps It Takes to Afford That Guy

Drew Crawford, jumping in on the Sparrow story in Let’s talk about Sparrow, actually covers another area I have been trying to find the words for, why good, experienced software developers, like myself, cost real money:

Let me tell you how it actually is, because I write iOS apps. A fully-dedicated senior iOS developer is way more expensive than you think. I’m not talking about “some guy whose LinkedIn profile says he is a senior iOS developer, let’s send his profile to HR.” I mean, a person who can read your ARM assembler, lecture on the finer points of Core Data, coordinate with graphic designers, draw mockups, tell you what is going to pass Apple review, solve customer problems, be a primary on the sales call with the client, negotiate the cost, write the proposal, know what’s in the HIG, come up with a class diagram that doesn’t suck, give presentations to management, train any developer in your organization, and actually get the coding done. Specifically, a guy who you can lock in a room with a Macbook for three months and he emerges without any oversight or management from anyone, with Sparrow.app. That guy can go from interview to interview and never even hear a starting offer under $125k, or $175k in the valley. Never even hear. That guy has Apple HR calling him saying “we know we can’t poach you, but maybe you can recommend someone?” Apple HR.

Do you have any idea how many $0.99 apps it takes to afford that guy?

I, too, am that guy. It took me years of practice and toil to become that guy. The guy who can do and has done costs more than the guy who has no idea. Unfortunately, it looks like I’ll be explaining this point to people for year’s to come.

Talent Acquisitions and Product Casualties

This week, Google purchased Sparrow SAS, the company that made the very popular Sparrow mail application for Mac and iOS. But they did not buy the company for the product, the bought the company for its people - the talent. Sparrow, the product, is done for.

Facebook also executed a talent acquisition on Acrylic, makers of Pulp, an RSS reader, and Wallet, a secure store. Both these products are now dead.

This is not the first or last time this will happen. Larger firms need talent to push their own products, but this talent does not directly apply for jobs with them. So, they need to buy the indie companies this talent starts up to gain access to these resources.

So, good for the talent

Of course, this is great for the talent. They get a massive signing bonus, they get great and stable jobs with the insane benefits these buyers offer, and they get to do what they love to do. How could they say no.

And it’s not like they are giving as much up. You cannot afford to run a company selling software at $2.99 a pop. Most of these wonderfully talented people are struggling to make a reasonable living, find themselves spending far too much time in support or in running their businesses, and not doing what they love.

A talent acquisition is the best thing to happen to them, and I for one am very happy for them.

So, bad for the consumer

But what about their customers, the people who purchased their products, use their stuff every day in their workflows, now that these products are effectively dead?

Matt Gemmell covers the predictable squawking in Entitlement and Acquisition, so I’ll not go there, other than to agree with his key point:

Sparrow’s acquisition is a success story. Indie devs make a great product, build a customer-base, and are rewarded with a buy-out from a big company and they get new jobs with that company.

As customers, we are not entitled to their product, we did not “invest” it, no warranties were made that the product would be around forever, and it should not have been “free” and open-source from the start. These people created a business, spent untold hours designing and creating a great product and we, the consumer, were lucky enough to buy and use it. But nothing, no product on the market today, offers any semblance of permanence. You don’t invest in Sony when you buy a TV!

All products have a beginning, a middle and an end. They get superseded, end-of-lifed, or replaced by better products from competitors. That’s the dynamic, competitive, innovative, consumer world we live in. And we, the consumers, are the real winners here. Because of this competition, we get better and better products every day. Just compare your computer, TV or car from the one you had 10 years ago. It’s the same with software.

So, no, consumers don’t lose, consumers just move on.

Is there a middle ground?

There are a couple of things that a talent acquisition can do to keep the product alive. One option is to open source the product. But this is only possible if no patent licenses were paid to create it, and anyway, most open-source products languish.

The other option is to sell the product to another company, like the guys at Sofa did a few years ago when they were acquired by Facebook. They sold Versions and Kaleidoscope to Blackpixel. But it seems that these too are languishing.

So, the indie reality

Running an indie development house is hard, takes immense amounts of time and talent, and the pay is mostly terrible. We keep going because we love our products, our customers and what we do. But we are forced supplement our income by doing consulting and contract work, just so that we can remain indie and do what we do.

Maybe if we could sell our products at more reasonable prices we’d be able to stay indies. Maybe if we could gain access to larger markets, more prominent advertising or cheaper distribution channels, we’d be able to be indies full time instead of sometime consultants. Maybe if you, the paying consumer, actually purchased our products, and got your friends to do it, we could stay in the game.

But even if all these maybes were truths, we all have our price. The offer in a talent acquisition is very, very hard to refuse, and the upside, the benefits, are amazing.

So lets look at talent acquisitions as what they really are, a sign that an indie is valued enough to receive the talent offer, and has succeeded. We should all aim for that success.

Hat tip to Marco Arment in Talent acquisitions for triggering this post.

Joining the SSD Club

On Friday, I joined the SSD club. That’s the Solid State Drive club, not the Special School District or the Social Security Disability clubs. I installed a OWC Mercury Electra 3G 240GB SSD in my Mid-2009 MacBook Pro to replace my never working DVD drive.

I purchased the kit that included the bracket (they call it a data doubler), the tools and the SSD:

Installation was easy, I used the video and the manual that came with it.

The only difficult part was reconnecting the plug that drives the screen. Here’s the final install:

I then installed the latest OS X Mountain Lion GM Seed, leaving the old Hard Drive unaffected. And attempted to use symbolic links for key folders, but certain applications, mostly sandboxed ones, failed to work across these links. Instead, I simply moved my iPhoto library, iTunes, VM’s and other big files to the root of the old HDD and left the rest on the SSD.

The old MacBook Pro now boots in seconds, not minutes. The old hard drive, a 500GB ST9500420ASG @ 7200rpm, runs at 32/36 Mb/s on a 1.5Gb/s line, the new SSD runs at 200/260 Mb/s on a 3Gb/s line (according to Blackmagic Disk Speed Test).

The new SSD is fast, just wow fast! The laptop now boots faster and launches Photoshop faster than the desktop Mac Pro. My Mid-2009 MacBook Pro just gained a few more years of useful life.

The 10-year Rule

If you aren’t willing to own a stock for 10 years, don’t even think about owning it for 10 minutes.

Warren Buffett

I was just messing around in Google Finance today after reading that Microsoft made its first quarterly loss since going public (see Washington Post), and decided to take a look at our favorite tech stocks and see how they would have fared under Buffet’s 10-year rule.

Company 10 Year Return
Apple 6,893%
Google (1) 434%
IBM 168%
Yahoo 145%
Intel 41%
Dow Jones 38%
Microsoft (2) 14%


Source Data and Graph: Google Finance.

Ignoring Apple’s crazy numbers, the thing that really stands out to me is that Microsoft has underperformed everything, including the Dow Jones. How is it, then, that analysts still view Microsoft as anything but a crappy investment? And how is it that Ballmer still has a job? Even Yahoo with its gazzilionth CEO looks good over the last 10 years!

I’m not saying I could have predicted any of this 10 years ago, no way, but, come on, Microsoft has been flat since Bill Gates left and the board has done nothing! Sure, Windows and Office are a license to print money, and the XBox is starting to look like a reasonable business, yet everything else they do, all other products lines, acquisitions and initiatives are massive losers. It’s pretty embarrassing for the company with the largest revenue stream in history to make a quarterly loss. Maybe it’s too late to fix the culture, maybe it’s too late to cut some of the loser businesses, or maybe this will stir the board into action. We’ll just have to see.

(1) Yes, I know, Google is not 10 yet.
(2) I sold any Microsoft shares I had back in 2004! Glad I did.

Two Kinds of Innovations in Tech

Kevin Kelleher, writing for ReadWriteWeb in How AT&T & Verizon Learned to Stop Worrying and Love Data Hogs about AT&T’s new pricing model, nails the conclusion in regards to the carriers in the USA:

There are two kinds of innovations in tech. One that is often celebrated – the creation of great new things people will gladly pay for – and another that few companies will brag about – finding new ways to get people to pay for something they already have. The top two carriers are innovative in the second way.

With the new plans, consumers become pure controlled revenue streams, to be sucked dry through the creation of false bandwidth scarcity using caps, higher base costs for unnecessary but mandatory features and massive overpricing of data. The future of great technology experiences depends on greater bandwidth availability and ubiquity, and lower costs, otherwise only the rich will be able to afford it. In aint gonna happen on the top two carrier’s watch if they can help it. Here’s hoping T-Mobile and Sprint remain outside this wall.

I recommend reading the referenced Verge Article headlined Five years after the iPhone, carriers are the biggest threat to innovation for more backgound on the topic.

7 Reasons Why I Can’t Do “Free”

Sharon Hayes clearly explains why she does not work for free in 7 Reasons Why I Can’t Do “Free”, check it out.

3. It Zaps My Creative Juice

Each of us has only so many truly productive hours in a day. In my own case, I can get in about 5 solid productive hours on a typical day. It’s like a bank for me. Each day, I start off with this reserve of 5 hours. As I do work through the day, the reserve gets depleted. But it gets depleted at a faster rate when I have to shift gears more frequently.

and

6. It Doesn’t Stop at One Request

I used to be much more generous with my time – that is until I got to the point where it was detrimental to my own life and well-being. One of the things I discovered is that a significant percentage of the time when I helped someone out for free, they would come back – often repeatedly – for more free help. It has to end somewhere.

I totally agree.

Software Will Always Trump Hardware

Shawn Blanc reviews the Nexus 7 tablet in Thoughts and Impressions of the Nexus 7, and concludes with a great point:

For me, when it comes down to it, software will always trump hardware. When I’m using a device like the Nexus 7 I want to know where the details are. Where is the magic? The fun? The incredible 3rd-party apps? It is because of these elements that the iPad is more than the sum of its parts while its competition continues to remains less than.

He may be comparing the Android tablet to the iPad, but it’s just as applicable to Macs and PC’s and Linux, or Kindles and Nooks, or Windows Phones vs Blackberries vs Android vs iOS. Which device delights you? Which is the most fun and enjoyable to use? Which has all the great apps? That’s the one you buy.

International Terpstra Day

One of the nicest things I have ever seen for one of the nicest guys on our corner of the internet. It’s Brett Terpstra’s birthday today and all his friends have taken the time to celebrate him and his works, including:

For the few of you who do not know of him, Brett is the developer of Marked.app that I use every day for preview and export of markdown files, he’s the developer of nvAlt which I recommend for all your notes, he writes as part of Read & Trust, has a new Podcast called Systematic, and he gives away huge numbers of free tools and scripts.

His work inspires me to be better at what I do.

So buy his stuff, follow him on Twitter at @ttscoff or just donate from his home page.

It’s the mark of a true good person that their friends take the time and effort to celebrate them, and an even greater mark that people he’s never met feel the same way.

Octopress Post and Publish

Since this site is getting larger and it’s running on Octopress, the rake generate and rake preview processes are getting slower. Enter rake isolate["x"] to isolate the site down to the selected post. But isolating requires me to note the file name down, there is too much to remember and type and I am lazy.

So have created two macros and a script to speed this process up.

Note: You must run these commands in the root of the Octopress folder, else they will not work at all!

Post

The old, standard way

To create a post in Octopress, isolate it and preview it in the browser, you need to run the following steps:

Create the Post:

1
$ rake new_post["Octopress Post and Publish"]

Isolate the post using the generated file name:

1
rake isolate["octopress-post-and-publish"]

And generate and start the preview thread:

1
2
rake generate
rake preview

Note that I have already hacked the new_post function in my Rakefile to also log this to Day One and launch Byword, see my post on Bread Crumbs in Day One, so those steps are not shown.

The new way

For this post, I typed in:

1
$ post Octopress Post and Publish

Note that there is no punctuation after the post command, less for me to type. The script concatenates all parameters into a single title string. The result of the command shows that it does all the steps I did manually, including figuring out the file name, and leaving me in a preview thread:

1
2
3
4
5
6
7
8
:: rake new_post["Octopress Post and Publish"]
mkdir -p source/_posts
:: rake isolate["octopress-post-and-publish"]
:: rake generate
:: rake preview
[2012-07-18 18:01:34] INFO  WEBrick 1.3.1
[2012-07-18 18:01:34] INFO  ruby 1.9.2 (2011-07-09) [x86_64-darwin11.2.0]
[2012-07-18 18:01:34] INFO  WEBrick::HTTPServer#start: pid=35734 port=4000

Publish

The old, standard way

I would use ^C to stop the preview thread, then:

1
2
$ rake integrate
$ rake gen_deploy

The new way

Now I just use ^C to stop the preview thread, and:

1
$ publish

The macros and scripts

I created the following ruby script to handle the post function. If you want the “Open in Byword” function, uncomment Line 29: open "#{path}" -a Byword (Untested)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#! /usr/bin/ruby

# post.rb
# Hilton Lipschitz (https://hiltmon.com) @hiltmon
# Use and modify freely, attribution appreciated
#
# Create a new Octopress post, isolate it, generate the
# site and leave me with a preview thread running.
#
# MUST BE RUN in the Octopress root folder
#
# Usage
# $ new This is a post
#
# NOTE: Do not wrap the parameters in quotes

# Make the title
post_title = ARGV.join(' ')

# Create the post
puts ":: rake new_post[\"#{post_title}\"]"
process = `rake new_post["#{post_title}"]`

# Parse out the generated filename
file_key = nil
process.split('\r').each do |line|
  next unless line =~ /Creating new post:/
  path = line.split(': ')[1]
  # `open "#{path}" -a Byword`
  file_basename = path.sub('source/_posts/', '').sub('.markdown', '')
  file_key = file_basename[11..(file_basename.length)].chomp
end

# Isolate, generate and preview
unless file_key.nil?
  puts ":: rake isolate[\"#{file_key}\"]"
  `rake isolate["#{file_key}"]`
  puts ":: rake generate"
  `rake generate`
  puts ":: rake preview"
  `rake preview`
end

I then added the following two macros to my .bash_profile (OS X users only). Note that I keep all my custom scripts in ~/Scripts/:

1
2
3
4
5
6
7
8
function post {
  ~/Scripts/post.rb $*
}

function publish {
  rake integrate
  rake gen_deploy
}

These work for all my Octopress sites. It allows me to get to the post faster, preview that it looks right and publish the site with ease.