Recently in full_entry Category

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.

Confirmed Recoveries since reporting started.

New Cases per day...

Confirmed New Cases per day since reporting started.

Confirmed New Cases per day (per million) since reporting started.

Confirmed New Deaths per day since reporting started.

Confirmed New Deaths per day (per million) since reporting started.

Confirmed New Recoveries per day since reporting started.

Confirmed New Recoveries per day (per million) since reporting started.

Aggregated graph of World Cases. We're very clearly on the left edge of a bell curve.

Some country specific charts (Green is Recovered, Amber is still sick, Black is dead):

United States


China Cases (Mainland China only - does not include Hong Kong or Macau, I report them separately.)




United Kingdom



South Korea


Some places that have been through this before and had more or less competent responses:


Hong Kong (Complicated because they keep reclassifying the data as being part of China which we technically are, but I want to show it separately.)




My Python and Perl code to download and produce these is on Github:

Now go WASH YOUR HANDS, wear a mask and stop touching your face!

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.

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.

Cleaning Shure SE215s


Previously, I've blogged about the poor reliability of Shure canal phones, headphones, etc. I've had one set replaced at least twice because one ear would just decrease in volume enough that you couldn't hear anything. Both times, I did genuinely get a different set of SE215 with new serial numbers.

If they do this during the two year warranty period, Shure will replace them free of charge. After that time, you will be held responsible for a cleaning/replacement charge. At this point, you may well feel that you should just buy another pair, as the repair charges are probably a significant proportion of the cost of buying another pair.

I discovered a way to get a pair of Shure SE215 back from the one ear dead state, and it's very simple. This has now worked for me twice, and may be worth a try if you are experiencing this issue *and* your Shures are out of warranty.

If they're in warranty, just take them to Shure and get them replaced.


My method is an act of desperation and is only applicable where: "My earphones are dead and I can't afford a new pair of Shures, and the affordable Ultimate Ears 200vi are crap. (I really don't need to hear that much wire jiggling noise, thankyewverymuch!)"

You will need:

  • a pair of Shure earphones which have at least one ear blocked/silent;
  • Contact cleaner spray;
  • Weak Lemon Drink (or any beverage of your choice, really);
  • A sense of desperation that you are willing to risk your headphones for this experimental procedure.

Please note (DISCLAIMER) that I accept no responsibility for any damage to your Shures, computer, lungs, environs, property, chattels and demesnes. You undertake this venture at your own risk. Contents may settle in transit. No motorcycles after 3PM.

The steps to follow are as follows:

  • remove the silicon or foam tips from your headphones;
  • bring your headphones to a place where spraying contact cleaner is safe and non offensive, and where there is good drainage. Bathrooms are good;
  • spray a short burst of contact cleaner directly into the ear tubes of the headphones and immediately turn the headphones opening down to drain excess fluid out;
  • DRINK YOUR WEAK LEMON DRINK NOW! (You will need to allow some time for the alcohol in the contact cleaner to evaporate, meanwhile excess earwax or other precious bodily fluids have been melted/synthesized and sent to the NSA/FBI/KGB for analysis and long term storage.);
  • Excess alcohol in your weak lemon drink may need dissipating through fried food and carbohydrates.
  • Test your headphones for good audio in both ears.

It may take a while for all the various substances to evaporate so be patient. You may need to DRINK YOUR WEAK LEMON DRINK a second time. You should probably pour another, rather than regurgitating the first drink. however, if you have insectoid ancestry, feel free to disgregard this advice.

using gmail as a smart host


Problem: My new ISP blocks outgoing port 25 (SMTP) and I want to run a mail server from home.

Solution: I need to set up sendmail so that it uses gmail (or my ISP) as the outgoing smart host.

You'll need SASL running, so yum or apt-get that. Then add the following to your file:

define(`RELAY_MAILER', `esmtp')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl
FEATURE(`authinfo',`hash /etc/mail/auth/authinfo.db')dnl

Make an authinfo: /etc/mail/auth/authinfo, chmod it to 0600, and have the following lines in it: "U:root" 
                        "M:PLAIN" "U:root" 

(Note: these should actually be all on one line per entry, so two lines for the above.)

As always when dealing with, you'll need to run the m4 processor over the file and make the hash maps. Do yourself a favour and have a Makefile to do it for you. Restart sendmail, and you should be good to go!

# makemap hash authinfo.db < auth/authinfo
# m4 >
# service sendmail restart

And note that if you use Application Specific passwords (i.e. 2 step authentication), you'll need to generate a password for this.

Helpful info from:

UPDATE: While the above is fine and works, Google's mail servers rewrite the From: address to the gmail account you use to authenticate. This is not the best solution if you want to not appear to only be able to send from Here are some other changes to use the ISP's mail server. (In this case I'm using, others should be similar.)

/etc/mail/auth/authinfo (Note that I don't need to specify the higher ports, as the ISP only accepts on port 25. The Method ("M:PLAIN") doesn't seem to be required either. "U:username" "P:password"


define(`RELAY_MAILER', `esmtp')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 25')dnl
define(`ESMTP_MAILER_ARGS', `TCP $h 25')dnl
FEATURE(`authinfo',`hash /etc/mail/auth/authinfo.db')dnl

And to enable all this:

# makemap hash authinfo.db < auth/authinfo
# m4 >
# service sendmail restart

The wibblings is closed


I'm taking a break from doing this.

You may enjoy some of the links on the left.

The dismal science being funny


More (and hopefully final) Kingsmead


"Daniel Goldsmith" called me back tonight with the spiel for buying into an IPO on an institutional investment rate.

The IPO deal was for a company called USA Oil And Gas Corp (Nice and generic, huh? Although the company does appear to exist.) and how they were about to be snapped up by Halliburton and be given vast amounts of previously untenable oilfields to extract oil from.

(At least he didn't read out the URL in pseudo-milspeak like he did the company one: "Kilo! India! November! Golf! Sierra! Mike! Echo! Alpha! Delta! Papa! Echo! er, dot com". I was so tempted to come back with Whiskey Tango Foxtrot!)

He reckoned that the opening price for the IPO would be USD 1.95, but I could get on board for USD 1.50 and cash in after the IPO.

While explaining the details of the deal, he was really hammering on the "little yeses". This is a sales technique which involves getting the sucker 'valued customer' to agree with you at each incremental step along the way so that they hopefully agree to give you all their money at the end.

I told him I wasn't interested in doing business. He got quite angry at that point and, although he managed to control himself, he started getting quite snappy. He told me that if I didn't get on board now, I'd be sorry in five weeks (the IPO time), and he'd call me back to gloat.

When I mentioned finding negative reviews of KingsmeadPE on the Motley Fool forums and how they appeared to be a Boiler Room, he started up with a cock and bull story about how a disgruntled office junior named Walters was poisoning the good name of the company. At that point, I hung up on him, having better things to do.

More Kingsmead

| | Comments (2)

So, the guys from KingsmeadPE are following up (from Kingsmeade?) with breathless anticipation of a deal for me.

I got a URL out of them this time (see above), and a quick google search on their company name (kingsmeadpe ) turned up a whole bunch of threads on The Motley Fool about Boiler Room operations.

That's not the kind of profile you expect from a respectable business!

UPDATE: so, about 45 minutes after posting this, this post is #3 on the google search for KingsmeadPE.

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

About this Archive

This page is a archive of recent entries in the full_entry category.

links is the next category.

Find recent content on the main index or look in the archives to find all content.