Perfect software versus economic reality

“Why, oh why, is the state of software so bad, so buggy?” reads a common lament on forums frequented by programmers.  As programmers, we’re a perfectionist bunch, and it bothers those of us who care about quality to see things work poorly.

Why indeed?  The answer is almost entirely dictated by economics.

Imagine that you’re a customer looking to have a custom web site / application built to help manage your small local bookstore.  It’d be bad if the system lost all your data, but other than that, minor bugs are tolerable, and your business just doesn’t make a ton of money in the first place.

You talk to two local shops that might be able to code up what you need:

  • One offers to write code they guarantee to be free of bugs.  It doesn’t have many features, but would probably get the job done.
  • The other company can get it done for a  bit less, with many more features than the first one.

You ask the first vendor about the extra features, and they say they might be able to get to them over time.

Since those extra features would be handy, you opt for the second vendor.  Once in a while, it does have an annoying bug or two, but the programmers do try hard, and manage to fix most of them in a few weeks, and none of them cause you any major problems.

The above anecdote is how much of the market for software works: everyone says they want high quality, defect free code, but how many people are willing to pay for it with either much higher prices, or a reduction in features?  It depends on what the software is used for, but by and large: not many.  They’d rather have the features, or pay less, and tolerate the odd bug here and there.

Everyone’s heard the old adage, “good, fast or cheap, pick any two”, which is very closely related to another triad: “lots of features, few bugs, cheap”.  You simply can’t develop something quickly or on the cheap, and have both lots of features and very few bugs.  You trade off features for time spent on ensuring there are no bugs, and since eliminating bugs is something that seems to asymptotically head for, but never quite achieves perfection, the more time you spend on that, the fewer features you have.

This suggests that if you want to work where people pay a lot of attention to quality, you should work where even small bugs cost a lot of money, or where they put people’s lives in danger.  Those are the sorts of environments where quality will count.


An Erlang Postgres Driver: Refurbishing Open Source

People often wonder how to get involved in open source.  It’s pretty easy, really: there’s more work to be done than people to do it!

It can also be surprisingly easy and pleasant.  Here’s how I dove in, and without spending a lot of time, did something to improve the situation of an Erlang Postgresql driver.

A few months ago, I realized that some code I was using at work, Will Glozer‘s Erlang driver for Postgres, was not really being updated much, and the Github ‘fork’ graphic looked like a bunch of messy spaghetti as everyone forked and patched and hacked, but never contributed anything “back” to any place central.

It was obvious there are some bright people doing good work, so the talent and will (no pun intended!) were not missing, but a central repository was.  Github is nice in a lot of ways, but one thing I think it fails to do in some ways is encourage community, although they have continued to make improvements over the years.  It is a great tool, but open source is about more than source code: it is fundamentally about people interacting in order to produce software.  Forks and pull requests and patches and all that are nice tools, but they can be dispersive, in that they often seem to be small individual efforts that are just thrown out, with little coordination, and little ongoing effort.  That’s not necessarily a bad thing: lots of people get started with little fixes here and there, but you still need a group of people at the heart of a project who consider and decide what to include, when, and why.  Overwhelmingly, the language for that is English, and the place is a mailing list or forum built around the idea of people talking, rather than patch management.

In a moment of pique, I decided that it was a shame to see a small but useful project like epgsql wandering and neglected, so here’s what I did about it.  Most of these steps are things you can do to improve some open source software you use and love but know is suffering from lack of attention.

  • Luckily, the project was in a pretty good place: it does most of what it needs thanks to Will’s original work, and a big rewrite by Anton Lebedevich some time ago.  That’s where the hard work was, and those guys deserve the real credit for the code.  That makes being a caretaker feasible.
  • I wrote an email to the main Erlang mailing list: – it was a bit curt, but generated some interest.  Postgresql is pretty popular among those in the Erlang crowd using relational databases.  They are both projects where robustness and correctness are important.
  • I created an “epgsql” organization on Github so that the code was not merely something that was “davidw”‘s, but had a neutral name.  Hopefully others will continue working on it in the same place if I am no longer able to.
  • I created a Google Group:!forum/epgsql – Google Groups are a great way to create something that’s easy to manage, and very accessible: people who prefer email can interact with it just like a mailing list, and those who are more casually interested, or prefer the web can use it as a forum.  They’re free, very easy to set up, and are reasonably flexible.  For larger projects, perhaps being beholden to Google is not such a great idea, but one of the key points with improving epgsql is that it not interfere with my work by taking much time.
  • I sought out people who had done some interesting work with epgsql and invited them to take part in the group.  There are now several of us with commit privileges.
  • I try and get people to spell out their patches in as much detail as possible, and respond quickly to get some dialog going.  I try and involve everyone in the group in what’s going on, as much as possible (we’re all busy), because I really want this to be a group project, not something that starts and stops with me.

So far so good, I’m happy with the improvements that have been submitted over the past few months.  Now, here’s the thing: I would not consider myself an expert with Erlang, and didn’t know much at all about Postgres’s binary communication protocol, but have managed to pick up enough of the latter that I basically get how things work.  So in order to do a good open source deed, you don’t need to be the best or most knowledgeable person out there, you just need to put in a little bit of time.


MicroConf and the Early Stages of a Bootstrapped Business

The conference for Bootstrappers par excellence, MicroConf, recently sold out their 2014 Las Vegas conference in under a half an hour.  That’s impressive, and having been to the European edition last year, I can say that it makes sense.  It’s the best conference that I’m aware of for people interested in, and working on small(ish) bootstrapped software businesses like my own, LiberWriter.  Demand obviously far exceeds supply, which leads to some obvious options: increase the price, or increase the supply.  Given that the entire thing is organized by just a few guys, who have other things to do with their lives, supply probably can’t go up that much, leaving price.  While I would understand completely if that happens, it’s also kind of unfortunate, because I think it would tend to crowd out those of us who do not have established businesses.

I got to thinking about this in relation to the various hurdles that bootstrapped companies must cross and where things like books and conferences relate to each step along the way.  A good conference is fun for me whatever I get out of it in terms of learning, but if I force myself to think about it in strictly financial terms, the proposition becomes a bit more difficult, given how good material tends to wind up on the internet, for free.  Said another way, the $$$ a conference costs are going to be a larger percentage of what a small business is taking in, and the given time constraints involved in many bootstrapped projects, the knowledge gained is less likely to be deployable in a short time frame.

On the other hand if you have the time and bandwidth to take what you’ve learned and really start going to town with it, then I’m sure MicroConf could pay for itself in a very short time frame.  That would naturally tend to push the conference in the direction of higher prices and an audience composed mostly of people doing their own companies full-time, at minimum.

I was relieved to see that Mike and Rob are keeping “the rest of us” in mind with the conference, though:

we’re trying not to make it unaffordable. We want new entrepreneurs, new founders to be able to come. We also want experienced folks. I find that mix is a positive thing for everybody. –

So once again a big thanks to them, for putting on a great conference, and helping to extend that to those who are still finding their way.

Bootstrapping Hurdles

Lately I’ve been thinking about the various hurdles that a bootstrapped web business has to leap.

When you’re creating something from nothing, there are various barriers you have to get over.  Let’s go through them: I think it’s a helpful way to think about bootstrapped companies in general, but specifically web or app based product companies.  The ‘holy grail’, after all is having a business that provides an income without requiring you to put in an eight hour day.  Now, that income can be a pretty normal income: it doesn’t need to be dot-com “set for the rest of your life” cash; just enough to let you go about doing more things while you have steady money coming in.

First Sale

There’s a lot leading up even to this point, but it’s a pretty clear dividing line.  Have you found a niche, done the marketing research, and then actually put together a product that someone out there on the internet was willing to buy?  Note that for a lot of people, the sensible way to approach this is marketing first: before you write code, attempt to determine if there is a market.  If there’s not… it’s a disappointment, but at least you can give up before you wasted a lot of time building a product that no one wants to buy.  That’s the theory, at least; in practice, things are never quite so cut and dried.  The famous Henry Ford quote is:  “If I had asked people what they wanted, they would have said faster horses.”  In any event though, you’ve found something you think is worthwhile, and someone has given you their money for it!  That’s a pretty big deal, and worth congratulating yourself for, if you’ve reached that point.  One thing I hate about a lot of business books is that they completely gloss over this part of things when you’re just getting started.  But making something that someone will spend money on is nothing to sneeze at.

Sustained Income

Once you’ve sold a few, that probably gets you some feedback that you can utilize your offering, and if things go well, you’ll make more sales, and have a more or less steady rate of cash coming in.  This may bounce around a lot initially, but you start to get an idea of where things are going financially, and how much it costs to provide them and how it impacts your time.  Getting that feedback is important, because most of us don’t get it right the first time.  Charging money for what you’re doing is conveniently a good way to get feedback, though: if you give something away for free, and people don’t like it, they’ll think “ah, oh well, forget it” and move on. If they’ve given you their money, and it’s not working, you are going to be hearing about it!  This is a tricky phase because a lot of us will likely be so euphoric that we actually managed to sell something to someone, that we’ll go implement the first thing anyone mentions.  That’s not necessarily a good idea – some customer suggestions are going to be winners, but not all of them.  Try sitting on them for a while to see what many people request – those are probably worth paying attention to.  The one-off requests can probably be ignored or dealt with on a case-by-case basis depending on how much out of your way you want to go to help out your customers.


Are you making enough to pay all your expenses, like hosting, virtual assistants, and things like that?  For the sake of simplicity, we won’t include your own time in the expenses yet.  If you work with software, it’s likely companies value your time fairly highly, so even for some relatively successful products, reasoning in strictly economic terms, you might be better off not striking out on your own, since at any given point you could conceivably be making more working for someone else.  Even someone like Patrick McKenzie who seems to have been very successful with the products he’s done so far could earn a lot more by only doing consulting for other people.  So ultimately your own time is an investment towards the kind of business you want to have.

Making a Living

Unless you’re young and living with your parents, or have some money set aside and few financial needs, you’re probably doing bootstrapping work on nights and weekends.  That’s where I’m at right now, and … it’s difficult.  The business pulls in money regularly, and ticks over some of the time without my involvement, but it’s not enough to live off of (and right now I have a day job I like a lot too).  I have way more ideas of things to do with it than free time to implement them.  The trick right now is finding things to do to increase money coming in without taking more of my time, and things to do that themselves don’t take a lot of time, since nights and weekends don’t offer a lot of scope for big, involved changes.   Like I said, I also have a contracting thing I really enjoy at the moment, so I’m in no hurry to move on from that, but having the option to be able to work from anywhere, and the freedom a developed business provides, is something I really believe in.

I’m sure there are other big hurdles after these, but if you get to making a living and you’ve built a business that to some degree “runs itself”, you have more free time to either start developing other products or sink some serious development time into your current project to improve it, attract more customers, or simply enjoy the extra freedom.

MicroConf Europe

I don't envy conference organizers these days – most of what's being said can be read the next day, for free, on line, at your own pace, from the comfort of your own home, and without spending a bundle of time and money to sleep in a far away hotel.

Competing with that is not easy, but the guys at MicroConf managed to.  I would sum up the weekend by saying that it was a "very high bandwidth experience".  Every day, from breakfast until I turned in, I was chatting with people or listening to speakers during the conference itself.  That's aproximately  16 hours of being "on", and by the time I got home to Padova, I was exhausted!  But at the end of the day, I felt like it was worth it being there in person, because of all the interaction with other people.  The speakers' talks all ended up on line, more or less, but all the chatting and discussion and getting to know everyone is the human element that is tough to replicate on line, and one of the most important reasons to attend a conference in person.  Prague is also a beautiful city – I wish I had had more time there to check it out.

Here are some highlights and notes, in no particular order:

  • Rob Walling talked about actual, concrete numbers when discussing his current project's revenues.  There's a ton of handwavy stuff out there on the internet, but real numbers are tough to beat.  What makes it especially nice is that they also felt "real": they're good numbers, no doubt about it, but not stratospheric, science fiction numbers that leave you feeling like "ok, whatever, but that's not the planet I live on".  They're numbers that make you think "maybe, if things go well, I could do that too".
  • The number of "I'm from X, but live in Y" people at the conference was high.  Irish but live in Spain, American but live in Japan.  Or maybe just noticeable because I'm in that category myself.  There were people attending from the US, Europe, Japan, South Africa, and even Australia.  Impressive!
  • Almost all of the speakers had very specific, concrete advice that I can and will apply to LiberWriter, time permitting.  I read, and have read, a lot of business books.  Most of them are kind of fluffy, truth be told, in that they've got one decent idea, and a lot of filler to turn what could have been a tight, ten-page article into a book.  This was quite different in that there were a whole lot of tips and tricks being thrown out.
  • Rob's wife Sherry gave a talk about life with an entrepreneur.  Having two kids and a wonderful wife myself, it's a point of view that I was very interested in hearing about.  Judging from the people I chatted with, this was not your typical "startup" conference with a bunch of 20-somethings with no family and no ties – a lot of the other people attending had kids to think about as they launch their ventures.  A question I asked of Rob was how much of a leap he took from consulting to working on his own products, with the answer being that he's actually pretty risk adverse.  No Silicon Valley story about betting the house and everything else on the company – apparently, revenues from the web sites and products were good enough that there wasn't even really a leap to make when he quit consulting.
  • The size of the conference was just right: enough people that I didn't quite manage to meet everyone, but not so many that it was overwhelming.  In downtime between talks, and during dinners, breakfasts, lunch and so on, the speakers were very available to chat with.
  • Patrick McKenzie seems to have stumbled into his life's calling as someone working at the border of software and marketing.  The amount of advice, anecdotes, and data that he was continually spinning off was incredible.  He comes across as being a down-to-earth, approachable, friendly person.
  • Part of the balancing act the organizers have to work with is where people are at: some people had an idea but no concrete business.  Some of us (me) make some money but not too much.  Others have viable businesses that they make enough to live off of, and then there are those who seem pretty much 'set'.  It's difficult to find people to speak to each audience without losing some of the others.
  • The thing I liked the most about a lot of what was discussed was that it seems realistic.  Few people at the conference were from Silicon Valley, and yet… they're successful!  I like hearing about success stories that work out really well for the people involved, but still feel like something attainable.  People should be looking to emulate the successful guys here, not looking at extreme outliers like Bill Gates or Mark Zuckerberg.
  • I'm used to tech conferences, where it's all about the technology.  There was very little actual tech talk at MicroConf – it seems like everyone knows their stuff and was interested in learning about marketing, sales, and so on.

However, since it was a business conference, I also have to put on my cold, hard accountant hat.  Will the conference pay for itself?  Only time will tell.  I learned a variety of interesting and useful things, many of which I think I can put into practice.  The problem is finding the time between consulting work and family, but that was a bottleneck before, too – I had, and have, more things to do than time.  Also, to be very direct about it, how much of what I learned could not have been learned by carefully reading accounts of the conference, slides, and other material published on the internet?  A lot of it.  I'm not sure I would have paid attention to all of it though, so the conference was definitely nice in that it exposed me to some talks and ideas that otherwise I might have brushed off before giving them a chance.  In terms of dollars and cents, I won't be able to say for a while whether it was a sensible investment or not.

Would I go again?  I'd like to – it was a lot of fun and the people were great.

Like I said, it's tough doing conferences because your competition is the internet!

The Software Millionaire Next Door

I've been reading "The Millionaire Next Door" and have so far found it to be a pleasant book with a good message: don't waste your money on silly things and appearance (fancy suits, fancy cars, expensive boats, etc…), save what you do earn consistently and constantly, invest wisely, and so on.   Wikipedia has a good summary:

One of the things I like about it is that it focuses on "ordinary" wealthy people, those with a million or more in the bank, but not the Warren Buffets or Bill Gates types that are extreme statistical outliers.  There are plenty of people in the US who have done well by themselves by slowly but surely putting together enough money to be financially independent, without, however, being in the spotlight.   As the book says, these are the kind of people who maybe own a local chain of businesses doing something fairly ordinary, but doing it well enough to succeed.  They may very well not live in a fancy house, nor drive an expensive car, or otherwise outwardly draw much attention to themselves.

The world of software does not revolve around "dressing for success" (you noticed?), but we do tend to focus on the "big winners".  Gates, Jobs, Zuckerberg, Larry & Sergey, Larry Ellison, and so on are the stars of the show.  Of course, the economics of software being what they are, instances of winner-take-all markets with one big fish and a lot of also-rans are not uncommon.   However, that is not the only story, and I think it'd be interesting to know more about those in our industry who have accumulated significant wealth, yet are not the guys with more money than they could possibly ever spend on things that aren't, say, country-sized chunks of real-estate.

I'm guessing they'd fall into these categories:

  • Highly paid workers who have consistently saved over the years.  There are examples in the aforementioned book about people with relatively low salaries who happened to be very frugal and invest well (and have had some luck in their investments too).  These people would probably tend to be older, as it takes a while to save up that kind of money, and since this industry is so young with so much turnover, I would not think there would be a lot of people out there like this, but who knows, maybe there are a bunch of IBMers with this kind of story.
  • Those who got in on the right IPO, like Google or Facebook or something like that.  These events not only generate billions for those at the top of the heap, but for the right person at the right place at the right time, can mean significant wealth even without being in the upper echelons of the company.  My suspicion is that this kind of IPO, where everyone cashes out, is not common enough to have a lot of people in this category, but who knows, maybe it adds up over the years.
  • Those who own or started software firms that do something that's not very visible, but nonetheless dominates some particular niche.  This is where I'd guess most of them would be, but I certainly have no data or even anecdotes to back this up.

It'd be very interesting to gather some actual data on this, although I'm not in a position to do so myself – I wouldn't even really know where to start. 

As I age, I think the third category has begun to seem appealing in many ways – I'm simply not cut out for the Big Company life, and I'm not interested in living in Silicon Valley and going "all in" on the latest startup – I already did that, and while it was fun and I don't regret it, it's not the kind of thing I'd want to do now that I'm married and have kids.   Incidentally, this more relaxed, under the radar approach is exactly what is expoused in one of my favorite books of the past few years, Start Small, Stay Small.

Edit : I finished reading the book and reviewed it here:

The Dreaded Google Lockdown

It's one of those things that you read about, but are never really sure about: you think "maybe he was doing something fishy, and isn't tellling it straight in the public account of the incident".

So I'll try to stick to "just the facts".

A few weeks ago, I dug up some old book reviews I'd done, and posted to Facebook, and opened a site here: as a way of collecting them.  Naturally, I also added Amazon referral links, because, hey, it helps feed my reading habit!  Last month I got enough to buy two whole Kindle books, so we're not exactly talking about "get rich quick" territory here.  We're not even talking about anything remotely close to my day job, for that matter.  But hey, if I can get a little bit extra to spend on books, it's nice.  The reviews were basically quick notes on books I read.  Nothing that I or the rest of humanity can't get along without, but I felt like writing up a little something for myself and people I know on the internet – maybe it'll help someone else find an interesting book to read.

Several days later, I believe on October 8th, I woke up to find my phone was 'not signed in to Google', and, after repeated attempts, wouldn't sign in.  Same thing with my Nexus 7.  Logging in to my computer, in something of a cold sweat at this point, I find I can't get into Gmail or anything else, either.  Luckily, on the computer, Google's system did redirect me to a page where they mentioned suspicious activity, and gave me the chance to reactivate things by sending an SMS to my phone.  This did work quickly, and did a little bit to alleviate some of my stress.  I understand that locking things down quickly is probably to my benefit as well as theirs in the event of an actual security breach of someone's account: it keeps the attacker from doing any more damage.  However, it was sure a bad way to start a Monday morning.

However, the actual 'blog' (sorry, I hate the word!) was still blocked. It too has a form to fill out to prove that you're human.  Although: as a computer guy, you'd think that with all the clever people at Google, they would be able to tell from my access patterns to the site, browser footprint, IP addresses and so forth, that…well, I am me.  In any event though, they promised to review the blog within two days.  So, I waited patiently.  A week later, still nothing.  Then, the next day, I went back to check on the status, and they had reset the review request: it no longer said anything about October 8th, when I had originally made the reinstatement request.  So I filled in their form again, asking to have my blog back.  That was yesterday, we'll see what happens next.

As far as I can tell, I did not violate their actual terms of conditions, which say nothing about referral links:

Since the people at Google are loth to speak with their users directly, it seems as if one of the best ways of getting support is to complain loudly and publicly about this kind of shennanigan.

And to forestall the somewhat inevitable comments on anything related to Google: 1) Yes, I know I signed an agreement where they say they can do whatever the hell they want and I can f**k off if I don't like it.  Try and do anything on line with a major company and not get a contract like that, or for even more entertainment value, try and negotiate the contract with t he company.  Good luck.  If you don't say yes, you're pretty much on your own; there doesn't seem to be much of a market for "more humane terms and conditions" out there. 2) I know, I know, relying on the Google beast is a great way to set yourself up for a big fall if anything ever goes wrong, because it's impossible to appeal, or pretty much even to talk with a human.  But with a limited amount of time in my life, to date, Google has been a pretty good deal.  I suppose it's something of a "black swan" situation: everything seems fine until one day WHACK, and Google pulls the carpet from under your legs.


Well, I hope someone out there can help me recover my content.  I wrote it myself, and I would like to save my book reviews somewhere.

What alternatives are there to the Google colossus?  Not too many that I can see that are anywhere at all as convenient.

Edit: 2012-10-17: I don't know what did it, but they have reinstated the site.  Strange and disconcerting, but I guess things are ok for the time being.  Thanks to whoever it was at Google that finally had a look.