Category Archives: General

Stuff that doesn’t fit into existing categories

Two Office snippets

I reckon it’s about time Word (and other Office products) figured out that those last few paragraph breaks at the ends of documents don’t need to be printed, especially if they cause an extra blank page to be wasted.

Yesterday I was trying to work out how to tell if an Excel cell has a value or a formula in it, so some conditional formatting could indicate if a value was calculated or entered by a human. Seems to be no built-in function to do it. But this seems to work, though I’m still trying to figure out how, precisely. The explanation at the bottom more-or-less explains it, but damn Excel 2003’s help, which has no index, doesn’t integrate its VBA help into VB6, seems to download everything (maybe it’s just the way I have it configured) and makes it near impossible to jump straight to the definition of GET and CELL.

Crendentials

Just proving my credentials to be writing here.

Tonight as I walk down to my car I will have a laptop, an Ipaq, a 512Meg USB key and an iPod in my hands.

Internet Saved The Radio Star

We have a nice television, people often comment on it when they come to our house. They say things like “oooh, you have a nice television” and we say things like “thank you, we like it too”.

But of late I’ve been wondering why we have our nice television.

We spend most of our evenings on the net. I choose to listen to 6 Music (otherwise known as BBC 6) in preference to watching television in the evening. We read blogs, email friends, surf, download podcasts,study and work. Is this the way of the future? Will the internet kill the video star or are we abnormal?

What do you think?

FileZilla oddity

FileZilla is my FTP client of choice. But it has one oddity: some files on the remote Unix system weren’t showing up — to be precise, .htaccess, which is pretty important in the web world, all things considered.

It occurred to me to check all the options to see if there was one that might be causing this. After all, a bug like that couldn’t continue to go unnoticed and unfixed, could it?

Sure enough… Edit -> Settings -> Interface settings -> Remote file list -> turn on “Always show hidden files”

Personally, I wouldn’t have made this the default, but then, there’d be a lot of things different if I ruled the world.

Firefox 1

It’s here.

Firefox 1.0 is now available for download.

Stop what you’re doing, go get it now and help reclaim the web.

UDPATE

And now I’ve installed it I’m over the moon! They’ve included the one feature I wanted more than any other – force other applications to open links in a new tab instead of opening a new window! No more spawning new windows – just the one browser and many tabs. Heaven!

More changes and bug fixes here : http://www.squarefree.com/burningedge/releases/1.0.html

It’s Time, If You’re Genuine

When you follow a foreign sport (go the mighty Canucks!) one of the trickier things to keep track of is time. GMT, +/-, daylight savings, all play havoc with the tiny section of my brain set aside to calculate in base 24.

Now, of all organisations, Microsoft have come to the rescue with a fantastic little tool bar icon, called rather aptly Microsoft Time Zone that allows you to specify up to five locations to keep track of. It’s small, elegant and does the job it’s supposed to with the minimum of fuss. Most un-Microsoft.

Of course, there is a catch.

It’s one of the carrots they are dangling in their new Genuine Microsoft Software program. Yes, you can only get this, and several other toys, if you agree to let Microsoft check if your install is genuine and licensed. For the moment it appears no action is taken if you are found to have an unauthorised copy but I’m sure the conspiracy theorists amongst us will be keen to speculate on where this may lead.

How to Not Sell Shareware

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.

That South African guy never got back to me about the 30 licenses. So here’s a song about him – lyricsMP3 (bottom of page)

Sales People

I don’t think I’ll be returning to Computers Now any time soon. It’s where I purchased my Ipod, the now wonderful machine I never want to live without (and please don’t tell me about ‘the battery problem’ – do the research first).

I wanted a couple of accessories – a skin and an Italk. I asked about the Italk when we first purchased the Ipod. “Oh no, you need this one.” said the sales guy, pointing to the Belkin version. Hmm, $10 more expensive. Yesterday I went to purchase a skin. “Oh no, you need this one.” said the sales guy pointing me to the $20 (or maybe it was $30) more expensive one.

Okay, I know they are sales people. They are there to get as much money from me as possible. I understand this. What they obviously don’t understand is that a knowledgeable consumer will not return if they know they are being taken for a ride. I had done my research. I knew the Belkin mic was omni-directional and totally unsuitable for what I wanted – but they didn’t even ask what I intended to use it for. The skin, too, was more suitable for me. I wanted to put it on and leave it on. I don’t care it’s a snug fit and the other is in a different colour – this was perfect for me.

Don’t assume you can sucker your customers. Give them service, give them what they want and need and they will come back. Look at them, and treat them, as a walking wallet and they will not return.

(And as for the sales guy at MegaMart who told me that the Ipod mini was the same as a 4G Ipod….the less said the better)

Becoming a Shareware King

I’ll start by thanking Daniel for inviting me to document my ongoing shame and humiliation as I have a go at the world of shareware authoring. Daniel and I have been, until now, good friends and my abject failures may stir some sympathy in his black, corporate suit-wearing heart, but I wouldn’t count on it.

Just kidding, but actually I’ve realized that’s it very difficult to be a successful shareware author. I last looked at the market as a whole about 7 years ago when I worked for Sausage Software on the HotDog web editor and our whole business was basically one big shareware operation. You used to send your program off to CNET and Tucows and a couple of others, and hey-presto you’d done your marketing. At least that’s the way I remember seeing it – developers are notoriously blinkered to the point of borderline autism and I may be inventing some of these memories subconciously. But still, I remember it being a fairly small field.

While at Sausage Software I was asked to write a program for our tech-support staff to use; something to help them answer email more quickly. They wanted a human being composing the reply, or at least selecting the “right” answer to a customer’s query, but mousing around to .txt files on a network folder was too slow. “Put the answers in a searchable database.” was the spec. I went a little further and made the program become activated by a single keystroke, and paste the content into your email window with just one more keystroke.

They loved it ! As our virtual dotcom funds evaporated our tech support crew fell to just three or four people, but thanks to this program they were able to handle the same amount of email as they always had. After I left Sausage I forgot about it and went on with life, moving to America and generally losing one short-lived job after another….don’t worry, there’s a happy ending.

Shannon Scarborough, one of the last few tech support Sausages, contacted me and asked if I still had that program because she really needed it again in her new job. I told her I didn’t, but I’d be happy to write it again and see if I could sell it to other companies too. I was looking for an excuse to learn how to properly use data-aware components in Delphi anyway, and I’d always wanted to write a program that might provide me with an income stream without having to work too hard at it.

A few months later I gave her a prototype, hooked with a nice gentleman to help me with the marketing and ideas on design and what features to include and set off down the Happy Shareware Highway. I’ll continue writing here about what kind of decisions went into those steps, but I’ll give you a snapshot of the state of play today: downloads: 110. sales: 0 (zero..well, one guy in South Africa said he wanted to buy 30 licenses, but hasn’t replied to my last two emails). Website: up and running, new set of plans for world domination…..ready.