When people are trying to convey a quantity, they will generally try to compare it to something that they think people already have a feel for. For example, ‘weighing as much as 10 elephants’ or ‘twice the area of a tennis court’. But people often come up with terrible comparisons, and this grates on my nerves. So I have done a little side project to generate comparisons for you. I named it ‘How many elephants’ as elephants (and Jumbo jets) seem to figure a lot in these comparisons.
It allows you to create comparisons for:
Length/Height
Area
Volume
Mass/Weight
Time
Velocity/Speed
Energy
I might add more dimensions, such as force, acceleration and pressure, later on.
It is just a single page of HTML + CSS + JQuery. I used Microsoft Copilot to generate the image and, as a sort of turbocharged Stackoverflow, to help me with the coding.
Did I miss a good comparison or make a mistake? Feel free to give some feedback in the comments.
My seating planner software, PerfectTablePlan, is now at v7. Major upgrades are paid (discounted 60% compared to new licences), which means I have done 6 cycles of paid upgrades. I was curious about how long it took people to upgrade, and what percentage of sales are upgrades. So I took a few minutes to crunch the numbers direct from my licence key database, using my data wrangling software, Easy Data Transform.
Here are the number of upgrade licences I sold for each week after the major upgrade. Each release is in a different colour. The values are normalised so that the peak is the same height for each release:
Upgrade licences sold per week after a major upgrade, across 6 upgrades
That looks rather messy. So here it is with the values for the 6 upgrades summed:
Upgrade licences sold per week after a major upgrade, summed across 6 upgrades.
There is a long tail of upgrades. Even when the gap between releases was 6 years, I was still getting regular upgrade purchases.
With the v5 to v6 upgrade it took:
23 weeks before 50% of the upgrades were sold.
74 weeks before 75% of the upgrades were sold.
So it isn’t a neat exponential decay.
This table shows how many users actually upgraded from v5 to v6:
Edition
Upgraded
Home edition
12%
Advanced edition
31%
Professional edition
45%
Most of the Home edition purchasers are buying a licence for a one-off event, such as a wedding. So it is not surprising that they are much less likely to upgrade. But I think it also shows that less price-sensitive customers are significantly more likely to upgrade, even when the upgrade is more expensive.
This graph show the percentage of PerfectTablePlan licences sold each month that were upgrades, over the 20 year life of the product:
Percentage of sales that are upgrades per month.
You can see that upgrades are still increasingly important over time. Upgrades are worth less than new sales, so selling 80% upgrade licences in a month doesn’t mean 80% of revenue is from upgrades. However, upgrades are still an increasingly significant source of revenue for us. I’m glad I never agree to free upgrades for life.
Could I have made more sales with more frequent major upgrades? Definitely. But I was also working on other projects. And I am not out to squeeze every last penny out of my loyal customers.
Could I have made more sales with a subscription model? Possibly. But subscriptions weren’t really a thing for desktop software, when I started 20 years ago. And I never felt like making a major change to a licensing model that had worked well for me, so far.
I am always on the lookout for cost and time effective ways that I can market my software products. Previously, I have had quite a lot of success with Google Adwords Pay Per Click ads. However, the law of shitty clickthroughs means that advertising platforms generally get less and less profitable (for the advertisers) over time. And Google Adwords is a case study of that law in action. As Reddit is a less mature advertising platform, I thought it might still offer opportunities for a decent return. So I decided to experiment with advertising my data munging software, Easy Data Transform, on Reddit.
[By the way, I understand that nobody goes to Reddit because they want to see ads. But commercial products need to market themselves to survive, and Reddit probably wouldn’t exist without ads. Yay capitalism.]
Setup
The basic process to get started with Reddit Ads is:
Sign up for a Reddit Ads account.
Enter your details and credit card number.
Create a campaign.
Create one or more ad groups for your campaign. Choose a bid for each ad group, which countries you want it shown in and who you want it shown to.
Create one or more ads for each group.
Add the Reddit tracking pixel to every page of your website.
Set up conversion goals.
All pretty standard stuff for anyone who has used Google Adwords. The twist with Reddit is that you can advertise to communities (sub-Reddits), rather than based on search keywords. For example, Easy Data Transform is a much better tool for most data wrangling tasks than Excel, so I can bid to show ads targeted at Excel users in communities such as: reddit.com/r/excel/ and reddit.com/r/ExcelTips/.
Like Adwords, there are various ways to bid. I don’t want the advertising platform to set the bid prices for me (because I’m not insane), so I opted for fixed price bids of between $0.20 and $0.40 per click. Some of the ad groups suggested much higher bids than that. For example, the suggested bid for my Excel ad group is $0.79 to $4.79 per click!
However, Easy Data Transform is only a one time payment of $99. Paying more than $0.40 per click is unlikely to be profitable for me, especially when you factor in support costs. So that is the maximum I was prepared to bid. Also, the suggested bids are just the ad platform trying to push up the bid price. Something that anyone who has used Google Adwords will be all too familiar with. I was still able to get clicks, bidding significantly less than the recommended minimum.
I also set a daily maximum for each ad group, just in case I had messed up and added a zero in a bid somewhere.
I created multiple ads for each ad group, with a range of different text and images specific to the communities targeted. Here are some of the ones I ran in the Excel ad group:
I didn’t try to use edgy images or memes, because that isn’t really my style. There is an option to turn comments on below ads. As Reddit users are generally not well-disposed to ads, I didn’t try turning this on.
Based on hard-won experience with Google Adwords, I only set my ads to run in wealthy countries. I also restricted my ads to people on desktop devices as Easy Data Transform only runs on the desktop.
When Easy Data Transform is installed, it opens a page on my website with some instructions. So I used this to set up the Reddit conversion tracking to count the number of times a click ended up with a successful install of either the Windows or Mac version of Easy Data Transform.
I monitored the performance of the ads and disabled those that has poor click through or conversion rates and made variants of the more successful ones. Darwinian evolution for ads. I ended up creating 70 ads across 15 ad groups, targeting 50 communities.
I wasted an hour trying to get Reddit to recognize that I had installed their tracking pixel. But, overall, I found the Reddit Ads relatively simple to setup and monitor. Especially compared to the byzantine monstrosity that Google Adwords has become.
Reddit advertises a deal where you can get $500 of free ads.
But the link was broken when I clicked on it. Someone else I spoke to said they had tried to find out more, but gave up when they found out you had to have a phone call with a sales person at Reddit.
Results
I ran my experiment from 08-Jul-2025 to 31-Jul-2025. These are the stats, according to reddit.
Spend
$851.04
Impressions
490,478
Clicks
3,585
Windows installs
177
Mac installs
63
Total installs
240
Click Through Rate
0.73%
Cost Per Click
$0.24
Click to install conversion rate
6.59%
Cost Per Install
$3.55
I generally reckon that somewhere around 10% of people who install are going on to buy. So $3.55 per install would mean around $35.50 cost per sale, which is reasonable for a $99 sale. So that all looks quite encouraging.
But, comparing the Reddit number to the numbers I get from Google Analytics and my web logs, I think the Reddit numbers are dubious. At best. In a week when Reddit says it sent me 1174 clicks, Google Analytics says I received 590 referrals from Reddit and my web log says I received 639 referrals from Reddit. Some of the difference may be due to comparing sessions with clicks, time zones etc. But it looks fishy.
The discrepancy is even greater if you look at conversions. The total installs per week reported by Google Analytics and my web logs didn’t go up anything like you would expect from looking at the Reddit conversion numbers. If you dig a bit further, you find that Reddit uses ‘modeled conversions‘ to:
“Gain a more complete view of your ads performance with modeled conversions, which leverages machine learning to bridge attribution gaps caused by signal loss.”
Uh huh. Sounds suspiciously like ‘making shit up’.
And then there are the sales. Or lack of. I don’t have detailed tracking of exactly where every sale comes from. But I estimate that my $851 outlay on ads resulted in between $0 and $400 in additional sales. Which is not good, given that I don’t have VC money to burn. Especially when you factor in the time taken to run this experiment.
The top 5 countries for spend were:
Italy
Spain
France
Germany
Singapore
The US only accounted for 0.28% of impressions, 13 clicks and $3.81 in spend. Presumably because the US market is more competitive, and I wasn’t bidding enough to get my ads shown.
You can look at various breakdowns by country, community, device etc. This is helpful. But some of the breakdowns make no sense. For example, it says that 41% of the click throughs from people reading Mac-related communities were from Windows PCs. That sounds very unlikely!
But the worst is still to come. Feast your eyes on this Google Analytics data from my website:
Average engaged time per active user (seconds)
Engaged sessions per active user
Google / organic
33
0.75
Successfulsoftware.net / referral
31
0.74
Youtube.com / referral
27
0.86
Chatgpt.com / referral
24
0.69
Google / CPC
16
0.65
Reddit / referral
8
0.25
8 seconds! That is the mean, not the median. Yikes. And 75% of the sessions didn’t result in any meaningful engagement. This makes me wonder if the majority of the Reddit clicks are accidental.
I had intended to spend $1000 on this experiment, but the results were sufficiently horrible that I stopped before then.
If I had spent a lot of time tweaking the ad images and text, landing pages, communities and countries, then I could probably have improved things a bit. But I doubt I could ever get a worthwhile return on my time and money.
If the lifetime value of a sale is a lot more than $99 for you, or your product is a good fit for Reddit, then Reddit Ads might be worth trying. But be sure not to take any Reddit numbers at face value.
Bearing in mind that I am a developer and NOT A LAWYER, it is my understanding that if:
You host a discussion forum.
and
You, or any of your users, are based in the UK.
Then the UK government considers you subject to the UK Online Safety Act. Even if your forum is about hamsters. Failing to comply could get you a fine of up to £18 million or 10% of the company’s global revenue, whichever is greater.
That got your attention, didn’t it?
How can you be subject to UK law if you don’t have a presence in the UK? Good question. Are they going to extradite you or grab you if you come to the UK on holiday? I have no idea. Isn’t it all a bit over the top for a small customer forum? I think so. What if every country starts trying to apply their laws to citizens in other countries? Bigger yachts for the partners in law companies, I guess.
If you are outside the UK, you will have to make your own decision about whether to care about this law. But I am based in the UK. So I definitely need to care about it – even though my Discourse forum is a highly moderated, technical forum about data cleaning, transformation and analysis, with no porn, violence or gambling content.
There are hundreds of pages of guidance about this new law, which covers massive companies, such as Google and PornHub, as well as my little company. But my understanding is that the minimum a forum owner needs to do is:
Have an online safety policy
Assess the likelihood of children accessing your site
Assess the risk of harmful content
Take appropriate measure based on the above
Regularly update your assessments
Depending on your assessment and the type of content, you may need age verification checks or other measures. I assess that my data wrangling forum is not attractive to children and very unlikely to have harmful content, so I have not gone through the massive ball-ache of adding age verification.
For good measure, I have also disabled the ability of customers to direct message each other. As that is something I can’t moderate and don’t want to be responsible for.
This is 2025, so I generated my online safety policy and assessments with some help from Microsoft CoPilot. Feel free to use them for some inspiration if you need to generate your own policy. But please don’t copy them word-for-word.
Incidentally, generating documents that none of my customers will ever read seems the perfect use case for LLMs.
I really hope I don’t get forced to add age verification. I would rather shut down the forum.
I develop a data wrangling tool, Easy Data Transform. It not really a ‘data extraction service’. Also, they are implying that they will put you in the top 5 for whatever category you want. If you pay, presumably. Sounds sketchy. I decided to email them back, to find out a bit more.
I got a long reply. But the key bits are:
So basically ‘Top 5’ is actually ‘Top 5 most willing to pay’. Ugh. I feel dirty just reading the email.
Bear this in mind next time you see a ‘Top X of Y’ article. They may not all be pay-to-play. But I suspect a lot of them are.
I rather enjoy the glorious spectacle of high camp that is Eurovision. Eurovision voting has always been rather suspect, with strong regional voting patterns. But the 2025 voting patterns seemed particularly odd, with jury scores seeming to have very little relation to the public scores. It was particularly noticeable that (IMHO, rather mediocre) Israel entry got only 60 jury votes, but a massive 297 public votes. Despite the widely condemned actions of the Netanyahu government in Gaza. Also, that the Swiss entry got 215 jury votes, but 0 public votes. I had a quick dig into the data using my data wrangling software, Easy Data Transform, to see what I could find.
I copied and pasted the results table from https://eurovisionworld.com/eurovision/2025 into Easy Data Transform. I had to do a bit of simple data wrangling to massage the data into the correct columns so I could calculate the Pearson correlation of the jury and public scores.
I repeated this for competitions back to 2016. Here are the correlation scores:
Year
Pearson correlation, jury vs public scores
2025
0.160
2024
0.627
2023
0.490
2022
0.467
2021
0.618
2020
No competition, due to COVID-19
2019
0.441
2018
0.255
2017
0.656
2016
0.447
It is noticeable that the correlation is significantly lower in 2025 than previous years (where 1.0 = perfect correlation, 0.0 = no correlation). The only other year getting anywhere close being 2018, where Sweden got 253 jury votes, but only 21 public votes.
Here are the 2025 results as an Excel scatter plot, with a regression line:
And here are the 2017 results, for comparison:
Of course, this doesn’t prove anything. But it does make wonder why there was such a big discrepancy this year.
And it only took me 18 years! I know some people wouldn’t get out of bed for 3 million views, but that isn’t going to stop me bragging about it.
I haven’t really done much to promote the blog, apart from occasionally posting links to Hacker News.
The yearly hits have gone down over time. Mostly because I have been writing less often. These days I have 3 products to keep me busy. But also blogs are less of a ‘thing’ than they used to be.
Here are the 20 most visited posts:
Probably the high point for the blog was the software awards scam post getting a mention in the Guardian newspaper.
Power laws are very much in evidence, with the top 1% of the posts accounting for 18% of the hits. I have been consistently wrong in guessing which posts would be popular.
Was all that effort, writing articles worth 35k (of untargetted) clicks throughs to my PerfectTablePlan website? Probably not directly. Even when people did click through to my product websites, the engagement was often very low. But I am guessing that the improved domain authority from links to my seating plan software website has been helpful in improving search rank (see what I did there?). Promoting my products was never the only aim of the blog anyway.
Some posts I have written were mostly notes to my future self. And there have been several cases where Googling for an answer sent me to an article on my own blog that I had fogotten having written.
I have accepted a few guest posts. But I have been extremely picky about which guest posts to accept. I have also turned down plenty of offers for paid links.
Here is where the traffic came from, by source:
I was quite suprised by how much traffic has come from stumbleupon.com.
Digg.com, remember them?
Google completely dominates the search engine results, with Bing managing a pitiful 2.6% of search engine hits. Presumably from people too lazy or ‘non technical’ to change their Windows defaults.
Here is the traffic, by country:
Very little traffic came from Africa, South America or Asia:
Of course, it is hard to know how much of the traffic is humans and how much is bots.
There have been some 37k non-spam comments:
Quite a lot of the comments are responses by me. I have also learnt a lot of useful stuff through feedback on the blog and discussions, when links were posted to places like Hacker News. But the number of comments on the blog has markedly decreased, even taking account of the overall decrease in traffic. On the plus side, I have a lot less comment spam to deal with. It was quite overwhelming at one point. This is a comment from the blog in 2008:
I have given up looking through the spam logs. There is just too much of it and one can only read so many spam comments about Viagra and bestiality without becoming profoundly depressed about the human condition.
Thankfully WordPress seem to have greatly upped their game on spam detection since then.
Here is the top 20 sites where the traffic went:
The ‘social capital’ from the blog has been useful for promoting my consulting services and the training course I ran. Also for promoting various charitable and other causes I felt worthwhile.
I have a vague idea that I might, one day, write a book about starting a small software company. If I do, I will certainly mine the blog for material.
PS/ No, tiresome ‘SEO experts’, I still don’t want to put your boring, crappy guest post ‘articles’ with their dodgy links on my blog. So please don’t waste both our time by asking.
WordPress offered to generate an image for my last blog post. Here is the prompt it suggested:
“Generate a high-resolution, highly detailed image capturing the essence of “20 Years of PerfectTablePlan Software.” The main subjects should be two screenshots side-by-side: one showcasing PerfectTablePlan version 1, reflecting a vintage desktop interface with a Windows aesthetic from 2005, and the other displaying version 7 with a sleek, modern design. The lighting should be bright and inviting, emphasizing the contrast between the older and newer software. The style should blend nostalgia with innovation, showcasing the journey of the product over two decades. Ensure the image has sharp focus and intricate details to attract the reader’s attention.”
And here 5 images it came up with, from that prompt:
They are simulateously very impressive and hilariously awful. Quite apart from the weird text (“sex 20”?), none of the screenshots look even slightly like PerfectTablePlan. I think I’ll pass!
I released version 1 of my table seating planning software, PerfectTablePlan, in February 2005. 20 years ago this month. It was a different world. A world of Windows, shareware and CDs. A lot has changed since then, but PerfectTablePlan is now at version 7 and still going strong.
PerfectTablePlan v1
PerfectTablePlan v7
I have released several other products since then, and done some training and consulting, but PerfectTablePlan remains my most successful product. It’s success is due to a lot of hard work, and a certain amount of dumb luck.
I was getting married and I volunteered to do the seating plan for our wedding reception. It sounded like a relatively straightforward optimization problem, as we only had 60 guests and no family feuds to worry about. But it was surprisingly difficult to get right. I looked around for some software to help me. There were a couple of software packages, but I wasn’t impressed. I could do better myself! So I wrote a (very rough) first version, which I used for our wedding.
Things weren’t going great at my day job, at a small software startup. Maybe I could commercialize my table planner? I was a bit wary, as my potential competitors all seemed rather moribund and I didn’t think I would be able to make a living off it. But I thought I could do everything worth doing in 6-12 months and then start on the next product. Wrong on both counts!
Web-based software was still in its infancy in 2005. So I decided to write it as desktop software using C++ and cross-platform framework Qt, which I had plenty of experience in. Initially, I just released a Windows version. But I later added a Mac version as well. Qt has had its commercial ups and downs in the last 20 years, but it has grown with me and is now very robust, comprehensive and well documented. I think I made a good choice.
I financed PerfectTablePlan out of my own savings and it has been profitable every year since version 1 was launched. I could have taken on employees and grown the business, but I preferred to keep it as a lifestyle business. My wife does the accounts and proof reading and I do nearly everything else, with a bit of help from my accountant, web designers and a few other contractors. I don’t regret that decision. 20 years without meetings, ties or alarm clocks. My son was born 18 months after PerfectTablePlan was launched and it has been great to have the flexibility to be fully present as a Dad.
CDs, remember them? I sent out around 5,000 CDs (with some help from my father), before I stopped shipping CDs in 2016.
During the lifetime of PerfectTablePlan it became clear that things were increasingly moving to the web. But I couldn’t face rewriting PerfectTablePlan from scratch for the web. Javascript. Ugh. Also PerfectTablePlan is quite compute intensive, using a genetic algorithm to generate an automated seating plan and I felt it was better running this on the customer’s local computers than my server. And some of my customers consider their seating plans to be confidential and don’t want to store them on third party servers. So I decided to stick with desktop. But, if I was starting PerfectTablePlan from scratch now, I might make a different decision.
Plenty of strange and wonderful things have happened over the last 20 years, including:
PerfectTablePlan has been used by some very famous organizations for some very famous events (which we mostly don’t have permission to mention). It has seated royalty, celebrities and heads of state.
A mock-up of PerfectTablePlan, including icons I did myself, was used without our permission by Sony in their ‘Big day’ TV comedy series. I threated them with legal action. Years later, I am still awaiting a reply.
I got to grapple with some interesting problems, including the mathematics of large combinatorial problems and elliptical tables. Some customers have seated 4,000 guests and 4000! (4000x3999x3998 .. x 1) is a mind-bogglingly huge number.
A well known wedding magazine ran a promotion with a valid licence key clearly visible in a photograph of a PerfectTablePlan CD. I worked through the night to release a new version of PerfectTablePlan that didn’t work with this key.
I once had to stay up late, in a state of some inebriation, to fix an issue so that a world famous event wasn’t a disaster (no I can’t tell you the event).
The lowest point was the pandemic, when sales pretty much dropped to zero.
Competitors and operating systems have come and gone and the ecosystem for software has changed a lot, but PerfectTablePlan is still here and still paying the bills. It is about 145,000 lines of C++. Some of the code is a bit ugly and not how I would write it now. But the product is very solid, with very few bugs. The website and user documentation are also substantial pieces of work. The PDF version of the documentation is nearly 500 pages.
I now divide my time between PerfectTablePlan and my 2 other products: data wrangling software Easy Data Transform and visual planner Hyper Plan. Having multiple products keeps things varied and avoids having all my eggs in one basket. In May 2024 I released PerfectTablePlan v7 with a load of improvements and new features. And I have plenty of ideas for future improvements. I fully expect to keep working on PerfectTablePlan until I retire (I’m 59 now).
My main development PC is now 5 years old and the end of life for Windows 10 is looming. I might be upgrade it to Windows 11 (there is apparently a BIOS hack if your chip doesn’t have the required TPM module), but it is quite crufty from 5 years of daily use. And it recently crashed and spent 20 minutes doing a Windows spontaneous repair, which is not very confidence inspriring. Plus the thought of a faster processor, more memory and a bigger SSD is always alluring. Time for a spanky new Windows 11 PC.
I ordered a PC to my own spec from pcspecialist.co.uk using their online configurator. I have used them a few times previously and have been suitably impressed with the service.
The new PC has:
Windows 11 Home
AMD Ryzen 9 9900X 12-Core processor
NVidia 3050 graphics card
64 GB DDR5 RAM
4 TB Samsung PRO M.2 SSD
2 x Seagate Barracuda 4TB HDDs
Corsair Gold Ultra Quiet 650W power supply
Reliability in the key issue for me, so I won’t be messing around with overclocking or other tweaks.
I’ve had a power supply blow up and take out the motherboard before, so I went for a branded power supply.
I didn’t see any real need for Windows 11Pro.
I wanted a quiet case that would sit under my desk, rather than the bling LED disco cases offered by PC Specialist. Or, even worse, a white case (god no). So I ordered a black mid size Fractal Design Define 7 case and had it delivered to them for the build.
The finished PC turned up after a couple of weeks. They have did a nice job, with some neat cabling.
Now it is just the tedious job of setting it all up. Windows offered to copy across the settings from my previous machine, but I wanted a cruft-free, clean install. So I manually installed everything from scratch:
Where possible I tried to download software direct from the manufacturers website. In a few cases where I didn’t want to pay to upgrade, and the old version wasn’t available, I used old downloads that I had kept.
I needed Microsoft Visual Studio 2019, rather than 2022, due to compatibility issues with Qt. The 2019 version is not easy to find online, but is currently still available.
The Easy Data Transform compile time has gone from 51 seconds, on the old PC, to 26 seconds, on the new PC.
An Easy Data Transform benchmark that inputs, joins, sorts and outputs a million row dataset, has gone from 14.3 seconds , on the old PC, to 10.3 seconds, on the new PC.
So a significant speed improvement.
Currently I have 3 PCs and 1 Mac, 3 monitors, 4 mice and 4 keyboards. It is a mess. I have tried a physical KVM switch in the past, but it felt very clunky. Following a tipoff from a friend, I am going to investigate www.sharemouse.com as a way to make this more manageable. Do you have a good way to manage multiple monitors, mice and keyboards? Please let me know in the comments.