Archive by Author

From Design to Market In Eight Days Or Less

I’ve been kicking around the idea of opening up a uISV for a while.  My immediate inspiration to do so was, ironically, a blog post from Brian Green (site currently offline) which challenged people to come up with a uISV complete business plan targetted at a video game.  I’ve long had the sort of “Wouldn’t it be nice to be a game designer” dreams that many programmers have, but have resolved myself to a lifetime of coding somewhat more boring apps (not true: I’ve worked some jobs where the apps were pretty cutting edge, and every project is a chance to improve my skills) and actually being able to see the wife and children I hope to eventually have.

But that doesn’t mean I can’t dream about being a game designer.  And what is blogging if not the ephemera of a dream captured briefly in a text editor?  So I wrote up a business plan in three hours.  It was a fun diversion in downtime at work.  And while I’ve got desire asymptotically approaching zero to ever activate THAT business plan, the experience of researching things for it (Google AdSense, paid search, payment processors, etc) let me think “Hey, I could really pull this off On A Shoestring”.  So I decided to.

Now, lets back up eight months.  I’m involved, as a function of my day job, with the ESL teaching community here in Japan.  (I’ve been a teacher myself before, including ESL.)  One day, a teacher mailed our prefecture-wide distribution list with “Hey, I could really use a program to do X.  I searched but couldn’t find one.  Does anyone know of one?”  (I’m afraid the actual subject of this website isn’t going to get mentioned until launch.  Suffice it to say that X is something which leads to a fun classroom activity, can be done once per class per 2-3 months, and requires 45 minutes of mind-numbing drudgery if you don’t use a computer to do it.)  I figured the teacher had to be mistaken, since X wouldn’t be hard to do with a program, so I checked around the Internet.  For about an hour.  And there are just no good options for doing X, anywhere.  Well, I could fix that.  Within 6 hours (slow day at work), I had a prototype of a program to do X.  It was, to put it mildly, terrible (printing feature outsourced to Internet Explorer since I didn’t know how to use the printing API, user experience comparable to trying to navigate VI localized in Swahili, bare minimum functionality).  But hey, it was answering a question I got in an email from something which is barely tangentially connected to my day job.  I mailed the teacher the program and, on a lark, responded to the mailing list that I had something which would do X and to get a hold of me if you needed it.  I had 3 messages by the time I left work.  I sent out effusive thank you letters and long instructions of all the workarounds someone would need to actually do X with my hunk-o-junk.

The next day I showed up to work, opened my inbox, and the folder which handles replies to that mailing list was stuffed.  I stopped counting after the first twelve (this is from a list which reaches ~60 teachers, incidentally).  “Please please please let me have it!” was the general tone.  So I put the executable up on my college’s alumni web space, wrote up a page of workarounds, and mass mailed the list again and told them where to get it.  Thank you notes trickled in for weeks.

So fast forward back to the present.  Having decided that I was going to make a uISV On a Shoestring, I needed a product.  I remembered X.  I was pretty confident I could re-do X The Right Way This Time, and a complete code rewrite would assuage my legal and moral concerns about profiting monetarily from something that was technically done on company time for a tangentially work-related purpose.  So I started recoding X last Saturday.  And here we are, Tuesday, and X is roughly 70% complete.  This time its built from the ground up with the user experience in mind, and I’m confident that even my mother and aunt (two wonderful teachers who make every tech support horror story ring true — my aunt actually once took scissors to a 5.25 inch disk so it would fit in her drive) can use it.

How can this be done this fast?  Well, its not because I’m a fast coder.  I’d anticipate that its less than 1k lines of code, all told.  One tip: 99% of the work in designing this sort of simple application is user interface.  I have decided to use a development environment/language which makes GUI building easy (although since I need fine-grained control I wasn’t able to use a WYSIWYG GUI builder… more’s the pity, but thats probably the reason why there isn’t freeware to do X cluttering up Google already).  All of my own code was built from scratch for this project, but I did use (with permission) a snippet of code I found on the Internet for launching a web browser targetted at my purchase page.  The main tip I can give is to target a niche market.  There aren’t 5 million people in the US who will ever do X in their lives, so its so below the radar screen of major software developers and even uISVs who haven’t been teachers themselves that nobody has ever decided to spend ~30 developer hours and do a proper job of X.

My testing framework… well, I was going to try unit testing but my “business logic” such as it is is really, really simple.  I started with a strong, handwritten on paper design document with mockups of all the UI screens and descriptions of the behavior I wanted.  Every time I added a screen, I checked to make sure that it worked like described.  My technology choices and strong use of OO principles make me confident that when I add, say, an About popup the Edit menu bar can’t possibly break.  This saves time on testing the UI and lets me focus on “business logic”, user experience, and creating a trial version which will encourage my users to pony up the money.

Incidentally: strong design documents, don’t leave home without them.   If I had to do it all over again I would have written out my class hierarchy in full before writing a drop of code (I, stupidly, wrote out the Model and Controller in detail without writing the View… now the View is 6 files of spaghetti.)

Random Acts of Kindess

When I started this project, my goals were simple: a fun experience, something to write on my resume in the future (sole proprietor of an independent software vendor, 2006-), and perhaps a little spending cash.  I also had a budget: I am trying to bring the whole thing to market on the cost of one video game purchase or less, which is about $60 to my mind.  I had allocated $20 for my web hosting (ended up spending $10.02), $20 for images, and $20 for advertising, and was going to do everything else legally and in-house.

Images: Nothing says “professional” like a smartly designed image.  I wanted to get a custom designed application icon, a banner for my website, one “looks like packaged software” box to put in various webstores, and a splash screen for my program (I’m using a technology that takes a little while to load and, well, I don’t want to test my users’ patience).  So how was I going to get this done and under budget?  Option #1 was to do it myself.  I quickly discarded this because I haven’t the foggiest how to even start making an image more complex than drawing shapes with Word, and my time is better spent elsewhere.  And you’d be hard pressed to hire a local graphics design artist for $20 (I live in Japan, where prevailing wages are not that different from the US I’m guessing).  So I decided to complete by transition to Capitalist Robber Baron and outsource.  Surely somewhere, in this wide world of ours, there is a factory where graphics designers sit chained to desk churning out 24×24 icons by the millions for uISVs. Not knowing much about outsourcing, I was going to put a bid in at www.rentacoder.com and see what happened (from experience trying to do some freelancing there, any and every project attracts talent from India and Eastern Europe, and some of the talent is very talented).

I was saved from the hassles of having to deal with outsourcing by a gift from the graphics gods.  One of my coworkers at my day job is the 43rd reincarnation of the Hindu god of graphics design, I swear.  He listened to me rant and rave about how excited I was about my new business at work on Monday.  I was discussing my plans for the rest of the week (finish program, test test test, get payment processing, deal with Rentacoder) when he asked me why I was using Rentacoder.  I told him I needed four graphics files.  Ten minutes later he sent me the four most beautiful images I’ve ever seen.  They seriously bring tears to my eyes — until those images got delivered, this was just another couple thousand lines of code like I’ve created and thrown away for a hundred little projects over the years, but visually seeing the splash screen with the little Copyright (c) Me on it makes me feel like a proud expectant father.

Oh, speaking of which:  you might have figured out that my time scale is eight days (Saturday to Saturday) from the day I opened my IDE to launch.  More about that a little later.

Dev Journal: First Three Days in the Trenches

Well, I got down to business this past weekend. Saturday, Sunday, and Monday I worked ~6 hours a day on my project. About 3/4 of that was writing code, the rest was getting signed up with my website and credit card processor.

I eventually went with GoDaddy for web hosting. No sense spending serious money on the project before I have some indication that there are actual, living, not-related-to-me people who want to spend money on it. My total bill for a new domain name and two months of Basic Hosting service (which is, incidentally, easy enough to launch a uISV from) was $10.02. So I’ll be in the black after my first sale, if you assume my time is worth nothing since the 18 hours would otherwise have been spent on an unproductive addiction.

I went through eSellerate’s setup process but I’ve got an account representative (um, yay? You gentlemen cannot possibly expect to make enough out of me to dedicate one guy to my needs, so why bother) who has yet to get back to me. Thats a problem, as if this continues for a few more days it will delay launch. But, oh well, their interface has to be seen to be believed — going through their workflow (which is a bit complicated but nothing after I suffered through installing RedHatCMS at my day job) gives you the feeling “Wow, I’m really a professional now”. However, I haven’t yet discovered a quick and easy way to make a single-product checkout page with them. I don’t need a shopping cart — every page that pops up from the time someone clicks my “Buy now” link is an opportunity for second thoughts. I want to show the product, pricing, and start getting the credit card information immediately.

Which leads me to my new discovery which I found on the Business of Software forums: Payloadz. Payloadz is a payment processor which, apparently, operates exclusively through Paypal. Its essentially a script that sits somewhere on the Internet and intercepts an API call that Paypal optionally makes when you get a payment, reads out the details, and directs your customer to their full version/registration code/what have you. Its also “dirt cheap”. Their flat rate fee is 15%, which isn’t impressive compared to the options I reviewed below (remember, Paypal will also charge you 2.9% plus $.30 per transaction), but their tiered structure works out to far, far less if you’re in the middle or high end of your tier. Consider, for example, if I have monthly sales of $250. That puts me in the middle of Premium I, which charges $15 a month. $15/250+ Paypal’s rake = approximately 10% (what eSellerate will charge you at the introductory rate). Sell $400 and its closer to 8%. And it declines precipitously from there. The major benefit, to my mind, is that Paypal is a trusted name (ok, so maybe not THAT trusted) and people have (hopefully) purchased from one of their shopping carts before, reducing barriers to the sale.

So you want to be a microISV

Recently I’ve been investigating the possibility of starting a micro independent software vendor (mISV, apparently). This involves a heck of a lot of work which is not strictly related to getting your software finished and bug free. Assuming you can pass that hurdle, here’s some other stuff you might want to get a handle on:

Web site: You absolutely, positively need a web site to promote your software. It will probably also be your number one sales channel. Even if you have additional channels (for example, if you manage to hammer out a distribution detail with a portal) the fact that you’ll get so much more money from sales at your own website makes it well worth your trouble to spend some time and money setting up the site.

Web hosting is a commodity business nowadays. After a little poking around the Internet, it seems www.godaddy.com is about as good a choice as anyone. You get your domain name for about $2 with a hosting contract (2 month minimum) and their cheapest hosting plan gets you 250 GB of transfer for $4 a month. If you need CGI, for example for customer tracking or to implement your own web store, you’ll want to upgrade to their next higher hosting plan for a whopping $7 a month. Warning: When it comes to support and dispute resolution you probably get what you pay for here. If your venture takes off you might want to move to a web host where you’d actually rate enough importance to get a live representative if you call in… but lets not get ahead of ourselves, shall we?

Web site development: “Hey, I can do this by myself on notepad!” Well, I suppose you could… if this were 1996. In 2006, having a nice professional looking website is a) not very expensive and b) worth its weight in gold when you’re trying to convince someone to hand over their credit card number to you. I have no particular recommendation on a web designer, but get somebody who can build you a nice extensible site with CSS so you can add additional pages in the same style yourself. I suppose you could cut corners and use one of the default templates that comes with, say, OSS blogging software… but would YOU purchase something from a page like that? Budget $100 as the bare minimum and likely a bit of a multiple of that.

Marketing: So you’ve got a web site hosted somewhere on the Internet. Thats great. What are you missing? Customers. With no userbase to start out with you’re cut out of the most important marketing tool: word of mouth. Thus, to get the ball rolling, you’re going to be relying on the world’s largest marketing firm: www.google.com . First, you need to optimize your site so that its maximally search-engine friendly. There’s gigabytes of good advice and sheer voodoo written about how to do this on the Internet. I’ll give you the five second summary: make sure everything on your site is tagged in machine-readable format (alts on your images, etc), never miss a chance to provide natural language information (filenames and URLs should be human readable and descriptive of content, your TITLE tag should include your keywords in addition to your company name), and have the keywords that your users will be searching for in your site (if, for example, your users are non-technical then make sure the non-technical gloss of what your software does appears somewhere in, say, a FAQ page).

Then your other, likely more productive option, is Google AdWords. Here’s how it works: you come up with a text ad which points at your site, and you hand it to Google along with a list of keywords which you want that ad to appear with. If someone searches a combination of your keywords, Google will hold an automated auction between you and the other people aiming for that keyword, and show adds for the folks offering the most money. You pay per click (or per thousand impressions if you target a particular site — more on that later). For a keyword with vanishingly little competition, AdWords is *dirt cheap* — a penny per click. For keywords with lots of competition and/or high value keywords (“online casino”), they’re much more expensive (I hear some are in the $10+ dollar range, mostly for legal services). If you’ve choosen your software niche well, you’ll be going up against moderate competition with your main phrases and, this is key, *no competition* on phrases folks search but haven’t thought to market to yet. Let me give you an example. Say you make software which, to continue my example from below, teaches Japanese. Yay for you. “Japanese software” has lots of bidders. “Teach yourself Japanese” has exactly one ad displayed for it. “Japanese language game”, “Teach yourself kanji”, “Kanji game”, “Japanese edutainment”, “Japanese practice”, etc, have NO ads displayed for them. This means you can pick up these searches for a song (a penny per click). Then your ad takes them right to your sales presentation, which has in big bold type your two actions you want them to take: downloading the demo and purchasing the software.

Software deployment: I originally thought of spending a couple of hundred dollars on Installshield, which is an industry-standard installer program. Here’s the rub: why spend a couple hundred dollars when you can get something functionally identical and very professional looking for free. And legally, too! Take a gander at the Nullsoft Scriptable Install System, a GPLed piece of software (don’t worry, you can wrap commercial software with it without any license issues). Wouldn’t you want your installer to look something like one of these? Yeah, thought so.

Incidentally, I’m a Java developer. Java development can be risky for an mISV, because you can’t be sure that folks will have the JRE that you need installed, and folks might not understand the whole “click on this jar” concept. You can make this a much simpler concept for them by adding a native executable to wrap your JAR. Ideally, this executable would detect if they had no JRE or if their JRE were insufficient (if, for example, you are addicted to Java 1.5 and can’t write two lines of code without creating a HashTable<String>) and then take them straight to Sun’s site to fix the problem. Haha, such a program also exists, and its free! Try out Launch4j, and watch your conversion rate soar as you take the hassle out of the critical “launching the bloody program” step. There are some other nice features, such as being able to display a native splash screen while loading the JRE (nice for those of us mildly concerned that Java, while being a quite responsive language during runtime, can be a bit… slow… when loading), and builds nicely from an ant task.

Payment processing: OK, so you’ve got folks to your website, they’ve downloaded your demo, and they’re ready to hand you money! Thats great. How can they get you the money?

Well, option #1 is you get yourself a credit card merchant account. This can be a bit on the expensive side for startup costs, you’ll have to pay a monthly maintenance fee, and you’ll need some web facing and backend software to handle billing. All in all, not a whole lot of fun. On the plus side, this is absolutely the cheapest option in terms of the rake the payment processor will take (figure on ~$.50 + 2%).
Your other option is working with a payment processor. I’ve been able to locate three, which have very little functional differentiation from my perspective (since I’m just looking for the very simple “process my payments and mail out serial numbers, I’ll handle the rest myself” service rather than any of their overpriced shopping cart/DRM/etc offerings). Here’s the links and prices:

www.shareit.com : $2.95 + 5% *or* min(2.50, 14.9%). No setup fee.
www.esellerate.com : 10% "trial" offer, scales to $15k yearly sales.
Then 15% and declining based on sales
www.regsoft.com: min($3.00, 8.9%).  $10 setup fee.

You can do the math on which is cheapest at your price point and expected level of sales. I personally will be launching something within the next few weeks at $15, and www.esellerate.com wins at that level by a significant amount, but if you’re planning on doing significant levels of business (say, in the $30k per year range) on more expensive program (say, $40) their 15% fee is going to lose to either of the other options.

Note there is a bit of vendor lockin here: while you won’t strictly speaking be contractually obligated to only use their service transferring your serial numbers, customer data, and registration schemes to another system after having used one of them for a while will burn up a LOT of your time. The creator of Lux, a rather successful Risk clone, has some great words about this here.