Category Archives: reviews

A test of Cost Per Action (CPA) vs Cost Per Click (CPC) in Google Adwords

CPA vs CPCThe traditional approach to Google Adwords is to set a bid price for each keyword. This is known as Cost Per Click (CPC). Google then then uses the bid prices in conjunction with a secret formula (the quality score) to decide how high to rank your ad in the Adwords results. If you bid more, your ad will appear higher and typically get more clicks, but your cost per click will increase. So setting an optimal bid price is important. Bid too little and you won’t rank high enough to get a decent number of clickthroughs. Bid too much and you will potentially end paying more to Google than you recoup in sales.

An alternative approach is to tell Google Adwords how much you are prepared to pay for a particular action, e.g. a sign-up, download or sale. This is known as Cost Per Action (CPA) or Conversion Optimizer. Google will then automatically calculate your bid prices and attempt not to exceed the CPA you set (although this isn’t guaranteed).

CPA sounds great. I can stay in bed a bit longer while the mighty Google brain does the bid tweaking for me. Unfortunately I wasn’t able to use CPA. I  count sales as conversions (not downloads) and I have my adwords account split into a number of campaigns by geographic region and by type (e.g. search vs content). Having my campaigns structured like this, rather than one monolithic campaign, makes for more flexibility (e.g. different ads, phrases and bid prices for different geographical areas) and more useful reports (e.g. separate reports for search and content). But it also meant none of my Adwords campaigns made the minimum threshold for conversions per month.

When Google dropped the minimum threshold for CPA to 30 conversions per campaign per month, one of my Perfect Table Plan search campaigns became eligible. So I did an experiment. I ran a campaign for 4 weeks using CPC, then 9 weeks using CPA, then another 4 weeks using CPC. I set the CPA bid to roughly the average cost per conversion I got for CPC. I was curious to see if Google would find sweet spots that I had been missing or whether they would bid as high as they could to take as much money off me as possible. Summary: CPC outperformed CPA on all key metrics, including: 4.4% higher conversions, 9.4% lower cost per conversions and 8.0% higher profit.

The detailed results are as follows:

metric CPC  (vs CPA)
impressions/day +13.9%
clicks/day +1.3%
conversions/day +4.4%
CTR -11.1%
conv rate +3.1%
income/day +4.4%
cost/day -5.5%
CPC -6.6%
profit/day +8.0%
PKI -5.2%
ROI +10.4%
cost per conversion -9.4%

In graphical form (click to enlarge):

CPA vs CPC graph 50pc

Notes:

  • The values given are taken by computing (CPC metric – CPA metric)/(CPA metric). E.g. ROI of +10.4% means that CPC had a 10.4% higher ROI than CPA.
  • Only a single (geographically based) search campaign was measured. The total number of conversions during the time period of the test was in 3 figures.
  • I only measured sale conversions. This gives me less data than measuring downloads, but I think it is unsafe to assume the number of downloads correlates closely to the number of sales.
  • The PerfectTablePlan sale price is £19.95/$29.95. To calculate profit I only counted 75% of the price of a sale (the other 25% was assumed to cover the cost of support, ecommerce fees and other overheads associated with the sale).
  • Each of the time periods was a multiple of 7 days to avoid any issues with different results on different days of the week.
  • I ran CPC for an equal amount of time either side of the CPA test to try to balance out any seasonal factors.
  • Google conversion tracking uses Cookies and is therefore not 100% accurate.
  • PKI is Profit Per Thousand Impressions.
  • ROI is Return On Investment.

It wouldn’t be wise to draw any sweeping conclusions from one test with a limited amount of data. However I believe the results show:

  • A CPA campaign running for 9 weeks wasn’t able to outperform a mature CPC campaign. The CPC campaign had been running for over 4 years, but one would have thought CPA would have been able to use that pre-existing  data. CPA might have performed better if given longer. It would probably also have done better against a less mature CPC campaign.
  • Google didn’t rob me blind using CPA bidding. The CPA cost per day was only 5.5% higher.
  • The results weren’t hugely different. On the basis of the above results one might still conclude that CPA is superior to CPC as it requires less time to manage.

Using a Mac mini for development

mac miniI have been using a Mac mini to port my C++/Qt based code to Mac OS X for the last 3.5 years. This is one of the early PowerPC based Mac minis, upgraded to 1GB of RAM. Being Apple hardware, it is expensive for what you get. But it has served me well. The small form factor (approx 17 x 17 x 5 cm) has also been useful in my cramped office, where I have it attached to the same monitor, mouse and keyboard as my Windows box through a KVM switch. But it is struggling to keep up with PerfectTablePlan’s ever increasing code base. A clean build of the PerfectTablePlan source into a Universal (fat) binary now takes an eye-watering 36 minutes to compile and link on the Mac mini. Building a PowerPC-only debug version still takes nearly half that time. That is painful, even just for occasional porting work.

As my main development environment is Windows, I can’t really justify the cost (or office space requirements) of a Mac Pro. So I decided to buy a new Mac mini, with an Intel Core 2 Duo processor. I did look around to see if I could find one at a discount. However, this being Apple hardware, no-one dares sell  at anything significantly less than Apple’s RRP. I bought the smaller (120GB) disk variant and had the dealer upgrade it to 2GB RAM, which tests on my old Mac mini indicated should be plenty for compiling and linking. I didn’t want to do the memory upgrade myself as I know, from experience with my first Mac mini, that removing the case involves putty knives and some very worrying cracking noises.

I had all sorts of problems trying to get the right cables. Firstly I wanted a Firewire cable so I could copy the set-up across from the old machine to the new machine using Apple’s Migration Assistant software. But it turns out that the old Mac Mini has a Firewire 400 6-pin socket, whereas the new Mac Mini has a Firewire 800 9-pin socket. I ordered a 6-pin to 9-pin Firewire cable cable. Then I discovered that there is more than one type of DVI cable. The old Mac mini was attached to my KVM switch with a DVI-I cable. The new Mac mini only accepts mini-DVI or (via a supplied adaptor) DVI-D. So I ordered a dual link DVI-D to DVI-D cable as well.

Once I had the right cables things went relatively smoothly. The Migration Assistant software copied almost all the apps and data across from the old machine to the new one. It even preserved settings for the apps, e.g. the email accounts in my Thunderbird email client. I just had to re-install XCode (which wasn’t copied across) and rebuild my Qt libraries (to avoid copious warnings due to the fact they had been built with an earlier version of XCode/gcc).

To use the migration assistant you simply:

  1. connect the 2 machines with a Firewire cable
  2. start-up the old machine with the ‘T’ key depresses to put it in ‘Target’ mode
  3. start-up the new machine
  4. follow the on-screen instructions

Nice. If only it was was that easy to set-up a new Windows machine.

A quick test shows that the new Mac mini is nearly 6 times faster at compiling and linking a Universal binary of PerfectTablePlan from scratch[1]:

mac mini performance

The time the new Mac mini takes to compile and link an Intel-only debug release of PerfectTablePlan also compares favourably with a similar build on my Windows 2.13 GHz Intel Core 2 Duo box with 4GB of RAM[2].

mac mini performance 2

This isn’t a fair hardware comparison, as the two machines are using completely different compilers and linkers and the Windows box was running various background services. But it certainly shows that Intel-based Mac minis are worth considering for use as development machines.

[1] The newer machine is using a newer version of XCode/gcc.

[2] The Windows box is using Visual Studio 2005.

TrialPay results

trialpayTrialPay is an interesting idea. In basic terms:

  • merchants (e.g. microISVs like me) want to sell products, such as software
  • customers want to get a product without paying for it
  • advertisers (such as Netflix and Gap) want to sell their goods

TrialPay brings the 3 together by letting the customer get the merchant’s product for ‘free’ by buying something from the advertiser. The advertiser then pays the merchant, with TrialPay taking a cut. The merchant gets paid, even though the customer might not have been prepared to pay the price of their product. The customer gets your product ‘free’ by buying something else, which they might have wanted anyway. The advertiser gets a new customer. TrialPay get some commission. Everyone is happy. I decided to give it a try and signed up in October last year.

get_it_free

I decided not to mention the TrialPay offer on my main payment page. I could visualise eager potential buyers of my table plan software, credit card in hand, being distracted by the TrialPay ‘Get it free’ logo. Off they would wander to the TrialPay pages and become so engrossed/confused/distracted by the offers there, they would forget all about my product. Sale lost. Instead I modified my Inno setup Windows installer to pop up the following dialog when someone uninstalls the free trial without ever adding a licence key:

trialpay_uninstall

If they click ‘No’ the software uninstalls. If they click ‘Yes’ they are taken to the PerfectTablePlan TrialPay page. I hoped that this would entice some of those who had decided not to part with $29.95 to ‘buy’ PerfectTablePlan anyway through TrialPay.

TrialPay allows you to set the mimum payout to any level you like. You can also vary the payout by customer country (e.g. less for poorer countres). The lower the minimum payout you set, the more advertisers deals are available to customers (and presumably the higher the chance of a conversion).

The Minimum Acceptable Payout (or MAP) is the lowest amount you are willing to accept per transaction and determines which advertiser offers are available to your customers. The lower the minimum, the more offers that will appear for your product and the more likely a user is to find an offer that compels him to complete his transaction. While you may set a low MAP, your average payout will greatly exceed the minimums you set. (from the TrialPay website)

It quickly became apparent that very few advertisers offer deals that pay the $29.95 I charge for my product (possibly none, in some countries).

trialpay map

I set a minimum payout of $25 in rich countries and $20 in poorer ones. After a few weeks with no TrialPay conversion I reduced the mimum payout to $20 in rich countries and $15 in poorer ones. TrialPay suggested that a $2 minimum payout was optimal in Africa and Central America if I was accepting $20 in the USA. $2? I don’t think so. That doesn’t even cover the cost of answering a support email. Especially if they aren’t a native English speaker.

I also gave the TrialPay option a mention in my PerfectTablePlan newsletter. Most of the recipients already have licences, but I hoped that that they might forward it to friends and colleagues.

The results to date have not been encouraging. Lots of people have gone to the PerfectTablePlan TrialPay page (approximately 1 for every 10 downloads), but the conversion rate has been dismal. The total number of TrialPay sales since I signed up over 7 months ago is two, for a total of $43.60. That certainly isn’t worth the time it took me to sign up, modify the installer and test the ecommerce integration with e-junkie. I am not sure why the conversion rate was so poor:

  • The TrialPay landing page isn’t compelling enough?
  • The advertiser offers aren’t attractive enough?
  • The concept of TrialPay is too complicated?
  • People are suspicious of ‘free’?

TrialPay’s poster child LavaSoft claim an impressive  5,000 additional sales per month through TrialPay. At $26.95 per licence this is an additional $1.6 million per year. But the numbers look a bit less impressive on closer inspection. 5,000 additional sales/month from 10 million visitors/month is only an extra +0.05% conversion rate[1]. And TrialPay probably didn’t pay out the $26.95 per licence Lavasoft normally charge. It is also noticeable that TrialPay only seems to get a mention on the download page of their free product, not the products they charge for.

Obviously the only way to know for sure whether TrialPay will work for you, is to try it. Your results might be very different from mine. If you do still want to try TrialPay, you can find out some details of how to integrate it here [2].

[1]I am being a little unfair here, as the quoted 10 million visitors probably aren’t just for Lavasoft’s Ad-Aware product.

[2]Note there is a bug in some older versions of Inno setup which means you can’t continue with the uninstall if they click “No” when you display a dialog, as shown above. So, if you are using Inno setup (which I recommend highly), make sure you are using v5.2.3 or later.

Tips on travelling with a laptop

airbus a380I recently returned from a month’s holiday in New Zealand. As a one-man software company I still have to check my email every day, even on holiday. Here are a few tips from my experiences of running my business from a laptop whilst travelling.

Laptop

In theory you can run your business from a Blackberry or a mobile phone that supports email. But it is impossible to answer some support emails if you can’t run your own software. So I took a Toshiba laptop PC with a 13 inch screen with me. I find a 13 inch screen is a good compromise between portability and ease of use. Much bigger and it would have been too bulky. Much smaller and I would have struggled with the screen and keyboard.

The laptop contained my licence key generator and customer database. I owe it to my business and my customers to keep these secure and the Windows password is no protection at all if someone gains physical access to  your machine. So anything sensitive was encrypted using the free Truecrypt software. Whenever I brought the laptop out of hibernation or restarted it I just had to type the password to mount the Truecrypt volume as a virtual drive[1][2].

laptop lockI took a combination laptop lock, but I rarely used it. The problem with laptop locks is that the only things strong enough to secure your laptop to are usually in plain view, and a laptop left in plain view is a bit of an invitation. Locked or not. I am also not convinced how strong the laptop security slot is. I suspect an attempted theft would wreck the laptop, even if it wasn’t successful. So I generally prefer to keep the laptop with me or hide it somewhere a crook wouldn’t think to look. I have since found out that laptop locks aren’t even very secure (see here and here). There are still occasions when a laptop lock is better than nothing though. Incidentally, don’t rely on that padlock on your hold baggage either.

The laptop was also invaluable for playing Thomas the Tank Engine DVDs (using Windows Media Player) to keep my little one occupied for part of the very long flights and for backing up photos from the digital camera. I also took a universal power adapter.

Laptop bag

I have a traditional Targus laptop bag with a shoulder strap. But I have found this uncomfortable for carrying a laptop any distance due to the uneven distribution of weight. It also makes it extremely obvious that you have a laptop. A fact I would rather not advertise.

wenger-swissgear-hudson-1wenger swissgear hudson laptop rucksack bagFor this trip I purchased a Swissgear Hudson laptop rucksack from Swiss Army knife manufacturer Wenger. It was much more comfortable to wear with the weight distributed across both shoulders and left both hands free for dealing with passports, boarding passes and a bored two year old. It was small enough to take on to an aircraft as hand luggage, but surprisingly spacious. It also had some useful extras, including: a carry handle, a breathable back and a compartment for an MP3 player. I was impressed with the quality of the construction and finish. My only quibble is that there wasn’t as much padding around the top and bottom of the laptop as I might have liked. So I wrapped my laptop in bubblewrap for additional protection. But on the whole I would recommend this bag highly for travelling.

Back-ups

As well a backup on DVD I also took a 2 Gig USB memory stick that contained everything I would need should my laptop malfunction or be stolen. This included copies of my licence key generator, customer database and various passwords. All the sensitive files were encrypted using the free Axxcrypt software, except my passwords which were encrypted using the free Keepass software. The memory stick also stored various third party software installers (including Axxcrypt and Keepass). I kept the memory stick on a lanyard around my neck when I wasn’t sleeping.

I also stored an additional encrypted back-up on a secure server.

Internet access

Trying to find holiday accommodation that was the right size and budget, in the right location and free at the right time was problematic. Insisting on broadband Internet as well was a step too far. I also wasn’t keen on relying on broadband at accommodation. What if it didn’t work? Relying on Internet cafes seemed an even worse idea. What if I couldn’t find one? And the security issues of using Internet cafes are very real. So I needed my own mobile Internet access.

The roaming charges for using my UK three networks mobile Internet in New Zealand are an outrageous £6/MB. Vodaphone has more sensible roaming charges for some plans, but I couldn’t justify the high monthly price for the occasional trip abroad. So I tried to find a company that would rent me mobile data access in New Zealand for a month, without success. In the end my brother-in-law very kindly sorted me out with a USB mobile modem and a 1GB/mo data plan with Telecom New Zealand. He picked the modem up cheap second-hand on trademe.co.nz and the data plan was of the order of $70NZD/mo, with no minimum term. So, rather than paying >£1000, I ended up paying about £50 (thanks Derek!). There is definitely a business opportunity for someone there.

I am glad I didn’t rely on broadband at the accommodation. It turns out that most of the New Zealand ISPs have restricted SMTP access to prevent spam. So I could receive email via IMAP when plugged in to an xtra.co.nz broadband cable, but I couldn’t connect to their SMTP server to send email. Thankfully I didn’t have this problem with the mobile broadband or I would have been stuck with webmail for a month (the horror!).

Mobile coverage is patchy outside the bigger cities in the South Island of New Zealand, due to the low population density (sheep can’t afford broadband). But I was able to get some sort of signal everywhere we stayed. This might have been helped by the aerial attached to the mobile modem. During the month a I used approximately 40% of the 1GB allowance. I could have used quite a lot less, if necessary.

Stopping over in Singapore I just purchased wifi access from the hotel. It was quite expensive, but I didn’t need it for long. Wifi and hardwired Internet access are available for free in Singapore airport (I couldn’t get the wifi to work, so I just plugged in a network cable).

Conclusion

Running an Internet-based business while travelling isn’t that difficult, with a bit of planning. I doubt my customers even realised I was on holiday. What are you waiting for?

PS/ New Zealand is lovely.

[1] Truecrypt can also encrypt the whole OS, but that seemed excessive for my requirements and I wasn’t sure what impact it would have on performance.

[2] If Truecrypt is so easy to set-up and use, why is it apparently beyond the capabilites of the UK government to encrypt sensitive data?

Photo of Airbus A380 by Claire Brice

Outsourcing artwork through 99designs.com

99designsMost software developers have horrible graphics design skills. I am no exception. So I decided to run a contest on 99designs.com for some artwork I wanted to use to promote Perfect Table Plan. I have used DesignOutput.com once before, but I decided to give their competitor a try after seeing the  stackoverflow.com and homedocumentmanager.com logos created through 99designs.

I put up $300 prize money for a humorous cartoon of a seating arrangement gone wrong. Fees cost me an additional $69. The detailed brief is here and I also supplied this rough sketch:

99designs_cartoon

Here is the winner I chose:

99designs_winner

I ran it as a ‘guaranteed’ competition to try and attract more designers I also made an effort to give plenty of feedback on the designs submitted and I let it run the full 7 days. I found the 99designs website easy and intuitive to use. Setting up the competition only took ten minutes or so. My only gripe is that the ‘eliminate’ and ‘choose winner’ buttons are so close together that it would be easy to click the wrong one. You do have to confirm the winning choice however.

Most of the other competitions are for logos and websites, so mine was a little unusual. But I still got over 40 different designs (some variations on a theme) from 20 different designers. You can see the designs here (those that haven’t been withdrawn). The quality of the entries varied, but much of it was really excellent. I am very happy with the winning entry.

99designs seems rather brutal for the designers. 40+ entries is common and some contests get over 1,000 designs entered. This means stiff competition and the designers don’t get anything unless they win. I am guessing that they are mostly students, who are happy for the practice, or living in cheaper parts of the world, where $300 is a significant amount of money. But it certainly offers excellent value for money for those running contests.

Programming with your feet

footI started feeling a mild burning sensation in my left wrist a few weeks ago. This is a classic early sign of Repetitive Strain Injury.  Uh-oh. I had an email exchange not long ago with someone who now has to use voice activation because typing is too painful. I can’t imagine how frustrating that must be. I decided to ignore Jane Fonda’s advice to “feel the burn” and looked for a way to alleviate the problem.

One approach is to reduce the amount of typing I do. But that is tough when you are running a microISV and writing a blog. I already use the text expander capabilities of the excellent Direct Access software to save a lot of typing (it tells me that it has saved me 51 hours of typing so far). I decided to try an ergonomic keyboard.

I bought myself a Microsoft 4000 Ergonomic keyboard. This is shaped to allow more natural positioning of the forearms and elbows.

microsoft_natural_keyboard_4000

Microsoft Natural Ergonomic Keyboard 4000

For more comfortable wrist positioning it also has a built-in wrist rest and the front of the keyboard is higher than the back.

microsoft_natural_keyboard_4000

Note the front of the keyboard (right) is higher than the back (left)

I was quite surprised how physically large it was when it turned up. The shape of the keyboard felt very strange to start with and it took me a few days of slow typing to get used it. The feel of the keys is nothing special and I haven’t yet used the extra gizmos, such as the integral zoom button. But I feel it is an improvement in comfort over the conventional keyboard I had before.

An unexpected advantage of the new keyboard is that it has improved my typing. If you watch a good touch typist, their hands hardly move. I (unfortunately) never learnt to touch type, I just didn’t have the patience. The clearer separation between keys for the left hand and keys for the right hand on the new keyboard made me realise that I was moving both hands left and right, more like a concert pianist than a touch typist. I am now moving my hands less and I think my typing speed has improved as a consequence.

I didn’t feel the new keyboard on it’s own was going to solve my impending RSI problems though. The major problem seems to be the continual Ctrl-C, Ctrl-V, Ctrl-A, Windows-D, Windows-E and Alt-Tab key combinations I do with my left hand, hundreds of times a day. Using the right hand Ctrl key instead of the left one helped a bit. But it occurred to me – why are my hands doing all the work? My legs are doing so little that I often feel stiff when I stand up from a long programming session. Why not put them to use?

I Googled for foot pedals for computers. After wading through lots of hits for music and dictation foot pedals I finally found the Savant Elite Triple Foot Switch. This is a programmable 3-pedal foot-switch that plugs into a USB port.

savant_elite_foot_switch

Savant Elite Triple Foot Switch

At £86.00+VAT it isn’t cheap. But what price do you put on your health? I ordered one.

When it arrived I wanted to program the pedals to map to the Ctrl, Shift and Windows keys. But I couldn’t install the device driver to program the pedals. After a call to the retailer it turns out the device driver doesn’t work on Vista, despite assurance on the website that the pedals could be used with “virtually any computer”[1]. Grrrrr. How long has Vista been out? I finally managed to program the pedals using my wife’s laptop – my last remaining XP box.

So now I can type using my feet for most of the modifier keys. I am using the pedals as I type this. I am still getting used to them, but the burning in my left wrist has definitely reduced. I think I can also type a little faster, but I am too lazy to do the speed tests with and without the pedals to verify this.  On the negative side:

  • Working out where to put your feet when you aren’t typing can be a little awkward.
  • The pedals tend to move around the carpet, despite being metal and quite heavy. Some small spikes might have helped.
  • Although the travel on the pedals is small, they are surprisingly stiff.

When I told a friend about the pedals he asked – why stop there? I could also be using my elbows, knees and head like a one-man-band. I could be working-out and typing at the same time. It is an intriguing prospect.

I just hope I don’t end up with burning ankles.

[1] System requirements have since been added to the website.

Getting website feedback with Kampyle

kampyleGetting good feedback from customers and prospective customers is essential to any business. I think I already do quite a good job of getting feedback from paying customers. But what about visitors who click around my site for a few minutes and then leave, never to return? I would love to know why they didn’t buy. This sort of feedback is much harder to come by, so I was interested to read about Kampyle in the article 14 free tools that reveal why people abandon your website.

Kampyle adds a clickable image to a designated corner of your webpage. If a user clicks on this image they are shown a simple (and customisable) feedback form. Any feedback is collected by Kampyle and presented through a dashboard on their website. All you have to do is register, customise your feedback form and add some javascript inside the <head> and <body> tags of each page. Best of all, the service is free. You can see it in action on Kampyle’s own website.

kampyle1

Click the floating image in the bottom-right corner to show the feeback form

kampyle2

Leave feedback

You can also have Kampyle pop-up a survey question for a given percentage of users as they leave your site. I find such surveys annoying and never fill them in, so I haven’t felt inclined to try this yet.

Kampyle sounds great. Users have a simple way to supply feedback which doesn’t distract them from my key goal (buying my software). Sadly, very few visitors actually supplied feedback through Kampyle. I ran it for a month on some of the highest traffic pages on my Perfect Table Plan site and got a grand total of 4 comments from 3 visitors. Only two of these comments had any really useful feedback and both were from a single paying customer who probably would have emailed support anyway. I don’t feel the feedback justified the ‘cost’, in terms of the potential distraction of visitors and another potential failure mode for my website. Consequently I am now only running Kampyle on a couple of peripheral pages. Maybe the results would be better for different types of site. It only takes 10 minutes of so to set up, so it might be worth a try.

Blog Blazers : 40 top bloggers share their secrets

blog-blazers

I have just finished reading “Blog Blazers, 40 top bloggers share their secrets to creating a high-profile, high-traffic and high-profit blog” the new book by the indefatigable Stephane Grenier of followsteph.com.

The bloggers interviewed are a diverse group, blogging on everything from personal finance to fashion. It also includes interviews with a number of software-related bloggers: Jeff Atwood, Ian  Landsman, Patrick McKenzie, Dharmesh Shah[sic], Eric Sink, Rob Walling, Bob Walsh and yours truly. Stephane also interviews himself, which must have been a strange experience.

Each of the interviewees was asked a standard list of questions. Some of the questions are more interesting than others. For example the question “What makes a blog successful according to you” resulted in 40 minor variations on “It depends”. But there is a wealth of useful information for bloggers, beginner or veteran. It will take me a long time to work my way through the many links and digest it all. I might even end up buying The elements of style by Strunk and White, which is recommended several times.

Stephane has done a great job of pulling together interviews from such a wide range of bloggers, including A-list blogging celebrities such as Seth Godin. I was very flattered to be included. At $16.95 I would certainly recommend this book to anyone who writes a blog, or is thinking of writing a blog. You can buy the book and/or ebook online from blogblazers.com. The book is also available from amazon.com.

As an interviewee I received some free copies and I am giving away two of them. If you would like one, please add your email address in a comment below. I suggest you obfuscate it to avoid spam-bot harvesting e.g. me [at] domain.com . I will pick two at random on Friday 21st Nov.

CoverageValidator v3

The nice folk at Software Verification have done a major new release of Coverage Validator, and the new version fixes many of the issues I noted in a previous post. In particular:

  • The instrumentation can use breakpoint functionality to get better line coverage on builds with debug information enabled.
  • Previous sessions can be automatically merged into new sessions.
  • The default colour scheme has been toned down.
  • The flashing that happened when you resized the source window has gone.
  • It is now possible to mark sections of code not to be instrumented. I haven’t had time to try this yet, as it was only introduced in v3.0.4. But it should be very useful as currently I have a lot of defensive code that should never be reached (see below). Instrumenting this code skews the coverage stats and makes it harder to spot lines that should have been executed, but weren’t.

There are still a few issues:

  • I had problems trying to instrument release versions of my code.
  • It still fails to instrument some lines (but not many).
  • I had a couple of crashes during testing that don’t seem to have been caused by my software (although I can’t prove that).

But the technical support has been very responsive and new versions are released fairly frequently. Overall version 3 is a major improvement to a very useful tool. Certainly it helped me find a few bugs during the testing of version 4 of Perfect Table Plan on Windows. I just wish there was something comparable for MacOSX.

Virus Total

Virus Total is a free service that gives you aggregate results from 36 different malware scanners. Just browse to the file you want to check on your PC and click ‘Send file’. It will quickly return the results of all the scans, hash sizes and a list of Windows system calls that the software makes.

This is a great resource for checking software you are about to install doesn’t contain malware. It is also useful for checking that your own download files haven’t been tampered with and don’t trigger false positives. Note that some software protection systems have been known to trigger false positives from malware scanners.

Thanks to a poster on this BOS thread for bringing it to my attention.