Category Archives: article

How I increased sales 50% by adding extra price points

tinsHow much should you charge a customer for a product? From a pure economics point of view – as much as the customer is willing to pay. The airlines are masters of this. The people on a typical commercial flight pay a wide range of prices depending on factors such as: which class they are travelling, whether they are returning before the weekend and how far ahead they booked. The smug businessman in first class (who booked a week before and is returning the same day) might be paying more than 10 times as much for a seat as a someone in economy (who is going on holiday for 2 weeks and booked 6 months in advance). The businessman probably isn’t spending his own money, so he doesn’t care that much what the price is. Does the business traveller cost the airline 10 times as much? Of course not. The airline is simply maximizing its profits by charging more for the people who are prepared to pay more.

Supermarkets also use multiple price points by offering value, standard and gourmet versions of common products. The gourmet version has pictures of smiling farmers and tells you how it was lovingly hand-picked from a sun drenched hillside in an exotic country. The value version looks like UN emergency rations. The supermarket hopes the less price sensitive customers will buy the gourmet version, but they still want something they can sell to the more price sensitive customers. Is there much difference between the 3 products part from the packaging? Probably not.

When you start to look around you can see there are lots of different strategies businesses use to charge according to how much the customer is prepared to pay. Does a hardback book cost significantly more to produce than a softback book? No. But if you really want to read the book you will pay the extra for the hardback, rather than wait 6 months for the paperback. The gaming industry doesn’t even bother to change the product. Hardcore gaming fans will pay £40 for  a new blockbuster game. A year later you can get the same game (probably with bug fixes and add-ons) for £15. Two years after that it will be in the bargain bin for £5. Discount coupons are another common method you can use to charge price sensitive customers less.

I decided to try multiple price points for my table planner software. The graph below shows the 12 monthly cumulative sales[1] of my product for a year before and a year after moving from 1 to 3 price points. The red arrow points to the month I made the change. The revenue for the 12 months after the change were almost exactly 50% higher than the 12 months before.

multiple-price-points

Before September 2009 there was only 1 edition of PerfectTablePlan and it cost £19.95. Initially PerfectTablePlan was aimed at people planning their own wedding, bar mitzvah, Quinceañera etc. Typically they would only use the software once, so £19.95 was a sensible price. But as the product matured and improved it was increasingly being used by professional planners. It seemed crazy to be charging professional planners such a low price for software they might be using every week. So I decided to add additional price points at £49.95 and £199.95. The higher price points having additional features aimed at frequent and professional users.

I choose 3 price points because this seems a natural fit for the different types of people using my software (one-off users, frequent users on a budget and professional users spending someone else’s money). This turned out to be a big win for me. Not only did my average order value shoot up, suddenly I had more credibility with professional event planners, who might not have taken a £19.95 product seriously, no matter how good it was. Price is a signal of quality, after all.

Having 3 editions of the product with different feature sets also allows me to offer an increasingly sophisticated product to ‘power’ users without overwhelming more ‘casual’ users. This is a big bonus for all my customers and it reduces my support burden considerably.

There are various ways I could have set the price points. For example I could have set the price points based on the maximum number of guests at an event or on the duration of a licence. Charging according to the number of features seemed to fit best with my market and existing licensing.

I thought carefully about how to introduce the extra price points part way through the life of the product so as not to confuse or alienate existing users. I decided it would be too complicated to add the new price points at the same time as doing a major (paid) upgrade from v4 to v5. Instead I released the new editions at the same time as the v4.1 upgrade. I announced ahead of time that v4 would become v4 Home edition and that 2 new products were being released: v4 Advanced edition and v4 Professional edition. I was careful to ensure that I added plenty of new features and didn’t remove any existing features between v4.0 and v4.1 Home edition, so users who didn’t want to upgrade didn’t feel cheated. They were few complaints. I encouraged existing customers to pay the difference to upgrade edition and many did.

All 3 editions of the product are contained in a single executable and customers can switch between the editions dynamically at runtime. This was more work initially than using #defines to create 3 separate executables, but I think it was worth it as it allows the customer to easily trial or upgrade to a different edition without reinstalling or re-starting PerfectTablePlan.

A lot of software products have 2 or 3 editions, with the most expensive edition costing 1.5 or 2 times the cheapest edition. This seems far too narrow a range to me. I’m confident that a professional event planner can get at least 10 times the value from the product compared to someone planning their own (hopefully) once-in-a-lifetime wedding event. So I decided to go for a 10:1 difference between the cheapest and most expensive edition. If the airlines can do it, why can’t I? In retrospect I think this was a good call.

Having multiple price points is not without its downsides. It makes the sale more complex and it is an extra decisions for the customers to make. People are demotivated by having too many choices and I think having multiple price points has reduced my visit:sale conversion rate slightly. So don’t add too many price points. 3 is probably plenty in most cases (the supermarkets should know). But the slight drop in conversion rate has been made up many times over in a significant increase in average value per order. Also I should point out that the increase in sales wasn’t ‘free money’. I had to do a lot of work to add the extra features to sufficiently differentiate the 3 editions of the software, overhaul the licensing, tweak the website etc. But it was definitely worth the effort for the increase in sales. I think it also been beneficial to my customers as they now have a choice of which edition of the product best fits their budget and requirements.

[1] Each point is the total sales for that month and the previous 11 months.

VAT basics for software vendors

The dreaded VAT. Ugh. Value Added Tax (VAT) is the European equivalent of sales tax and it is a Royal Pain In The Arse. However, if you are running a business that makes sales in Europe you need to understand VAT. In particular it has important implications for your choice of payment processor, even if you are based outside the EU or below VAT registration thresholds. I have put together a few pointers here in the hope that it will help someone grappling with the complexities of VAT. But please note:

  • I am not an accountant. If you need proper advice, talk to a proper accountant.
  • The VAT rules are complex and may be interpreted differently by different people.
  • The rules may be different in different countries.
  • The rules change over time.

Only VAT registered businesses have to charge VAT. You have to register for VAT once your sales reach a certain threshold. At the time of writing,  UK-based businesses have to register for VAT if their EU sales exceed £77k in a 12 month period (technically it is UK sales, but the ‘place of supply’ for EU consumers is classified as the country of the seller). You can also choose to register for VAT before you reach the threshold. But it usually isn’t worth it, unless perhaps you think having a VAT number is essential for your credibility. Personally I waited until I couldn’t avoid it any longer.

Even if your business is not based in the EU, the EU still expect you to pay VAT on any sales inside the EU once you reach a threshold. This is controversial and it isn’t clear to me exactly what the EU can do to enforce this if you are based outside the EU. Talk to your accountant.

The VAT rate varies between countries. At the time of writing it is 20% in the UK and 19% in the Netherlands. It also varies over time, it used to be 17.5% in the UK.

The UK also has a simplified flat rate VAT scheme with a lower VAT rate. But you can’t claim back VAT on purchases. Worse still, it appears that you will effectively be paying VAT on sales outside the EU. So that doesn’t seem at all attractive.

The VAT rules are complex and depend on:

  • where you are based
  • where your customer is based
  • whether your customer is a business or a consumer
  • whether you are selling goods or services

Technically you do not have to charge VAT to an EU business, even if they aren’t registered for VAT. Apparently they are then responsible for “self-charging” the VAT. However the burden of proof is on you to show that the customer is a business. So most vendors require a VAT number as proof of business status.

There also seem to be disagreements over whether software is goods or services. What if you ship a CD?

Here is a simplified summary in pseudo-code of whether a seller needs to charge VAT on software as I understand it:

paysVAT()
{
    if ( seller registered for VAT)
        if ( customer in EU )
            if ( customer is a business )
                if ( customer in same country as you )
                    return TRUE;
                else
                    return FALSE;
            else
                return TRUE;
        else
            return FALSE;
    else
        return FALSE;
}

Except that people in Norway and Switzerland (which aren’t in the EU) pay VAT in some circumstances. Don’t ask me why. Also you don’t pay VAT on some items, e.g. postage. And outside the scope of VAT (O), not rated for VAT (N) and zero rated for VAT (Z) are all different VAT codes meaning no VAT is payable. As I said, it’s complicated. Not complicated and interesting like quantum mechanics or the love lives of celebrities. Just complicated.

The only upside of being registered for VAT is that you can claim back the VAT you pay on any purchases you have made (make sure you get a VAT receipt). Or, if you are buying from another EU country, you can tell them your VAT ID and they shouldn’t charge VAT (see above). So any equipment you buy in the EU is now 20% cheaper. This is small recompense for the giving 20% of your sales in the EU to the VAT man. Try not to think about that. Instead give yourself a pat on the back for having reached the VAT threshold. A lot of businesses never do.

Note that when you register for VAT you may be able to claim back the VAT of products purchased before you registered. When I registered I could claim back VAT paid on goods purchased within the last 3 years and services purchases within the last 6 months. So keep your VAT receipts.

Congratulations on making it this far. Here is the important bit. How you process payments has important implications for VAT. When someone pays you via a payment processor, such as PayPal, legally they are buying from you and the payment processor is just handling the payment on your behalf (like a bank cashing a cheque). So you are responsible for collecting what VAT is due and paying it to the appropriate government. This can be a major headache if you are selling hundreds or thousands of licences per month.

When you use a reseller, such as Avangate or Fastspring, legally you are selling your licence to the reseller and the reseller is then reselling it to the customer. The reseller is then responsible for deciding what VAT is due, collecting the VAT and doing the paperwork. They then pay you net of the VAT and their commission. Leaving you to sort out the VAT for their one payment to you per month.

Using a reseller is a big win if you are registered for VAT. I am registered for VAT and use Avangate as my payment processor. They do the heavy lifting in terms of calculating, collecting and paying the VAT on my sales. But if you aren’t registered for VAT be wary of using a VAT registered reseller – approximately 20% of your sales will be disappearing in VAT (which the VAT registered reseller has to charge) which you could be keeping if the customer bought from you direct. So if you aren’t registered for VAT, a reseller such as Avangate or Fastspring may not be the best solution for you. Check out e-junkie.

VAT admin is fairly straightforward. To keep the VAT man happy I have to file:

  • an EC sales list every month
  • a VAT return every quarter

My Quickbooks accounting package generates the numbers for these. It only takes a few minutes to file reports online once all the transactions and VAT codes are entered correctly into QuickBooks. The VAT man then debits (or credits) the appropriate amount from my business account each quarter. It is not too bad, as long as I don’t think about the wheelbarrow loads of cash Avangate keeps to pay the VAT man. Maybe they roll around naked in it on the last day of every quarter. I probably would.

When I first registered for VAT I tried adding the VAT onto my existing prices. But I found that sales dropped more than 20%. So I ended up keeping the gross price (including VAT) the same, whether the customer pays VAT or not (Avangate gives you this option). Whatever you do, make sure it is clear whether any prices you quote include VAT. EU consumer expect to be quoted prices inclusive of VAT and won’t appreciate it if you try to sneak on an extra 20% at the end of the purchase process. You may be legally required to quote the price including VAT in some countries.

A final note of warning. The VAT man has a lot of powers. I understand the UK VAT man can kick your door in and seize your equipment without needing even a warrant. He might not be impressed to find out that the computer you reclaimed the VAT for is an XBox. Do not mess with the VAT man.

If I have made any mistakes, missed anything out or if the rules are substantially different in your country, please add a comment.

** Please note that this article was written in 2012. It doesn’t cover changes since then, notably ‘VAT MOSS’. **

Thanks to Marcus Tettmar of Macro Scheduler automation software for checking this through and advising me on some of the finer points.

Buying a lean, mean, compiling machine

Nearly two years ago I wrote an article about speccing my ultimate development PC. Somehow there was always something more pressing to do. But I finally took delivery of my shiny new PC this week, partly spurred on by the fact that I wanted tried and trusted Windows 7 for the OS. Also my current development PC is getting increasingly crufty after 5 years of continual use.

I emailed my requirements to the top 3 custom PC companies in the UK as rated by PC Pro magazine : Chillblast, Cyberpower and CCL:

Hi,

I’m looking for a PC for developing software. Prime requirements in order of decreasing importance:

1. reliability
2. cpu + disk speed
3. quiet
4. value for money

Here is my wishlist of components:

-i5-3570K CPU
-an SSD (at least 128 GB) + 2 fast and reliable HDDs (7200 rpm, at least 1 TB each)
-ASUS, Gigabyte or EVGA motherboard supporting USB 3.0 and SATA/600.
-16 GB of fast RAM
-Windows 7 64 bit professional
-quiet is good, open to suggestions on sound insulation, fans and/or passive cooling
-AMD Radeon HD 6850 graphics card
-at least 2 USB ports on the front and 2 USB ports on the back (ideally more, ideally including USB 3.0)
-DVD drive
-Gigabit ethernet
-full size case
-kensington security slot, so I can lock it to the ground
-I don’t need a monitor, keyboard, mouse etc
-I don’t need WiFi
-It has to be *super reliable* – I want reliable SSD + HDDs, good quality motherboard, good quality branded power supply etc.
-target price, not more than 1,500 inc VAT, less is better obviously

Can you build something to meet this spec or get close? Please send me the spec and your price (including UK delivery).

Both Chillblast and Cyberpower sent me quotes for a system fairly close to what I wanted within 1 working day. I then spoke to their sales people and went online to tweak their suggested systems using their web based system ‘configurators’. In the end I chose Chillblast over Cyberpower due to:

  • higher rating from PC Pro readers
  • cheaper for a comparable system
  • better warranty
  • better online configurator (I found the number of choices on the Cyberpower online configurator a bit overwhelming)

However there really wasn’t a lot in it. CCL took nearly 2 whole working days to respond to my initial email,  so I discounted them as insufficiently responsive.

Following some suggestions made by the sales people I spoke to, this is the spec I ended up with:

  • Chillblast Fusion Longbow
  • Windows 7 Professional 64 bit
  • Onboard High Definition Audio
  • Corsair CX 750W 80 PLUS Bronze Certified PSU
  • Sony 24x DVD-RW Drive
  • Seagate Barrcuda 2TB 7200RPM Hard Disk
  • AMD Radeon HD 6850 1024MB Graphics Card
  • Intel 120GB 520 Series Solid State Drive
  • 16GB Corsair PC3-12800 1600MHz DDR3 Memory
  • Asus P8Z77-V LX Motherboard
  • Akasa Venom Voodoo Ultra Quiet CPU Cooler
  • Intel Core i5 3570K Processor 3.40 GHz (No Overclocking)
  • Fractal Design Define R3 Low Noise Case – Black Pearl – USB 3.0 Edition
  • Total price: £1089.80 + VAT (inc MSOffice Home Edition)

I take security fairly seriously. I have a motorbike style ground anchor in my office and I want my shiny new box physically locked to it. But I was told that almost no PC tower cases have a Kensington lock slot. This seems crazy to me. My current Dell tower has one and the cost of one tiny little extra slot in the chassis must be pennies. So I had to buy a lock adaptor kit. It’s not the most elegant solution, but it works fine.

I ordered the system on 02-Oct and it arrived on 22-Oct. Here are a couple of photos of the new system with the side panels off.

The PC took a few days longer than the originally advertised time to arrive. This wasn’t a big issue in my case. But I only found out it was going to be late when I emailed them after the expected completion date. It would have been a lot better if they had been more pro-active and emailed me first. Other than that I am fairly satisified with the service from Chillblast so far.

There are a few issues with the case, which aren’t really Chillblast’s fault. It looks rather lovely in its big, black, minimalist sort of way, a bit like an obelisk from ‘2001 a space Odyssey’. But the case scratches rather easily if you lay it down to change a component on my laminate floor. The side panels are also a bit fiddly to get on and off (my old Dell PC is better in this regard). Worst of all, it has rubber grommets (is that the right word?) that fall out into the case (and potentially into the fan or heat sink) if you even look at them funny. This means lying the case down to retrieve them, struggling with the side panels and more scratches. I have had to do this at least 4 times so far. It seems that they have made them of rubber that is far too soft for the job. Grrr.

How fast is the new PC? It certainly feels very snappy. I benchmarked it against my old Dell development PC (Dual Core 2.13 Ghz, 4GB RAM) building my event table planner software from scratch. This is 83k executable lines of C++ according to SourceMonitor:

Build time Old PC New PC
Debug build 6 minutes 56 seconds 1 minute 32 seconds
Release build 6 minutes 23 seconds 1 minute 28 seconds

So it is more than 4 times faster than the old PC at its key task – building software. Admittedly it isn’t a ‘fair’ comparison of the hardware. The older machine has a different version of Visual Studio, a different OS and probably some unnecessary services running in the background. But it is the best I can do in the circumstances and I doubt a ‘fair’ test would be much different. Despite the fact that I only went for a mid-range graphics card, the new PC can also handle playing Half-Life 2 on full 1920 x 1200 resolution without any noticeable issues. Hopefully the faster build times will give a significant boost to my productivity (as long as I don’t play too much Half-Life 2).

The new PC is also eerily quiet. I would guess more than 4 times quieter than my old PC. Even when it is doing a build, all you can hear is the faint whir of a fan.

Only time will tell how reliable it is.

How to sign your Mac OS X App for Gatekeeper

If a prospective customer downloads your software onto Mac OS X 10.8 and it hasn’t been signed, they will see a scary warning:

Not good. To run unsigned software they need to go into Mac OS X Preferences>Security & Privacy>General and change Allow applications downloaded from Mac App store and identified developers to Anywhere:

Or they need to right/Ctrl click and see another scary warning. Double plus not good. This is the new Mac Gatekeeper system in action. Apple being Apple, Gatekeeper defaults to only allowing users to run software they have downloaded off the Internet if it has been signed. This could have a big effect on your conversion rate on Mac. So if you are shipping software for the Mac, you really need to sign it.

Apple fanboys will tell this is a sensible way for Apple to control software quality. A valid certificate shows that your software hasn’t been tampered with and, if it turns out to be malware, Apple can revoke your certificate. The more cynical might see it as a way for Apple to exert even greater control over Mac developers than it already does, while simultaneously extorting $99 per year from each and every one of them. Make your own mind up on that one.

I have now managed to sign my table planner software, ready for its next release. I should have done it months ago. But I expected the process to be so tedious that it has taken me this long to get around to it. And it was every bit as mind-numbingly tedious as I expected trying to find a few useful nuggets amongst the acres of Apple documentation. I found some useful stuff in blogs, but it was quite fragmented. So I have thrown together these notes in the hope that it saves someone else a few hours going round in circles. Note that I am not currently submitting my software to the Mac App Store, so I don’t cover that here. Also my software is developed in C++/Qt using Qt Creator, rather than Objective-C/Cocoa using XCode, and my approach reflects that.

1. Sign up for Apple Developer Connection ($99 per year). Doesn’t matter if you already paid through the nose for a Windows authenticode certificate. Gatekeeper only accepts Apple certificates, so you have no choice. On the plus side, you do get other benefits, including downloading new OS upgrades for free.

2. You need Mac OS X 10.8 so you can test that your signing works. If you have an Apple Developer Connection subscription, you can download 10.8 for free (get a code from the ADC downloads area and using it in the Mac App Store). I found the upgrade from 10.6 to 10.8 was surprisingly painless (Microsoft eat your heart out).

3. Request your Apple certificates and install them into your Keychain. You can do this from Xcode (instructions here). You may need to upgrade Xcode to a recent version.

4. Use the codesign command line tool to sign:

  • Every framework in your .app bundle
  • Every plugin in your .app bundle
  • Your .app file

I believe you can do this as part of your Xcode build. But I prefer a shell script. For example:

echo --sign frameworks --
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Frameworks/QtNetwork.framework/Versions/4/QtNetwork
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Frameworks/QtSql.framework/Versions/4/QtSql
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Frameworks/QtXml.framework/Versions/4/QtXml
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Frameworks/Qt3Support.framework/Versions/4/Qt3Support

echo --sign plugins--
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Plugins/accessible/libqtaccessiblecompatwidgets.dylib
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Plugins/accessible/libqtaccessiblewidgets.dylib
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Plugins/bearer/libqcorewlanbearer.dylib
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Plugins/bearer/libqgenericbearer.dylib
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Plugins/codecs/libqcncodecs.dylib
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Plugins/codecs/libqjpcodecs.dylib
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Plugins/codecs/libqkrcodecs.dylib
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Plugins/codecs/libqtwcodecs.dylib
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Plugins/graphicssystems/libqtracegraphicssystem.dylib
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app/Contents/Plugins/imageformats/libqjpeg.dylib

echo --sign app--
codesign --force --verify --verbose --sign "Developer ID Application: <yourID>" <yourApp>.app

I do this in a build shell script that automates the whole process of creating a .dmg for download. I’m not sure if the order you sign the components in is important.

Note that:

  • <yourID> is the ID on your certificate (in my case “Oryx Digital Ltd”).
  • For frameworks you sign the folder, not the file.
  • Any changes to the .app bundle after signing may invalidate the signature (that is kind of the point).

5. Verify the  signing of the .app file. For example:

codesign -vvv -d <yourApp>.app

6. Package your .app into a .dmg, .zip, .pkg or whatever other format you use to install it (I believe .pkg files might require additional signing with a different certificate).

7. Make sure your Mac OS X 10.8 machine is set to the default Gatekeeper setting.

8. Download your software onto Mac OS X 10.8 and check if the scary warning has gone away.

9. Pray that Apple doesn’t decide to revoke your certificate at some point for an infraction, real or imagined.

Until you have released a signed version you can put up a warning with some simple Javascript, for example:

Further reading:

http://www.hardcoded.net/devlogs/20120407

http://www.mactech.com/articles/mactech/Vol.24/24.11/CodeSigning-GetUsedtoIt!/index.html

http://www.macworld.co.uk/macsoftware/news/?newsid=3338078

http://support.apple.com/kb/HT5290

http://www.macworld.com/article/1165408/mountain_lion_hands_on_with_gatekeeper.html

http://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/OSXWorkflowGuide/CodeSigning/CodeSigning.html

http://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/OSXWorkflowGuide/DistributingApplicationsOutside/DistributingApplicationsOutside.html

Qt related:

http://lynxline.com/submiting-to-mac-app-store/

http://www.digia.com/en/Blogs/Qt-blog/Pasi_Matilainen/Dates/2012/4/How-to-Publish-Qt-Applications-in-the-Mac-App-Store/

http://comments.gmane.org/gmane.comp.lib.qt.user/637

Java related:

http://blogs.oracle.com/talkingjavadeployment/entry/java_applications_and_gatekeeper

http://www.ej-technologies.com/products/install4j/whatsnew51.html

Thanks to Jonathan of DeepTrawl and Stephane of LandlordMax for some useful pointers.

************** Update **************

Things have changed again for Mac OS X 10.9/10.10. See this post for an update.

33 tips for giving great technical support at a small software company without being swamped

To have the best chance of success you need a great product, great marketing and great support. Many companies with great products and marketing fall down on the support.

Good support is essential to a good user experience. Any non-trivial piece of software is going to result in questions that need to be answered and issues that need to be resolved. But supporting customers is often seen as an onerous chore. An overhead. Something to be done by those not talented enough to be developers.  This is a very unfortunate attitude. But it also an opportunity, as software companies that provide great support can really stand out from their competitors. The lower they set the bar, the more opportunity you have to shine.

The fact that the support staff and the developers are often the same people in a small company is a real strength. Because the developer knows the product better than anyone else, they can give better answers. Also, the direct feedback developers get from customers can be very helpful in further improving the product. This means that a small company can often provide much better support than a large company that has multiple layers of support between the customer and the developer. The downside is that the more time developers spend on support, the less time they can spend doing development. Eventually you may reach a level of sales where you are spending nearly all your time doing support, with very little left for the development and marketing required to grow the business. The challenge is to provide great support without being swamped by support work.

I have been supporting my own wedding table plan software since it was first released in 2005. I have managed to grow my sales for 7 consecutive years without being overwhelmed by support. In fact technical support emails have stayed at roughly 40 per week for the last few years despite increasing sales. Before that I had never really done much technical support, so it has been a learning experience. Here are some of the things I have learnt along the way.

Manage customer expectations

Make the level of support clear to the customer:

  • Is it free or does it have to be paid for?
  • Is it email only or is telephone support also available?
  • What sort of response time can they expect?
  • What languages do you provide support in – just English?

I don’t provide technical support by telephone or instant messaging, because it is too disruptive to me as a one-man-band.

Manage your own expectations

Your software is a means to an end for the customer. Very few customers will read the documentation you spent all those hours writing if they can possibly avoid it. Some of them won’t even read to the end of a 1 sentence error message (really). Some of your customers will be ‘technically’ challenged (often without even realizing). Sometimes the problem exists between keyboard and chair. Get used to it, because human nature isn’t going to change any time soon.

Make it easy for the customer to contact you

Don’t hide your support email address. Allow the customer to email you from the software itself. This also gives you the opportunity to add some useful information to the email (the software version, their OS, whether they have a licence etc).

Be responsive

Generally speaking, the faster you respond, the better. When I send an email to support I expect to get a response by the same time on the next working day and hopefully within a few hours. I try to answer my support emails at least twice a day, 364 days a year. I do this because I want to give a great service, but it also means I don’t come in to a massive pile of support emails every Monday morning. It means taking a laptop with me whenever I am away for a night. But I find it isn’t a huge chore to spend an hour a day answering support emails on holiday. Especially when I remember that the business is paying for the holiday!

But not too responsive

The downside of being very responsive is that it makes some customers lazy. If they know they will get a response within a few hours they may email you about things they could easily look up themselves. The best response to this is ‘throttling’ (NB/ I don’t mean strangling) – when you notice that a customer is being lazy, take longer and longer to respond to each email. Eventually they will take the hint.

If you are trying to look like a bigger company than you are, then you probably don’t want to answer support emails outside of normal work hours.

Respond as clearly as possible

  • Quote the customers email in your reply where appropriate for context.
  • Number step-by-step instructions.
  • Use quotes to refer to elements in your software, e.g. select ‘Help’>’About’ from the main menu.
  • Write in short paragraphs, not big chunks of text.
  • Avoid technical jargon unless you are sure that your customer will understand. For example, say “window” rather than “modal dialog”.
  • Use proper grammar and check the spelling.
  • Avoid long email signatures.

Use images and videos

It is often helpful to include an annotated image with your response. For example you can do a screenshot, highlight important items in the screenshot and then email this as an attachment, along with some text. I find the screen capture tool SnagIt is excellent for doing this (available for both Windows and Mac). In some cases it may also be worth doing a short screencast, uploading it and then sending the customer a link (SnagIt can also do this).

Restate unclear questions

Support questions can be very vague. I have even had people email me just “It doesn’t work” – it wasn’t even clear whether they were referring to the website, the installer or the software. It often takes a few emails to understand what the problem is. If you aren’t 100% sure what they mean, make your best guess at what they are trying to say and restate it in your own words followed by “Did I understand correctly?”. Ask them if there are any error messages. Ask them to send you a screenshot (include a link to instructions on how to do this).

Finish an email exchange

If the customer started the exchange, you should generally finish it (i.e. send the last email). But it is probably not worth responding to an email that is just a 1-line thank you.

Pick up the phone when required

Even if you don’t officially offer telephone support, it sometimes can sometimes save a lot of time and aggravation on both sides if you pick up the phone and talk to the customer.

Put your documentation online

If you have your documentation online you can easily include links to relevant pages in your documentation in your email. This might also encourage the customer to look in the documentation first next time. But don’t just send a link. Answer their question in the email and then include the link as supplemental information.

Help the customers to help themselves

The beauty of a software product business is scalability. In theory, you only need to create your product once and then you can sell it to as many people as you can convince to buy it with negligible marginal cost. In theory. In reality, while a software product business is inherently much more scalable than a consulting business, the marginal cost per sale is not negligible. Far from it. Customers need support.  Here are some of the way you can reduce the support cost per customer:

  • improve the user interface and documentation, based on customer feedback
  • add an FAQ
  • allow customers to retrieve their licence key direct from your website (emailed to the registered email address, for obvious reasons)
  • encourage customers to look at documentation, FAQs, forums etc before emailing you (below is the window I show when customers select Help>Technical support in PerfectTablePlan).

Note that it has been shown experimentally that the more text you show someone, the lower the percentage of it they read. So it is generally more productive to concentrate on simplifying the user interface, rather than writing more documentation.

Of course, you can also reduce support requests by making it difficult for the customer to contact you (the Amazon model). But this leads to less feedback and a worse user experience, so I wouldn’t recommend it.

Allow customers to help each other

If you have a sizeable user base you can set-up a forum to encourage users to help each other. This can have various benefits:

  • customers may be able to get answers straight-away by searching existing content on the forum
  • customers may answer some questions for you
  • customers may respond faster than you can
  • it increases your SEO footprint

But it also has its drawbacks:

  • nothing looks sadder than a deserted forum
  • a forum has to be actively moderated or it will end up reflecting badly on your company
  • spam can be a problem

Automatically report crashes

It is often possible to detect that the software is going to crash or has crashed and send yourself some diagnostic information. This allows you to monitor how stable the software is and gives you some clues for debugging. For example, on Windows you can use the Win32 API method SetUnhandledExceptionFilter() to detect when things have gone horribly wrong. Don’t send it without their permission though. Give them the option to see the information you are going to send and then allow them to send it with a single button click.

Remember that every computer is different

There is a rumour that there are 2 identically configured PCs somewhere in Nebraska. But I don’t believe it. The customer may have configured their OS with all sorts of strange options you have never heard of. Anti-virus software, malware, DLL hell and hardware issues can cause problems. A cosmic ray might have even passed through their RAM! So I generally don’t spend too much time on a bug report unless either I can replicate it myself or 2 separate people have reported it.

Be proactive

I actively seek feedback from my customers. It increases the support burden somewhat, but I think this is more than compensated for by increased customer satisfaction and improved feedback.

Make use of feedback

I think all developers should spend at least some time supporting the products they developed. A few days every now and then in the support trenches answering customer emails and phone calls would give developers a better appreciation of how customers think and of the real costs of that cool feature shoe-horned into the release a week before the ship date.

Look at every support request as a possible way to improve your product. The first time you get a support request you answer it. The second time you get the same request you need to start thinking about how you can improve the product so that question doesn’t get asked a third time. By continually improving your product in this way you can greatly reduce the average amount of support time required per customer over time. Obviously you need to make it easy for customers to contact you to make this work.

Don’t take things personally

No matter how hard you try some people are not going to like your software. I once got so angry with Microsoft Project that I nearly threw a monitor out of a window. An angry customer might send you an angry email. Try not to take the criticism personally (link note: funny, but sweary). Maybe the customer is having a bad day. Perhaps they just don’t have any manners. As long as they remain a small minority, try not to lose any sleep over it. On the plus side – at least they cared! And it is often possible to turn a passionately angry customer into a passionate advocate for the product. Indifference is much harder to convert into a sale.

Don’t shoot the messenger

If someone reports what they think is a bug, you should thank them, rather than taking it as an insult to your programming skills. Experience shows me that most people who encounter a bug won’t bother to report it. If you have ever tried reporting a problem to a big company like Microsoft, you will understand why. An unreported bug can result in a lot of unhappy customers and lost sales. Customers who report bugs are a precious resource and should be treated accordingly.

Tell a customer when you have fixed their bug

Whenever a customer reports a bug  I record their email address along with the bug report. When it is fixed I then email them. This encourages them to report other bugs they find in future. Similarly for feature requests.

Give credit where credit is due

When I list bugs fixed in a release I also give the names of the customers who reported the bugs (first name + initial of last name). If a customer has been particularly helpful, e.g. putting significant effort into helping me find a bug, I may also list them in the software ‘credits’ window. It doesn’t cost me anything and it encourages these customers to feel more ownership of the product and report more bugs.

Google translate is your friend

I only officially provide support in English. But if someone emails me in another language I will use Google translate to read their email and reply in English, including a translation of my reply from Google translate. The quality of the translation may not be great, but it is probably good enough.

Use the right tone

Being professional doesn’t have to mean cold and impersonal. Try to sound like a real person, rather than a robot. Include your name in your signature. I address people by their first name (where known) and I’m not above including a smiley, where I think it is appropriate. Different markets and cultures may demand different levels of formality. Usually you can take your cue from how formal the customer is. Above all, try not to blame your customer or make them feel stupid.

Only support your own product

It isn’t your job to teach your customer how to use a computer. Try to steer clear of providing support that isn’t directly related to your own product. Otherwise you might find you end up as their general IT helpdesk.

Get the price right

If you are swamped in support emails, consider raising your price. Depending on the price elasticity of your product, you may be  able to generate the same or more revenue with less customers and therefore (hopefully) less support emails.

Firing a customer is the final resort

Sometimes a customer will buy your product when they really shouldn’t have, either because it is the wrong tool for the job or because they don’t have the skills required to use it. They will then bombard you with email after email. In such cases it may be best to refund them. Allow them to keep using the software, but tell them that you won’t be able to provide any further support. Something along the lines of “It appears that our software is not a good fit for your requirements. We have therefore refunded your purchase in full. Please feel free to keep using the software, but please note that we won’t be able to provide further technical support.”. This is the nuclear option. I have only had to resort to it a handful of times in 7 years.

Don’t tolerate abusive customers

The customer is not always right. Buying your product does not give them a right to be abusive, no matter how much they paid. Politely and professionally fire them if they can’t behave like a decent human being.

Never send an email in anger

People can sometimes be unreasonable, even downright rude, especially when they are safely at the other end of an Internet connection. But never, under any circumstances, respond with a rude or sarcastic email. Your email might be posted onto forums for all the world to see, forever more, devoid of its original context. Not good. Also, sending a rude response is only going to pour petrol on the fire. Always keep your emails polite and professional. If you find yourself getting angry, go and do something else for a while, until you can send a calm reply. If you can’t reply professionally, don’t reply at all.

Use the right tools

You don’t need a lot of tools to provide good support. I mainly use:

  • an email client (Thunderbird)
  • a bug/feature request tracking database (OnTime)
  • a screen capture tool (SnagIt)
  • a phrase expander for quickly typing common phrases (PhraseExpander)
  • a database of licence keys (home rolled)
  • VM software for emulating different operating systems (WMWare Workstation)

As I am the only one doing support I find that it is sufficient for me to use my Thunderbird email client to check previous correspondence (search by email address), track status (using different coloured tags for: awaiting their response, follow-up later etc) and enforce a simple workflow (move to different folders). If you have multiple people doing support you may also need helpdesk software (such as Helpspot) and/or a ticketing system.

You can use remote access software such as CoPilot to remotely log in to a customers computer. But I try to avoid this where possible, as it is time consuming and also the customer might blame me for any problem they have with their computer afterwards (e.g. a virus infection).

Think twice before outsourcing support

It is cheap to outsource your support to e-workers in developing countries. But they won’t know or care about your product as much as you do. And moving yourself further away from the customer reduces that all important feedback that you need to keep improving the product.

Time new releases carefully

You are going to get the most support emails after you put out a new release. So try to avoid putting out a new release just before you go on holiday.

Have the right attitude

While it can be frustrating to provide support to someone less technically minded than yourself, remember that not everyone is a computer geek and these people are paying your salary.

Remember the golden rule

The basic rule of technical support is to treat your customers how you would wish to be treated. If you bear that in mind, you shouldn’t go far wrong.

Further reading:

If You Want to Write Useful Software, You Have to Do Tech Support (Nick Bradbury)

Did I miss anything? What have been your experiences supporting your software? What surprised you?

Competition

Centurion tankA couple of years ago I got to drive a Centurian tank. 50 tons of clanking, smoke belching, killing machine. I can only imagine how terrifying it must be for an infantry man up against one of these heavily armed and armoured monsters. But, quite unexpectedly, I felt very vulnerable in the tank. My top lip was exactly level with a big spike of metal that formed part of the drivers hatch – if we had stopped suddenly I would probably have lost teeth. I could hardly move without bashing a knee or elbow on something hard. It was so noisy I could barely hear the shouting of the instructor, perched on the front of the tank only a few feet away. And, with my eyes only a few inches above the hatch, the visibility was poor. The tank was also very hard to drive, requiring an odd mix of finesse and brute strength. Just changing gear is quite an accomplishment for the inexperienced. I also got to sit inside some Russian tanks of more recent vintage and their ergonomics were even more nightmarish. Being inside one of these things on a battlefield, full of fuel and ammunition, a prime target for every enemy tank, aircraft and gun, must have been terrifying. It was a lesson that, what appears as invincible strength from the outside might feel very different from the inside.

  • Your competitor has more staff than you? That means that they have got to make more sales to turn a profit and they spend a lot more time in meetings.
  • Your competitor is better funded than you? That means they are spending more of their precious time and energy dealing with investors.
  • Your competitor’s product has more features than yours? Their product is probably more complex to use than yours.
  • Your competitor is using trendier technology than you? That probably also means they have a lot more third party bugs and issues to deal with.
  • Your competitor is based in a trendy location with better access to talent? That probably means they have to pay higher salaries and office rental and are more likely to get their staff poached.

Strength and weakness can be just two sides of the same coin.

I keep a vague eye on competition to my own table planning software. Over time I have built up a list of over 100 other products whose functionality competes directly with mine or overlaps significantly. New competitors appear fairly regularly. I notice that their website might look a bit more “web 2.0” than mine or their price is cheaper and my heart sinks a little. But, so far, it has never made a noticeable impact on my sales and I quickly forget about them. In fact my sales have gone up every year in the 7 years since I first released PerfectTablePlan. I just keep improving the product, marketing and support, day after day, year after year. While many of these competitors have since fallen by the wayside, with products and websites not updated for several years. Some of them are giving away their products free in the hope of making a few pennies from advertising. Some of them never even launched. Those that are still active are targeting rather different niches to my software.

Many companies respond to competition by trying to copy their competitors feature for feature. This is almost certainly a mistake. You will always be at least one step behind them. It is much better to listen to your customers and innovate. It is certainly a lot more interesting and rewarding. It is also much easier to market a product that is different[1].

There are cases where competitors can be a big problem, for example:

  • markets where there is a strong network effect (I wouldn’t want to compete head on with Ebay or Facebook)
  • markets where you might have to compete with the company that owns the platform (for example a Microsoft Office add-on isn’t likely to last long if Microsoft releases a new version of Office incorporating this feature)

So it is probably better to avoid these types of market, unless you are happy to accept that level of risk. But there are vast numbers of markets big enough to support multiple products. There are some 2 billion people with access to the Internet and they all have different requirements. Even a niche within a niche can provide a decent living for a small software business.

Competition can actually help you. The main competition for my table planning software is Excel and Post-It notes, not other table planning software. My competitors are helping to raise awareness of the fact that there is such a thing as software for table planning. Some of the people whose awareness they raise, are going to search for other software solutions and find and buy my software (thanks!).

So next time you find out about a new competitor, don’t panic. It is natural to focus on their strengths and your weaknesses, rather than your strengths and their weaknesses[2]. But they are probably doing the same, and they may be more afraid of you than you are of them.

In truth your biggest fear should be having no competition. If there is a no-one else doing what you are doing then either you are genius who has found an untapped market or the market doesn’t exist. Unfortunately, it is almost certainly the latter.

Further reading:

‘Choose your competition’ by Eric Sink

[1]This is why adverts for commodity products such as instant coffee and soap powders are so consistently awful.

[2] Microsoft should take note before they ruin a product with 90% of the highly lucrative desktop operating system market in their panic to compete with Apple in the tablet market.

Photo by Alistair Joseph.

Pivot Tables demystified

pivot tablesOnline businesses generate a lot of data. Sales data, marketing data, traffic data etc. Pivot tables can be a useful tool for analysing and extracting useful information from this sea of data. A lot of people seem to have heard of Pivot Tables without understanding what they are or how to use them. Despite the slightly cryptic name they are really just a way of summarizing tables of data. Nothing to be intimidated by. I’m going to try to demystify them here with a simple example.

Let’s imagine you have got an Excel spreadsheet with a month of (fictitious) sales transaction. It looks like this:

sales spreadsheet

You want to find out:

  1. The total value of sales of each product
  2. The number of sales of each product
  3. The total value of sales of each product by country
  4. The total value of sales of each product by day of the week

How would you do it? You can crunch the numbers using a calculator, but that is very tedious and error prone. If you are a programmer you can export the data to a .csv file and write a small program in your favourite language to read it in, crunch the data and write the results out. You probably think you can do it in 10 minutes, but I bet it will take you at least an hour to get it working and debugged. I did all the above in 1 minute and 20 seconds using Excel pivot tables.

Here is how you can do it (screenshots from Excel 2007). You can download the spreadsheet if you want to try it yourself.

Select all the data, including the header (A1 to D222).

Click on Insert in the Excel Ribbon bar.

Click on PivotTable.

pivot table 1

The Create Pivot Table window will appear. Click OK.

pivot table 2

The PivotTable Field List will appear. We want to find the number of sales for each product. Drag the product field to Column labels and the value field to Values. This gives us the total value of sales by product.

pivot table 3

To change this to the number of sales pull down the Sum of value drop-down list and select Value Field Settings….

pivot table 4

Change Summarize value field by from Sum to Count and click OK.

pivot table 5

The number of sales of each product are now shown.

pivot table 6

Now drag the country field to Row labels. Then click on Count of value, select Value Field Settings…, change it back to Sum and click OK. The total value of sales of each product by country is now displayed.

pivot table 7

We now need to add a day of the week column. Click on Sheet 1 and add a new column as shown.

pivot table 8

Now select all the data from A1 to E222 and insert a new pivot table, as before.

pivot table 9

Drag the fields as shown to get the total value of sales of each product by day of the week.

pivot table 10

(We’ll quietly ignore the fact that the number of days aren’t divisible by 7 in the data.)

We can even display by product, day of the week and country with one more drag.

pivot table 11

Excel also supports pivot charts if you prefer your results in graphical form.

pivot chart

Obviously this is a very simple example, but pivot tables can be used to quickly analyse much larger and more complex data sets. Next time you have got some data to analyse consider whether you would be better using pivot tables or pivot charts.

*** UPDATE ***

You can also use my Hyper Plan software to create pivot tables. It is a lot simpler than the above! There is a free trial.

Losing weight with a minimum of willpower

If you are happy with your weight you can skip this post. Normal programming will be resumed soon.

We all know how to lose weight: eat less and move more. So why do so few people succeed? You only have to spend a few minutes walking around any wealthy western country to see that obesity is a huge problem. The human body is truly an incredible thing, evolved over millions of years. It is so much more than just a mere transport and fuelling system for the brain. We only get one body, it is a tragedy to neglect it.

The past is always with us

Our evolutionary past is working against us. Agriculture is less than 10,000 years old. That is only about 400 generations. A blink of an eye in evolutionary terms. While our technology and culture may have changed beyond all recognition in that time, our bodies and brains are still very similar to those of our palaeolithic ancestors. Their innate drives to eat salty, fatty and carbohydrate rich food and minimize their energy consumption helped to keep them alive on the hostile African savannah. But these ancient drives do little to help urban humans with almost unlimited access to food and increasingly sedentary lifestyles. Hence the burgeoning waist lines we see all around us today.

Tightening trousers

Over the last few years I had put on a few kgs. I have been spending a lot of time in front of the computer; working on my software product, doing consulting and writing this blog. Having a young child also reduced the time available for exercise. The 32 inch waist trousers I have been wearing for the last 20+ years (not the same pair, I would like to point out) were starting to feel uncomfortably tight. I either had to lose weight or go clothes shopping. Surely anything is better than clothes shopping.

But how to lose the weight? Previous attempts to lose weight have never lasted:

  • I went trekking in the Himalayas, spending 16 days walking up to the top of Mera Peak (6,476 metres). Weight loss wasn’t the goal, but the extreme exertion at high altitude meant I had the beginning of a ‘six pack’ when I got back. It didn’t last though.
  • I wrote down everything I ate on a spreadsheet and worked out the calories by weighing the food and using the calorie information on the packet or the CalorieKing website. I tried to eat less than 1800 calories a day[1]. It worked for a while, but the bookkeeping was tedious and I got bored and hungry. I gave up after a few weeks.
  • I tried the Zone Diet. Again it worked for a while, but I found the constraints (maintaining certain proportions of protein, fat and carbohydrates) tedious. I was also less than convinced by the science. I gave up after a month or two.

Success!

I decided to try a different approach. It is based on the same approach I take to my business – learn the concepts and measure the results. 8 months later I have dropped from 17.5% body fat to 13.0% body fat and lost over  6 kg (13 lb) in weight. I will spare you the before and after photos, but suffice to say that I can now easily fit into 30 inch waist trousers (damn – I still had to go clothes shopping!). And I never went hungry. I wasn’t even particularly disciplined, taking a week off here and there when I went on holiday. I won’t be appearing on the cover of a men’s fitness magazine or slimmer of the year. But I think it’s not bad for a 45 year old with a sedentary job, a distinct lack of ‘thin genes’ and a weakness for most fattening things.

I don’t claim to be an expert nutritionist or physiologist. Even if I was, the knowledge in this field seems to be constantly changing. But here is the approach that worked for me. It might work for you.

The slow carb diet

The cornerstone of my new approach was inspired by (but didn’t follow the letter of) Tim Ferriss’ slow carb diet. You should go and read his article, but the key elements are:

  • diet 6 days per week – eat lots of lean protein, beans, pulses and veggies, no high energy carbs (e.g. sugar, bread, rice, pasta, potato, fruit, beer and sugary drinks)
  • binge 1 day per week – pig out and eat whatever you like, all-you-can-eat buffet here I come!

There is more detail in his Four Hour Body book [2].

This approach makes sense in terms of our evolutionary heritage. Our hunter-gatherer ancestors wouldn’t have had access to refined carbohydrates, such as bread, and fruit would only have been available in season. They would also have regularly alternated between feast and famine.

A typical diet day’s intake for me is:

  • 2 eggs for breakfast with chilli sauce (fried with a tiny amount of oil sprayed into a non-stick pan)
  • a big salad for lunch
  • cajun style fried white fish with lots of veggies for dinner
  • several teas, coffees and glasses of water plus a glass of red wine

The binge day helps both physiologically (it presumably stops your metabolism slowing down in response to the reduced calories) and psychologically (you are never more than 6 days from eating what you want).

Pick an exercise regime you can stick with

I also increased the amount of exercise I do. The key to this was doing things I found enjoyable and a combination of routine (doing some exercises the same day every week) and variety (varying what I did on other days). I have found that a routine of capoeira, running and kickboxing pad work plus some swimming, weights and cycling for variety suits me. I average 3-4 30-60 minute exercise sessions per week.

I really enjoy capoeira, an Afro-Brazilian fusion of martial art, dance and music. It is very strenuous, but the fact that I am learning a skill (and trying to avoid getting kicked in the head) stops me thinking too much about the exertion. I also find running and weight training quite bearable when I am listening to an interesting podcast. I am lucky enough to live near a beautiful park with a lake. Running around the lake is even quite enjoyable on a sunny day. The fitter I get, the more enjoyable it becomes. Different things work for different people. People have even lost weight combining World of Warcraft with a treadmill or exercise bike. Don’t try to force yourself to do stuff you hate, you won’t stick with it.

Your body burns mostly glycogen stored in the muscles for the first 30 minutes of exercise. So you need to exercise for more than 30 minutes to start burning fat.

It takes a lot of exercise to burn off a small amount of food. About 15 minutes of running is required to burn the calories from a single slice of bread. I knew someone who was significantly overweight despite cycling 10 miles a day. It was only when he changed his diet as well that he started to lose weight.

Any form of exercise that builds muscle mass (e.g. weight training) is good, because extra muscle will increase your metabolic rate which will burn more calories.

Weigh yourself every day

If you weigh yourself every day, you will soon see a direct correlation between weight loss and how well you stick to your diet/exercise regime. I found this daily feedback very helpful for motivation. If you only weigh yourself once a week your progress may get lost in the noise, e.g. due to the varying content of your digestive tract. I weigh myself every morning, as soon as I get out of bed. Here is a graph of my daily weight over the last 8 months:

You can see the sawtooth pattern of the weekly binge day. It is easier to see overall progress using a 7 day moving average:

Each peak was a suspension of the diet and exercise regime for holidays, birthdays and conferences.

A bit of science

Different foodstuffs vary hugely by the amount of calories per gram. You could eat 10kgs (22lbs) of green vegetables per day and not exceed your daily calorie intake (you might get a divorce though). Look at the side of the packet when you buy food, you’ll be surprised. For example, 1 gram of:

  • spinach = 0.2 cal
  • onion = 0.4 cal
  • kidney beans = 1 cal
  • bread = 3 cal
  • french fries = 3 cal
  • sugar = 4 cal

Try to avoid food where you don’t know what goes into it. For example, a lot of home delivery pizza contains vast amount of hidden salt, fat and carbs.

All calories are not equal. One would think that eating fat makes you fat. But there is increasing evidence that carbohydrates, not fat, is enemy number one when it comes to losing weight. Particularly carbohydrates with a high GI (ones that are quickly absorbed into the blood stream). Carbohydrate intake affects insulin levels, which in turn affects fat deposition. I was moderately active before and I didn’t eat excessively, but I ate a fair amount of bread, rice and potatoes. Reducing the amount of carbs has been the biggest change for me and I believe the main cause of my weight loss. Note that many ‘low fat’ foods (e.g. low fat yoghurts) contain large amounts of added sugar.

Protein makes you feel full. Studies show that x calories of protein will make you feel less hungry than x calories of carbohydrates or x calories of fat. High GI carbohydrates can even make you feel hungry (as you will know if you have ever felt starving after drinking lots of carbohydrate rich beer).

Low carb doesn’t have to be boring. Pickles, chilli sauce and balsamic vinegar liven things up without adding calories. The amusingly named Ring of Fire (‘so hot it will burn you twice’) is my favourite chilli sauce. It’s not actually that hot.

It is easy to underestimate how much you are eating. Studies show that overweight people tend to be worse at estimating their calorie consumption. I watched a TV documentary in which they asked an overweight women to work out her daily calorie intake. She calculated 1000 calories per day. Precise measurements showed it was, in fact, 3000 calories per day. The large bowl of fruit she ate every morning was 1000 calories on its own.

Smaller plates=smaller portions. Studies have shown that simply reducing the size of your plate can reduce overall calorie intake.

Starving yourself doesn’t work. Not only does it require willpower that few of us possess, but also the body simply adapts to the lower calorie intake by reducing metabolic rate. This can then cause you to put on weight if you return to your old eating habits.

Studies show that most overweight people do not have low metabolic rates. In fact, they typically have higher than average metabolic rates due to their increased mass requiring more work to maintain. If you are fat, the chances are that you are eating too much and not doing enough exercise, rather than it being due to a slow metabolism.

Watch what you drink

Watch what you drink, as well as what you eat. Drinks can contain surprisingly high amounts of calories. A single small can of cola contains around 5% of your daily energy intake. Alcoholic drinks and milkshakes can also contain a lot of calories.

Drink more water. A lot of rubbish is talked about hydration. But water does make you feel more full. So it is a good idea to have a big glass of water between and/or during meals. I find it easier to drink water if it is chilled in the fridge with a squeeze of lemon. No need to waste money on bottled water. It works even better if the water is in the food. Soup is a good way to make yourself feel full without consuming too many calories.

Food supplements

Tim Ferriss also recommends PAGG (Policosanol, Alpha lipoic acid, Garlic extract and Green tea) food supplements for weight loss. But these are about £70/$100 per month and I haven’t been able to find any peer-reviewed, double-blind trials that shows that it actually works. I won’t be spending that sort of money without some proper scientific evidence. I am not aware of any other food supplements that are proven and without side effects.

Social factors

Get your partner or house mate to diet with you. It is much harder to stick to your diet if the fridge is full of things you can’t eat. Declaring your intention to lose weight publicly can also provide extra motivation. Feel free to post your current weight and target weight in the comments. ;0)

Be realistic

Have realistic expectations about how fast you will lose weight. I came nowhere near losing the ’20 lbs. of Fat in 30 Days’ that Tim Ferriss claims. I averaged around 0.3 kgs (0.7 lbs) lost per week over the initial 4 months, and less after that. If it has taken you years to put on the weight, you are unlikely to lose it in a month or two. Despite claims to the contrary by people with books to sell.

The long term

Losing weight and keeping it off requires a long term change of lifestyle. Only time will tell if I can improve on, or even maintain, my current weight loss. I expect I will put a bit of weight back on over the winter. But I think I have found a regime that works and that I can live with. Putting this article in the public domain gives me a bit of extra incentive!

A call to action

If you need to lose some weight, then today is as good a day to start as any. If you do, it would be interesting to get some additional data for a follow-up post in a few months. Email me (andy at oryxdigital dot com) if you are interested in taking part.  You can remain anonymous, if you wish.

[1] Note that I am following the (ridiculous) convention of referring to kilo calories (kcal) of food energy as ‘calories’.

[2] It is an interesting and entertaining book. But beware that:

  • a lot of it is controversial, as you will see from the comments in Amazon
  • I find many of his claims of results of weight loss and weight gain hard to believe, and I think they certainly aren’t representative of what most people will achieve
  • experimentation is good, but self-experimentation is not as reliable as formally conducted, peer-reviewed, double-blind experimentation, especially when the author has a book to sell

Capoeira photo by HoveringDog.

What type of free trial should I offer for my software?

Once upon a time, the idea that you would allow people to try your software before they bought it was revolutionary. But now, thanks to the shareware movement and the ease with which software can be downloaded from the Internet, free trials are the norm for most types of off-the-shelf software. Prospective customers no longer have to rely on reviews of questionable independence or reading the packaging in a shop. They can try the software for themselves before making any commitment. This has been overwhelmingly a good thing for software users. It has also been a boon for vendors of good software.

When I surveyed 92 small software product vendors in 2009, 100% of them offered a free trial.

Eric Sink says:

Every small ISV today should give its customers an opportunity to try before they buy. It is officially now absurd to do otherwise. Customers will come to your Web site and expect to find a demo download.

And that was in 2004.

So, for most software products, the question isn’t – should I have a free trial? The questions is – what sort of free trial should I have? As with everything related to marketing, it depends. There are many different approaches. Below I describe some of the more common ones.

Time-limited

Typically this takes the form of a fixed number of contiguous days of free and unrestricted use. The software then stops working  and you need to buy a licence to continue using it. The time period is often 30 days. As you can see in the pie chart above, this was the most common type of trial in my survey.

The advantage of this approach is that it allows the user to try the full functionality of the software. But it does have a number of issues:

  • The trial might expire before they have finished their evaluation.
  • It isn’t suitable for software that might only be needed for a limited time. For example, a 30 day time-limited trial wouldn’t be a good idea for my wedding seating arrangement software as a wedding is a one-off event (we hope), and people could just start the trial 30 days before their wedding.
  • You have to find some way to hide the data about the date the trial starts.
  • It is relatively easy to circumvent. Even if you hide the install date well and check for changes to the system clock a potential customer can just keep reinstalling the software inside a new virtual machine each time the trial expires.
  • Cookie expiration is an problem. For example, Google Adwords conversion tracking cookies only last a maximum of 30 days. So Adwords conversion tracking won’t count a sale on day 31, which is probably where most of your sales will happen with a 30 day trial.
  • As most sales will only happen after your trial expires, you will have to wait longer to get your money.

I have sometimes downloaded software, started to evaluate it, got distracted and then returned only to find the trial has timed out. Very frustrating and unlikely to result in a sale. So I am generally not a fan of fixed duration trials. There are a couple of ways you can try to work around this issue:

  • Only limit the amount of time they are actually actively using the software. For example, allow them 8 hours of total active usage. This shouldn’t be too hard to program. For example, stop the timer if there hasn’t been a key press or mouse click event in 2 minutes.
  • Allow them to request an extension. Then at least you have got their email address and can follow them up.

Usage-limited

In this approach you limit the number of times a certain action can be performed. For example the number of pages they can print or the number of times they can start the software. This avoids the issue of a time-limited trial which expires before the user has finished their evaluation.

Feature-limited

In this approach the trial disables an important function of the software, for example printing or saving.  The problem is that a user won’t know if this feature works properly until they buy the full version. This may put some people off.

It has the advantage that you can ship a separate trial version with features missing completely from the executable, which makes life a little harder for crackers (note that they can still get hold of the non-trial version to crack if they want to, e.g. with a stolen credit card number). But it also makes life harder for customers, as they have to install the software a second time after purchase. Personally I care more about making life easy for my paying customers.

Capacity-limited

A capacity-limited trial restricts the amount of data that can be entered. For example, a password manager might only allow you to enter 50 passwords into the trial version. This approach can be problematic when performance is important. For example, if you limit a database trial to one thousand records, how can the user test whether the search performance is adequate for a database with a million records?

Output-limited

Many products exist purely to produce some form of physical or electronic output, for example image editors and label printers. Adding a watermark, or altering the output in some other way, can be an effective way to limit a trial. But you need to make sure that the modification to the output can’t easily be removed or worked around (e.g. using screen capture). You also need to be sure the user doesn’t think the modifications in the output are due to a bug in the software.

Nagware

Nagware allows you to use the software without restrictions, but ‘nags’ you periodically to pay for it. Usually this takes the form of a window that pops up when you start or exit the software. But I once used some software that also nagged you in audio. A woman’s voice with a heavy Scottish accent no less. It got uninstalled very quickly! Nagware isn’t very effective in my experience. I never did buy WinZip. Did you? After a while you just click the ‘continue’ button without thinking about it. Little tricks, like moving the ‘continue’ button or greying out for a few seconds are just annoying. And annoying people doesn’t seem like a great start to a business relationship.

No trial

Some software has no trial, just a money back guarantee. If your software is an enterprise system that takes significant effort to configure, then this is entirely understandable. But if it is off-the-shelf, downloadable software, what are you trying to hide? On the plus side it avoids the issue of people downloading software and then never getting around to trying it. My own stats show that only some 40% of people who start a download of my software actually install and run it. Also many people won’t ask for their money back even if they don’t like your product. So you might get sales to people who wouldn’t have purchased with a trial. But do you really want these people as customers? Personally I am unlikely to buy a software with no trial, unless there is no real alternative. I assume you won’t let me try your software because it isn’t very good. I’m sure many other people feel the same way.

Hybrid trial

Hybrids of the above approaches are also possible. For example, the trial of my wedding seating arrangement software doesn’t allow you to save, print or export plans with more than 30 guests – a hybrid of the capacity-limited and feature-limited approaches. I figure that 30 guests is enough to show what the product does, but not enough to be useful for most events. Also no-one is likely to pay for event planning software for an event with 30 or fewer guests.

Conclusion

A good trial is a balancing act. You need to give prospective customers enough to show them your software could solve their problem, but not enough to actually solve their problem. But if you are too restrictive they might go to a competitor with a more relaxed trial policy. It can be tough to get the balance right or to know whether a different approach would get better results.

Obviously, the best type of trial depends very much on your product. If it is a product that is likely to be used a lot and  is going to increase in value as it is used, then you might be best offering a generous time-limited or usage-limited trial. But if it is a product that is only needed for a one-off task or a limited period of time, then a feature-limited, capacity-limited or output-limited trial probably makes more sense.

For example, most consumers will (unless they are very unlucky) only want to use disk recovery software once. So it wouldn’t make sense to offer a 30 day free trial. It would probably make more sense to offer a feature-limited trial that allows them to see what data could be recovered, but not actually allow them to do the recovery until they pay up. But if you are selling to professional disk recoverers, then a time or usage-limited trial might be appropriate.

I asked  Craig Peterson of the Beyond Compare file comparison tool about their very generous trial policy (30 non-contiguous days of use) in an interview and he said:

That goes back to competing with all the other products out there.  If someone installs two programs to evaluate, and then doesn’t have a chance to really try them out until a month later, the one that works is more likely to get the sale.  It also makes it more likely that potential customers will learn the application and start relying on it, so when it does come time to pay they’re less likely to throw out that investment and switch to another tool.

Data comparing different types of trial is hard to come by:

  • My 2009 survey didn’t show any clear difference in mean conversion rate between time and feature-limited trials (there wasn’t enough data for usage-limited trials to be worth counting):

The nagware vs feature-limited result is fairly conclusive. But, apart from that, there doesn’t seem to be much hard data to go on. Even if there was more data, it wouldn’t necessarily apply for different products in different markets. So, unless you want to program multiple types of trial and run lots of split tests (trial and error?),  you are going to have to ‘go with your gut’. It is tempting to pick the same trial model as your competitors. But remember that part of successful marketing is being different.

So there are no easy answers. But don’t just choose a 30 day time-limited trial because that is what everyone else is doing. Have a think about what fits best with your product, market and customers. Be creative.

Selling software vs selling eyeballs

Lets say I’ve written some downloadable software and I want to make some money from it (‘monetize it’  in the ghastly common parlance). Should I charge people for using the software or should I give them the software for free and make my money from ads?

Lets look at some numbers.

The typical conversion rate for downloadable software is around 1%. That means that about 1% of the people that visit your site will typically buy your software. So, for each $1 of your sale price you will make around $0.01 per unique visit. Downloadable software is often priced around $30, so lets say $0.30 per unique visitor. Some software sells for less than $30, and some for a lot more. Also I haven’t taken account of the lifetime value of a customer (e.g. upgrades) – which will increase the value per customer; or payment processing and advertising costs – which will reduce the value per customer. It is just a ball park figure.

How much money could I make from advertising if I give the software away instead? I have been doing some research for a while on this. Based on various data I have gleaned from the BOS forum and blogs, advertisers typically pay per $1-$2 per 1000 impressions (CPM). Some data points:

  • A well known ad network offered me a $2 CPM (-19% commission) to put ads on this blog.
  • Dating site plentyoffish.com reported making $10k/day from Adsense off 200 million pages per month in 2006, which is a CPM of $1.5
  • A sample of 8 Facebook app developers were averaging less than $1 CPM.
  • “If a site like Stack Overflow, which does almost a million pageviews a day, can’t make enough to cover even one person at half time using Google AdSense, how does anyone make a living with AdSense? Does it even work?” (Stackoverflow blog)
  • “Charging your end user isn’t the only way of pricing software. You can choose to give it away for free and then make money by, for example, charging for consulting, installation and training; or selling advertising. The latter, although a common model for web sites, is extremely hard to make work. CPM – the cost per thousand impressions – can be as low as a dollar. In other words, to generate one thousand dollars of revenue you might need to serve up as many as a million pages. To generate enough revenue to support a team of three or four people, that means having ten million page views per month. Most web applications simply aren’t going to attract that sort of traffic.” (p57 of “Don’t just roll the dice”)

So, taking a ballpark CPM of $1.5, I would be making $0.0015 per page impression.

Obviously I am comparing apples (unique visitors) and pears (impressions) here. How many impressions does 1 unique visitors equal? My own table planning software averages around 2 impressions per unique visitor (many visitors bounce out after reading 1 page, even those that buy might only visit the home, download and purchase pages). So, assuming this is typical, the product based site described above should be making around $0.15 per page impression. Based on these (admittedly rough) numbers an ad driven site needs approximately 100 times as many page impressions per day to make the same money as a product driven site. To make around $100k per year the product site would need about 900 visitors/1,800 impressions per day. To make the same amount the ad driven site would need around 90,000 visitors/180,000 impressions per day. But it is worse than that because the ad driven site is going to have significant hosting fees and potentially many more users to provide support for. I know which business model I prefer.

So why not get the best of both worlds – sell the software AND put ads on the site? Because then you are sending out all sorts of bad vibes (“this software isn’t good enough that they can make a living off it”) for a measly 1% extra income from the ads. I’m confident the presence of ads will lose you >1% in product sales.

An ad supported model is only viable when you have lots of traffic. Most downloadable software (or web apps) won’t be able to generate that sort of traffic, even if it is good and you give it away for free. If you really want to run an ad supported business, you are probably better off basing it around forums and user generated content than free software.

In the final analysis if you are creating software I think it makes more sense to create something of value, grow some balls and charge for it. Rather than giving it away and selling eyeballs in the hope that someone else will take their money and throw you some scraps. Think balls, not eyeballs.