Colin Percival on the zeroth-system effect

I love browsing the blog archives of people I respect. It’s illuminating seeing how the world has changed in the intervening years, and how much has stayed exactly the same.

Colin Percival is the tireless maintainer of the AWS FreeBSD images for which I’ve derived a lot of inspiration for my FreeBSD and NetBSD templates on OrionVM. He’s also the developer behind the Tarsnap backup service we’ve been using at work for years. I saw him at AsiaBSDCon 2018, but was still dealing with social shyness at the time and didn’t approach. One day!

He wrote this about software development back in 2007 under the title Think before you code:

There has been a trend lately, particularly where internet startups are concerned, to measure success by the number of lines of code written. [Interpreting] 40,000 lines of code in three months as a sign that they were doing something right; he went on to point out that “you never see that in a big company”. To me this number is, if anything, a sign that things are going horribly wrong.

He discusses why lines of code is a problematic metric for gauging effectiveness and productivity, coining the term “zeroth-system effect”:

The zeroth system is what comes before the first system: Not only does it have very few features, but it doesn’t work […] it contains such fundamental bugs as to cast doubt upon whether the authors had any understanding of the field in which they were operating.

A summary of his conclusions should be on a laptop sticker, and applies as equally to business modellers, sysadmins, and system designers:

“Write code” is definitely important. “Release early”, too. But more important than either of those is “Understand the problem you’re trying to solve”; and most important of all: “Do it right”.


Renaming git default branch to trunk

GitHub’s change of master to main was a decent, if still somewhat hollow gesture. But I wondered why they couldn’t have defaulted to trunk like svn, given it makes more semantic sense with branches.

Scott Hanselman offers one potential reason:

NOTE: Changing the default branch to “main” also has the benefit of starting with “ma” so that autocomplete muscle memory still works. Another great option for your main github branch is “latest.” The goal is to just be unambiguous.

This is probably true if you’re used to git. I’m more familiar with subversion, so being able to keep trunk works better for the same reason.


Tutorial sites treating FreeBSD like a Linux distro

On the Gold Coast in January, Deb Goodkin from the FreeBSD Foundation began her Linux.conf.au talk with an intentionally-provocative slide: FreeBSD, that’s just another Linux distro, right? It was said in jest to highlight what a common misconception it is.

One way this manifests is through introductory FreeBSD guides online, usually on blogs with the words sysadmin, cookbook, or tutorial in their names; you know the ones I’m talking about. Invariably they advise updating the base system and pkgng, then immediately installing bash, nano, htop, lsof, coreutils, proc, and more. Some go as far as aliasing these over the built-in tools, and even setting bash as the root shell. From then on, you barely have to touch the FreeBSD userland.

Like a poorly-maintained cheese utensil, this used to grate. If you’re installing an entire GNU toolchain, why not use a Linux distribution, or Debian/kFreeBSD, or a Nexenta-like OS that’s built specifically for those tools? You’re not learning about FreeBSD’s features, nor are you taking advantage of any of its benefits beyond the kernel and base. It’s wasted opportunity, and could render future project contributions more difficult because of misunderstood assumptions about how the system works.

A photo of a pillow saying: Use BSD

I’ve since changed my tune somewhat, with a caveat. I also want to take this opportunity— not a sponsor—to spruik Jay Patel’s RedBubble store for your BSD laptop and loungeroom. I’ve already added some to next sticker batch.

What was I talking about?

We should be encouraging Linux people to try FreeBSD, and if giving them their familiar tooling gets their foot in the door, it’s worth it. I personally learn things the quickest by jumping in the deep end, but I know others want to take things a step at a time.

What also gets lost in the fray is FreeBSD, even with all those Linux-focused tools, is still a compelling and useful operating system. It’s a feature not a bug to be able to have all these tools available, and at times run them faster than Linux could on the same hardware. It may even integrate better into shops that otherwise entirely run Linux, given the motivation to write portable, POSIX-compliant code and applications is no longer a priority for most people (sadface).

So rather than saying those guides aren’t useful or even misrepresent FreeBSD, we need to reframe them. Instead of introductions to FreeBSD, say they’re FreeBSD for Linux people. This shouldn’t be constued as criticism; the latter kinds of post would be hugely useful. It’s also then easier to introduce BSD-specific tools and ideas, either inline after each Linuxism you introduce, or in a follow-up post where you compare and contrast.

We need more bridge-building and outreach between the two communities, and anything to make FreeBSD relatable to people coming from Linux, or any other operating system, is useful.


John Siracusa on WFH holidays

From Reconcilable Differences #133:

John: Looking forward to my vay-cay-tion

Merlin: Vay-cay-tion! ♫ Will you go somewhere?

John: I will not. [ed: sounds like he’s smiling]

Merlin: Oh. You get to be at home and not work, basically.

John: … not only because of WWDC, but I’m also looking forward to not having to “go to work”. Because you’d think, oh well, would you even notice, because you’re just in the same place all the time? And the answer is: yes.


Historic Kyōto in 2010

Photo of a dark street at night full of signs.

The above photo in Ponto-chō was taken by Mstyslav Chernov in 2010. Kyoto is my favourite place in the world; one day I hope we can all travel again.

Setting up a self-hosted photo sharing site may also be a way to help alleviate cabin fever, now that I think about it. I’m trying to consolidate everything into just a single replicated PostgreSQL install, but all the good photo sharing and hosting packages run on MariaDB. I’ll need to do some digging.


De-politicising COVID responses

New South Wales state premier Gladys Berejiklian had this to say about Australian state-border controls on the 18th of June:

“Yes, we comprise a number of states and each premier has led their state in a different way or (taken) a different approach, but that’s no reason to have internal borders … I can’t see the logic in it. I think it’s crazy.”

And yesterday, less than three weeks later, she said:

… the rate of COVID-19 community transmission in parts of Melbourne gave NSW health officials no choice but to close the border [with Victoria] – and showed no regret or embarrassment for her prior comments on border closures.

While the rest of the country remains stable, Victoria has climbed from 60 active cases to 650 in four weeks.

Politicians used to think they could use COVID control measures for point scoring, especially between states under different political parties. I reserve capacity for a future hollow laugh here, but I hope this is the last of it.

For my overseas readers, Victoria is Australia’s second-largest state in population. The rest of the country has had a flat COVID curve for months, including Sydney where I live, but Melbourne has seen a sharp uptick in the last couple of weeks. It’s a stark reminder that we need to remain vigilant, and for our politicians to listen to health professionals and social workers.


RÜFÜS DU SOL, live from Joshua Tree

Play RÜFÜS DU SOL - Live from Joshua Tree

It’s Music Monday, that series where I etc. Wow ♡


Booting from an ISO on OrionVM

ISO and iPXE booting on OrionVM are some of the features I get asked about the most on social media, beyond people asking why it is that OrionVM hires such intelligent, charismatic engineers; this one notwithstanding.

OrionVM gives you out-of-band console access to your VMs in your white-labelled environment, which proxies the VNC directly from Xen. This means you can access a VM even if it doesn’t have NICs for SSH or RDP, or if you’ve inadvertently locked yourself out with a firewall rule. It also makes troubleshooting Windows Server infinitely easier, because you can see the exact update it’s hung applying, or you can get into recovery environments.

This feature can also be used to boot a VM with an ISO image, again with or without networking available to the VM. Plug in the URL to your image, and go:

Screenshot showing the VM Options screen, and the ISO URL populated with an example image.

You can also dd(1) an image direct to another attached disk on a VM, then promote it to an ISO using the API, CLI, or in the portal:

Screenshot of the portal showing a disk as being emulated with CD-ROM, not Disk.

The only things to remember are that ISO disks can no longer be written to, which shouldn’t come as a surprise! VMs must also have their boot device set to the CD-ROM using Configure/Advanced:

Screenshot showing the Advanced tab with the Boot option set to CD-ROM

Now you can boot the VM, and use the console to either install your OS, or enter your desired boot environment, or hat as I’d prefer. It could be a BSD, illumos, Linux, RouterOS, 3CX, Windows Server, FreeDOS… we’ve seen some pretty exotic and fun stuff.


Identifying vegetables

With the indelible Chris Morocco from Bon Appétit.

Chris: [These tongs] are so cute!
Chris chopping onions
Chris: This is an onion.


Peter Dutton in contempt of court

Australia’s Shadow Attorney General Mark Dreyfus QC shared this Australian Federal Court judgement against the Minister for Home Affairs on Thursday:

Section 8:

In the absence of explanation, non-compliance with an order of this Court constitutes a serious contempt.

Section 9:

It may further be observed that it is deeply disturbing to realise that a Minister of the Crown who is charged with the responsibility for making decisions affecting the liberty of the subject—and on many occasions making assessments as to the consequences to be visited upon those visa applicants who have failed to comply with the law—is himself a person who has demonstrated an unapologetic reluctance to take personal responsibility for his own non-compliance with the law.

This needs to stick to him, and I’m realising it’s up to us to make sure it does. Most of the Australian media will continue to willfully ignore it, because their preferred coalition is in charge. Ministers should not, and cannot, be above the law.

In Mr Dutton’s defence, I have contempt for him too.