It's been a while...


It's been a while since there was anything here...

COVID19 aka SARS-CoV2 aka 2019-NCorv


Here we go again...

In early January 2020 in Hong Kong, we started getting an indication of something spreading in Wuhan, Hubei province, China. Within a few weeks, HK schools were on hiatus starting from the Chinese New Year holiday, and are still closed. This is a global pandemic now, and there are far better resources to track it than there were back during SARS.

During the early phases of this everyone referred to it as the 'Wuhan Coronavirus' because of the likely origins of it. Eventually the WHO gave it an official name: the virus is SAR2-nCoV, and the resulting Disease is COronaVIrus Disease 2019, or COVID 19.

Some external visualisations:

Here are some of my visualisations, made from the sources listed above. They're updated automatically, usually around once per day, as the new data comes in. (Note that I'm not forecasting here. This is the observed data, not a prediction. This is scary enough as it is without extrapolating. I'll leave the forecasting to actual epidemiologists)

In the style of the @jburnmurdoch plots, you've probably seen before...

Confirmed Cases since reporting started. Big shoutout to Macau here - they shut down hard right at the start.

Confirmed Deaths since reporting started.

Now served by https



Is this thing still on?

Apparently? Anyway, now served over https thanks to Let's Encrypt and CertBot.

(This website is now nearly 20 years old, and the blogs been going (for certain values of going) since 1996 or so.



This is the family of NFC chips in the new HKID cards.

Not sure if this is useful info yet - have to read the data sheet.

Fixing Movable Type Open Source


The Problem: my MT Blog was refusing to load the CMS because of software bit-rot.

More Detail: If I try to go to the CMS page I get this (Obviously, as is proud tradition here, all system output happens on striped fanfold paper):

"Got an error: Unescaped left brace in regex is illegal 
here in regex; marked by <-- HERE in m/{{ <-- HERE theme_static

What's causing this? In Perl 5.22, unescaped left braces are flagged as a warning, however in 5.26 (The current version as of writing), these are flagged as errors. As Moveable Type Open Source (MTOS)is no longer updated, there is no hope that this will ever be fixed.

To solve this problem in the short term, I could just fix the Regexes that are causing the issues and not share the fixes. This would solve the problem for me, and at least allow me to post to the site, etc. This is a good short term fix, but obviously there would be no further upgrades or new plugins, etc. This is what I've done for the short term.

The changes are fairly straightforward. All that's needed is to escape the left braces in the file lib/MT/App/ on line 4978. It's probably best to escape all the braces. Escaping the braces just means that the line goes from:

$css =~ s#{{theme_static}}/?#$theme->static_file_url#ie;


$css =~ s#\{\{theme_static\}\}/?#$theme->static_file_url#ie;

In addition, a version of perl::YAML::Syck installed clashed with the system install. (This generally happens when a CPAN install conflicts with a packag-manager install.) This looks like this in the /var/log/httpd/error_log:

Syck.c: loadable library and perl binaries are mismatched 
(got handshake key 0xdb80080, needed 0xde00080)
That was fixed in the following way:
$ sudo dnf remove perl-YAML-Syck
$ sudo updatedb
$ locate Syck
# now delete it from anywhere it is remaining in the system
$ sudo rm -rf /usr/local/lib64/perl5/auto/YAML/Syck
$ sudo rm -rf /usr/local/lib64/perl5/YAML
$ sudo rm -rf /usr/local/lib64/perl5/JSON
$ sudo rm -rf /usr/local/share/man/man3/JSON\:\:Syck.3pm 
$ sudo rm -rf /usr/local/share/man/man3/YAML\:\:Syck.3pm 

MT comes with it's own version of YAML::Syck, packaged as MT::Util::YAML::Syck, so there was no need to reinstall the perl-YAML-Syck system package.

Longer term solution probably involve migrating to Wordpress from MovableType. Wordpress is actively developed as an open source solution, so that's a better option for the future.

I recently replaced my elderly MacBookPro (late 2008: 5,1) with a slightly more up to date version (Late 2010: 6,2). While using it, I noticed a very odd problem: Audio over bluetooth headphones started out clear, but would degrade over time to a very low bandwidth quality. (Speech would sound robotic and unpleasant).

Audio over wired headphones or the MacBook speakers was fine, so it wasn't a problem with the inbuilt DAC or the audio sources. My Bluetooth Headphones (Jabra Move) can also be used wired, so the problem was not with them either. (And also, playing audio over Bluetooth from a phone didn't exhibit this problem, so the headphones were not the issue.)

I tried the following procedures before find the correct solution:

  • Unpairing and Re-Pairing the headphones. Problem persisted;
  • Restarting the Mac. Problem Persisted
  • Restarting the Mac and Clearing the PRAM/NVRAM (CMD-OPT-P-R on Boot). Problem Persisted;
  • Reset the SMC: (Power off, CTRL-OPT-Shift-Power button, Power on) Problem solved!

I don't know why the SMC reset worked, but my theory is that the Bluetooth Module was replaced at some point, and the SMC reset forced some re-reading of the low level devices in the system.

I didn't find any useful info when searching for a solution, so I've written it up here to help anyone with the same problem.

Changing Dynamic DNS Hosts


I host a number of websites from home, and I don't have a fixed IP address, so I need to have a service which updates a DNS entry with my current IP address whenever it changes.

Fadó, fadó, in the early stage of the internet, there were free services that did this, but a whole bunch of them went away about 2009 or so, and eliminated their free tier. Back then, that service went from free to USD 25 per year, which I dutifully paid up at the time.

Now, it looks as though they're going to start charging USD 60 per year per domain for the service of having a DNS record that gets updated once a month or so. This is just unconscionable gouging as far as I am concerned, so I'm going to have to investigate the alternatives and see if there are any free options available (or free with some work on my part), or if I can settle for some service which is more affordable for me, while providing the same service.


  1. Identify alternative services
  2. Review the service that they actually provide
  3. Identify the cost of the service they provide
  4. Determine if 2. and 3. make financial sense
  5. Determine the scope of work required to switch to another service
  6. Switch (if good alternative found)
  7. Monitor the performance of the new service
  8. After a period of time, review the performance of the chosen service and decide what, if any, action needs to be taken.

So What do I need to be provided?

My core requirements are as follows:

  • Provide DNS services for at least two (2) domains that I own and host from home;
  • Allow me to update the DNS for those domains using (preferrably) ddclient (No particular reason for that, that's just how I'm setup at the moment and it would require the fewest changes.);
  • Cost less than;
  • be reliable.

What else?

  • Allow for additional domains to be added if I need to, (i.e., not have a per domain cost);
  • Cope with possibly shifting the hosting side of things to a Linode instance at some point.

Alternative Services

So, what alternatives are there? I did some basic searches and came up with the following:

Yes, I included DynDNS in there. They still provide the service, and there is a chance that there would be no competitive services available, or that any decent alternative would require vast amounts of input on my part.

DynDNS is what I'm using now. It has the lowest transition cost (free: Yay!), but will cost USD 60 per domain to renew (Boo!). This is almost twice what it was last year (USD 35 each), and is a thoroughly ridiculous amount of money for hosting a few Zone files.

It has been very reliable, though: I've been using DYNDNS since 2009, and I think I've had to make a change once in all that time. This is good, as I travel a lot and I'm not always available to solve DNS problems.

So there's the baseline: the replacement service has cost less than USD 120 per year, and not cause headaches, or need constant attention. That seems like a pretty low bar... requires a USD10 registration fee before letting me see what services are available. While I recognise that free internet services still cost money to run, this is a little off putting.

Searching around for reviews of their service finds very little, and a few indications that they nearly went out of business last year, and relaunched this year. Sounds like a little bit too much drama for what I want!

I think I'll give this company a skip, unless I have no alternative.

FreeDNS enforces sharing of domain names, unless you go premium, and this is USD 60 / year. Not really what I want.

Zonomi charges USD10 per year for two domains. This looks promising, so I set up a free account, and I'll go down my list looking through the others.

Hurricane Electric: Good old reliable HE (I've been using them for IPv6 for years)! They have a free service that appears to be a bit cryptic to setup and requires a bit of DNS knowledge. But if you don't understand A records, CNAMES, MX records, etc you have no business doing any of this setup in the first place, and should go look at a hosted service.

Time to test: register a domain (, only $4.99 at HOVER) and setup the delegation and the updater client:

vim /etc/ddclient.conf

protocol=dyndns2,,, password=[REDACTED]

Musical interlude with some noodling around at (why can you only see the setup instructions when you're logged out?)

$ dig
;         IN  ANY

;; ANSWER SECTION:      86400   IN  SOA 2016050812 10800 1800 604800 86400      86400   IN  MX  10      296 IN  A      707 IN  NS      707 IN  NS      707 IN  NS      707 IN  NS      707 IN  NS

This seems to be working, so I think I'll turn off the auto-renew on the DYNDNS account, delete my credit card details from there, and start setting up the other domains.

I stopped going down the list at this point, so I didn't try out any of the other services.

Because nobody seems to understand it, and Most Hong Kong people insist on the wrong thing:

***The holder is aged 18 or over and is eligible for a HKSAR Re-entry Permit
AThe holder has the right of abode in the HKSAR

*** is not the same as right of abode or permanent residency, and it doesn't signify anything apart from your re-entry status.


Repairing a non booting Linux box


The other day my primary mail server was rebooted after some routine package upgrades and it refused to boot! Technically, the BIOS failed to handover to Grub2, so I had to reinstall Grub2 on the MBR of the Boot disk.

I thought I'd document it here, for posterity, and because I didn't see it explicitly called out elsewhere.

First thing to do is get a live linux USB stick: I use UNETBOOTIN, a handy tool which will download and install a live linux distro (or FreeDOS, BSD, etc) to a USB stick. You'll probably need a 4GB stick or larger, which is no big deal these days.

Once you've got your USB stick, go ahead and boot the Linux box using it to your distro of choice. I normally use a recent version of Fedora, because I've been a Redhat user since 1999, but any recent version of Linux should have the tools below available.

Once you're running your live linux, you'll need to open a terminal, and become root, then re-install the grub boot code to the MBR. The following assumes that your boot partition is /dev/sda1, and the boot device is /dev/sda. (you mount the partition, but you install the MBR on the device.)

$ sudo su -
# mkdir /mnt/sda
# mount /dev/sda1 /mnt/sda
# grub2-install --boot-directory /mnt/sda/boot /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.

That should be it. Reboot, and remember to remove your USB stick!

Aside: I have had problems with recent Live Installs where the UUID of the boot volume is reported wrongly, so that the USB stick won't boot, but instead fails to the DRACUT emergency Root Console. You need to run blkid and write down the UUID of the boot media and then manually edit the ubninit code to get the right UUID.

When I replaced a set of UE 200vi which had failed many times, I went with a relatively high end pair of UE 600vi earbuds, in the hope that they'd exhibit a higher build quality than the previous UE 200vi's I'd had.

The Fault: Audio fails because of some cable problems, possibly associated with the junction of the plug end of the cable. This happened at varying intervals, but every single set I have received has failed, in some cases within a month or so! Here's my history with the UE 600vi:

  • Purchase Date: 2013 12 09
  • Replaced: 2014 04 07: 119 days
  • Replaced: 2014 06 19: 73 days
  • Replaced: 2014 07 30: 41 days
  • Replaced: 2014 09 20: 52 days
  • Finally Failed and Refunded: 2015 04 27: 209 days

Thats a total of 494 days, or an average of 98 days per unit!

After the September 2014 replace, my contact details were taken with (I think) the intention of Logitech contacting me. I presume they'd like to know some usage patterns to determine if I am using the product in a way which violates the warranty, as replace units on average every three months indicate a pretty severe problem for a device meant to last two years.

Every single time, it has been a no questions asked replacement. Whether this is due to Logitech policy, or inability to communicate, I don't know. If there was any pushback from the manufacturer, I would have expected more resistance to warranty replacements. Therefore, I think Logitech are aware that there are significant issues with their design, and the margins are such that high levels of warranty replacements are acceptable to them.

I stress that I got a new set each time: this is not a single bad device, this is a sample of 5 randomly chosen devices. There exists the small opportunity that the devices I get at warranty are refurbs, but I see them taken out of a new box, so I don't think that's the case.

2015 04 17 - left ear stopped working again, very quickly - going from intermittent, to no audio. Once again, the cause seems to be the cable at the plug end, as wiggling it can sometimes get audio back to the left ear.

Oh, and no one from Logitech contacted me at all.

2015 04 20: I've contacted the Warranty people (Changed to a different provider), and they are unable to provide a new model as the UE600vi are discontinued. They will instead provide a refund. (Full amount? Unclear.)

2015 04 26: Finally Resolved: the new warranty providers gave me a no questions asked refund of the full amount that I paid. I would have settled for less, honestly, as I got an amount of use value from the product, but I'm very happy with the solution. They kept the product, so I was unable to attempt repairs. Instead I bought a pair of RHA MA750i, for almost the same price, but vastly better build quality, thicker cabling, and most importantly, much better strain relief of the cables at the junctions.

FZF - Fuzzy Finder


fzf is a useful fuzzy finder that can replace/augment the history command. Works in vim too.

Apple Store Pricing in Hong Kong


I was noodling around in the Apple Store recently and I noticed something interesting. Traditionally, Apple has followed a fairly simple formula for pricing in the HK Apple Store, which is to do assume a HKD:USD rate of around 7.80, round to the nearest hundred and take away 12. Sounds complicated? Not really, as what they really want is to have prices ending in 88, which is very auspicious in Chinese culture.

The first table below shows the pricing for some common products. The Rate below refers to the HK price divided by the US price to determine the exchange rate. The second HKD price uses the formula:

ROUNDUP((US Price) * 7.80 to nearest 100) -12

The difference and markup are bases on the difference between this price and the price in the HK store. The Apple TV price fits the patterns closest, but all the products follow the pattern very closely:

ProductHKDUSDRateHKDDiff (HKD)Markup
MacBook Air 11$7,688$999$7.70$7,788-$100-1.3%
MacBook Air 13$8,488$1,099$7.72$8,588-$100-1.2%
MacBookPro 13$9,188$1,199$7.66$9,388-$200-2.1%
Ret. MacBookPro 13$9,988$1,299$7.69$10,188-$200-2.0%
Ret. MacBookPro 15$15,288$1,999$7.65$15,588-$300-1.9%
iMac 21.5"$9,888$1,299$7.61$10,188-$300-2.9%
iMac 27"$13,888$1,799$7.72$14,088-$200-1.4%
Apple TV$788$99$7.96$788$00.0%

(US Apple Store prices do not normally include sales taxes, and there are also no sales taxes in Hong Kong. All prices are for the base model in each range.)

As you can see, you generally save a small percentage buying the product in HK when compared to the US price. But when you look at some third party products, the price differential between the US prices and HK prices is all over the place. Here's the prices for fitbit products:

ProductHKDUSDRateHKDDiff (HKD)Markup
Fitbit Zip$498$60$8.31$488$102.0%
Fitbit Aria$1,098$130$8.45$1,088$100.9%
Fitbit Flex$898$100$8.98$788$11014.0%
Fitbit One$898$100$8.98$788$11014.0%

Why are the last two fitbit products so expensive? An additional 14%? Seems a bit excessive!

Here's an interesting thing: the latest iPhone models also have this price increase in a way which is out of step with the existing price iOS device price points:

ProductHKDUSDRateHKDDiff (HKD)Markup
iPad 2$3,088$399$7.74$3,188-$100-3.1%
iPad mini$2,288$299$7.65$2,388-$100-4.2%
iPad Mini Retina$3,088$399$7.74$3,188-$100-3.1%
iPad Air$3,888$499$7.79$3,888$00.0%
iPhone 4S$3,488$450$7.75$3,588-$100-2.8%
iPhone 5C$4,688$549$8.54$4,288$4009.3%
iPhone 5S$5,588$649$8.61$5,088$5009.8%

Finder crashing every minute


Today I was using my MacBook Pro for work as per normal, when I noticed the Finder windows crashing every minute or so. I tried many things, including:

  • Deleting misc plists from my ~/Library/Preferences directory;
  • Rebooting in Safe Mode (Hold Shift while rebooting);
  • Restoring the System Fonts while in Safe Mode;
  • Validating the Fonts within FontBook (Found one corrupt one);
  • Deleting every single .DS_Store file on the Mac;
  • Trying to diagnose the issue from the Crash Report in the Console.

All to no avail, although I did discover something interesting, of which more anon.

Finally, I waded into the Apple Support Forums, searching on some of the terms I found in the crash reports and I finally found a solution to Finder Crashing Every Minute: Basically, turn off "show file status icons and right click menu" in the Google Drive Preferences. This instantly stopped the problems.

The interesting thing I found? My ~/Library/Preferences directory was full of locked files, and once I deleted all the *.lockfile files, quite a few apps were much faster to open, and several websites dramatically changed their fonts. Perhaps I had overwritten the default font for some of them, as they went from being a nice Helvetica to Verdana.

domain registration scam


I get scam attempts:

(Letter to Head of Brand Business or CEO, thanks)

Dear Sir or Madam,

This is a formal email. We are the department of Asian Domain Registration Service in China. Here I have something to confirm with you. We formally received an application on October 15, 2013 that a company claimed Hora Tech, Ltd were applying to register "diaspoir" as their brand name and some diaspoir Asian countries top-level domain names through our firm.

Now we are handling this registration, and after our initial checking, we found the name were similar to your company's, so we need to check with you whether your company has authorized that company to register these names. If you authorized this, we would finish the registration at once. If you did not authorize, please let us know within 7 workdays, so that we could handle this issue better. After the deadline we will unconditionally finish the registration for Hora Tech, Ltd. Looking forward to your prompt reply.

Best Regards Derek Lau Senior Consultant

Tel:+86-551-6349 5334

Fax:+86-551-6349 5344

Address:HuiZhou Ave. 856, Hefei, Anhui, CN

A quick google of the first sentence of the second paragraph reveals a hoax-slayer page about this scam, along with plenty of examples of its use. Nothing to worry about.

Inquiry of Guest Posting


First SEO spam in a while:


I came across your site ( and would like to discuss the possibility of having a guest post on your site.

I’m working on behalf of my client who is able to create articles including travel, shopping and entertainment amongst many other things.

I hope this would be something of interest and would very much like to hear back from someone regarding this guest post opportunity.

Hope to hear back from you soon.

Kind Regards,



You know, right down on the page here, just about where the email address is, are three little paragraphs of text which say:

  • Unsolicited Bulk Email (spam), commercial solicitations, SEO related items, link exchange requests, and abuse are not welcome here and will result in complaints to your ISP.
  • email the webmaster
  • Any email to the above address may be made public at the sole discretion of the recipient.

I don't think I'd pay for services from a company which apparently can't read the paragraph above and below the contact email address...

I've redacted the responsible company for a few reasons. The main reason is that I don't wish to invite assholes into my life, and SEO spammers whinging about how I am "defaming their personal braaands" by reporting accurately on things they have actually done match that description pretty well.

Also, it's not that obvious from the email, but the company is an SEO consulting company that boasts of using meta-tags and keywords to attract Google attention, which makes them borderline scammers in my book. Real SEO is good content and appropriate semantic markup, not keyword and meta-tag spamming.


About Me


  • Unsolicited Bulk Email (spam), commercial solicitations, SEO related items, link exchange requests, and abuse are not welcome here and will result in complaints to your ISP.
  • Owing to stupid amounts of spam, you'll have to figure out an appropriate email address, but preferably don't try to contact me.
  • Any email to any address at this site may be made public at the sole discretion of the recipient.

Other Stuff

  • Powered by Linux
  • (Fedora Linux)


Monthly Archives