Archive | microISV RSS feed for this section

Bingo Card Creator (and etcetera) Year In Review 2011

I’m Patrick McKenzie (patio11 on the Internets) and for the last several years I’ve run a small software company.  My first product was Bingo Card Creator, my current product focus is Appointment Reminder, and I do occasional consulting for a variety of clients, mostly on helping them sell more of their software over the Internet.

Traditionally, right before Christmas every year I release an annual report.  See, for example, 2006, 2007, 2008, 2009, and 2010.  (Crikey, have I really been doing this for that long?)  I’ve also traditionally published live stats for Bingo Card Creator, but not my other lines of business.

Writing the annual report is partially to keep me grounded, partially to talk through my thoughts on the year and goals for next year, and partially to (hopefully) give other folks ideas that they can use in their own businesses.  I hope you find it interesting or, at the very least, mildly amusing.

Obligatory disclaimers: Assume any statistics that I give are “roughly accurate, to the best of my knowledge, at the time this report was written.”  There are still a few weeks left in the year.  Sales are typically low in the last two weeks, but the exact timing of credit card charges can cause a bit of jitter in the December stats.  From past experience, I have a high degree of certainty that there are about $1,000 or $2,000 of expenses (across all lines of business) which aren’t in the bookkeeping  system yet and won’t be until I sit down in March and check things for taxes.

Capsule summary: Best year ever, by a lot.  Broke $100,000 in sales for the first time and increased total profits to ~$70k.  2012 has inflection points coming for life and the business.

The Year In Brief

I put Bingo Card Creator into maintenance mode for approximately 48 weeks out of 2011: I only answered emails and kept systems running, but took no action to improve the product or marketing.  (The other four weeks I tried a few minor things out.)  This was, theoretically, supposed to free me to spend most of my efforts on Appointment Reminder…

… but that didn’t end up happening.  For a variety of reasons, most of my focus business-wise went into consulting.  Although I technically only did about 10 weeks of consulting during the year, I spent quite a bit of overhead time on e.g. arranging deals which ended up falling through, arranging the deals which did actually go through, and doing general promotion activities like speaking at conferences.  (I had the opportunity to speak at about a half dozen conferences this year, and assorted other events.  It is great fun, but since I generally have to fly to America for them, they tend to munch a full week out of my schedule each.  I spent almost three months of the year in the US, doing a combination of family events, consulting, prospecting, speaking, and meeting some Internet buddies to discuss plans for later.)

I also lost two solid months due to dealing with legal issues, mostly centering around Immigration.  I’d love to fill you in on the nitty-gritty, but have been asked not to by people close to the situation.  Suffice it to say that I was a shoe-in for a Japanese visa back when I worked at a large megacorp, was not a shoe-in for a visa when doing my own thing, and had a very hairy experience with getting them to approve me as a “self-employed engineering consultant.”  Tips of the hat to my Japanese clients, particularly Makeleaps / Webnet IT and myGengo, whose support was instrumental in getting Immigration to approve my renewal.

Despite not having nearly as much time to work on Appointment Reminder as I would have liked, I did manage to firm up its technical underpinnings, add new features requested by clients, and do a small amount of work marketing it.  I hope to make that more of my focus in 2012.

Bingo Card Creator

Despite being in maintenance mode, BCC continued performing like a trooper.  People always ask “Could you afford to live on it only?” and the answer is “Yes, but barely, and it would require a lifestyle adjustment, mostly in the don’t-fly-across-the-Pacific-so-often department.”  BCC did not meet the numeric goals that I had for the year.

Stats:

Sales: 1,539 (up 6% from last year’s 1,451)

Refunds: 14 (down from 22 last year, to .9% of sales from 1.5%)

Sales Net Of Refunds: $45,479.93 (up 5% from $43,398.55)

Expenses: $22,560.00 (up from $18,287.93, but largely just due to an accounting issue — I can’t split costs in my homegrown bookkeeping software, so the ~$3,000 I paid for servers for AR is hiding in that number)

Profits: $22,919.93 (see above accounting issue, essentially flat from last year’s $25,904.66)

Wage per hour: Let’s see, ~15 hours of programming, 20 minutes a week on customer support…  about $700 an hour.  Not too bad.

 

Web Stats:

(All stats are from bingocardcreator.com unless otherwise specified.)

Visits: 821k (up from 777k)

Unique visitors: 670k (up from 655k)

Page views: 2.9 million (up from 2.7 million)

Traffic sources of note: Google (46%), AdWords (18%), Binghoo (13%)

Trial signups for online version: 82,000 (up from 72,000)

Approximate online trial to purchase conversion rate: 1.8%

 

Narrative Version:

Aside from kicking up AdWords spend modestly (to no good effect) and running a few A/B tests, nothing really substantial happened with Bingo Card Creator this year.  I lost probably $1,000 to $2,000 of sales when the site crashed right during the middle of the Halloween rush for ~9 hours while I was on an airplane.  That was a little disappointing, but while it broke my candy budget it won’t exactly put me in the poorhouse.

Projections that BCC would continue to grow despite not being actively worked on turned out to be totally wrong.  I forecast 50% growth, reasoning “Hey, most of the systems work pretty much without my intervention, so I think the overall growth of the Internet plus a few A/B test means, oh, 50% or so.”  It mostly tread water.  I’m not hugely disappointed.

 

What Went Right:

  • Not having to work hardly at all for it.
  • Aside from the Halloween crash, the system was largely stable for the year.  I think I got woken up by the automated alarm maybe once.
  • SEO, AdWords, email marketing, and the usual scalable marketing stuff continued to be my bread and butter even when I was too lazy to actually cut and butter bread.

What Didn’t Work So Well:

  • Crashing on the third busiest day of the year, in such a way that it depresses my AdWords campaigns for the first and second busiest days of the year.
  • I integrated Stripe and expected a huge lift in conversions for going from Paypal to a simple CC-based payment system.  I tested this extensively in A/B tests.  I love everything about the Stripe system, but I have no evidence for “Stripe is better than Paypal/Google Checkout”, “Stripe/Paypal/Google Checkout is better than Paypal / Google Checkout”, etc etc.  That said, it might be something as simple as my buttons being ugly.  I’ll probably take a whack at it in the future, or better yet, have my designer take a whack at it.

Consulting

I did a few weeks of consulting this year, for several different clients.  Mostly, I do my engineering / marketing shtick for software companies, although some of my clients have been a wee bit farther afield.  I wrote up a fairly typical engagement with Fog Creek.  That one was a mutual success and we’ll continue to work together in the future.  (To the best of my knowledge, all of my consulting clients are happy with my work.)

One thing I’m going to do differently in the future is to work for less clients.  Don’t get me wrong: I love all my clients.  I was privileged to work with them.  However, it takes approximately X units of work to set up an engagement with a previous satisfied customer, 5X units of work to get a new prospect to the go/don’t-go decision on a new engagement, and I generally have to get three to four prospects to that point to actually wind up with a signed contract.  As my buddy Thomas at Matasano says, “That is life in the big leagues.”  However, since I’m not in a position where 100% utilization is a huge overriding goal of mine, I don’t need to keep the new prospect pipeline totally full… so I’m probably going to cut back on it quite a bit in 2012.  I’ll continue doing follow-up engagements for established clients where it makes mutual sense to do so, and I’m still of course available for interesting projects, but I’m not going to be doing six-week fly-across-America-four-times tours to drum up new business.

The following numbers are approximations only.  NDAs and having the sense God gave a tadpole constrain me from revealing my “going rate.”

Consulting sales: $55,000

Consulting expenses: $13,000  (mostly hotels and airfare for prospecting, which I pay for out of pocket.)

What Went Right:

  • Client selection.  I was, again, privileged to work for people who have interesting businesses, problems that I could make substantial contributions on, and the willingness and ability to pay all invoices in a timely fashion.
  • Raising rates.  My first guesstimate at my rate, back in 2010, was $X.  It turns out that I could do just about as much work as I wanted regardless of whether I charged $X, $2X, or $5X.  As a result, I typically quote fairly high rates and mostly stick with them, unless there is another reason I really, really want an engagement to happen.

What Didn’t Work So Well:

  • Disorganization.  At one point I was juggling something like five simultaneous proposals out while preparing for three conferences, two engagements, and six weeks of travel.  It got so bad that I showed up at a city once and checked at the airport for where I was staying, quickly seeing that I mistimed a conference by three days and thus had no hotel booked, booking a hotel from the taxi, and then arriving at the hotel to recheck my schedule and discover that I had used the previous year’s schedule and was actually simultaneously at a different hotel across Brooklyn.  (Shoutout to the Brooklyn Beta guys for saving me from my own stupidity that week.)  There were multiple points in the year where I found myself wishing for either a boss or a secretary or somebody to just say “Show up to X on Monday and Do Stuff and all the stuff that is not Stuff will be taken care of.”  My occasional slipups in dealing with the demands of a growing business caused me to drop balls in ways that were sometimes client-visible, too.  This is a major part of the motivation for cutting back next year.  (There is Plan B, of course: hire folks to do either the execution or the admin and take whichever part they’re not doing, but I don’t think I’m moving in that direction.)
  • Too much work!  Largely due to overhead and travel, plus the outsize distraction generated by the same, consulting munched a heck of a lot more time than I thought it was going to.  I wanted to have a solid eight months of the year to work on AR.  I think I probably got maybe two.

 

Appointment Reminder

I launched Appointment Reminder last December, with the goal of having approximately 200 customers and $10k in monthly recurring revenue by now.  I had planned on focusing for most of 2011 on marketing and selling it to more businesses.  That largely didn’t happen, but since I got the fundamentals of my SEO strategy in place (while largely ignoring the modestly more advanced content creation / etc that runs BCC and that I usually help clients with), the business grew despite my best efforts at totally neglecting it to focus on consulting and not getting deported.

AR has been hanging around at a crossroads for a while now.  There are two very different trajectories it could go down.  In one, I grow it organically, and it grows into a modestly profitable software business which will provide handsomely for my family and (in the fairly near future) employees.  In two, I take outside investment, and attempt to grow as quickly as possible to $N million a year in revenue, at which point options would include either a) selling to one of the larger players in the small business software space or b) continued operations at scale with a focus on growth.  Luckily, I have  the luxury of waiting on making that decision: my runway is infinite, the market opportunity is only getting bigger, and the perceived value of my involvement with a startup among investors does not appear to be depreciating.

This is one of the reasons I can’t be as open as I would like to be about the current status of the business.  BCC has essentially no secrets, and would not really benefit from having them, as — aside from elementary school English teachers — there is nobody out there who has something I want for BCC.  However, if I hypothetically wanted to take investment, then accredited investors suddenly have something I want very much and having secrets about AR gives me something with which to trade to get it.  (It is similar to not putting prices on an Enterprise Software website.  You can trivially get them, but the price of getting them is giving a salesman permission to give you the spiel.  Similarly, folks who ask about AR’s numbers these days are generally asking in the hopes that they eventually receive a phone call asking them for a check.)

The other reason I can’t talk about AR numbers so much is that I radically underestimated how important the enterprise market would be to the business, and you can’t spell enterprise without NDA.

So: I wanted to have two hundred customers by now.  For the publicly available plans, I currently have a few dozen paying customers.  There are ways to get things from me that don’t involve paying the numbers on the Pricing page.

AR is modestly profitable — it covers all of its own costs.  I plow most of the money it generates back into the business, though, rather than taking distributions.  For example, I’m now about 95% certain that I will have significant contractor or employee involvement on it in 2012.

Revenue: Undisclosed

Expenses: Undisclosed (very modest ongoing expenses, reinvested most profits)

Profits: I took about $5k just to have a number that would minimize disbelief at the tax office.

What Worked Right:

  • Twilio.  The Twilio API and service have been unalloyed epic wins for Appointment Reminder.  I had zero disruptions in service attributable to them, their customer support has been fast, responsive, and technically savvy (even helping me debug my own code at points), and they’ve been very supportive of me.  Plus they have these awesome red track jackets that they keep sending me, which you’ve probably seen if you’ve seen a picture of me doing any talk this year.  (I actually wear them mostly because I love the color red, but apparently I wear them so often that folks at the Fog Creek office thought the Twilio logo was my logo.)
  • Sendgrid: It’s like Twilio, except for email.  Great service.  No red jackets.
  • Unit testing & staging servers.  I am gradually getting more sophisticated in my engineering practices, and have been ramping up my testing activities since starting to code AR.  It has transformed the way that I do development, for the better, and made it easier to respond to customer requests to change things while decreasing the number of problems I have caused.  Total win.  See my presentation at TwilioConf for examples of the specific ways I use it for AR.
  • Exact match domain names.  ”Hey Patrick, how is it that with no marketing budget and nearly no marketing work you rank #1 for [appointment reminder]?”  I told everybody that I was buying the .org specifically because that would happen but apparently folks didn’t believe me.
  • Using the self-service site as lead generation for enterprise sales.  Fairly self explanatory.
  • The service itself: AR solves a clear customer need, and my customers are raving fans of it.  There exist many services businesses which incur hundreds in direct costs and thousands in forgone revenue for a single missed appointment.  (Think, say, an HVAC company which sends a three-man team of tradesmen out to your house to replace your heater, which is a $2,000+ job, only to discover that you aren’t home to let them in.)  One of my customers reports that just the delta in no-shows since starting to use AR would pay for his mortgage and his daughter’s college education.  Many of my other customers report that their office managers, who previously did telephone reminder calls manually, are ecstatic to not have to do them any more.  Customer retention among folks who actually use the system (as opposed to signing up, doing a test call, and forgetting about it) is virtually 100%.
  • Talking to smart people for advice: Since I’ve been going back and forth on the investment question, I talked to a lot of entrepreneurs and investors whose opinions I respect.  I really appreciate their feedback, which ranged from “Are you kidding?  You’d hate it.” to “I want to invest in you, but realistically, you would lose nothing by waiting until you are sure.” to “Best decision I ever made.” and helpfully included a lot of actionable advice on how to do things in the meanwhile such that options remain open.

What Didn’t Work So Well:

  • Catastrophic engineering failures.  I had one combination outage/catastrophic failure in February (the details are recounted in that TwilioConf presentation) and a ~3 day period of sporadically degraded operations after my move to Rackspace, which I finalized over the Thanksgiving holiday.  Both of those were my fault, for architecting the system in a way which did not gracefully handle its multiple moving parts getting out-of-sync with each other.  I’ve since done significant work on making it more stable.  (Overall reliability for the year has been excellent, but those periods were easily the most stressed I’ve ever been about any business issue.)
  • Lack of focus: I’ve been commenting above on this, so I won’t belabor the issue, but I really didn’t get to work on AR as much as I wanted.
  • Enterprise sales: I’m actually fairly decent at Enterprise Sales, and am working with someone in the industry who has a deep Rolodex among folks who would be great candidates for AR, but (partly due to the focus issue and partly due to my own comfort level) I didn’t put nearly enough effort towards it this year.  What I should honestly do is go to a conference some time, prospect like a madman, and then make following up on those leads my only job until I’ve got contracts signed.  (The prices for enterprise SaaS make this very economically viable.)

Goals For 2012

Bingo Card Creator

  • I’d be happy with continued flatness ($~30k profits on $50k sales), maybe.  It isn’t the source of growth for my business anymore.
  • Continue using it as a laboratory for weird ideas I have on conversion optimization.
  • Don’t break it during Halloween.

Consulting

  • Do less work prospecting for new clients.
  • Do more work for existing clients.
  • Modestly increase billings, if that makes sense for where my overall business is.  (If I take external investment in AR, that will likely require shuttering the consulting business.)

Appointment Reminder

  • Figure out whether I want to take investment or not.  If so, do so.
  • Convince Keith (who I do my podcast with) to work with me, if possible.  (Don’t worry, he knows this is on the agenda.  We’re best friends.)
  • See about transferring responsibility for the engineering (particularly front-end) side of things so I can focus on marketing/sales.
  • 10x current sales numbers.  That seems to be a fairly safe bet regardless of whether I shoot for a small business or for a high-growth business.  (1,000x-ing would be another story.)

A personal note: The last 3,300 words ultimately matter much, much less than the next 3: she said yes.  We’re announcing to our family on Christmas, as per our family tradition.

How Running A Business Changes The Way You Think

A few months ago I had the opportunity to have dinner with Ramit Sethi.  We shot the breeze about business topics for a little while — optimizing email opt-in rates, A/B testing to victory, pricing strategies, and the like.  Writing and selling software is solidly in my comfort zone and is what I usually talk about on this blog.  If you want that, skip this post.  We are going deep, deep into the fluffy bits!

The conversation wandered into the softer side of things: psychology, and how running businesses has changed us as people.  I told Ramit a story, and he encouraged me to share it a little more widely, so here we go.

Knowing What Motivates You

Have you ever heard the expression “That really pushes my buttons”?  The notion that there is a particular set of things that uniquely motivates a person has always been a very powerful one with me.  I don’t always have the best handle on what I want in life, but I have enough introspection to know where my buttons are.  A big one, for as long as I can remember, is labeled “Praise To Release Dopamine.”  When I was growing up, I was a praise-seeking missile.  I got very good grades.  I got very good at getting very good grades — not because I wanted good grades for their own sake, and not out of some notion that good grades would get me something valuable in the abstract future, but mostly because I learned very early that parents, teachers, and other people I respected would say “Attaboy, Patrick” if I brought home the A.

That particular story might evoke shades of Tiger Mom parenting.  That would be overstating it: I love my parents deeply, they never pushed me into anything I didn’t want to do, and we’re rather paler than most of the folks in the Tiger Mom crowd.  (Though friends in high school often joked that we’re the most Asian white people they know — and seeing as how my siblings and I can together handle Japanese, Chinese, and Korean, that might not be totally off the mark.)

I realized something fairly early on, though: being a good, hardworking student and getting good grades are two very distinct skill sets.  I was not a particularly “good student”, I just got particularly good at being a student.  I got hooked on a lifetime love of optimizing systems when I realized that 89.5% rounds up to 90% rounds up to an A. That meant I could blow off one more homework assignment than if I didn’t understand decimal arithmetic. Math gives you superpowers.

That’s also why I got started writing.  You see, after you set a multi-year expectation of always getting good grades, the praise mostly dries up.  Drats!  But if you particularly impress a teacher with your flair for writing, and she reads it out to the entire class, then you get to beam a little bit and you collect a story redeemable for an Attaboy at the dinner table.  So I got hooked on writing.  Roughly contemporaneously, I got introduced to the Internet, which if you write well and enjoy having an audience praise your ideas is like your own personal Skinner box.  (If anyone ever wonders why I spend a wee bit too much time on message forums, well, there you go.)

Is there a point to that anecdote?  Sort of.  If you have a good handle on what really motivates you, you probably have a good handle on things which do not really motivate you.  At the top of the list for me: money.  Don’t get me wrong, I am fascinated by money, in the same fashion that the engineer in me is fascinated by bits and electricity and experience points and red blood cells and everything else that whirs around animating interestingly complex systems.  The notion of seeking money strikes me a lot like the notion of seeking red blood cells: ewww.  As long as I don’t drop dead from lack of them, honestly, I could take it or leave it.  (At least qua currency.  Money is also the convenient method of keeping score for optimizing businesses, which feels like a game to me.  I really enjoy winning games with complicated rules sets, especially by optimizing the heck out of play, because optimization is often as much fun as actually playing the game.)

Careers as a Multi-Dimensional Preference Space

My preference set is more complicated than the above micro-sketch, but suffice it to say that I have a good handle on what I value.  One would think I used that introspection to actually achieve happiness.  Was I happy a few years ago?  No, I was very unhappy.

There was a point in my life where I thought what I really wanted was a safe, comfortable, professional career at a big freaking megacorp.  I even had the position picked out: I wanted to be the Project Manager in charge of the Japanese version of Microsoft Office.  If that sounds like a curiously specific goal in life, just call me quirky: I had set about optimizing for a safe middle-class career and that looked to be the high-percentage route through the maze to the cheese.  Why was I so concerned with security at the time?  That’s a long story, but suffice it to say it was a combination of encouragement from my family, a culture that I was in which emphasized good grades to good college to secure employment as the thing to aspire to, and some other factors.  So, true to form, I did what I thought I needed to get to that pot of goal at the end of the rainbow: got into good university, check.  Studied Japanese, check.  Went to Japan to perfect business Japanese, check.  Got a job at a Japanese megacorp, check.  Became totally miserable, check check check.

Along the way, almost totally by accident, I discovered that you could open a small software business on the Internet pretty much without asking permission from anyone.  I discovered that I really, really liked almost every aspect of doing business, in the same way that I really, really did not like most aspects of working at a megacorp.

I worked for several years as a Japanese salaryman.  For those of you not acquainted with the term, it basically means that a company owns you body and soul in return for guaranteeing you gainful employment and social status until you die.  I was working 70 ~ 90 hour weeks for very little money doing “fun” things like translating Excel design docs into Java code and valiantly trying to fix programs delivered by an Indian outsourcing team working from design docs translated via Babelfish.  Why does anyone put up with this?  A lot of people, asked that question, would say “Well, that’s just the culture in Japan.”

Let’s talk about a different quirky culture for a moment: you go from a place you like being, surrounded by people you love, to a place where you do not really enjoy being, surrounded by people who you pretend to like but honestly wouldn’t choose to be friends with.  You stay there for half of your waking hours, five days a week.  Why does anyone put up with this?  I don’t know, it’s the culture or something.

I may have said this before becoming a salaryman, but I never truly understood it: the way we work is, essentially, arbitrary.  40 hour work weeks for middling-good salaries are no more a law of nature than 90 hour workweeks for middling-poor salaries.  The story we hear growing up about working hard to get into a good school so you can work hard at a good job so you can be well rewarded isn’t a lie, per se, but it is a story.  A narrative.  There’s a core of truth buried in it somewhere, but we don’t tell it because it is a true story, we tell it because it is a crackling good story.  If you’re committed to the world being a meritocracy, that story isn’t just good, it is practically mandatory.

The world isn’t a meritocracy.

Here’s a story which we’ve all heard before:

This isn’t a particularly true story.  I mean, let’s start fitting some points to the line:

The  graph isn’t to scale and the points don’t matter: pick your own examples if you disagree with these.  The point is that “work harder and you’ll make more money” is bunk, and we know it to be bunk, and yet we tell that story anyway.

There are many, many more points that we could add to that graph: you could theoretically pick from uncounted thousands of tradeoffs on making money versus working hard.  And that is with only two things under consideration!  What if you considered just one more, such as “Where I want to live?”  Maybe you so want to live in a particular small town in Kansas that you’re willing to accept a smaller salary.  Now we have a three-dimensional preference space.  The true preference space for careers has more dimensions than you can imagine, and sliced along most of them, the straight lines are a just a story.

So if we’ve got a mindbogglingly large solution space of possible jobs, some better in some areas than others, and some areas mattering more to us than others, why don’t we just we just make our mental graph just one wee bit more complex, and add in the 3,207th dimension, how happy we are with our lives if we work at that job?  And then optimize for that?  Heck, since the straight lines are basically not real, would that point even be a job, per-se?  Running your own business is an option — and a laundromat is very, very different from selling software to elementary schoolteachers is different from building the next Google.  Would it even be a point?  Maybe it bobs and weaves a little bit (or quite a lot), as we find out more about ourselves, as we explore new options, and as our preference set changes over time.  I cared about job security once, or at least thought I did.  I honestly could not care less about what “normal” people would consider a secure job now.  When we re-rate that, the points which look like good options for me change dramatically.

I’ve been an engineer, and a technical translator, and a teacher, and a paperboy.  These days, I guess I’d answer to “I own a software company.”  But my job, on any given day, is doing something which makes me happy.  (For, again, a complex definition of “happy”, which includes things not strictly related to me, such as “Is the world better for this having been done?” and “Are the people who matter to me well taken care of if I do this?”)

Because if you’re not happy, and you’re not moving to happy, you should do something else.  We should be happy.

It’s All Negotiable

I grew up in a world of simple stories with clear morals.  As far as careers were concerned, straight lines abounded.  Does anyone remember the day we learned that, say, a middle class man goes to work every single day, Monday through Friday, and that days not like that must be celebrations because they’re clearly the exceptions to the rule?  Were we ever told that, or did it just seep in, somehow?

Here’s a radical notion, let’s try it on: never work Thursdays.  Why?  It has a T and an H in it — T +H = no work, that’s just the way it is, end of discussion.

Would any company ever go for that?  Five years ago, I would have said that is ludicrous.  Everyone works Monday through Friday.  Well, OK, technically speaking university professors could schedule classes and office hours such that they never did anything on Thursday.  And most of the cafes in my town are closed on Thursday.  And teachers get three whole continuous months of Thursdays off.  But that doesn’t matter — the rule is, you work on Thursday.

There may well be excellent reasons why people work on Thursday.  Other people also work on Thursday, so that is very convenient to their company if their workers are around to answer inquiries on Thursday.  But what if the company just said “Sorry customers, no service on Thursdays.”  That would work much of the time — it does work, if you’re a sushi shop in Ogaki.  And it wouldn’t necessarily even be the entire company.  It could just be Bob.  T + H = Bob isn’t there on Thursdays, deal with it.

But what company would deal with it?  Isn’t it written in some book of laws or manual somewhere that Bob has to work on Thursday?  Probably not.  Actually, it might well be written down somewhere, but we ignore things that are written down all the time, so Thursday seems as good a thing to ignore as any.  This is one of the things being a business owner has taught me: there are two parties in any negotiation, and if they agree on one particular point, then that point goes the way they agree.  If Bob and the company agree that Bob doesn’t work on Thursdays, then Bob doesn’t work on Thursdays and damn what the “standard” contract says.  All Bob needs is negotiating leverage to convince his company that agreeing with him on the Thursday issue is in their interests.  Maybe he trades them a salary cut.  Maybe he’s just the best Bob there is and putting up with his idiosyncrasies is worth having him on board.  Maybe just, when push comes to shove, nobody really cares about Thursdays at all.  Whatever.  If Bob wants it, and asks for it, and gets it agreed to, Bob gets what he wants.

You can often get what you want.

Let’s take an example a wee bit less far-fetched than Thursdays.  Let’s say you’re an engineer and you want to be able to pick your technology stack, always.  You have many options here.  You can found your own company, and then you use whatever technology stack appeals to you.  You could consult only on the technology stacks you like.  You could work for a job and just tell them “I quit if you ever put me on a project using a stack I don’t like.”

That might be considered a little disloyal, for a certain value of disloyal which occurs only in the context of a particular type of commercial relationship.  Nobody expects the company to be loyal to their suppliers.  The company expects you to be loyal to them, largely because it is in their interest, and they will often do a lot to convince you that their values are your values.  Is this synthetic, external value really one of your values?   After much consideration, I’ve come to a conclusion about company loyalty: stuff company loyalty.  Companies are legal fictions which we find convenient to use to move capital around and balance accounting ledgers.  I’ll save my loyalty for people.  You’re welcome to your own preference set on this: stick with the company if that is more important to you than working with your favorite technology stack, but make that your choice, not somebody else’s.

Working five days a week?  Your choice.

A job which doesn’t excite you?  Your choice.

Money insufficient to buy whatever it is you want?  Your choice.

Thinking About Money

I come from a fairly modest background, and remember distinctly that one of the perks of my first job was that I didn’t have to worry any more about buying something below $5.  Then I got my first real job, and my care floor went up to $20.  Then my business started doing well, and video games slid under at $60.  Sometime recently I realized that trans-Pacific plane tickets were no longer an expense I needed to save for months for.  So it goes.

You can imagine that if $3.50 is a meaningful amount of money to you, you lead a fairly frugal existence.  I used to live like a monk, and I even idealized that a little bit, but I’ve come to realize that not-spending-money is not something I particularly value one way or another.  Back when my business had no budget, I would gladly do web designs by myself, even though I don’t particularly enjoy it and I am not particularly good at it.  These days, the business is doing rather well, so if I need a web design done I’ll just pay someone who is good at it and likes it, and I’ll get back to doing more important things like strategizing or doing marketing or maybe reading a supernatural romance.  (internal monologue: “But Patrick, you’re not allowed to read in the middle of the day! … Oh wait, I guess I am.”)

For a business, money is a tool to get things that you want.  That started creeping into my personal life as well.  Consider my apartment move in February.  I could have spent a week boxing things up and cleaning my apartment.  Or, I could have paid $2,000 and gotten people to do it for me.  Earlier in my life I would have thought $2,000 is an incredible amount of money (almost a month’s salary!) and that there was something vaguely lazy about not doing the work myself.  The businessman in me made the fairly simple calculation that I could pay the movers $2,000 and get back to charging customers something rather more, and I would not be exhausted and bored at the end of the day.  Here is the money, gentlemen, I’ll be programming at the cafe if you need me.

Confidence Issues

I have longstanding confidence issues.  I often feel like maybe I’m just getting praised for playing the game really well as opposed to demonstrating actual merit.  (I have since found that many, many people I respect likewise worry they’re faking it.  Anybody in my audience got the same issue?  If so, and if you respect me, there you go — you’re not alone on this one.)

I have found that actually showing confidence issues, on the other hand, does not do great things for one’s business.  For example, let’s say you’re doing pricing for a product or service your offering — maybe your software, maybe your labor, whatever.  If you have confidence issues, you will undercut your own negotiating position by underpricing.  Been there, done that, got the T-shirt.

I do consulting, on occasion, and it makes up most of my income and rather little of my day these days.  Consulting is a topic for it’s own post some other week, since I learned by a combination of mentorship and making expensive mistakes and would love to save other folks with less access to good mentors some pain.

At some point in discussing a consulting engagement, you have to quote a price to the client and get them to say “Yes.”  You could write entire books about the psychology of that fifteen seconds, but in a nutshell, you don’t want it to cause you to think “Oh my goodness I’m not really good at this and charging any money is basically stealing so maybe I’ll give them a discount to my lowball offer and then work extra hours to make up for how terrible I’m being right now.”

I got clued into consulting by Thomas Ptacek at Matasano, who has gone from Internet buddy to client to personal friend.  It’s a funny story: I spend too much time on Hacker News, he spends too much time on Hacker News, we both had reason to be in Chicago, so I suggested we get coffee and talk about… whatever message board geeks talk about when they get coffee, I don’t know.  He was very receptive to the idea, so back in December 2009 we grabbed a coffee and went back to his office to drink it.  He then locked me in his conference room for three hours and proceeded to interrogate me with one of his co-workers about everything I knew about SEO and marketing.  It was, seriously, the most fun I had all year.  (Remember, praise-seeking missile.  That entire situation was basically pure brain crack for me and I was getting a free drink out of the deal.)

At the end of the discussion, Thomas mentioned that, if I had phrased my invitation as “Why don’t I consult for you” rather than “Why don’t we grab coffee”, he would have gladly written me a check.  I had a vague idea that a semi-decent engineer (my mental positioning for myself at the time) was worth about $100 an hour, and mentioned that $300 didn’t seem to be enough money for either of us to worry about.  He told me that he would have paid $15,000, and it blew my mind.  (There was a bit of discussion on that point — his coworker thought that to justify $15,000 they’d really need a written report, but the petty cash drawer could have maybe swung $5,000 for it — and my mind got blown again.)

I would like to say that after starting consulting I went immediately to charging $5,000 an hour, but sadly for my bank balance, not so much.  I distinctly remember the first time I quoted someone, though, over email.  I typed a number, agonized over it for ten minutes, then typed a number 50% higher, then curled up in the fetal position for a few minutes, then impulsively hit Send and started hyperventilating.  Ten minutes later I got an email back and, to my enduring surprise, they did not hate my guts for picking that number that was 50% bigger than a number I was already barely comfortable with.

Since then, I’m gradually getting better at the confidence thing.  Partially, it is as a result of trying new things for me and realizing that, no matter how intimidating they were when I started, I largely don’t end up dead.  Consulting engagements go well.  When a new client asks what my rates are, I pick a bigger number.  They’re generally OK with it.  If not, oh well, it turns out there are often many ways to negotiate such that we’re mutually happy.  (Including me just letting them go.  I mean, I don’t need to work everyday.)

Speaking of confidence, sending email to people used to be a bit of a hurdle for me.  Even asking Thomas out was on the edge of my comfort zone.  After trying it many times since then, and observing the behavior of other people in business who I admire, I have come to realize that it is not a big deal.  (Relatedly, almost nothing is as big a deal as we think it is.)  This comes up over and over for young engineering-types on Hacker News so, if you get one actionable piece of advice out of this, get comfortable with sending email to people and asking them to give you what you want.  This will virtually never cause a mortal catastrophe.  I still have a ways to go to do it routinely, but it gets easier every time I do it.  Definitely explain to them why giving you what you want is in their interest, but ask.  They might say “Not interested”, or they might not reply, but they’ll very rarely put a contract out on your head.

Can Your Job Change Who You Are?

After you have asked a CEO or two to coffee and not gotten your hand bitten off, you would be amazed how less scary “Say, why don’t we have dinner together two weeks from now?” is.  That could, possibly, have been the most important sentence of my life to date.  She didn’t put a contract on me, either.

(I generally keep my work life and personal life fairly compartmentalized, so I won’t talk too much about that, but a funny anecdote: we were talking about money one day and future career plans.  She told me she’d continue working at an office job which she doesn’t particularly enjoy so that we’d have enough money to support a family.  I was confused for a few seconds and then started laughing: I had shared less with my girlfriend about my finances than I routinely publish on the Internet.)

And if you’re getting comfortable with addressing folks as your equal and reaching mutually acceptable solutions, why ever stop?

I have to deal with city hall from time to time.  I used to be very timid about it, afraid that I was wasting their time or about to step on a bureaucratic landmine.  These days, they’re a service provider and I’m a customer — a customer with limited options for changing providers, granted, but a customer.  CEOs get what they want.  When I go to city hall, I put on my suit, slide into professional mode, and get things accomplished.  They can’t do something?  Of course they can, or they can find someone else to do it, or there is a particular fact which they need from me to justify doing it, or maybe I’m just asking the wrong way and I should try again.  And I don’t have to be intimidated or embarrassed about doing this — it’s just a negotiation, and not even a really important one, at that.   Plus, if worse comes to worse, I could always just send a lawyer to do it.

I missed a flight a month ago, and got one sentence of a very stern dressing-down from the clerk at the Delta counter.  Years ago, that would have paralyzed me.  I was totally unphased: my brain immediately supplied “They likely sold the seat to someone on standby and, if not, Delta’s revenue maximization is not your moral imperative.  You paid them for a service.  The price of your ticket and standard social graces is the maximum extent of your obligation to them.”  I immediately cut in with “Sorry for the inconvenience ma’am, these things happen.  What are our options?”  (It turns out that if you fly ~100,000 miles a year, your options include them putting you on the next flight, for free, and getting a discount on your hotel room that evening.)

My friends also tell me that I’m almost a different man these days than even two years ago.  The most striking quote to me, from my best friend: “You look… healthy.”  Apparently the old day job was beating me down so thoroughly that I looked about as bad as I felt, and even on those days when I wasn’t dog tired I walked with a bit of a stoop.  These days, I even stand straighter.  I think that is almost too convenient to be true, but hey, it’s a story.

This Actually Can Matter

If you don’t have a good handle on what you want, or even worse, you don’t actually consult it, you could make decisions which are not really in your interests.

I have been somewhat seriously kicking around the idea of taking investment recently.  Thankfully, at Microconf, I got the chance to bounce some ideas off some smart people, including Hiten Shah.  He asked a very perceptive question: why did I want to take investment?  And honestly, I didn’t have a really good answer for that.

“I have the ‘ran a small business’ merit badge already, and am looking for new challenges.”

“Is 10x-ing your business a challenge?”

“Yeah.”

“Do you need investment to do it?”

“Nope, I have done it before.  Besides, even 10x-ing it wouldn’t produce a favorable outcome for most investors.”

“Then why not skip investing and continue doing what you love?”

“…”

The business is growing quickly.  I’m bringing someone on in August.  My life is better than it has ever been.  Taking investment would commit myself to a few years of a very different trajectory, including some things that I have no reason to assume I would enjoy, like managing employees, getting involved with intrapersonal conflicts, and having to give up ownership (not the equity, the responsibility) of parts of the business that I genuinely enjoy to focus on CEO-ing.  In return, yeah, I guess you get a quirky kind of social status and a shot at getting a lot of money, but if I had so much money that a dragon would be embarassed sleeping on it, very little about my life would change.

I’m pretty happy with where I am.  Today rocked.  Bring on tomorrow.

 

Software Businesses In 5 Hours A Week: Microconf 2011 Presentation (1 hour)

Rob Walling (who wrote a book on starting software businesses that I enjoyed) and Mike Taber produced Microconf, a conference for small solo software entrepreneurs.  That sounded right up my alley, and I was extraordinarily happy when asked to speak at it.  The organizers have generously given me permission to post the slides and video of my talk.  (Sidenote: editing videos is going on my Never Doing This Again list.  I should have just thrown a few hundred dollars at someone and saved six hours.  It probably would have ended up better, too.)

If you have an hour free, I recommend the video.  I am told that it was funny, though the genre of humor was very different than my Business of Software presentation.  If you can’t take an hour to watch it, though, you can certainly just read the slides and my commentary below.

How I Ended Up In Central Japan

I have long wrestled with fairly severe self-confidence issues.  (The psychology of entrepreneurship is the major theme of an upcoming post, inspired by a talk I had with Ramit Sethi, who also spoke at Microconf.)  When I was in college, I knew I wanted to be a software engineer, but I was worried about my job prospects competing with 100,000 engineers graduating every year in China and India.  My family was very big on me getting a nice stable job at a megacorp, and I didn’t think I had the chops for it.  So I played the Venn Diagram game: if I could do one very hard thing plus engineering, the intersection of those two would be only a half dozen people, and I’d be set for life.

Learning languages is very hard, so I went down the list that my university offered, and Japanese jumped out at me.  The US and Japan trade billions upon billions of dollars of high-tech stuff every year.  Virtually no Americans speak Japanese.  Practically no Japanese people are fluent in business-level English.  Bingo, if I spoke Japanese and can do engineering, I thought Microsoft (my favored employer at the time) would have to put me in a nice safe job in the Office group for the rest of my life.  So I doubled majored in the two.

Quick tangent: A major multinational advertising firm with an anomalously high number of PhDs on the payroll recently approached me about being a Product Manager in Japan, so this strategy really does work.  It’s funny, three years ago that would have been my dream job and now it was totally untempting.

Anyhow, after graduating college, I was still not confident in my business Japanese, so I decided to go to Japan, work in a Japanese office, and firm it up.  Did I think I could actually call the VP of the multinational who gave me his card and said “Call for a job when you graduate?”  No, confidence issues.  So instead I applied to an international exchange program, which places mostly English teachers and, crucially, some translators at Japanese governmental and quasi-governmental institutions.  One of them was the prefectural technology incubator in Gifu.  (I’m not comfortable telling you which one, but suffice it to say that really narrows it down.)  They took me on as a technical translator, in the expectation that their quickly-growing incubated companies would need technical translation to close big deals with foreign companies and governments.

Gifu is the Kansas of Japan, with more rice and less white people.  I’ve lived here for the last seven years and love Ogaki, my adopted home town, to pieces.  Being a technical translator, however, was not very professionally fulfilling.  Professional ethics require you to translate everything exactly, without elaboration.  I like to think I have something to add to the conversation, so when my contract elapsed in 2007 I switched to being an engineer at a Japanese megacorp.  Prior to doing that, though, I launched Bingo Card Creator.

From Humblest Beginnings

BCC was originally the hobbiest of hobby projects.  One of my assorted job duties as a heavily-underused technical translator was to help out the prefecture’s 200-strong mailing list of (foreign) English teachers, who didn’t speak Japanese and as a result often had issues with coworkers, landlords, government, and the like to muddle through.  Someone asked the mailing list how to make bingo cards for an activity she had planned for later in the week.  I told her to Google it.  She told me that she had and that Google was showing her solutions which were grossly inadequate to her needs.  So I got permission from my boss and spent the rest of the day putting together what might today be called the Minimum Viable Bingo Card Creator.

It was terrible: a Java swing app, distributed as a .jar file, which would accept words in one text-box and, when you hit Print, dump a directory of card0.html … card29.html and ask you to print them from IE because I didn’t know how to actually do that in Java at the time.  But it did actually create bingo cards, and they were of sufficient quality to give to a 7 year old Japanese kid without feeling embarrassed, so I sent it to the mailing list, and went home for the day.  I thought that was the end of it.

The next day, I had 60 emails in my inbox when I got into work.  They were split 50/50 between “THANK YOU!  BEST SOFTWARE EVER!” and “THIS SUCKS!  IT DOESN’T WORK ON MY MACHINE! FIX IT BECAUSE I NEED IT NOW!”

So later in June 2006, when I decided to create a business on the side to try my hand at the SEO/AdWords/etc stuff I had been reading about, bingo jumped out at me as a good topic for software.  I mean, if I could find 60 people who wanted it in Gifu, surely there must have been a market back in the US.  So I budgeted $60 (one video game) and one week to rewriting and productizing it (outside the day job this time, naturally), and set myself a goal: some day, after months of work, I wanted to make $200 in sales a month.

Since I had been inspired by other tales of success on the Internet, I started blogging (you’re reading the result, 5 years later) and publishing my statistics, including sales.  You can see annotated graphs in the slides, so I won’t put them in this post.

Early Days: Filling A Hole In The Internet

BCC exceeded $200 in sales in its second month, largely on the strength of two pages I wrote about Dolch sight words bingo.  (Not an English teacher?  No problem.  Dolch was an English pedagogist who compiled lists of the 220 or so words early English learners need to know on sight.  Teachers know they should teach these but often don’t know which words are on the lists for what year.  I put lists of them online and monetized them with self-ads for the strongly-related bingo activity, on the assumption that almost any teacher wanting to teach them would want a review activity, too.)

This was a good thing, since I had no budget at the time for AdWords.  The success of the content marketing also clued me into one of the core features of the software: writing pre-made word lists that shipped with it, so that teachers didn’t have to type up their own.  So I spent the next year or so in very part-time fashion improving the software, launching new versions, polishing the site, and generally learning more about running a business.  (“Schedule C?  What is that?  Ooooh.”)

Got Google AdWords To Work

In 2007, I started trying my hand at AdWords.  It was a fistful of fail — I could not seem to get either positive ROI or meaningful volumes for the life of me. A buddy of mine from the Business of Software forums advised me to try the Content Network (i.e. ads on sites other than Google.com).  I had turned this off, as prevailing sentiment on the Internet was that the Content Network was a hive of scum and villainy, filled with spammers and MFA (Made For AdSense) sites which sent traffic that did not convert.  But my buddy was sufficiently credible that I trusted him…

… and that ruined my summer.  (His advice ended up turbocharging my business, so I’m retroactively happy for it, but try telling that to me at the time.)  See, every day after coming home from work I would check into AdWords, and every day I would have a new list of spam sites to have to manually ban.  They sent non-converting traffic and I didn’t want to subsidize them.

Towards the end of summer, Google came out with Conversion Optimizer.  In brief, it automatically increased your bid on sites/keywords which sent traffic that converted and decreased it on sites/keywords which didn’t.  This meant that non-converting traffic from spam sites essentially got optimized away without me having to manually ban it.  I loved that, and became an early adopter, writing a pair of blog posts on it.

Concurrently with adopting Conversion Optimizer, October rolled around.  Halloween happens at the end of October, and hundreds of thousands of teachers look for a Halloween activity to play with class.  (Why Halloween, over every other holiday?  Because it is kid-focused, because kids are in school for it, and because as a largely secular holiday it can’t get public school teachers in trouble.)  This meant that sites with content responsive to Halloween bingo, like about.com (which was a content farm before content farming was cool), suddenly had hundreds of thousands of page views to sell AdSense against.  And who was in the front row of the auction for halloween bingo ad impressions?  Me, because Conversion Optimizer figured out that I was making out like a bandit and aggressively moved to spend my money.

Sentiment on the Internet towards Conversion Optimizer had been primarily negative, but I was killing it with it.  My blog post also ranked #3 for Conversion Optimizer right below two posts on google.com… above much of the official documentation.  I think that was probably what clued the Product Manager into talking to me.  Anyhow, to my total surprise, Google asked to do a white paper about my experience with the product.  That was my proudest professional accomplishment for a while, actually.

Content Marketing Seems To Be Working Out… Let’s Scale It

So I was doing well for Halloween bingo in spite of not having any page about it (remember — AdWords ads only), and had done even better for Dolch sight words.  If only I could make a page about Halloween bingo, and Thanksgiving bingo, and addition bingo, and any kind of bingo a teacher could possibly want to play.  Then instead of paying Google to lease the traffic, I would get it for free myself, forever.

This struck me as an unachievably huge amount of work while full-time employed, so I decided to partially automate and partially outsource it.  I taught myself Rails and rewrote the website as a Rails application (rather than 100% HTML-written-in-Notepad), then wrote a script that would populate the Cards table by reading in text files.  Each card got its own page on the website, complete with image of the card, downloadable PDF of 8 randomly created cards, and copious oppotunities to download the free trial of my software.

Creating the GIF and PDF was originally very difficult: you had to use BCC, print to a virtual PDF-ing print driver, open the PDF, screencapture it, crop the capture manually, and then send me the words you used, the resulting GIF, and the PDF.  Repeat thirty times over.  My freelancers understandably got bored, so I had someone write a script which would use a particular Windows macroing utility to drive my laptop’s mouse and do the work.  This took about an hour to get through 30 cards, and required my presence if the script broke in the middle (which was “often”), but it still cut production time down by 90%.

This ended up working out scandalously well for me.  See Scalable Content Creation under Greatest Hits if you want the story in detail.  (I also did a video with Andrew Warner and AppSumo on the topic, if you want it described in a more organized fashion than my blog’s usual stream-of-consciousness approach.)  Eventually, after optimizing the process, I had nearly a thousand pages like this created.

I also have a variety of micro-sites written on exact match domain names, like my favorite, Halloween bingo cards.  Honestly, they’re not that material to my strategy anymore, but if you want to hear more about them see the blog from a few years back.

On Being A Salaryman

Around this time my contract elapsed at the cushy translation job, where I left at 4:00 most days, and I got a job as an engineer at a megacorporation in Nagoya.  No, not that one… not technically, at any rate.  Somewhat to my surprise, the job they offered was as seishain,  which means full-time company employee.  The more commonly known coinage for this status is salaryman, because the job is designed to take over your life.  And take over my life it did.

I rush to point out that I have no ill-will against my old employers: they treated me fairly, by the standards of Japanese corporations, and I learned a lot at that job.  I had my eyes wide open going into it, too — I just didn’t realize how bad 70 ~ 90 hour work weeks would actually be.

This was intended more as a tangent for the speech, but I did more than a bit of venting in the video, much of it humorous.  See that for the full version.

Web Applications Are The Bomb

By 2009, I had advanced sufficiently in my Rails and web programming skills that I could re-release BCC as a web application.  That decision roughly doubled sales, largely due to increased conversion rates both to the trial and from trial to purchase.  I strongly, strongly, strongly suggest developers build web applications in preference to desktop apps, for reasons I have gone into before.  Or, alternately, see this bingo card:

Web apps: do ‘em.

Quitting The Day Job

The combination of these and a hundred other smaller improvements (A/B tests, etc) eventually got my sales to the point in late 2009 where I could seriously consider quitting the day job.  I went home for Christmas, talked it over with my family, then came back and told my bosses that I was through.  They let me go with a mere four months notice.  (Theoretically, the law only requires two weeks in Japan.  In practice, well, see the video.)

Also at Christmas I had a conversation with Thomas Ptacek at Matasano (conveniently in Chicago, close to my family), who opened my eyes regarding consulting.  I owe Thomas a lot for that, because consulting turned quitting from a dicey proposition (a dip in sales could have imperiled my ability to fly home or expand the business, to say nothing of making rent) into a total no-brainer.  Last year I made a bit more from BCC than consulting.  This year I’ll make quite a bit more from consulting than BCC.  The goal is still building a software product business (my current focus on that score is Appointment Reminder), but as of late the caliber of clients, work, and paychecks for consulting has been so attractive that I have been unable to say no.

Tactical Advice

The last half of the presentation was tactical advice on running a small business in one’s spare time — over the first 4 years of doing BCC, I averaged about 5 hours a week on it.  (This last year, even less: it is in maintenance mode.  I send out customer support emails and that is about it.)

The five quick hits:

Charge more money.

Most engineers severely undercharge for their products.  This is particularly true for products which are aimed at businesses — almost all SaaS firms find that they make huge portions of their revenue from the topmost plan which is bought by people spending other people’s money, but instead of optimizing for this we optimize for charging “fair” prices as determined by other software developers who won’t pay for the service anyway.  This is borked.  Charge more.

Make it a web app.

Covered above.

Put more of your iceberg above the water line.

Businesses create value with almost everything they do.  The lion’s share of the value is, like an iceberg, below the waterline: it cannot be seen from anywhere outside the business.  Create more value than you capture, certainly, but get the credit for doing so, both from Google and from everybody else.  This means biasing your business to producing value in a public manner.  Did you write software not core to  your line of business?  Great, OSS it.  Get the credit.  Have you learned something novel about your customers or industry?  Write about it.  Get the credit.  Are your business’ processes worthy of emulation?  Spread what you know.  Get the credit.

37Signals is amazing at this.  You can do it, too.

Get good at SEO.

I talk about this extensively on my blog.  In a nutshell:

  1. You need more links.  Create ways to justify people who aren’t in a commercial relationship with you linking to you anyway.  My favorite way for doing this is getting the credit for things you do, as described above.
  2. Create quality content at scale which solves problems for people in your niche.  See earlier discussion on Scalable Content Creation.

Optimize Everything

I’ve blogged extensively on A/B testing and funnel optimization (see Greatest Hits).  The big take away is, as Steve Pavlina said, all factors in the success of a software business are multiplicative.  If you increase conversions to the trial by 10% and conversions to sale by 10%, your sales go up by 21%, because 1.1 * 1.1 = 1.21.  This is awesomely powerful, particularly for businesses which don’t require hockey-stick trajectories.  You can hill-climb your way to very, very nice places in life for a one-man shop or small company.  (I mean, what real company offers 70% raises per year just for doing an A/B test every week and collecting a +5% improvement on one out of every four?)

Outsource / Automate / Eliminate To Actually Do It In 5 Hours A Week

I have previously written about Outsource / Automate / Eliminate extensively on my blog, so see here and here.

Comments?

I’d love hearing what you thought of the presentation.  I sincerely enjoy talking to people about this and other topics, so if there is a topic you’d like to hear more (or less!) on in the future, tell me and I’ll try to work it in to future presentations.  I never deliver the same one twice.

The Hardest Adjustment To Self Employment

I apologize in advance for spelling mistakes, because I am writing this on my iPad on the bullet train to Tokyo. Wonderful device, not so great for writing lengthy blog posts like my usual.

I am on the way to Tokyo because a high school friend is there this week. As soon as I heard, I told him to pick a day and I would be there. What day? Literally any day. My schedule is infinitely flexible.

That is what scares me the most about this job. Like most people, I have lived an entire lifetime conforming to schedules. They exist like the Greek gods: you didn’t ask for them but they are there, there is no negotiating with them, and prolonged association means you are likely to get your dignity violated by a bovine.

But schedules are structure, and structure helps. Be at school at nine AM. Seminar starts at 10:30, do not be late. Work starts at nine, Patrick, waltzing in at ten annoys people even if you are contractually permitted to do it and even if you will still be here at 2 AM. (Regardless of start time. If you thought the gods were rational, you have been reading the wrong mythology.)

At the very least, schedules put you and everyone else on the same page as to what you should be doing. Gainfully employed young men should be working at 2 PM on a Wednesday. I was having a late lunch and reading a novel at the coffee shop. The waitress asked me, confused, whether I was a student or not. Students have social license to do bugger all for a few years prior to working for a living. I told her I run a software company, and one of the perks is that I get to have lunch whenever. She was impressed, but asked how my customers and employees stand that.

That’s the the thing about schedules: once you have one everyone else needs to, too, preferably as close to yours as possible. My customers do not share my schedule: most use my software when I am asleep, and mail me with their urgent issues at 3 AM in the morning Japan time. I spend lots of effort decoupling their happiness from my personal availability. This does wonderful things for site uptime but it also means, perhaps regrettably, that there is generally no compulsion to work today.

My freelancers largely don’t share my schedule either. I just got the front page for Appointment Reminder redone after several months with placeholder graphics. The extraordinarily talented designer I worked with (Melvin Ram at Volcanic Web Design, a web design company) “met” with me for a total of perhaps twenty minutes, and we worked (him on having graphical inspiration, me on wrangling it into a functioning product) in temporal isolation for the rest of the project. This is the arrangement I almost always use for freelancing. It is wonderfully productive except in that it lets me off the hook for causing forward progress.

That is the other part about scheduling: with the debatable exception of my consulting work, I am terrible about setting and keeping multi week schedules for milestones. This never came up when I was employed, since I had managers to crack the whip and avoided doing anything multi week for my business, but it is now biting me with a vengeance. I wanted to have AR in beta six weeks ago. Between consulting, vacation, and BCC, I haven’t made almost any forward progress on engineering.

I know that to be true for AR because code isn’t getting written, but I always think it to be true for BCC. It turns out that I am smoking something: I ran a shell script to compare my productivity (commits, A/B tests, etc) prior and post quitting. I thought it would show me spinning my wheels. Turns out I am getting more done than ever. This is normally the point where I would paste a graph but, sorry, iPad. Suffice it to say I have run more A/B tests this summer than in the last year. (Interesting finding of today: Google Checkout really does increase conversion rates over having only Paypal as an option. I strongly suspected that, but now I know.)

Sales are up, too. Why doesn’t it feel this way? I think after a couple of decades of living by the clock I have become habituated to measuring my productivity that way. Insane and irrational, I know.

I am looking for ways to hack this: the discipline and social validation of having a schedule, without actually having to work at nine. I have been considering getting an office just to have mental separation between work and non work. (They give them away in this town if you work in tech. I could pay the rent with the savings in my iced cocoa budget.) Plus, if I have an office, I have an offsetting factor the next time I am accused of being unemployed. Sounds funny until it happens from a police officer who does not quite understand immigration statuses. (You know that controversial immigration policy in Arizona? Don’t ask me my opinions about it around sharp implements. Suffice it to say I can vividly imagine what getting stopped under it will feel like.)

Another way is, and you might laugh, a little iPad app called EpicWin which gives me fake RPG loot for making progress. Will it work? No clue, but one week in, I seem to be getting more of my “boring” chores accomplished. (I had considered building this into my business for a while, but resisted because I thought it would cause neglect of my nonbusiness priorities. It turns out that, if anything, I have the opposite problem now that I have infinite scheduling flexibility.)

And I just earned 100xp for this blog post.

How To Successfully Compete With Open Source Software

(This post recently got linked on Japanese blogs.  英語より日本語の方が楽な方:これを和訳しようとしています。日本語版はこちらです。)

Every once in a while, somebody on the Business of Software forums asks whether there is any point to trying to compete with open source software (OSS — essentially, software anyone can use and modify without needing to pay money or receive permission).  This is very possible, as folks such as Joel Spolsky pointed out in the ensuing discussion.    I particularly liked one comment on Hacker News about how to compete as Enterprise software.  However, relatively few people in the discussion mentioned B2C (Business To Consumer — you know, the stuff that isn’t paid for by an expense account) software, which people often tell me is doomed, doomed, doomed.  Seeing as how I run a small B2C software business, and am experiencing a crushing shortage of doom, I thought I would explain why this is possible.

My bona fides: I run Bingo Card Creator, which makes educational bingo cards for teachers and parents.  It is about as B2C as you can get.  Sales last year were in the $20,000 range, sales this year are up substantially, and I expect profits will exceed my day job salary/benefits/etc by the end of April.  I started the business in July 2006, when there were already at least two OSS projects which did roughly the same thing: BingoCardMaker and bingo-cards.  (You can tell we really spend a lot of time thinking about naming in my niche, can’t you.)

Thus, my comments are about the other 99% of OSS projects, the low-profile projects which a) do useful things for people and b) you have never heard of.  All OSS is not Firefox in the same way that all proprietary software is not Microsoft Office.

I like OSS, too: I make extensive use of OSS in my business and at my day job.  I routinely contribute code to projects, OSS my own software when it makes competitive sense (you can download my shopping cart), and generally love the stuff.  I don’t see OSS and proprietary software as existential threats to each other.

Thus, when I give developers advice on how to compete with OSS, its not in the sense that I want to trample over the movement’s corpse, burn their homes, and hear the lamentations of their women.  I just believe in getting people to the right tools for the right problems, and often, that tool is going to cost money.  (Nothing wrong with that!)

Places Where Software Developers Can Outdo OSS:

1)  Marketing

Software solves problems.  Customers have problems.  Customers do not know that their problems are sometimes solvable with software.

Less than 1% of customers perceive their problem as a software problem: Whether your software makes bingo cards or drafts table plans or helps people improve their poker game, all it is doing is helping someone get around a problem they had long before they sat down at the computer.  After getting frustrated with their existing attempted solution to the problem, they probably Googled something pretty generic like [how do I make bingo cards].  Empirically, only about 800 people out of the 147,000 who found me from Google in the last year were specifically looking for software.  Add in another 1,600 who were looking for a download, and that’s still 97% who had a bingo problem, not a software problem.

OSS concentrates on the software, not the problems the software can solve: Take a look at an OSS site, any OSS site.  You’ll see a whole lot of talking about the software, the implementation of the software, the source code for the software, how you can contribute to the software, etc.  You’ll almost never see anything about the problem domain — the assumption is that, if you’ve stumbled upon the site, you already know you have a software problem.  

If your marketing is premised around your user knowing they have a software problem, you won’t SEO to capture people looking for solutions for the issues in their problem domains.  Your evangelists will talk with other people who are enthusiastic about software, not with people who consider software about as intrinsically interesting as toasters.  (Many of my most enthusiastic customers despise every minute of using their computers.  They put up with it because it gets them back to their kids faster than any non-computer alternative.)

2) Design

OSS projects, particularly the 99% that are relevant to this discussion, routinely do not allocate resources to creating attractive designs.  For whatever reason, opened source graphical work is still rather rare, most developers (myself included) have the artistic skill of inept mole rats, and the obvious pay-somebody-who-does-it-better solution runs into the problem that the typical OSS project has no budget and no patience to deal with “unfree” licenses, which are the only kind commercially available stock icons have.

This results in a lot of OSS software looking something like:

That design is nice and clean.  However, it looks like the properties dialog box in Eclipse — lots of functionality optimized for packing as many things onto one screen as possible.  There is little thought given to incorporating color into the design, giving the program its own logo or visual identity, or arranging the 13 controls in a user-centric fashion.  Even with those criticisms, this is a good design for OSS software.  I have seen far, far worse.  But we could do so much better, and when we have an incentive to, we do.

The importance of design: I don’t personally use Macs but I think everyone in B2C software needs to take lessons from Apple and the Mac community.  They have proven, again and again, that people will pay a premium for products which are attractive.  Often in B2C the first glimpse of the software makes the sale and everything after that is just justifying to the customer that their gut decision was the right one.  (Same with publishing, incidentally: people really do judge books based on their cover.)

Example: I doubled sales of Bingo Card Creator waaaaay back in August 2006 by adding some more attractive stock icons to it than the fairly staid Java icons I had been using previously.  (That first link has the before/after shots if you want to see it.) 

The workflow is fundamentally different than BingoCardMaker (more about that later), but you can see that this design makes use of bright, pleasing colors.  (Its absolutely amazing how a few bucks worth of icons makes a bog-standard Swing app look so little like a Swing app, isn’t it?)  This is more inviting to the primarily non-technical users who make up the core of my market: it promises to be fun, not painful, to use.

3)  User Experience

“User experience” is easiest to define as “that touchy-feely stuff that Apple does really freaking well”.  The more formal description is that all stages of interaction with the software — from downloading it, to installing it, to using it the first time, to using it the 400th time, and all points in between — should induce joy and contentment, not frustration and rage.

Here’s a bit of homework: find yourself a non-technical person.  Tell them the name of a piece of software on, say, Sourceforge.  Then tell them to download and run it.  Stay in the room but don’t help with completion of the task.

This is so frustrating to most users that the test should probably not be allowed by the human subjects board at most universities.  Somebody might get killed.

Here’s a true story for you.  BingoCardMaker supports one feature which my program does not (picture bingo cards), and which I have no intentions of adding, despite the fact that it is the most requested feature by far.  Accordingly, I used to tell customers who needed that feature “I’m very sorry I can’t help you, but this software can — why don’t you try it?” and I would direct them straight to the download page.

One customer (who is by no means unintelligent) was furious because she spent fifteen minutes on the page unsuccessfully trying to download before deciding it was broken.  Here’s the section of the page: can you tell me what went wrong?

Those words architecture or operating system are pretty confusing, but the word “download” is not.  My customer knew she had to “download”.  So she clicked it, and “the screen blinked away”.  (Clicking download takes you to a list of packages published by the product — totally obvious to a non-technical user, right?)  Then she got back and clicked on options, figuring that it would offer “options for downloading”, but nothing she clicked there worked either.  Finally, frustration mounting rapidly, she clicked Bingo Card Maker because that was what she wanted… and the screen “blinked” again.  (It collapses the tree of options for that package, causing the BingoCardMaker-5.5.1.jar link to vanish.  That link is the one you have to click.  This is quite obvious if you are a Java developer — not quite so obvious if you hold a PhD in English Literature.)

Do not bury the goal: I should mention that if you’re coming from the project page at Sourceforge, the above is three clicks deep after clicking download.  By comparison, downloading Bingo Card Creator takes one click for most people — its the big, blue button that says Download Free Trial.  Folks whose browsers don’t support that are showed the following: 

That was once described as “big pancake buttons” by one of the international developers on the Business of Software forums, and the name sort of stuck.  Pancake buttons work.  They are far, far, far more effective at helping users complete their task (downloading the software) that unobtrusive text links or smaller download buttons — the pancake buttons outperformed by smaller buttons by a factor of 3, and those buttons were themselves much improved successors of my original buttons which had outperformed plain text links by a factor of two.

Wow, it sounds that I’m saying that most prospective users of OSS can’t even manage to download it.  Let me be clear: that is exactly what I am saying.  It isn’t their fault — when our users can’t use our software (and websites are just a special case of software), that means we have failed in our jobs, whether we’re proprietary or OSS developers.  

On to installation: User experience scarcely ends with the download.  Oh no, the opportunities to frustrate and enrage are just beginning!  For example, that JAR file they just downloaded got dumped in a downloads folder somewhere and… well… that is about it.  To execute it, you need to be able to find your downloads folder and double click on it.  The next time you want to execute it, you have to do that again.

By comparison, if you were downloading Bingo Card Creator, you’d get a prompt from your browser asking if you wanted to run it.  It would then take you through a Windows installer which, in a very simple fashion with sensible defaults, would put links on your desktop and start menu to the program, then start it up for you.  At no point do you have to learn any irrelevant trivia like “JAR files are special things created by Java which are sort of like programs, except when they aren’t, and sometimes double clicking on them runs them, except when it causes nasty errors.”

There is a JAR file sitting at the heart of Bingo Card Creator, too — and if my users need to know that then I have failed.  Incidentally, if you do desktop Java development for Windows, please use JET or Launch4j or something.  Java developers deploying to Mac should use the JAR bundler.  (You can even do this from a Windows machine with an OSS ant task.  It is a lifesaver for all of us committed Vista users who need to deploy to OS X.)

User Experience never ends: All interaction with your program, with your site, with your community has user experience implications.  There are many, many opportunities to flub it.  I can’t cover all of them in this article, but I hope to expand on ways to not flub them at a later date.

4) Speaking the users’ language

In keeping with the “Users do not have a software problem” and “Users do not care about your technology choices” points covered above, users fundamentally do not talk like developers.  See this description for one of my OSS competitors:

GPL bingo card printing program (numeric, letter bingo and picture bingo). Also prints a calling sequence (equivalent to the output from a barrel full of balls). XML output for later linking to multimedia engine.

Let’s try that again with the technobabble removed:

GPL bingo card printing program (numeric, letter bingo and picture bingo). Also prints a calling sequence (equivalent to the output from a barrel full of balls). XML output for later linking to multimedia engine.

Those two surviving sentence fragments are all the publicly available description of this program.  Yep, that’s it.  You might have heard that OSS is weak on documentation?  That is only a problem if there is enough of a reason to suspect that the program will work for you in the first place, and two sentences is probably not enough to do it.

I want to quote a real customer of mine, who captures the B2C mindset about installing software very eloquently: “Before I download yet another program to my poor old computer, could you let me know if I can…”  Painful experience has taught this woman that downloading software to her computer is a risky activity.  Your website, in addition to making this process totally painless, needs to establish to her up-front the benefits of using your software and the safety of doing so.  (Communicating safety could be an entire article in itself.)

Incidentally, the Internet sucks the literacy out of people, so be prepared to explain the same thing several times to get the message across.  The most common question I have is “Is every bingo card unique?”  Yep, they’re randomized — that is the only reason you’d use the program and that feature has been the core of it since v1.0.  That fact is mentioned twice in bold on my front page, printed on the main UI of the program itself, etc.  And people still manage to ignore all that, find my email address, and ask me.  

Can you imagine how confused users would be if key features were documented only in blog postings distilled from commit logs, and present nowhere on the product site itself?

(I’m looking at you, Rails.)

5) Support

If you’ve been around OSS for any length of time, you know that almost every community has members who are caring, helpful, and patient.  Unfortunately, they’re not the only people handling support.  I get a lot of questions which sound something like “I clicked the button and it didn’t work” or “plz help can’t print” or “I downloaded the program to my printer and now my screen is grey.  Did you give me a virus?”

(If you don’t understand the significance of the screen being grey, look at the photo here.)

You can probably imagine how well those would go over on the typical OSS mailing list.  To say nothing of basic computer operation questions like “I bought a new computer last week and need to put your software on it.  What do I need to do?  Its not the old computer, which has your software on it, its a new computer.”

Most customers with B2C software — in my experience, about 95% as of late — don’t actually need to ask a question of you, ever.  You can handle all of their needs with well-thought-out automatic processes, FAQs, help files, rigorous improvement of any part of the software that routinely causes confusion, and the like.  However, users like know that there is someone who will be happy to help them out if they need it.  That is the main purpose of offering customer support — decreasing the perceived risk of using your software by demonstrating that there is a safety net.  (This is one reason you should write your support page with an eye to it being seen by someone who isn’t even using your software.)

6)  Technical superiority

You’ll notice I’ve been concentrating mostly on the 90% of the software busines that happens outside of the IDE.  However, there is no reason to assume that OSS is superior on a technical front, either.  I know, a million eyes makes all bugs shallow, yadda yadda yadda.  Back in my reality:

  • the median number of developers per OSS project hosted on Sourceforge is 1. 
  • Perhaps one project in five will ever leave beta.
  • All software has bugs, OSS is no exception.
  • The average software, commercial or OSS, is a usability nightmare.
  • Many programs have not been updated in years and lack the benefit of significant improvements in the state of the art made recently, from modern interface design to first-class integration with the Internet.  
  • Some OSS tries to be everything for everybody and ignores niche markets with pressing specific issues.  
  • Other OSS is hyper-adapted to the problems of a handful of developers scratching their own itches and is unusable by anyone with other requirements.

In other words, you can compete with OSS on a technical level the same way you compete with proprietary software on a technical level: execute better.  There’s really no magic to that.

Conclusion

All of these are opportunities for commercial developers to compete with OSS.  

The world is changing all the time, but plain-ol’ commercial desktop software still has a place in it.  Don’t get worried — concentrate on doing what you do well, from development to marketing to support, and the market will take care of the rest.

If you found this article interesting, try looking around the blog or signing up for the RSS feed.  There’s a lot more where this came from.

Book Recommendation For Budding Bloggers

Almost a year and a half ago, Stephane Grenier approached me about contributing a chapter to a book he was editing, at the time entitled Interview The Pros.  The general gist was collecting the thoughts of several dozen successful bloggers in interview format.  I was honored to be included (it still amazes me that I could credibly be included in a list of names including Seth Godin and Jeff Atwood), dashed out a chapter, and forgot about the project for 18 months.

Then on Tuesday the mailman stopped by my little apartment in central Japan and dropped off a package.  Five promotional copies for me — whee!  It turns out the book has been retitled Blog Blazers, an act I think Stephane owes somebody a beer for.  (The importance of titles is a major recurring theme in the book.)

I promptly updated ye olde resume to include “published author”, gave a copy to a friend of mine who was starting a business, and set about to reading it.

Structure 

The basic style of each of the 40 chapters is a question/answer session with the interviewee.  The questions are identical.  Representative sample:

  • What makes a blog successful?
  • How long does it take to be a successful blogger?
  • What is your biggest tip on writing a successful blog post?
  • What are your main methods of marketing your blog?
  • How do you monetize your blog?

The sheer diversity of answers to these is amazing — the book includes everyone from folks whose blogging generates a full-time income from AdSense, software consultants who are looking for professional contacts, an online weightloss diary, some guy with an interesting fascination with shoes (who wrote the funniest chapter, by far), and one computer programmer who should probably listen to his own advice more:

Speaking of timescales in blogging — recognize that you will be blogging until you stop blogging.  That sounds simple, but many peopole start out with a burst of post-every-day fever, which they cannot sustain over the long haul.  Pick a pace which is predictable and sustainable.

In my defense, it sounded a lot more credible when I wrote it.

My chapter focuses mainly on blogging as a small business and practical tips you can use to achieve success that way.  (A few of the other chapters are a bit more inspirational in nature, although most of them have some actionable advice.)

In Which I Disagree With My Marketing Idol

Example from my chapter:

I personally can’t stand the “Top Ten Ways To Write A Blog Post” type articles, as aside from being boring and aesthetically unpleasant they turn your blog into a commodity provider of lists.  Instead, absorb the lessons that style of writing provides which continuing to have unique positioning for your blog.  The important lessons are “titles which promise immediate benefits are a good idea” and “judicious use of formatting such as bullet points, bold text, and pictures can turn a scanning surfer into an engaged, active reader.”

Seth Godin’s take on the issue:

Use lists.

Write short, pithy posts.

That is one of many, many disagreements the authors have with each other, and I find them fascinating.  (A few other points of contention: the importance of monetization, the ideal post length, and the importance of SEO.  You’ll find many well-argued solutions to all of these in several chapters… and the right answer in my chapter, naturally.)

Single Best Advice From Me: 

I recommend… that you get familiar with two groups of websites in your niche: the folks who have achieved something close to what you want to achieve, and the folks who are on the path to success but just a wee bit farther than you are.  The first give you examples to emulate and objectives to strive for, and the second should become your new best friends, because a) they’re not too busy yet that they have millions of admirers and b) their support can really kick start your blog and help you both get closer to your goals.

For the other 200-odd pages of advice, you’ll have to buy the book.  At $16.95 I’d honestly say it was a steal, even if I had no connection to it whatsoever, because the value a blog can drive for a small business is immense.  (See my chapter, and several others, for elaboration.)

You’ve got two options for getting it.  One is to buy it directly from the Blog Blazers‘ site (where there is an e-book option).  I’m going to encourage you to sidestep them and purchase from Amazon instead.  My big reasoning for that is that publishing is a winners-win game, and purchases through Amazon increase the book’s Amazon rank, which results in more prominent placement on the site and also results in indirect marketing opportunities (“buy Blog Blazers, currently #1234 on Amazon”).  (At time of posting they only have two copies left.  Small order to start out with = book languishes in obscurity.  Break the cycle — buy a book today ;) )

As usual, I don’t have any monetary interest in the book or in your purchase of the book.  (i.e. those are not affiliate links)  I contributed to the book because Steph asked me to, and it was a pleasure to contribute a small bit to something which will hopefully provide value to people.  If you’re one of those uISVs scratching your head thinking “So I’ve heard them say 432 times ‘Blogging helps for marketing’ but I don’t consider myself an expert at this yet”, read the book.  I guarantee you you’ll learn something.

P.S.  Seth Godin is one of the world’s best living theorists about marketing.  I am not Seth Godin.  You are not Seth Godin.  Please, for all that is holy, don’t write list posts.

P.P.S. uISVs will recognize more than a few names: Ian Landsman, Bob Walsh, and Andy Brice all contributed chapters.

P.P.P.S Remind me to get the contact details of whomever did the cover design if I ever publish anything.

 

Cover of Blog Blazers book, depicting man with BB on chest standing atop world.

Cover of Blog Blazers book, depicting man with BB on chest standing atop world.

Leveraging OSS As A Software Developer

Cards on the table: I sell proprietary software, do occasional OSS work on both a volunteer and paid basis. and have been known to post to Slashdot on occasion about my love of Windows Vista.  This either means I’m sort of an agnostic in the wars of religion over software business models, or that I really love making enemies.  But I’m more of a fan of making friends, so I’m perpetually trying to convince members of both warring camps that they can get a lot of what they want out of the others.

One perpetual worry on the Business of Software forums is that some OSS developer (invariably a grungy, marginally employed coder with Jolt stains on his T-shirt) is going to come along, clone your application, and eat your lunch.  As a result there is a certain amount of hostility among small software developers towards OSS, which is a shame.  I spent some time earlier trying to address myths about it, but I thought I’d go one better and focus on ways OSS can make you money.

Concentrate On What You Do Best.  Let Other People Do Everything Else

Currently I’m finally getting restarted on my latest project, which is a web service that helps small businesses do content syndication across the Internet.  There are a number of interesting technical challenges here, including both server-side (“How do I let a person who is potentially only paying me $9 a month generate tens of thousands of pageviews without the server bills putting me in the poorhouse?”) and client side (“How do I use Javascript to make the whole process pain-free for non-technical end users?”). 

As it turns out, I’m a fair hand at some portions of the puzzle, but portions of it are complex.  Very complex.  You have no idea how far down the rabbit hole goes in web development, Alice.  I honestly think that it is impossible, flat out impossible, for any one person to be expert at all the technologies which are implicated by a trivial web application running on a modern web stack.  This includes everything from HTTP to the DOM model to Javascript to the database to relative velocities of the little spinning bits of metal that make everything work. 

Thankfully, programmers get this lovely tool called abstraction, which means we can concentrate on one bit of the problem at a time and treat the rest of the world as a Solved Problem.  For example, when I’m working on Rails, I am not thinking about the L1 cache policy on the server.  In fact, although I really appreciate my $150,000 CS degree, it is entirely possible that I will grow old and die without ever once worrying about L1 cache.  Smarter people take care of that stuff for me.

OSS Is About Smarter People Taking Care Of That Stuff For You

One key feature of my content syndication widgets is that they be able to spread without requiring user action away from the host site, to avoid antagonizing hosting site owners.  This was going to require some serious work on my part to achieve — probably several days worth, as Javascript is not my bag.  As it turns out, Lightbox Gone Wild (a variant of the Lightbox project which I’ve previously used to business-enhancing effect) took this from several days of work to about five minutes of integration. 

Lightbox Gone Wild is made by Wufoo, a company which doesn’t specialize in wild-and-crazy Javascript, but rather in selling a service which makes data collection easy for people.  Note that key word selling – OSS developers are typically not poor aesthetics who need to beg for their next cup of coffee.  Since wild-and-crazy Javascript doesn’t make Wufoo money directly, they release it back into the ecosystem for someone to extend (much as how they themselves extended the previous Lightbox project), with the added benefit that they may get to incorporate the extensions later and in the meantime people who have no interest in HTML forms nonetheless say good things about them.  (If you need form input and HTML scares you, go to Wufoo.  There, did my good deed for the day.)

In turn, I’m going to tweak their script a few times to add usability enhancing features (like backporting my “escape button closes the layer” tweak to the original Lightbox, which is a big win for non-technical customers), which increases the aggregate value of free OSS available but still gets me incrementally closer to making money from my paying customers. 

In fact, taking stock over what I’ve accomplished so far, I realize I’m doing a whole lot of this borrowing from OSS.  From classic infrastructure components (database, web server, application stack) to user interface elements (editing controls, charts) to a zillion pieces of behind the scenes wizardry, I’m probably literally using several thousand man months worth of software, adding two man months worth of glue and secret sauce, and then if all goes according to plan making a bit of money off of it.

Code Base By Writer

That’s the OSS Business Model

I often hear folks wondering whether they’ll make more money if they stop charging for their main application and OSS it.  Survey says no in most cases.  Rather than being engaged 100% in the production of OSS, you can OSS contributions you make which are boring, routine, and only tangentially connected to the main business of solving specific problems for your customers.  This allows you to lower development costs very modestly, but the social benefits are very nice for a bootstrapped software company. 

Giving away free stuff directly to your customers is a time-worn capitalist tradition, but giving away free stuff to other people works pretty decently too.  We live in an era where, for better or worse, GoogleBot is a judge of character and strongly prefers people who share.  (OSS users/developers have, on average, extraordinarily high levels of technical expertise and are solidly members of the linkerati.  They make good folks to influence from an SEO perspective.  You also get direct benefits from having vocal, technically capable, engaged people interested in you personally — although those direct benefits may not extend into them actually buying your software, but then again they weren’t in your niche to begin with so no harm done.)

OSS as a Barrier To Entry

But wait, there’s more.  It seems funny to say, since OSS is making it vastly easier for me to build my website, but I think that it functions as a barrier to entry for competitors.  You can’t just whistle your fingers and snap together 15 diverse and unconnected OSS projects into a usable application — the design and integration of complex systems is still a skill, and it is one that is in many ways more difficult than straight-up application development in some domains.  This turns skill with particular OSS projects, or generalized methods and patterns of integration, into one more competitive wedge you’ve got in your arsenal.

Additionally, OSS raises something of a quality cliff in front of prospective competitors who are not using as much as you.  Consider the typical graph of development effort expended versus value to the customer.  Typically, this gently slopes upwards for the first portion of the graph (“20% of the effort secures 80% of the value”), and then it plateus for a very long time as the easy wins are exhausted and the long, arduous process of software development begins. 

The curve for a developer using lots of OSS doesn’t look different in asymptotic behavior, but it contains numerous discontinuities along the way.  Every time you spend a small quantum of effort to integrate a new feature (that you didn’t have to write), your user-perceived quality gaps up.  Someone running along on your old curve, trying to keep up, runs straight into the quality cliff-face. 

Example: assume you and hypothetical competitor Bob include analytics in your application.  Both of you decide, sensibly, that the screens require a visual component.  Bob starts coding his.  You quickly integrate Google Charts, which while not strictly speaking OSS is the same general principle.  Now Bob isn’t just running the race against you — he’s running against the team at Google doing the Charts development and you’re already done and busy working on your next feature.  It makes OSS a great force multiplier.

Sidenote

Speaking of Google Charts: wonderful output, neatly solves the problem of graphing without requiring massive server-side resources or Flash-capable browsers.  Terrible, terrible API from a programming standpoint — you write uber-ugly incomprehensible URLs and their servers return the appropriate charts.  Luckily, folks have already extended it by offering wrappers in many popular programming languages (I mentioned the Ruby one already), which is another example of collaboration making a good thing better. 

I’m planning on eventually releasing a bit of magic myself, which will let you treat the charts as if they were being produced locally.  (There are decent reasons for this, from branding issues to future-proofing your site in case Google decides to cancel the charts project and you don’t want holes developing in all your old content all of a sudden.)

Antair Moving On And Moving Up

I had been wondering what happened to the Antair guys.  It appears they’re striking out for the big leagues, moving in to brand new digs and everything.  Why don’t you go over to wave and congratulate them on their successes?

I remember back when Andrey was still comparing his sales to mine to see if he was on a good track.  Suffice it to say that he’s since made it necessary for me to play a wee bit of catchup.

Steph Grenier On Generating Traffic For Your Website

I think I mentioned that I don’t really like ebooks the last time I reviewed one.  Please incorporate that total hatred by reference here.  Nonetheless, I gave that ebook, which was written by a professional colleague, an unreservedly positive review, because I sincerely think it will help many of my readers sell software.

Now I’m in sort of a conundrum — I received a copy of another e-book to review.  I respect the author greatly.  The other author who I already gave a positive review to praised the e-book lavishly.  So what’s my problem?

Well, frankly, I can’t imagine the book being all that useful to you, with the exception of three pages that are absolutely dynamite.  (It very well might be useful to some folks who don’t read this blog.  Why write a review for them, though?)

The story in 60 seconds: Steph Grenier of LandLordMax  wrote an e-book on How To Generate Traffic To Your Website.  (I also contributed a chapter to a real on-dead-tree book that Steph is getting published later this year.  The project is unrelated.)  The e-book includes 136 pages, with quite a few full-page annoted screen captures of Google.  We’ll call it about 120 pages of content, in which he covers 11 chapters, from SEO to Blogging to AdWords.

If you do the math there, that is about 11 pages per subject.  Now, supposing you were trying to explain blogging in 11 pages or less to someone who had never heard of the concept before, what do you think you could write before running out of space?

Well, maybe a good introduction to blogging for someone who is never heard of it.

And that is, in a nutshell, what about 95% of the e-book is.  A good introduction to SEO, AdWords, or blogging, for someone who has never heard of the topic.  At all.  If you have done any significant reading on the topics, this e-book will not teach you much that you don’t know.

Example excerpt from the chapter on Blogging:

[One reason why to blog is that it] can personalize your business. Instead of being just another faceless website it can give your website a second personality. It can give it that personal touch that people like. A lot of sales are through emotions, and people like to connect with people they like and trust. If you’re honest and real on your blog, and not just writing what you think people want to hear, you’ll create a personal bond with your customers. This will create long term traffic.

That paragraph is true.  It is fairly well-written.  It just doesn’t teach you anything you don’t already know if you habitually read blogs.  If you have ever read a blog post about why to blog, which are legion, you know it already.  If you already have a blog, you know this in your bones.  This section is also representative of the depth this book goes into on almost all subjects.  If you’re a non-technical small business owner who reads email but isn’t quite hip on this whole Internet thing yet, you might well learn quite a bit from this chapter.  If you’re running an ISV, this is almost certainly going to be akin to having a computer programmer sit through a middle school Algebra I lecture (“OK, class, I’m going to introduce a deep concept — sometimes, instead of a number, you can do math using a letter!  We call this a variable.”)

Topic Selection

I’m somewhat interested in SEO and linkbait, as long time readers of this blog know.  I really can’t recommend the chapter on SEO that much — if you have read almost anything on the subject you already know everything written here, and the topic selection leaves much to be desired.  For example, it covers Keyword Density (a metric which is, frankly, useless because it leads to no actionable insights on how to write your pages) at multi-page length.  Meanwhile, it almost ignores methods of getting links.  (Which is a shame, because this would have been a great time to mention the next section.) 

Three Pages I Really Loved

Pages 52-54 are, far and away, the best part of the book.  It provides a case study (incredibly rare in this book – most of it is basic techniques unconnected with any real examples) of how Steph used a free calculator on his website to double his traffic.  If this had been written elsewhere in the book, the level of detail would have been something like:

Freebies do attract traffic. Unfortunately it’s not always good traffic, some people will only come for the freebies and leave, but many will also stay and re-visit your website in the future (and possibly tell others about it). If you’re a blogger, they may read your other blog posts, buy your services, etc. If you’re a company they may look through your website for other interesting pages, they may tell others about what they found, etc. Freebies have always been a great way to attract attention and traffic. The key is how well you can convert the traffic coming from the freebies.

(Actually, the chapter on Freebies does start out like that.  Nothing you didn’t know already.)  But when grounded in the case study, the chapter suddenly becomes much more useful.  It examines the calculator from multiple points of view — promoting the freebie (which I’d call linkbait, incidentally, and mention REPEATEDLY in the SEO chapter because I will *guarantee* you this did more good for Steph than all his metatags could ever hope for) with a press release, for example.  If the entire book was like these three pages I’d be telling everybody I knew to go out and buy it today, but sadly they are an anomaly.

A Trend I’m Not That Fond Of

One of the reasons I hate e-books is they have a distressing tendency to turn into MLM schemes, with folks writing e-books to promote e-books to…  you get the general idea.  So when I see affiliate links in an e-book, that generally sends my spidersense tingling.  It means that the reader is paying for the privilege of reading an advertisement.  Moreover, unlike say an advertisement in your favorite magazine, rather than being adjacent to the content and clearly marked as not influencing the editorial judgement, these these affiliate ads are built into the content.  Example:

Today what we’ll attempt to do is give you an overview of the most effective SEO techniques at your disposal. I can’t hope to cover everything SEO related, there’s too much material. Indeed, I’d recommend the SEO Bookby Aaron Wall as further reading. I bought his EBook about 2 years ago and I still continue to personally reference it as a great resource. And as new SEO techniques surface and others expire, Aaron continues to update his EBook.

I broke that link intentionally.  Now, SEOBook is a great resource, I’ll agree.  I joined Aaron Wall’s (the author’s) training program for $100 a month, and feel I have gotten enough out of it to justify my first month (ask me about the second in another month).  But if you had found the chapter on SEO a little lacking in the useful detail department, and clicked on that link to go from the beginners’ class to the intermediate one, you’d have caused Steph to pretty much double his money on selling the book to you. 

This troubles me — not because making money on the Internet is a bad thing or anything, but once you start down this road, it becomes difficult for the reader to differentiate between the advice that you’re giving because it is solid advice and the advice you are giving because it offers a solid commission.

Similarly, Bob’s review also uses affiliate links for both Steph’s book and the inline reference to SEOBook.  And we’re off to the Internet Marketing races.  Instead of focusing on selling products of value to customers, we start down the merry path of cannibalizing members of our community for revenue by selling them on the dream of being a successful uISV.  They, in turn, then get to make money by selling the same products to other folks dreaming of being successful uISVs.  Who get to sell the same products to others hoping to be uISVs.  Instead of being an involved community of software entrepeneurs, it would be a community of MLM hucksterism, which does not bring value to anyone and doesn’t generate any revenue from outside the pyramid.

This concern is why I don’t put affiliate links on my site.  Keep in mind that I have the utmost respect for both Steph and Bob, I just think this trend is not in the long-term best interests of this community.

Review In Ten Seconds

Steph Grangier: great guy, successful uISV.  This book: not so hot for most uISVs.  If you buy it: save time, read and implement pages 52 to 54.

Brilliant Bit of Javascript for Redirecting Downloaders

One of my uISV buddies, Ethan (king of language learning software), took me to task earlier today for spending so much time optimizing my download page when I could just eliminate it entirely and link the download direct to the download button in most cases.  I had always had these issues with that solution:

  • My users don’t necessarily know what to do with a window that pops up
  • If I do an HTTP Refresh or Javascript redirect, many browsers pop a security warning
  • I have to discriminate between Mac and PC users somehow
  • It is impossible to track that conversion for AdWords purposes, currently

Examining Ethan’s code made it really easy to avoid the first two issues:

function SetUpRedirect()
{
var destination = “http://www.bingocardcreator.com/free-trial.htm“;
setTimeout(“window.location=’”+destination+”‘”,3000);
return true;
}

If you stick that in the OnClick attribute of a link pointing at your favorite executable, three seconds after clicking the link and having the download initiate, the user’s browser goes to the download page in the background.  This causes no security warning, scores them as a download conversion with the appropriate code on the page, and presents graceful fallback behavior if they don’t know what to do with the window that just popped up, since you can give them instructions.

Ahh, but what to do about the difference between Windows and Mac computers, which need different installers?  First, we make a controller method to handle it in Rails:

def free_trial_download
    if request.user_agent.downcase =~ /mac/
      send_file “public/files/BingoCardCreator.zip”, :type => “application/zip”
    else
      send_file “public/files/BingoCardCreatorInstaller.exe”, :type => “application/exe”
    end
  end

 That essentially says “If I’m positive you’re using a Mac, initiate a download of the zip file.  Otherwise, initiate a download of the exe file.”  (Obviously since 92% of my downloads are PC users I want to err on the side of caution.) 

Then, with a simple route added to routes.rb:

map.downloadFreeTrial ‘free-trial/download’, :controller => ‘static’, :action => ‘free_trial_download’

we get a simple URL which is platform agnostic and which decides, on the server side, which version of the file to give them.  You can then decorate your links to the platform-agnostic URL with the code to redirect the page to the download page in the background, with Analytics click tracking, and what have you.  Easy peasy!  One less step in the conversion funnel, and instantaneous recovery of a large portion of the 20% of folks who bounce out of the funnel at the download page.

WARNING: send_file will cause your Rails process to block while that IO transfer takes place under certain older versions of Rails (not in 2.0 in my testing).  This will cause requests coming to the same Mongrel after the download to wait until the download completes to start, which if you have a 56k modem user could potentially cause your basic site access to be delayed for minutesNot good news!

My site has two Mongrels running, very few dynamic requests, and very small executables.  If your site doesn’t have this profile, instead of using send_file, 302 redirect the browser to the appropriate file and let your web server handle the request before Rails does.

WARNING NUMBER TWO: You don’t want bots hitting that action, so its time for a good-old robots.txt exclusion of it.  Note that deploying this sitewide will cause your free trial page to lose quite a bit of the juice you’re sending to it.  However, given that that page is typically linked far and wide on the Internet and doesn’t include much interesting content on it (which would distract from the conversion to the trial!), you can probably live with that tradeoff.

Quick request: if you run an obscure browser or a Mac, kindly use my OS-agnostic link and tell me if it works for you.  (You should get a prompt to download BingoCardCreator.zip )