Part Two of the ongoing saga of Mercury MailRoom
I’d decided to write the software and actually the bulk of the work went quite quickly, once I’d worked out how to use the ADO (Access Data Objects) components that would let me communicate with the simple database I’d designed. My first mistake, though a minor one, was being a good little client-server guy and putting business logic into the database end, by writing stored procedures. All very clever, but later when I wanted to change the SQL in one of those, it was non-trivial. I suspect it would’ve been possible, but it’s much easier to just change a SQL string in your front end. Remember, database programmers, it’s a total pain in the ass to alter existing databases with data in them ! If you want to avoid writing export/import routines with each new version, plan ahead by doing all those things you’re not supposed to do: keep the business logic entirely in the client and maybe even add extra unused columns to some of the tables. The second is not all that hard to overcome – it’s much easier to add new columns to an existing table because there’s no existing data that needs to be preserved: you simply check for the columns existence and ALTER TABLE if its not there. Mercury MailRoom does this.
The next thing I did which added several weeks of frustration to the project was to not consider buying components to help with tricky functionality. Mercury MailRoom needs to programatically “paste” one or more files into the clipboard. I googled for hints on how this could be done and tried all the “this is how to do it” code snippets, none of which worked. After lots of reading and rebooting locked up PCs I popped $100 into the wallet of a nice fellow who’d written a Delphi component that did this for you, and within 30 minutes the job was done. Don’t be afraid to spend a little money to save time.
One of the next things I did was buy an eBook filled with sage advice from other shareware authors (I can’t find the link right now). It talked about software design, website layout and how to work with other shareware companies to promote each other’s work. I haven’t done this yet because I’m not sure who to link up with; I suppose it should be someone who writes email-related software.
Another decision I made was to not worry too much about protecting my software from hackers; and in fact my program was cracked after just three days in the wild ! I figured if someone wants to steal my program, hey at least they’re using it ! And maybe later they’ll recommend it to someone and word will spread. As I’m just getting started, hackery is promotion ! I was more concerned with making my keys easy to handle for my real paying customers (erm…still none !) In fact, I rewrote the security system so that keys were no more than 10 characters long, and contained only letters and numbers; no punctuation or anything hard to type. You want the path from “I might buy this…” to “money sent and it’s registered” to be totally simple and foolproof. If your keys are long and hard to enter, it’s a point of friction in this process. Also, don’t bother with checking if the user is trying to beat your time limiter by moving the system clock back; you’ll only get tangled up and annoy your paying customers when daylight saving rolls around 🙂
And harking back to my second point, there are plenty of excellent components to handle “shareware locking” for you; I just wanted to do that bit myself.