This site is mobile friendly

Internet

I ran this site through Google’s Mobile-Friendly Test yesterday, a tool I can appreciate on account of having correct hyphenation. I’m looking at you, open source software.

Tested on: 28 Jul 2021 at 13:42
Page is mobile friendly
This page is easy to use on a mobile device

That’s good to know.


Mental health at the Olympics

Thoughts

Sean Eagle filed this in the Guardian yesterday:

The American gymnast Simone Biles, the biggest star at the Tokyo Olympics and the greatest athlete in the sport’s history, last night walked away from the women’s team competition after admitting she had “freaked out in a high stress situation”.

[..] Biles said that the influence of Japanese tennis star Naomi Osaka, who pulled out of the French Open citing mental health concerns, had really helped her speak freely. Osaka, who was seen as the Japanese face of the Games and lit the Olympic cauldron, was knocked out in the third round of the women’s singles at the Olympics on Tuesday and admitted that pressure was a factor.

Simone Biles is amazing. If you’ve haven’t seen one of her routines, she imbues them with such individualism and personality in addition to being technically excellent. I could only hope to have both qualities here, and I’m not exactly performing in front of billions of people.

(As an aside, check out Katelyn Ohashi’s 2019 routine for another excellent example. Gymnastics is awesome because the best examples demonstrate skill and artistic flair. A Russian gentleman I knew in Singapore was able to do this too, and the mix of respect and jealously I felt was palpable)!

I hope this doesn’t sound crass or opportunistic, but these reports actually give me a glimmer of optimism. I’m glad these are being reported for what they are, and that people like Simone can be honest about her thoughts and position. I get the distinct impression that other factors would have been blamed even a decade or so ago by an Olympic team or country.

My hope is we’re finally starting to turn a corner on identifying and being honest about mental health, and that being open about it will encourage others to come forward. Then, eventually, we’ll be able to drop the word “mental” from the phrase, because it’s a health issue regardless of the body appendage in which it manifests.


Australia’s new Covid reality

Thoughts

I get a bit ranty in this one, strap in! In March I talked about the unreality of the so-called Fortress Australia in response to the global Covid-19 pandemic:

Given we’ve eliminated the disease in the community, our new cases come from this hotel quarantine system. And this is where those thoughts from bad science fiction stories come in. The last small outbreak in Sydney was genetically identified as having come from the US. Even from our selfish perspective, why was that disease allowed to run rampant, mutate further, then come back to us? How long can we hold this at bay?

The answer was: until June. We’re now into our second month of enforced lockdown in Sydney thanks to a spread of the Delta Covid variant, with another month being announced today. Melbourne and Adelaide are only just coming out of their stage 4 restrictions, with the former still reporting new cases. Sydney is dealing with more than a hundred new cases a day, predominately spread by essential workers. Lockdowns are keeping the curve from becoming an exponential, but it stubbornly refuses to trend downwards.

The press, medical establishments, and governments are starting to talk about vaccination being the only path out this time. No shit! But this is where Australia’s previous success with Covid ends. We had more than a year of this clamped down to get people vaccinated, but our leadership didn’t fumble with the ball so much as throw it across the fence. It’s fine, we don’t have Covid here, amirite?! Australia’s universal healthcare system was more than capable of making vaccination dissemination easy, but take-up rates have been abysmal. Lockdowns are the only way to prevent a largely unvaccinated population from spreading the disease.

There were a few reasons for this situation.

  • The federal government bet early on AstraZeneca, and the press scared people away with their irresponsible amping up of the rare blood clotting risks. This also fed anti-vaxxers (and vaccine hesitancy, for which I see no difference). Millions of doses of AZ now sit in fridges while the bulk of the population “wait for Pfizer”.

  • Mixed messaging and naive risk assessment, based on the idea that it was more dangerous to get an AZ jab in a country without Covid. It should have been painfully obvious that this situation wasn’t going to last, and I’m floored that this was even considered a tenable position.

  • It’s too hard for young people to find a vaccine, even those who’ve read the medical literature and have come to their own informed decision to get an AZ jab instead of waiting months for another brand. Steps are being taken to address this, but the fact people were having to go to a third party website like Hotdoc to look up and book appointments, then be rebuffed several times by GPs not wanting to administer them to those under 60, is appalling.

Australia still ranks among the lowest number of cases and deaths from Covid in the world, both in absolute terms and per capita. But it’s clear our previous strategy is no longer viable. The good news is vaccination rates are now climbing, and more people are getting access to them. The best time for this would have been months ago, before Delta got a foothold here from someone retuning from overseas. The second best time is now.


A FreeBSD Puppet refresher by Romain Tartière

Software

I mostly live in Ansible land for automation, but I was looking for a quick refresher on Puppet. I didn’t have to look far; FreeBSD’s Romain Tartière did a talk at BSDCan 2018, and his slides are still available. This made my morning!

Thanks to BSDCan for continuing to make these resources available.


Fourier transforming X-ray diffraction patterns before computers

Hardware

I came to newbedev’s site for some help solving a specific FreeBSD problem, but stayed over lunch reading chemistry Q&A posts. I’m glad someone out there set the record straight on the efficacy of vinegar and bicarb soda as cleaning products, for example.

Here’s their answer for how x-ray diffraction patterns were deciphered before computers:

Diffraction data was measured on film, with gray-scales to assess intensity of signals. To calculate a Fourier transform, pre-computed tables were used, such as the Beevers-Lipson strips. As Andselisk commented, Fourier transform was used late in the 20s, and initially for problems that were one- or two-dimensional.

Not just in the ’20s but up to the ’90s at least, the d-spacings were estimated by hand measurements of diffractometer peaks or film lines and applying the Bragg formula.

I had to look up what a Beevers-Lipson strip was:

Beevers–Lipson strips were a computational aid for early crystallographers in calculating Fourier transforms to determine the structure of crystals from crystallographic data, enabling the creation of models for complex molecules [..] The approach converted the sizable calculations of multi-dimensional Fourier summations needed in crystallography analysis into sums of more manageable one-dimensional values.

I still can’t get over how much civil and commercial engineering was done with slide rules, pencils, carrying 1s, and thick volumes of constants and pre-computed values. My dad was a chemist, maybe one day he’ll let me rifle through his prized Merck tomes.

Cryptography is the closest analogue (hah!) I can think of in my line of work, assuming that I went from maintaining and building computer systems to shipping physical envelopes around if computers ceased to exist. RSA is easy to grok, but imagine having to encrypt a packet with AES and encrypting that key with RSA for secure transmission… by hand. I suppose we wouldn’t need such bullet-proof ciphers if we weren’t threatened by fast computers that could make light work of them.

So much of our world is dependent on maths being handled elsewhere, transparently or otherwise.


Ashe on motivational interviewing

Thoughts

In early June I wrote about motivational interviewing as a positive way to affect change. Berating yourself to change a habit usually doesn’t work, so why do we think that doing that to others will be any different?

Asherah Connor of kivikakk.ee (web feed here) emailed me a while ago (sorry!) with an article in Psyche by Angela and Ralph Wood, who help to break it down:

How can we find more motivation to make positive changes in our lives?

MI practitioners use their counselling skills, such as open-ended questions and ways to reflect, to evoke what’s called change talk – a conversation about what clients are unhappy about and how they’d like to change. Through an accepting, collaborative and guiding style, this approach seeks to strengthen the person’s commitment to goals they identify for themselves.

This is the best summary I’ve read about the approach. Now we just need, as Ash says, the motivation to do it.

(And as a pointless aside, I think the stock photo they included in the article is of Tania Cagnotto, an Italian Olympic diver. That’s the second mention of sport today. Is this a new record here)?


Harukana Receive, and Olympic sports

Anime

This is a bit of a disjointed post, but I’m in a bit of a disjointed mood! We start with Erin Riley’s Bird Site comment this evening that I can’t fault:

I saw someone comment on a friend’s thread on FB yesterday that every Olympic event should include one random person selected from the crowd, just for context, and I am 100% here for that.

The Price is Right, but for athletics! Wait, did I just date myself?

That then reminded me of a conversation I was having with Matt of Digitally Downloaded last week, who ranked Olympic sports:

  • Handball
  • Kayak
  • Rhythmic Gymnastics
  • Beach Volleyball
  • Bouldering

Diving was in my top 5 but then Bouldering debuted this Olympics. Volleyball’s awesome too but Beach Volleyball is better.

I’d only make a couple of small tweaks:

  • Put Diving back in and sub out Kayak. I can’t help but admire the patience, skill, and guts it would take to jump off a platform that height and navigate those impossible maneuvers. I also respect the fact that making the smallest splash possible is the antithesis of bombastic showboatyness.

  • Replace Handball with Table Tennis, because Singapore. This also brings in Badminton as an honourable mention. The mechanics and speed of both seem so utterly implausible, they’re the most gripping sports I’ve ever watched. Why they don’t get more publicity in the West confounds me.

I also second Matt’s enthusiasm with Bouldering becoming an Olympic event. I barely pay attention to sport normally, but I love that the Olympics showcases events that don’t involve kicking a ball. Or if they do, it’d likely be an accident, incredibly painful for the male player, and/or worthy of a penalty.

Which leads us to Beach Volleyball, and probably the briefest anime review I’ve ever done here. I watched Harukana Receive back in 2019 after reading a synopsis by Dee over at The Anime Feminist which gave me an appreciation for the sport I didn’t have before.

Screenshot from the opening of Harukana Receive

The series takes places around the island of Okinawa (I still find it funny that I want to explore the north of Japan, and Clara keeps wanting to island hop in the south! I’ll bet the weather is warmer). The colours and landscape backdrops are so bright and optimistic, I ended up using some as desktop backgrounds last winter.

Our protagonist Ōzora Haruka is enamoured with a couple of players she spots on the beach. She befriends and wins back a former player with a troubled past in the sport, and they all train together for a tournament over the course of the series. We learn about the rules and strategy in a surprisingly respectful and engaging way, like all good sports anime. The fan service is mild given the subject matter, though I’ll admit I wouldn’t have thrown together that quick montage below at a coffee shop (cough).

I won’t lie (as opposed to other times?), it gave me K-On! does Beach Volleyball vibes, with the same emphasis on friendship and personal growth among a cast of likeable and relatable characters (Haruka gave me serious Yui vibes). Episode 8’s shrine and coffee shop wanderings were my favourite, not that I’m predictable or anything. That’s my second mention of coffee shops in a post nominally about something else. I miss going to coffee shops.

Screenshots from Harukana Receive, including my favourite scene at the coffee shop in the lower-right.

Maybe now I can appreciate the real thing a bit more. Does this also mean I need to watch Iwa-Kakeru! (the first search result for “bouldering anime”) too? There’s really a series for everything. Would the Free! boys consider diving at some point?

This wasn’t among the most disjointed posts I’ve ever written, but it has to be up there. Before the ball reaches the ground.


Michael Franks, Heart Like an Open Book

Music

Today’s Music Monday takes me back to this site’s musical roots. Frankly I’m surprised it took this long for him to reappear. Get it, because his name is Michael… ah shut up.

Michael Franks has been my favourite singer/songwriter since I was barely old enough to understand what half his witty lyrics meant. Online guides pigeonhole him as a latin jazz musician, but his repotoure repotoire (damn it) repertoire has also included various forms of jazz funk, fusion, and even a sprinkling of pure 1980s electronica. His music never fails to bring a smile to my face every time he comes up on random.

Play Heart Like An Open Book

“Heart Like an Open Book” comes from his 1999 album Barefoot on the Beach. It was the first album of his that came out when I was old enough to leave the house and rush to the music store to buy it. My music player brought it up twice this afternoon, such was its motivation to remind me of its awesomeness.

These Porta Pro headphones recently lead me to rediscover the great bassline and drums on this specific track. Michael always had such excellent backing musicians.


The need for personal iRL concurrency

Thoughts

Concurrency… con currency… is that Bitcoin? Badda boom boom tish! Tish tish! Badda.

While I’m on a bit of a tear talking about rituals and metal thought processes, I thought I’d also mention something I started to do as a teenager. I’m not sure if programming made me think this way, but even today I have to see pretty much everything I do through the lens of what I can run in parallel.

(That was supposed to be mental thought processes, not metal. I can’t stand metal music. I’m enamoured with the material in laptops and structural framing, though. I miss Apple hardware back when they used magnesium, that was amazing. But I digress).

Take the morning routine I was rambling about over the weekend. I know that it takes a couple of minutes for the shower to warm up, so I shave my face while waiting. I know it takes me as much time to get dressed as it does to boil water, so I put the kettle on first. The kettle only runs when I’ve pre-ground the coffee the day before, otherwise I start grinding first, then boil the water while I’m tipping the grounds into the Aeropress so the water is the optimal temperature.

More specifically during Covid Times, I only go down to reception to pick up mail while I’m on my way back from buying groceries, to limit my use of shared lifts and hallways. I do an embarrassing amount of my podcast production and listening while cleaning. I watch engineering and Hololive YouTube while I eat and exercise.

And yes, it spills over to IT. I can’t update one FreeBSD jail, I have to do them concurrently in different tabs. Audio-only conference calls—the best kind—are when I also mindlessly sort and organise email.

Doing these things concurrently, and at the same time (as my illustrious dad would say) presumably came from the desire for efficiency. It doesn’t take a rocket surgeon or the sharpest spoon in the drawer to realise you complete a bunch of tasks faster if you do as many of them at once. It’s another manifestation of my need to feel like I have control over my environment and circumstances, something that is especially true during These Covid Times.

Unfortunately, it introduces the chance for error. My mental orchestrator is a well-oiled machine when things are predictable and going to plan, but throw a spanner in the works and suddenly all the spinning plates wobble and crash around my feet. The metaphors today are all over the place, like lipstick on a pig. That one didn’t even make sense.

There’s also a sense of paralysis when I have to make a decision about what to do, because I can’t perform tasks in isolation. What could I do at the same time morphed into what should I do, and now its what must I do. Yes, I conform my brain to RFC 2119, like a gentleman. Seeing the world through this rigid framework is frustrating, and leads to dissatisfaction and a sense that I’ve failed if I only perform a single task.

I’m also starting to realise that the gains I thought I was making from these increasingly complex processes are feeding anxiety in ways I didn’t understand until recently. There’s a reason mindfulness exists as a concept; there’s value in being deliberate, and excelling at one thing before moving onto the next.

Learned habits are hard. There are some things I’ll keep doing in tandem, but I need to give myself permission to smell the roses. By themselves, not while attempting to water them or perform gymnastics above them with a conference call going on my phone.


Using freebsd-update to upgrade jails

Software

My blog posts about FreeBSD’s fantastic jail container system have sparked interest, so I thought I’d touch on another aspect of their operation: what does the update process look like? Many of the guides online assume you’re using an orchestration tool like ezjail or iocage, but what if you’re like me and are just using FreeBSD’s internal tooling and ZFS snapshots to manage them?

Before we get started, let’s review the cardinal rules for upgrading jails on a FreeBSD system. Memorise them, they’ll be on the test:

  • Read the handbook. Bloggers like me write about what they’ve learned in the hopes it’s helpful, and interests people to give FreeBSD a try. The handbook is the canonical source of truth. No, not that Canoncial.

  • Don’t use freebsd-update(8) within jails. Run it from the host, as I’ll demonstrate shortly.

  • Don’t upgrade a jail to a newer system release than the host. If you do, Colin Percival will materialise in front of you and start reading off all your incompatible library files.

  • Name your jails after Star Trek ships, or anime characters. Okay it’s probably more useful to give them FQDNs, or at least name them after their function.

Walking through a binary upgrade

Say you’re like me and needed to update your prod home box with jails that run Plex, Samba, Netatalk, and Minecraft. It was running 12.2-RELEASE, and you used freebsd-update(8) to upgrade the host to 13.0-RELEASE.

First, you backed up your jails right? A ZFS snapshot, or at least made a tar archive of your jail folder? That’s a relief.

If you have your jails set to autostart on boot in rc.conf, all might appear well when you access them via SSH or jexec(8). But hold on, we have a problem:

holohost:~ $ uname -rs   
==> FreeBSD 13.0-RELEASE-p3
	
holohost:~ $ jexec ina /bin/sh   
==> "Welcome to the Takodachi, friend! Wah!"
	
ina:~ $ uname -UK   
==> 1202000 1300139

Our user environment version (-U) differs from the kernel (-K), which is inherited from the host. Remember that jails aren’t virtual machines; at least, not in the strict sense. I live in Xen land where PV exists, so those in glass houses…

We can use the same freebsd-update tool to upgrade our jails. Say I wanted to upgrade ina from 12.2-RELEASE to 13.0-RELEASE:

holohost:~ # freebsd-update -b /jail/ina \
	--currently-running 12.2-RELEASE -r 13.0-RELEASE \
	upgrade

Note the -b for the base directory of our jail, and that we’ve called out the version the jail currently runs. You may not have had to use these options before on a host, though the former might be familiar if you used bsdinstall(8) to install your jail, as I wrote about.

The process now is similar to what you’d run against a standard FreeBSD machine. You’ll be asked if the new packages look reasonable, and to confirm config files prior to merging. Now you can install the update:

holohost:~ # freebsd-update -b /jail/ina install   
	
==> Kernel updates have been installed.  Please reboot 
==> and run "/usr/sbin/freebsd-update install" again to 
==> finish installing updates.

Reboot your jail if it was running, then run install again:

holohost:~ # service jail restart ina
holohost:~ # freebsd-update -b /jail/ina install   
	
==> Completing this upgrade requires removing old shared
==> object files.  Please rebuild all installed 3rd party
==> software (e.g., programs installed from the ports 
==> tree) and then run "/usr/sbin/freebsd-update install" 
==> again to finish installing updates.

Log into your jail, and confirm the upgrade worked:

ina:~ $ uname -UK
==> 1300139 1300139

Nice! Now we can update our packages. Force pkg(8) to bootstrap again again so we pull the packages for the newer release, then do the upgrade:

ina:~ # pkg bootstrap -f
ina:~ # pkg update
ina:~ # pkg upgrade

You should see the newer build target shown for each package. Here’s Perl, and a package I just made up:

perl5-5.32.1_1 (ABI changed: 'freebsd:12:x86:64' -> 
	'freebsd:13:x86:64')
thank_you_poul_henning_kamp-1.0 (ABI changed: 'freebsd:12:x86:64' -> 
	'freebsd:13:x86:64')

Now back on your host, you can run install against the jail one more time:

holohost:~ # freebsd-update -b /jail/ina install
==> Installing updates... done.

Donezo!

Conclusion

I won’t lie (as opposed to all those other times?), I largely treat jails as compostable, a phrase I started using that sounds like composable, but with the implication that I’m recycling them. All my configuration, databases, and files are backed up and version controlled elsewhere, so I can stand up and install a new jail from Ansible or scripts. I tend to rebuild jails with these when performing large system upgrades as an opportunity to clean house, though generally on a separate ZFS dataset in case things go pear-shaped and I need to refer to the old ones.

Sometimes though, it’s just easier to upgrade. Isn’t that true of life?