Fifteen years of posts

Internet

I wrote this a decade ago today:

Ladies and gentlemen, if you’ve been reading my blog in any great detail over the past twenty years, I would first question your memory given the posts on this site only stretch back as far as 2004. While I am humbled and flattered that you would admit to me that your loyalty stretches back some two decades, I must point out that for you to have been reading my blog for twenty years, you would have had to start reading posts since 1989 which presents a perplexing problems as said year falls a full fourteen years before anything I’ve ever written here existed. And while I was using a computer in 1989 at the age of three, I hardly knew what I was doing and could barely read, let alone electronically construct prose. Unless “dajsdfhcaewiucvb” counts. Or deltree C:. Whoops.

I’m only five years away from twenty years now.

I bring this up, because if you don’t blog and are concerned with the increasing concentration of resources online, the best time to start your own is now.


Digital rights and political impunity

Media

Greg Jericho wrote a brilliant essay for this quarter’s Meanjin journal. He discusses the destructive need for journalists to appear neutral, impacts of the 24-hour news cycle and social media, extremism, and how journalists have failed to deliver meaningful climate change action.

But it’s this point about the dreadful Australian metadata retention scheme I hadn’t considered, emphasis added:

The same thing occurred more recently with [former Australian Attorney General] George Brandis and his ‘car crash’ interview with David Speers on metadata. Brandis did eventually get to a correct explanation of the concept, but it was a terribly bumbling answer. And yes, I know, you have to hold them to account. Fine. So Brandis had a car-crash interview, Speers won a Walkley. The metadata legislation passed without any problem whatsoever.

I see people opine on Twitter that journalists don’t deliver hard hitting questions and gotchas when they get the chance. But when you have people in charge who don’t care and continue to act without impunity, it doesn’t seem to matter.


fetch: authentication error on FreeBSD

Software

If you download a file over TLS with fetch(1) in FreeBSD base and get the following error…

# fetch https://$URL
fetch: https://$URL: Authentication error

… it means you don’t have a certificate store installed for fetch to validate the site’s certificate against. Here’s the Mozilla one you can use, with the usual caveats and warnings about checking this yourself before installing:

# pkg install -y ca_root_nss

You can also download without verifying the certificate. Which you definitely shouldn’t do unless under extenuating circumstances:

# fetch --no-verify-peer https://$URL

As an aside, fetch is pretty great. I made it a challenge to run more stock FreeBSD last year, and I’ve been using it in lieu of curl (and I suppose wget) I do miss being able to specify ranges in curl, but it’s nothing a shell script to feed fetch a range of addresses to couldn’t fix. It’s also available in pkgsrc thanks to joerg@.

(I even had a third party tool I was using that expected curl, which I aliased to a script that fed the URL to fetch. I can’t say this is good practice at all, but it worked!)


Windows Insider takes cake for worst unsubscribe

Internet

Last year I imported my side-project blog where I chronicled my adventures with unsubscribing from email. I take umbridge, good sir, with services that require us to confirm preferences, untick a ton of checkboxes, write out my email, log into a portal, and/or claim it’ll take three years to remove us. A few services just unsubscribe you with one click. Most don’t.

Windows Insider takes the cake for the most convoluted, inexcusable junk mail unsubscription process I’ve had the displeasure of stepping in. We’ll start with the footer of their most recent message:

This email is part of your Windows Insider Programme membership. See our online Privacy Statement. If you wish to stop receiving Windows Insider Programme emails, you will need to leave the programme. Find out how to leave the programme.

This has two problems. They don’t mention unsubscribe anywhere, so my newsletter email filter couldn’t catch it. But far worse, they claim you can’t merely unsubscribe, you have to deactive your account entirely. Can you imagine any other online service doing that?

I clicked (#1) how to leave the programme, and got this user guide page. This is the first junk mail that’s required reading a user guide to understand how to unsubscribe.

Leave the program

Stop receiving email

If you would like to stop receiving emails from the Windows Insider Program, you will need to unregister your Windows Insider Program account. To unregister your account:

• On the Windows Insider Program website, sign in with your Microsoft Account (MSA) or your Azure Active Directory (AAD) account associated with the Windows Insider Program.

• Go to the leave the program page (visible in the footer of the site after signing in) and click on the link, “Leave the Program”. You will then see a confirmation page.

Why is now Program, not Programme?

They don’t link to the Windows Insider Program website, but as you can see they do link to the leave the program page. Which, if you’re not logged in, redirects to a generic landing page. Why have that link there in the first place then?

I go to the Windows Insider page and click (#2) a user icon in the top corner, then click (#3) Sign in with a different account, because I’m logged in with my corporate SPLA profile. I get this:

Register

Completing your registration is as easy as 1, 2, 3: read, accept and submit.

I’m trying to unregister, not register. I click (#4) the user profile icon in the top corner, and I see its trying to register me for Windows Insider on my corporate account. So I click (#5) Sign in with a different account again.

This time I get a login screen. And of course, it has no record by now of the email address I’m trying to unsubscribe from. I type my username and click (#6) Next, because it has one of those user-hostile login forms that split the username and password fields. Then type my password and click (#7) Sign in. Then click (#8) Looks good!" on a Is your security info still accurate? screen.

Okay, back to that user guide page so I can click (#9) leave the program page. We might be getting somewhere.

Leave the Windows Insider Programme

Your participation is very important to us. However, if you decide to leave the programme, please complete the following steps:

• Unregister from the programme by clicking on the link below.

LEAVE THE PROGRAM

• If you have already installed a build, follow the instructions on how to recover your device to a supported public version of Windows 10.

Hey look, it’s programme again instead of program! I clicked (#10) the shouty LEAVE THE PROGRAM link.

You are no longer registered

Your participation is important to us. If you decide to re-join the Windows Insider Programme, follow the instructions on the Getting Started page.

If you have already installed a build, follow the instructions on how to recover your device to a supported public version of Windows 10.

My participation is important to you? But on the previous screen, the one I literally only just clicked through on, said my participation was very important.

The one saving grace of this whole needlessly-convoluted mess: they didn’t send a confirmation email.


Curly quote fix coming for Hugo 0.6x

Internet

Last December I mentioned that the Hugo static site generator broke curly quotes in the latest 0.6x branch, which meant I had to hold back on 0.5x for Clara’s and my sites. jkboxomine on the Hugo forums noticed on Sunday that a fix by flother has been merged:

This is the first version of Goldmark that supports all the Smartypants-style typographic punctuation transformations. Now, a straight single quote in the middle of a word is translated into a curly quote. Earlier versions leave them untouched. This brings Goldmark in line with Blackfriday.

This references Yuin’s recent work adding support for this in Goldmark. Good job all, I’m keen to give this a try as soon as it’s available :).


Music Monday: IBM PS/2 It!

Hardware

It’s Music Monday time once more, that time of the week when I share a song, jingle, or tune such that we all may all bask in its veritable brillance. I don’t make the rules. Actually, I didn’t, this series originally started on my university anime club blog back in the day.

Today we have this delightfully dreadful jingle from 1989. Why Keep Up With the Commodore, when you can PS/2 it!? Don’t answer that.

Play IBM Personal System 2 PS/2 Computer Commercial (1989)


Gotchas when adding a drive to an existing ZFS pool to make a mirror

Software

ZFS pools can be made with a single disk, then turned into a mirror after the fact by adding additional drives. This is especially useful for staging or homelabs, where you might not have the money upfront to buy both drives, or want to test it before spending time resilvering. There are a few small gotchas that often get me, which we’ll explore here.

For this example, I’ve got a drive with a single gpart(8)-created partition labelled drive01. This is encrypted with geli(8), and a ZFS pool built on top called swimming in a ghastly pun. This is shown below:

# zpool list   
  
  pool: swimming
 state: ONLINE
  scan: none requested
config:   
       
NAME               STATE   READ WRITE CKSUM
swimming           ONLINE     0     0     0
  gpt/drive01.eli  ONLINE     0     0     0

Now we want to turn this into a mirror using another drive that we’ve called drive02 The temptation is to do the below:

# echo Don't do this, it's just an example!
# zpool add swimming /dev/gpt/drive02.eli

It’s an easy mistake to make, but this will stripe the two disks together into a larger vdev, not create a mirror. I remember in my early days of using ZFS I had a larger pool in production for a year that I thought had redundant storage when it didn’t. Whoops.

Instead, you want to use zpool attach. You supply the pool name, the existing drive, and the new drive to mirror to:

# zpool attach swimming /dev/gpt/drive02.eli /dev/gpt/drive01.eli
     
invalid vdev specification
use '-f' to override the following errors:
/dev/gpt/drive01.eli is part of active pool 'swimming'

Wait a minute! Don’t we want drive01 to be part of this pool? Doesn’t it need to be so we can mirror the data across?

No, this is ZFS protecting us from ourselves again. The order is for the first drive to be mirrored to the second, so what we really want is:

# zpool attach swimming /dev/gpt/drive01.eli /dev/gpt/drive02.eli

Now when we check, we can see the pool resilvering as we want:

# zpool status
  
  pool: swimming
 state: ONLINE
status: One or more devices is currently being resilvered. The
        pool will continue to function, possibly in a degraded 
        state.
action: Wait for the resilver to complete.
config:   
       
	NAME                 STATE   READ WRITE CKSUM
	swimming             ONLINE     0     0     0
      mirror-0           ONLINE     0     0     0
	    gpt/drive01.eli  ONLINE     0     0     0
	    gpt/drive02.eli  ONLINE     0     0     0

Changing my mind on light text, dark backgrounds

Media

This earlier post about Apple Wallet and reading boarding passes got me thinking about the age-old debate about computer screens in general. Is it better to have a light background with dark text, or the reverse?

Something that’s always struck me about people’s customised BSD, illumos, and Linux desktops are how universally dark they are. If you see a screenshot, chances are their consoles and window managers are almost universally dark. Even Apple has jumped back on the bandwagon with Dark Mode in macOS. I used to think these schemes looked great, and agreed they were easier on the eyes than so-called blazing white. And for those who grew up with VT100s and The Matrix, there’s a certain retro cool.

But now I find them difficult to look at, and a touch dreary. A combination of factors has lead me to change my mind, and now I use light backgrounds everywhere I can.

Since turning thirty, I find light text on dark backgrounds hurt my eyes. I feel as though light text sears my eyes even during short periods; to such an extent that I can turn away and blink, and see text. It doesn’t matter whether the contrast is low; you may as well be printing negatives onto my retinas.

I was surprised to find much of the medical literature has identified this exact phenomena. Some reference pupils having to dilate further in the absence of light, which renders bright details more harsh. The result is light backgrounds, perhaps counter-intuitively, are less harsh on your eyes. For example, this paper by Axel Buchner and Nina Baumgartner:

In a series of experiments, proofreading performance was consistently better with positive polarity (dark text on light background) than with negative polarity displays (light text on dark background). This positive polarity advantage was independent of ambient lighting (darkness vs. typical office illumination) and of chromaticity (black and white vs. blue and yellow). A final experiment showed that colour contrast (red text on green background) could not compensate for a lack of luminance contrast.

Another personal consideration is location. Now that I no longer live in the tropics, I have to contend with winter and periods of the year with less light. This has had far more of an impact on my mood than I expected. Light backgrounds naturally give off more light, which I interpret as warm, cheerful, and optimistic. Note this only works in a room with plenty of other light sources as well.

That’s not to say people who use other schemes are wrong, people should use what they’re most comfortable with. But if you’ve lived your life always using dark backgrounds with light text because you thought it was more ergonomic, give the other a try too.


Apple Wallet boarding pass ergonomics

Travel

Take a squizz at these two recent boarding passes on my Apple Wallet, along with sharing in my excitement for my pending free boba at Gong Cha. See any issues? I can count at least three.

Apple Wallet showing two boarding passes. The first is a Virgin Australia with black boarding text on red, and the time 06:45PM in white. The second is Qantas with white boarding text on red, and the time 06:45

Let’s discuss what they got right first, to their credit. I grew up in Singapore and demand ISO formatting, so I was happy to see leading zeroes on both of the times. It aggravates me no end when I see Anglo-Saxons abbreviate times as 6:00. They’re significant figures, not decorations. More on that in a moment.

That’s where the good news largely stops. Apple clearly gives airlines a certain level of discretion when it comes to presenting information, but this can lead to poor formatting decisions. Qantas writes BOARDING in white, as it should be against that background. Virgin Australia uses #540d1b for BOARDING which isn’t quite black, and #e0e0e0 for the time which isn’t quite white. This results in less readable text, especially when dealing with smaller phone screens.

And then we come to time ambiguity. My global system default is for 24-hour time, because I’m a gentleman. But does that mean Qantas is respecting my preferences with 06:45, or do they mean PM? And if so, why is Virgin ignoring my preferences and printing PM, and worse, without a space between the time and PM? As long as airlines can print either 12 or 24-hour time, I’ll be second guessing each time I see one without an AM/PM descriptor. Which defeats the point of 24-hour time.

These affordances are critical. Put yourself in the shoes of a weary traveller, or think back to the last time you were trundling your bag through a terminal yourself. You might have jetlag, you may have crossed a dozen timezones. You’re not at your peak mental capacity, you’re probably bleary eyed or tired. I’ve been in transit airports when I don’t know if it’s AM or PM… looking at you, SYD to SFO. Now look at your Apple Wallet, and try to figure out what’s going on.

The entire point of this system was to be an easier, more ergonomic alternative to paper boarding passes you have to print and carry around. And I hate to say it, but it utterly fails.


The envelope method, and 64-bit YNAB4 works

Software

It’s hard not to talk about the envelope method of budgeting without sounding like a fanatic, but it’s been so transformative in how I’ve managed my finances over the last half decade. I always know where every cent is, and just as importantly, what the job of each cent is.

The strategy for using it is surprisingly simple. Each month, divvy up your total income into virtual envelopes. Some are fixed expenses, such as rent or regular charity donations. Others are more flexible, such as groceries and homelab parts. And others are paying forward, such as savings for a holiday or a BSD conference! If life happens and you need to spend more in a category, you can cover it by lowering it from somewhere else.

Tracking each cent might seem tedious, but I reconcile my accounts each weekend over coffee and derive a tremendous amount of relief knowing that I have an exact picture of my finances. It also makes tax time, investing, and budgeting for large expenses ludicrously easy and stress free. It’s not that I have time for it, as much as I don’t have time not to do it.

Application icon for YNAB 4

You can use a simple spreadsheet for this. But perhaps the most well known tool to do this was You Need A Budget. Clara and I first started using this back when it was a desktop application. I recommended the hell out of it back in the day; it was easy to use, and ran beautifully on Windows, Mac, and Wine on FreeBSD. But then two things happened:

  • nYNAB was launched, which is a web service. The monthly subscription didn’t bother me as much as having all my transactions and tax history on a remote server I don’t control. Their security page mentions data is encypted at rest, but doesn’t say if it’s encrypted locally before transmission with my passphrase, or whether it’s done at their end. Not mentioning this leads me to suspect it’s the latter, which is problematic.

  • macOS Catalina only supports 64-bit applications, and YNAB doesn’t intend to fix their admittedly-deprecated 32-bit desktop application. So modern Macs can’t run it.

Which leads me to this excellent conversion tool by Bradley Miller. It pulls the last desktop application release and replaces the runtime to be 64-bit. Here it is in action:

> Extracting the 32-bit app from YNAB4_LiveCaptive_4.3.855.dmg
"disk3" ejected.
> Extracting the 64-bit Adobe AIR runtime from AdobeAIR.dmg
"disk3" ejected.
> Converting the 32-bit app to a native 64-bit app
==========================================================
                   _                  _ 
                  | |                | |
                __| | ___  _ __   ___| |
               / _  |/ _ \|  _ \ / _ \ |
              | (_| | (_) | | | |  __/_|
               \__,_|\___/|_| |_|\___(_)
==========================================================
> The app 'YNAB 4.app' has been saved to:
> "/var/folders/hk/thebirdisthewordrandom/T/tmp.birdword"
> Drag the app to your /Applications directory to install
==========================================================
Press [ENTER] to open the folder containing the app
> Done!

Now YNAB4 runs on Catalina, giving it a new lease on life. Albeit without official support, but it’s a moot point considering it was already retired.

My end goal is to replace this entirely with a reworked spreadsheet I’ve half-moved over to for a while, and eventually to one I’ve been rewriting in Perl and SQLite3 because why not. But it’s a relief that we can keep using the tool in the meantime.

Some very quick feedback: someone claimed on The Twitters with some juveline insults that I was being hypocritical, given YNAB4 used a third party server in the form of Dropbox for mobile sync. Except, I didn’t use that. Whoops, this is awkward! I’ll publish their apology just as soon as they get around to writing it, which I’m sure will definitely happen.