Business of Software 2009: Excellent

I just returned from the Business of Software 2009 conference, and can summarize it as excellent. Here are some thoughts on specific bits of it, mostly interesting to people who were there.

  • Geoffrey Moore’s opening talk was an early highlight of the conference; I’ve often been disappointed when a well-known person from somewhat outside a conference’s focus is invited to talk, but it turned out that Geoff had ample highly relevant content. Most notably, his 9-point recommendation for small software firms is dead on.
  • It is highly likely that my next project will be in one of the 20-something categories that Paul Graham thinks will grow. I’m not sure if this is saying much, though, because his points were so numerous and broad.
  • Mat Clayton had strong points about A/B testing, but I felt a bit dirty merely being in the room for his list of “dirty tactics” for social networking promotion. I heard similar feedback from other attendees.
  • Don Norman’s talk was excellent, but would have been more excellent if it was a bit shorter and thus tighter.
  • My favorite talk of the conference was Ryan Carson’s. In conversations about his talk, I heard the idea of several directions that the essence of Ryan’s message was to trade off, to give up profits in order to do various good things instead. I strongly suspect, though, that Ryan is doing the best he can, i.e. the strategy he proclaims is also how he maximizes profits (for a company like his).
  • Paul Kenny talked about telling stories. You must do this. I can’t explain just how important this talk was, so I won’t.
  • Pecha Kucha was this conference’s name for lightning talks. As elsewhere, these talks are usually very dense and very good, because the format forces the speaker to discard all the slow parts, all the boring parts, all the exposition, and instead go directly for their key points. It works.
  • I noticed a large number of people using TweetDeck, and adopted it myself. It is a higher-mental-bandwidth way to consume Twitter and Facebook data streams, and is well suited to the a sane Twitter usage pattern of one short intense sessions per day.

I have only a few criticisms:

  • A few of the speakers went long. Though it would annoy the speaker, it would be much better for the conference if all sessions were promptly stopped on time.
  • Luke Hohmann’s talk on “Innovation Games” felt like a sales pitch for his company, even though he tried hard to talk mostly in general terms.
  • The schedule was a bit too dense. We needed more slack between / before / after, to discuss and absorb the information.
  • It would have been nice to have a talk address the business of custom software development.
  • The swag, in the form of a slanket / snuggie, is much too physically large for an event attended mostly via air travel. Of course I could have discarded it (and some attendees did), this would have felt like waste. I would have preferred if Neil had simply scrapped it and kept that money as profit.

Micro-review: Bose QuietComfort 15 noise-cancelling headphones

I recently bought these Bose headphones:

qc15_si_lg

Yes, they cost $300. Ouch.

If you travel by airplane more than 1x per year, buy these headphones.

Slightly longer review:

These headphones use active noise cancellation to dramatically slash the volume of loud environments; they work best for continuous, white-noise-like sounds (for example, riding in an airplane). The experience of 4+ hours in the air is completely different when you cut down the noise level. Wearing these, vs. not, is a more dramatic difference in overall unpleasantness, than the difference been first-class and steeragecoach.

Each AAA battery lasts a few flights, sometimes more. You can plug in your media player, computer, etc., or just use the noise cancellation alone.

Book Giveaway at BarCampSTL, Nov. 7

A while back I wrote that The World is My Warehouse, and I’ve been making that more true ever since. One tiny example is the stack of books below, which I’m giving away tomorrow at Bar Camp St. Louis.

Cordes books to give away at BarCamp

Please be polite, and only take one book per person.

Two of the books are about procrastination. You are welcome to them; but my advice on procrastication is:

  • Don’t read about procrastination. Rather:
  • Do some work,
  • Produce something of value,
  • or engage in worthwhile leisure.

Update: The book giveaway was a success, the books are gone. It further inspired at least one other attendee to give away some books also.

SaaS is good; Software as a Product is also good!

A reader recently wrote to ask for advice about a product which started as a SaaS offering, but for which the technology and customer needs are pointing in another direction:

[…] As we evolved this product we started working more with directory services and really needed to move the app inside the corporate network for optimum functionality. We are just undergoing our first pilot of this product launched in this manner […] I really want to stay with a SaaS model but this is clearly a product. It installs on their gear, they maintain the systems etc. Have you heard of any precedent that would allow a product like this to be sold as a service?  […]  $x/desktop/year kind of thing.  However, most software comes with a perpetual right to use license and I’m not sure if it’s fair to me or my customer to sell them a product they install but that is licensed on more of a subscription basis. […]

First and most importantly, this reader has a very good product: a pilot project (with a real customer, I assume) who wants to pay for and use the software at hand. In this situation, the obvious advice is to figure out how your customers want to pay you, and let them pay you. That’s not very informative, though.

To get a handle on the situation here, consider the appeal of SaaS. In my experiences as both as customer an seller of software-service offerings, the key benefits of the SaaS model are:

  • Recurring revenue for the vendor, which facilitates a stable and growing business that makes payroll every time.
  • Reduced risk for the customer, who can stop using the service when the need arises (either because it does not work well, or because they no longer need it) with much less abandoned investment compared to an up-front on-premise installation
  • Better alignment of the vendor and customer interests

Based on need for your software to operate behind the firewall, it appears that that bulk of potential customers at this time (2009) indeed will prefer to install the software in house. It is technically feasible to implement SaaS in such a way that it authenticates (or federates) with existing internal software, but thus far that is not a popular way to go, particularly from a security point of view.

The question then, is how to get at least a portion of the benefits of SaaS, with on-premise installed software. This turns out to be fairly easy:

  • Sell the software as a “subscription”. It is fairly common to sell software with subscription pricing, with a perpetual right-to-use bundled in. Offer your product in a bundle something like this:
  • The software itself, including perpetual right to use it (but with the caveats below)
  • Installation assistance
  • Support
  • Upgrades
  • Bug fixes
  • Priced at $X per user per year

If you set the pricing so that year 1 is the same price as years 2..N, you have something very close to SaaS in, in terms of your customer relationship (though not in terms of the deployment architecture, of course). If you set the pricing so that years 2..N cost 10-20% of year 1, you have the traditionat purchase-then-maintenance enterprise software pricing model.

What if the customers pays for year 1, then stops paying but keep using?

This is a possibility, but is may not be a problem in practice. Enterprise products tends to require support and upgrades to keep working smoothly in their real-world environments (ongoing streams of business and technical changes), and enterprise customers who rely on such a product, generally value an ongoing relationship with the vendor. Some customers will use-but-not-keep-paying, but even then you can think of it as price discrimination, in that it provides a way for customers who need more value (ongoing support and updates) to get it at higher cost, while customer unwilling to pay for the ongoing subscription have a way to pay you for a lesser offering (just the first year, then they are on their own) at a lower cost (i.e. just pay for the first year).

Missing your .svn\tmp directories? One line fix.

You may find with “svn cleanup” (or its TortoiseSVN equivalent) fails with an error message about “system cannot find the path specified”. If you research this error, you may find that the SVN dev team knows that svn-cleanup does not clean up this particular problem, and as of SVN version 1.6.5, considers that OK.

There is an easy fix, though. The tools are already present on nearly any Linux system, and are available in Cygwin or MSYS on Windows. Navigate to the top of your SVN working directory, and run this:

find . -iname '.svn' -exec mkdir {}/tmp \;

If all you were missing was some empty tmp directories, svn cleanup will now work, as will svn update and friends. Of course you may have other, additional problems with your .svn directories.

A mystery, for me and others, is how the missing .svn\tmp directory situation comes about. The best guess I’ve seen, but not yet reproduced here, is that a helpful piece of software (perhaps a backup tool?) deletes empty directories.

The great majority of all software I’ve used, does not depend on empty directories, and I likewise heartily recommend not designing software in such a way that it requires that empty directories are preserved. If you need a directory, please keep something in it. If you don’t need anythign in it, be willing to rereate it when you have something to put in it. Make it Just Work.

Finally, massive storage done right

Last year, I wrote about my efforts to find a storage server with lots of storage at a low cost-per-byte. What was obvious to me at the time, but apparently not obvious to many vendors, is that the key to cost effective storage is to buy mostly hard drives and as little else as possible. I built on Linux and commodity hardware, but the principle applies regardless of OS or hardware vendor.

The team at BackBlaze went much farther down the same path. They ended up with a custom made 4U case (a bit expensive) while the rest of the parts are few in number, inexpensive, and off the shelf. Their cost overhead is stunningly low, as seen in this chart (which I copied from their article):

cost-of-a-petabyte-chart

Is this right for everyone? Of course not. Enterprise buyers, for example, may need the extra functionality offered by the enterprise class solutions (at many times the cost). Cloud providers and web-scale data storage users, though, simply cannot beat BackBlaze’s approach. What about performance? Clearly this low-overhead approach is optimized for size and cost, not performance. Yet the effective performance can be very high, because this approach makes it possible to use a very large number of disk spindles, and thus has a very high aggregate IO capacity.

Predictably, the response to BackBlaze’s design has been notably mixed, with numerous complaint about performance and reliability. For a very thoughtful (though unavoidably biased) response, read this Sun engineer’s thoughts.

The key thing to keep in mind is the problem being solved. BackBlaze’s design is ideal for use as backup, bulk storage. That is a very common need; the solution I set up (described at the link above) had a typical use case of a given file being written once, then never read again, i.e. kept “just in case”. Reliability, likewise, is obtained as the system level, by having multiple independent servers, preferably spread across multiple physical sites. Once you’re paying the complexity cost to achieve this, there isn’t much additional benefit to paying the cost a second time in the form of more expensive storage.