Adventures in content marketing

Back in 2011 I created eventcountdown.com. It had a snazzy downloadable, PerfectTablePlan-branded countdown clock for Windows and web-based countdown clock with ads for PerfectTablePlan. Both free. The idea was people searching for countdown clocks for events (such as their wedding) would find the site via Google, find out about PerfectTablePlan and a certain percentage would then buy my event seating planner software.

I paid other people to create the Windows and web versions of the countdown clock. The web-based clock was updated from time to time to add pre-built countdowns for events like superbowl, the olympics, christmas, thanksgiving etc. And I fielded the occasional support emails related to the Windows countdown clock.

This is the total traffic to the site from 2011 to 2023:

The peaks are mostly due to superbowl. The site got 38k hits in a single day just before superbowl 2019! The free Windows countdown clock also drew quite a lot of traffic. In total the site got some 1.7 million page views over 12 years. Only a small percentage of these visitors clicked through to PerfectTablePlan.com, but still a useful number. Perhaps some people were also prompted to investigate PerfectTablePlan by the branding on the downloadable clock. The site might have also had some SEO benefits for PerfectTablePlan.com. Who knows.

The eventcountdown.com website is now gone (the domain redirects to PerfectTablePlan.com). It didn’t seem worth the effort to keep adding events to the web countdown clock with the traffic now so low. Also both the website and windows clock were looking dated. But I think it was a worthwhile investment of my time and money.

I have also created various other contents pages and mini-sites over the years: articles on table planning, font collections, free clipart, place card templates etc. You can see similar trajectories for some of those.

The traffic seems to reach a peak after 3-7 years and then slowly decay away. Although I have shown them with the same vertical scale here, some generated a lot more traffic than others.

I did some basic on-page SEO for these content pages. For example, looking at Adwords keyword data to choose the page title and H1. But nothing beyond that. No paid promotion or backlink building campaigns.

I tried paying people to write articles related to events. But none of these ever generated any worthwhile traffic. Google could somehow smell the insincerity.

For my data cleaning software product I have been concentrating on ‘how to’ pages and supporting videos aimed at specific topics. These are intended to both help existing customers and to attract new traffic. For example, how to clean data. I have also been posting these videos on the Easy Data Transform YouTube channel. The numbers of hits monthly on the Youtube videos are relatively low, but they are quite targeted and hopefully will be generating traffic for years to come.

So content marketing take-aways based on my experience are:

  • Free content can be a useful way to bring free traffic to your website.
  • The amount of traffic you get is quite hit and miss. Some content has generated a lot more traffic than expected, some a lot less.
  • The content needs to be well targeted if you want to have any chance of converting it to sales.
  • Google will grow bored of it eventually. You might be able to increase the longevity by updating the content. I’ve not been very diligent with this, but even neglected content pages can generate useful traffic over 10+ year lifespan.

Renewing my authenticode digital certificate

The authenticode digital certificate I bought back in 2019 expired recently, so I had to get a new certificate (you can’t renew a certificate, as such, you just need to buy a new one). A few months before the expiry I emailed KSoftware.net, who I had bought previous digital certificates from and with whom I had always had a good experience in the past. No reply. I tried a couple more times, including the personal email of Mitchell, the founder. Nothing. Someone else told me they had had similar experiences. Their recent trustpilot ratings are a horror show. And the copyright date on their website is ‘2003 – 2021’. But they were still advertising on Google Adwords. I have no idea what is happening here. If you are reading this Mitchell, I hope you are ok.

With KSoftware out of the picture I looked elsewhere. Eventually I ended up buying a new Sectigo certificate from signmycode.com. I partly chose them because they offered a 5 year certficate and the less often I have to go through the ball ache of a getting a new certificate, the better. The experience was decidely mixed.

The good:

  • The prices seem reasonable, compared to other options.
  • Support was responsive. English didn’t appear to be their first language, but it was good enough.
  • I got my new certificate within a few days and have had no issues with it so far. The change in certificate seems to be set off a few customer’s anti-virus software, but that was to be expected.

The mediocre:

  • The online guidance and documentation on the process was mediocre, at best.
  • I was a bit confused about whether I had to click ‘Buy now’ or ‘Renew now’. It seems this is more marketing/SEO purposes and it doesn’t matter which you click.
  • I had to send them a photo of me holding a government ID. This felt pretty uncomfortable, but might be something mandated by the certificate companies.

The bad:

  • After I got my certificate I checked the expiry date and it was only 3 years. When I queried this I was rold that the ‘5 year certificate’ I thought I had bought is not a 5 year certificate. It is a 3 year certificate, then I have to apply for a new pre-paid 2 year certificate in 3 years time.

This is what you see when you click on ‘Buy now’:

When you see this, wouldn’t you expect to get a single 5 year certificate? If there was anything explaining that this was 2 separate certificates, I didn’t notice it. It certainly didn’t mention it on their home page. This feels deceptive to me.

Who knows if this company will still be there in 3 years time? I emailed them and told them I wanted to keep the new 3 year certificate and for them to refund the 2 year certificate. They said they would only refund the entire order and then I would have to start the whole process all over again. They also claimed:

“renewal validation is much more easy then buying a new certificate as most of the validation part is getting carry forward.”

We’ll see. Buyer beware.

See also: The great digital certificate ripoff?

** Update 08-Mar-2023 **

Michell of KSoftware has contact me to say that he is alive and kicking. Read the comments below for more details.

Winterfest 2022

Easy Data Transform and Hyper Plan Professional edition are both on sale for 25% off at Winterfest 2022. So now might be a good time to give them a try (both have free trials). There is also some other great products from other small vendors on sale, including Tinderbox, Scrivener and Devonthink. Some of the software is Mac only, but Easy Data Transform and Hyper Plan are available for both Mac and Windows (one license covers both OSs).

12 rules for software business happiness

Here are a few rules for happiness that I have learned (often the hard way) running a solo software business since 2005

Make sure your important stuff is backed-up automatically

Any sort of manual back-up is going to get forgotten. Back-up to more than one place, at least one of which is offsite.

Stay away from the bleeding edge

Stick with tried and trusty tools and technologies, where you can. JQuery will probably be here in another 10 years, but the latest and greatest Javascript framework might not.

Use good suppliers

You need your hosting company, payment processor and other critical suppliers to be rock solid. Think twice about going with a supplier just because they are cheap. Changing suppliers can be a pain, so ask around before trying a supplier.

Use version control for everything important

It matters less which version control system it is. Periodically making a copy of your source folder is not a version control system!

Don’t promise ship dates

Developers are notoriously bad at predicting dates. If you promise a date and get it wrong (and you will) then you either have to miss the date or cut corners. Neither is good.

Never send an email you might later regret

If you are starting to feel angry writing an email, then stop writing. Come back to it later. Or maybe write it, feel a bit better, then delete it without sending.

Write documentation as you go

Few people enjoy writing documentation. But if you leave all the documentation until you have finished programming, then you are likely to rush it and forget stuff.

Have a checklist

Automate where you can. Have checklists for everything else. Keep updating your checklists.

Get someone else to proof read everything

Typos are embarrassing, but it is impossible to proof read your own stuff. So get someone else to proof read any stuff that customers see: web pages, newsletters, documentation etc.

Never release changes just before going on holiday

You don’t want to have to be fire-fighting a new bug when you should be on the beach with your family/friends.

Don’t try to do everything yourself

You could spend weeks learning about taxes, web hosting, CSS or any number of other topics that aren’t central to your business. But why bother? Pay someone who already know this stuff.

Embrace imperfection

If you wait for perfection, then you are never going to ship anything. Just make sure each release is better than the last. Good enough is good enough.

Easy Data Transform progress

I have been gradually improving my data wrangling tool, Easy Data Transform, putting out 70 public releases since 2019. While the product’s emphasis is on ease of use, rather than pure performance, I have been trying to make it fast as well, so it can cope with the multi-million row datasets customers like to throw at it. To see how I was doing, I did a simple benchmark of the most recent version of Easy Data Transform (v1.37.0) against several other desktop data wrangling tools. The benchmark did a read, sort, join and write of a 1 million row CSV file. I did the benchmarking on my Windows development PC and my Mac M1 laptop.

Easy Data Transform screenshot

Here is an overview of the results:

Time by task (seconds), on Windows without Power Query (smaller is better):

data wrangling/ETL benchmark Windows

I have left Excel Power Query off this graph, as it is so slow you can hardly see the other bars when it is included!

Time by task (seconds) on Mac (smaller is better):

data wrangling/ETL benchmark M1 Mac

Memory usage (MB), Windows vs Mac (smaller is better):

data wrangling/ETL benchmark memory Windows vs Mac

So Easy Data Transform is nearly as fast as it’s nearest competitor, Knime, on Windows and a fair bit faster on an M1 Mac. It is also uses a lot less memory than Knime. However we have got some way to go to catch up with the Pandas library for Python and the data.table package for R, when it comes to raw performance. Hopefully I can get nearer to their performance in time. I was forbidden from including benchmarks for Tableau Prep and Alteryx by their licensing terms, which seems unnecessarily restrictive.

Looking at just the Easy Data Transform results, it is interesting to notice that a newish Macbook Air M1 laptop is significantly faster than a desktop AMD Ryzen 7 desktop PC from a few years ago.

Windows vs Mac M1 benchmark

See the full comparison:

Comparison of data wrangling/ETL tools : R, Pandas, Knime, Power Query, Tableau Prep, Alteryx and Easy Data Transform, with benchmarks

Got some data to clean, merge, reshape or analyze? Why not download a free trial of Easy Data Transform ? No sign up required.

Creating a Mac Universal binary for Intel and ARM M1/M2 with Qt

Apple has transitioned Macs from Intel to ARM (M1/M2) chips. In the process it has provided an emulation layer (Rosetta2) to ensure that the new ARM Macs can still run applications created for Intel Macs. The emulation works very well, but is quoted to be some 20% slower than running native ARM binaries. That may not seem like a lot, but it is significant on processor intensive applications such as my own data wrangling software, which often processes datasets with millions of rows through complex sequences of merging, splitting, reformatting, filtering and reshaping. Also people who have just spent a small fortune on a shiny new ARM Mac can get grumpy about not having a native ARM binary to run on it. So I have been investigating moving Easy Data Transform from an Intel binary to a Universal (‘fat'[1]) binary containing both Intel and ARM binaries. This is a process familiar from moving my seating planner software for Mac from PowerPC to Intel chips some years ago. Hopefully I will have retired before the next chip change on the Mac.

My software is built on-top of the excellent Qt cross-platfom framework. Qt announced support for Mac Universal binaries in Qt 6.2 and Qt 5.15.9. I am sticking with Qt 5 for now, because it better supports multiple text encodings and because I don’t see any particular advantage to switching to Qt 6 yet. But, there is a wrinkle. Qt 5.15.3 and later are only available to Qt customers with commercial licenses. I want to use the QtCharts component in Easy Data Transform v2, and QtCharts requires a commercial license (or GPL, which is a no-go for me). I also want access to all the latest bug fixes for Qt 5. So I decided to switch from the free LGPL license and buy a commercial Qt license. Thankfully I was eligible for the Qt small business license which is currently $499 per year. The push towards commercial licensing is controversial with Qt developers, but I really appreciate Qt and all the work that goes into it, so I am happy to support the business (not enough to pay the eye-watering fee for a full enterprise license though!).

Moving from producing an Intel binary using LGPL Qt to producing a Universal binary using commercial Qt involved several major stumbling points that took me hours and a lot of googling to sort out. I’m going to spell them out here to save you that pain. You’re welcome.

  • The latest Qt 5 LTS releases are not available via the Qt maintenance tool if you have open source Qt installed. After you buy your commercial licence you need to delete your open source installation and all the associated license files. Here is the information I got from Qt support:
I assume that you were previously using open source version, is that correct?

Qt 5.15.10 should be available through the maintenance tool but it is required to remove the old open source installation completely and also remove the open source license files from your system.

So, first step is to remove the old Qt installation completely. Then remove the old open source licenses which might exist. Instructions for removing the license files:

****************************
Unified installer/maintenancetool/qtcreator will save all licenses (downloaded from the used Qt Account) inside the new qtlicenses.ini file. You need to remove the following files to fully reset the license information.

Windows
"C:/Users/%USERNAME%/AppData/Roaming/Qt/qtlicenses.ini"
"C:/Users/%USERNAME%/AppData/Roaming/Qt/qtaccount.ini"

Linux
"/home/$USERNAME/.local/share/Qt/qtlicenses.ini"
"/home/$USERNAME/.local/share/Qt/qtaccount.ini"

OS X
"/Users/$USERNAME/Library/Application Support/Qt/qtlicenses.ini"
"/Users/$USERNAME/Library/Application Support/Qt/qtaccount.ini"

As a side note: If the files above cannot be found $HOME/.qt-license(Linux/macOS) or %USERPROFILE%\.qt-license(Windows) file is used as a fallback. .qt-license file can be downloaded from Qt Account. https://account.qt.io/licenses
Be sure to name the Qt license file as ".qt-license" and not for example ".qt-license.txt".

***********************************************************************

After removing the old installation and the license files, please download the new online installer via your commercial Qt Account.
You can login there at:
https://login.qt.io/login

After installing Qt with commercial license, it should be able to find the Qt 5.15.10 also through the maintenance tool in addition to online installer.
  • Then you need to download the commercial installer from your online Qt account and reinstall all the Qt versions you need. Gigabytes of it. Time to drink some coffee. A lot of coffee.
  • In your .pro file you need to add:
macx {
QMAKE_APPLE_DEVICE_ARCHS = x86_64 arm64
}
  • Note that the above doubles the build time of your application, so you probably don’t want it set for day to day development.
  • You can use macdeployqt to create your deployable Universal .app but, and this is the critical step that took me hours to work out, you need to use <QtDir>/macos/bin/macdeployqt not <QtDir>/clang_64/bin/macdeployqt . Doh!
  • You can check the .app is Universal using the lipo command, e.g.:
lipo -detailed_info EasyDataTransform.app/Contents/MacOS/EasyDataTransform
  • I was able to use my existing practise of copying extra files (third party libraries, help etc) into the .app file and then digitally signing everything using codesign –deep [2]. Thankfully the only third party library I use apart from Qt (the excellent libXL library for Excel) is available as a Universal framework.
  • I notarize the application, as before.

I did all the above on an Intel iMac using the latest Qt 5 LTS release (Qt 5.15.10) and XCode 13.4 on macOS 12. I then tested it on an ARM MacBook Air. No doubt you can also build Universal binaries on an ARM Mac.

Unsurprisingly the Universal app is substantially larger than the Intel-only version. My Easy Data Transform .dmg file (which also includes a lot of help documentation) went from ~56 MB to ~69 MB. However that is still positively anorexic compared to many bloated modern apps (looking at you Electron).

A couple of tests I did on an ARM MacBook Air showed ~16% improvement in performance. For example joining two 500,000 row x 10 column tables went from 4.5 seconds to 3.8 seconds. Obviously the performance improvement depends on the task and the system. One customer reported batch processing 3,541 JSON Files and writing the results to CSV went from 12.8 to 8.1 seconds, a 37% improvement.

[1] I’m not judging.

[2] Apparently the use of –deep is frowned on by Apple. But it works (for now anyway). Bite me, Apple.

Fogbugz goes dark

Today I got an email titled ‘Your Manuscript Account Balance’ which said:

Your Manuscript account is now in arrears in the amount of $31.25.

Use this link to specify a credit card for your account and we will use it to settle your balance:

https://****.fogbugz.com/default.asp?pg=pgEditCC

You can prepay for a year in advance using a check, corporate purchase order, or credit card:

https://shop.fogbugz.com/FogBugz/?sCategory=prepayfb&nUsers=0&ixOrderCoveredBySupport=*****

Thank you,

FogBugz Customer Success
success@fogbugz.com

Fogbugz was an online bugtracker developed by the much respected Fog Creek Software. They sold it some years ago when their company headed off into the stratosphere (Stackoverflow, Trello etc). I think I might have had a free Fogbugz account 10+ years ago. I asked around on Twitter and quite a few people seem to have got the exact same email. It appears that:

  • The venerable FogBugz application was recently sold on to https://ignitetech.com and they appear to be trying to demand money from anyone who ever used FogBugz. Which is likely to be thousands of people.
  • IgniteTech describe themselves as “Where software goes to live”, but “Where software goes to die” might be a better description.
  • FogBugz was renamed to ‘Manuscript’ at some point.

I tried replying to the email, telling them in no uncertain terms that they weren’t going to get a penny from me. This is the reply I got:

Hi, 

In an effort to provide a better experience to our existing customers, we are consolidating our email support channel into our Help-Center. 

In case you need technical support for FogBugz you will be able to submit a case from our 'FogBugz Support Page'. 

Replies made to this mailbox are routed to an unmonitored mailbox. 

Please do not reply to this message. 

Thanks, FogBugz Support Team

It is sad to see someone using dark business practices to try to wring a few pennies from the corpse of a once much-respected product. Does Joel Spolsky know? I don’t think he’d be impressed.

** Update 24-Sep-2022 **

I got this email late on the 22nd:

Dear FogBugz User,

Mea culpa — sincerely.

We’ve become well aware of the maelstrom of concern and comments caused by a series of emails that some of you received, but to explain, we were just as surprised as you when multiple emails were sent. Our original and only intended email, which was controlled by humans, was to inform you that the “free,” non-expiring version of FogBugz is being phased out on October 17, 2022. Additionally, we wanted to offer you the option to continue using FogBugz by updating your account to a paid subscription. This was the entire, planned effort.

However, once we updated the accounts that had been identified as free and non-expiring in the internal FogBugz accounting system, the software automatically generated a form email, notifying you that we had summarily converted you to a paid account, and worse, actually triggering collection/dunning notices to some. This was unintended and is not accurate. Yes, we’ve owned the software for some time and should know all of the nooks and crannies by now. We don’t know if this was a nook or a cranny, but it decided to act on its own. Truth. It’s embarrassing, and we’d react the same way as many of you have. So this email is to set the record straight.

We do not automatically charge any customer for usage of the software unless a subscription has been expressly elected, despite what the erroneous auto-email stated.

Here’s what you need to know:

    All free subscriptions for FogBugz will expire on Oct. 17, 2022. If your FogBugz subscription has already expired, and you do not want to continue using FogBugz, you don’t need to take any further action. Your data will be deleted from the system; you will not be billed and you will receive no further emails from either the nook or the cranny.

    If you were erroneously charged because your free account still had your credit card on file (e.g. some users were on paid accounts and had downgraded), we will ensure that you are promptly refunded. Please use the email fogbugzbilling@ignitetech.com if you have not seen the refund already posted.

    Despite this mishap, we hope the benefits of the software will encourage you to continue. If your FogBugz free-account subscription is currently active, and you would like to continue as a subscriber, please authorize your paid subscription by following these instructions.

    Please note: When you upgrade, your account will qualify for 50% off any subscription tier.

    If you need any assistance while upgrading, please contact us at  support.fogbugz.com.

We sincerely apologize for the confusion that was caused and are working hard behind the scenes to resolve all issues related to this action.

Sincerely,

The (humbled) FogBugz Team

So Fogbugz became sentient and started demanding money? And this first happened at least a week ago, but the new owners didn’t notice and a whole load of emails went out days later (including the one I got several days after the first post on HN)? Hmm.

Software Startup Founders Academy

My friend Stuart Prestedge is launching his Software Startup Founders Academy next week. He is giving away a limited number of free 1:1 advisory sessions for software startup founders (and prospective founders) .

Stuart has been creating software startups for over 30 years, including 2 successful exits. He is now making his knowledge and experience available to any founders or prospective founders who join him in the academy. This means you can get help and guidance with whatever your issues, hurdles, blockers, worries and concerns are, right now. You’ll be part of a community that helps each other to succeed, answering questions, solving problems and making decisions big and small. You’ll also have access to resources (videos and documents) to accelerate your progress. And you can join the regular group coaching calls to discuss the topics that members are asking about. The combination of community, content & coaching will help you to grow and succeed.

To request your free session go to:

https://softwarestartupfounders.academy/academy-launch-request-1-1

Summerfest 2022

Easy Data Transform and Hyper Plan Professional edition are both on sale for 25% off at Summerfest 2022. So now might be a good time to give them a try (both have free trials). There is also some other great products from other small vendors on sale, including Tinderbox, Scrivener and Devonthink. Some of the software is Mac only, but Easy Data Transform and Hyper Plan are available for both Mac and Windows (one license covers both). Sale ends 12th July.