And we're feature complete

Finishing up the tweaking on printing took 6.5 hours, about what I expected.  Much of it was banging my head into the wall — I’ve got a particular sample data set which I want to provide to my customers as a “freebie” with the full version of the software.  Its the sort of thing I hope will motivate someone to buy my product, as none of my competitors have it and its off-the-shelf ready to make you a lesson plan and save you hours of work.  The problem is this particular data set excercizes an edge case: but what if someone includes a really, really long word in a place we’ve sized for words of more moderate length(say, 10 characters).

What if indeed.  The answer depends on what flavor of JComponent you are using to display the word, what container that component is in, what the layout manager of that container is, what your locale is, and a whole host of factors.  In the typical case most JComponents, including JLabel and JText area (the obvious choices for formatable text), will truncate the word.  And they will unfortunately do it without firing any special notifications or causing getText() to return a different value than the one you originally provided it.  The first chance you’ll have to notice “Hey, that looks funny” is when the word appears on the screen like “Java decided to tr…” (“Java decided to truncate me!), or worse, when that appears in your print output.  Luckily, I have a virtual printer which outputs to PDF, so I saved myself wasting ~50 reams of paper fixing this sucker.

In case anyone is searching the Internet looking how to fix JLabels with chopped off text, here’s the best I came up with:  first, identify the Container one level above your component that is experiencing truncation.  Then, change that component’s LayoutManager to be a custom subclass of whatever you were doing before.  Override the layoutContainer method to both call super and do the following:

Check to see if your component which can have problems is having problems by calling its getFontMetric() method, and use FontMetric.getWidth(insert correct text here) to figure out how many pixels that takes to display.  If thats less than the width of your component (include a fudge factor or you’ll see some pixels get chopped off on occasion), you need to change the font on that component to one of a smaller size.  How you do that is up to you, but I used a while loop with a safety cutout at 6pt because otherwise you will get an infinite loop on the next step for extremely large strings.  After you’ve set the font to the new smaller font you need to call your super.layoutContainer method again, or else you may not see any changes.  I chose 6 pts arbitrarily because I thought anything smaller than that would be totally useless and I needed *some* safety value.

This was pure pain to have to discover but I think its worth the price of admission for this week by itself.  I got a tour of a section of Swing that I never had dealt with before (LayoutManagers under the hood), and got a coding gem out of the deal which I can reuse again later *and* which solves a vexing problem in my line of work (localizing Japanese to English and English to Japanese makes for some very fun times with anything that relies on any assumptions about physical width of strings, let me tell you!)

Anyhow, the upshot is, fixing two little edge cases in one little data set in a freebie I’m giving to customers took me four hours.  Was this productive use of my time, given that I could have achieved the same effect just by not including that data set and hoping customers didn’t notice on their own?  I think it was — while its entirely likely that many prospects will never see the edge cases during their time with the demo unless they use input I supply, this adds a bit of spit-and-polish my competitors in many cases lack *and* allows me to make use of more “freebies” than I would be able to otherwise.

Comments Off

Development plan for the rest of the week

1) Finish, tweak, and test test test the printing code. I think I’m going to move Print Preview and document templates into version 2.0 — they’re wonderful features for my customers but the program is usable and worthwhile without them, and the sooner I can put this out on the Internet the sooner I can start getting feedback. Expected time: ~6 hours
2) Finish adjusting the CSS file to suit final design of my website. Expected time: ~1 hour
3) Write ~5 pages for website, including product information, buy it now, sample lesson plans (SEO bait mostly), about us, etc. Expected time: ~2 hours
4) Finish data generation for my (very lightweight) document by wizard feature. The full-on templating system in 2.0 will likely replace this. Expected time: ~3 hours
5) Write advertising copy for eBay and Payloadz, continue eSellerate setup process. Expected time: ~2 hours
6) Design Google AdWords advertising campaign. Expected time: ~1 hour

Thats 15 hours of work, which would put me at halfway through my working time on Friday, leaving all of Saturday for dealing with launch issues. Yay for projects which stay on schedule.

Comments Off

The Joys of Open Source

In addition to the two bits of code that have saved me hours of searching in documention, I owe a big thank-you to Open Source Web Design.  They collect hundreds of freely available designs (CSS and sample HTML files) which you can use or modify to suit your needs.

I am a fairly competent HTML programmer and was going to bang out my web site by myself (contrary to my own advice below, which was hire an expert: I just don’t have it in my shoestring budget). However, I’m not a designer: I’m barely competent enough to pick a color coordinating outfit in the morning, much less design an aesthetically pleasing website. I found a nice, bright, inviting site design available through the Creative Commons license (the author gets a little credit at the bottom of my site) which was about 90% of what I wanted in a site design.

The other 10% I can accomplish by myself: resizing to make it work at 800×600 (consumer/educational market = don’t target a large screen), add some image support to the sidebar for buy-it links, and reformat around the banner I had designed the other day.

Comments Off

The Sorrows of Java Printing

I spent another six hours on the project yesterday. Four hours was spent writing printing code, which is suprisingly difficult in Java (as soon as you’re not printing plain text on the default printer God help you).

On the plus side, writing mountains of boring code is one barrier to entry. I think it accounts for the paucity of programs solving my need at the moment: most of them are web apps which delegate printing to the browser (which elegantly solves the printing problem at the cost of depriving you of fine-grained control over your program — I’m praying my output clocks the web apps on visual inspection). One of my shareware competitors (one of only a handful who have a desktop app) has apparently discovered the same thing: their program, on Download.com, lists as one of its limitations (paraphrased) “sometimes introduces random output into printed documents”. Thats hopefully something I can avoid.

Anyhow, my quest to get a document formatted exactly the way I wanted it involved tearing up my code about three different times, because I had tried a variety of approaches to printing it. The quick-and-dirty way to print formatted text in Java is to print as HTML. Unfortunately, I discovered belatedly that many printing services my customers will have installed do not support printing HTML directly (whoopsie, I’m spoiled from work).

So, having already gone to the trouble of formatting it as HTML, I decided to make an EditorPane and initialize it from that HTML, then print the EditorPane. Now, while I’ve been programming AWT/Swing for going on 6 years now I’ve never before had to play with EditorPanes that much, and there are some gotchas.

Gotcha #1: EditorPanes render HTML differently than either IE or Mozilla, and in particular they just *can’t* render some HTML elements I need to do (like, say, correctly specifying the width and height of table cells).

So I did it the way I had dismissed at the outset for taking too long — creating my own printing object offscreen and printing that — and, applying painful experience that I got along the way, stripped out 80% of my code and had it done in about 2 hours.

Now, there are some other issues with printing in Java: lets say you want to print a Swing Component. Good for you, but there is a dead zone in the Java API as far as printing services are concerned: Java will format the output and get it to the printer for you but you have to accomplish things like, e.g., printer discovery, etc more or less on your own.

I was saved by freely available code which walks you through the whole printing process. While I had to essentially rip its guts out because I need more finegrained control of printer settings, I would have been lost in confusing and incomplete Java documentation without that site. Hats off to you, professor. (Note: the code is public domain, not GPLed. As an off-again, on-again OSS developer myself I try to be religious about respecting license restrictions.)

Comments Off

The Pros and Cons of Java for uISV

My application is developed in Java, a decision I made with some trepidation.  Lets start with the reasons people generally give to be afraid:

  • Java requires a seperate runtime from the application itself.  Most of the Internet does not have a JRE installed, and roughly half of the installed JRE base is the ancient MS 1.1 which is a pain to code for.
  • Java is slow.
  • Java applications are ungainly, ugly monsters.  Especially the Swing apps.

Here are the counterbalancing points in Java’s favor:

  • Despite the flaws in “write once, debug everywhere”, Java is still one of the easiest ways to quickly port a desktop application.
  • Java can quickly deliver a professional looking GUI.
  • Java’s best IDEs are free, along with everything else you need to get your application running.

First, I am not sure whether “users don’t, in general, have the JRE installed” is accurate.  Mac OS X, a major market for me, ships with it installed.  Java has some nice viral characteristics (after you decide to install it on your computer once it persists for years), and with the increasing uptake of broadband I don’t think the 18MB JRE (or the 7 MB mini-install) are the gigantic stumbling block they were back in, say, 2001 when all the “Java will never work on the desktop” articles were published.  Getting accurate statistics on Internet users is like herding cats, but www.thecounter.com registered 89 million hits this month and some 95% of them had a version of Java installed (I’m guessing a large number are MS Java 1.1, which is less than helpful to me, but there you go).

Then there is the work around to not having a JRE installed: I am creating two seperate distributions of my program.  The Mac version is, at the moment, just an executable jar file.  The PC version is wrapped in Launch4j, an open source native Windows executable which, for the price 21kB, wraps your JAR in an .exe, allows you to display a BMP splash screen while the JRE is loading, and (perhaps most importantly) will handhold your customer through a JRE install if the minimum JRE requirements are not met.  Granted, the JRE install is not for the most casual users.  It weighs in at 18 MB, which is more than a coffee break.  However, with their web install version you can cut that down to 7MB and about ~4 mouse clicks.  Which is certainly more than zero, but doable even on dialup (~20 minutes on 56k).  It thankfully does not require a restart anymore.

With regards to speed: Java is just not slow at what I am doing if you are using a computer which is anything close to recent.  Starting up the JRE takes a few seconds which I can handily cover with a splash screen, and then I display another splash screen for 5 seconds offering them the opportunity to upgrade to the full version before dumping them into the main window.   On my PCs at work and home the entire process takes about 10 seconds, and all of it is hopefully at least minimally engaging to the user.

Anyhow, on development environments: Visual Studio .NET would also let me build a compelling graphical application in a reasonable amount of time, but while I’ve got a legal license at work I don’t at home.  I’m just not enough of an expert with the Windows APIs to do a GUI in a reasonable amount of time without the .NET safety-net under me, and I don’t know of any free alternatives which can touch the combination of Netbeans or Eclipse plus the Java libraries (ugly, ungainly beasts though they are, I’ve cut my teeth on most of the ones in the critical path already).

Comments Off

The Original Conception through Release In 7 Days Story

Brian Plexico has a description of how he released a moderately successful product in just seven days.  This story, among others, helped convince me to actually take the plunge into the business.  I think the key here is a) finding an unfilled niche and b) targetting it aggressively.  If you are the sole source in the world for software to fill your need, and there are people who are actually hurt by that need, then people will be happy to pay you money to ease it for them.  It doesn’t matter if the need sounds trivial to people who don’t feel it, or whether another developer could do the same thing in their lunch break.  Well, OK, if you actually get to the profitable stage you have to worry about someone doing it on their lunch break and competing with you.  But its a wide, wide world out there and there are an embarassment of niches which have never caught the eye of somebody with rudimentary programming expertise.  Including, apparently, skeet shooting software.

Comments Off

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.)

Comments Off

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.

Comments Off

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.

Comments Off

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.

Comments Off