2020 April 18 12:40

Last weekend – a week ago, on April 11 – we lost mathematician John Horton Conway to COVID-19. Princeton has published a remembrance, and there is a sweet (and clever) xkcd comic about his passing.

Most people – especially non-mathematicians – will know him as the creator of the Game of Life, but his work impacted many fields of mathematics. He is remembered as a brilliant mathematician and as a passionate and inspiring teacher. One of his Princeton colleagues called him a magical genius. Several of his students – from both Cambridge and Princeton – have left their own moving remembrances of him.

Growing up in Silicon Valley during the early personal computer revolution, I saw the Game of Life everywhere: on Sol 20s, Cromemco Dazzlers, Apple ][s, Commodore Pets, and even on a purpose-built machine at the Exploratorium. It feels like part of the fabric of my early life.

We have lost a singular mind and a singular personality.

RIP, John. You will be missed.

2020 January 21 15:25

Happy 2020!

Here’s to a new year, and to yet another chance to “do better this year”. I have a growing list of subjects that I want to tackle here! I’d love to see it getting shorter, rather than longer.

I decided to kick off the year by reflecting on the experience of using a Chromebook in a somewhat unconventional way.

I may be nearing the end of my patience with ChromeOS.

In order to use my Chromebook as an authoring tool – and to hack on muforth and various microcontrollers – I created a very simple, clunky chroot environment, based on Gentoo’s “stage3” tarballs. (I get mine from Oregon State’s Open Source Lab – it’s very fast here on the west coast of the US.)

Simply untarring one of these into ChromeOS’s /usr/local – after switching your Chromebook into developer mode, of course – yields a barebones but usable development environment. Since Gentoo is a source-based distribution, and the stage3 tarballs are the usual starting point for a Gentoo installation, they contain many useful programming tools, including GCC, Python, Make (and the GNU autotools), and bash. After adding Vim and Git – which I usually compile from source and install into my $HOME/bin directory – I’m ready to go.

The trouble is, using this command-line chroot environment requires using Chrome’s in-browser terminal emulator. Because this lives in a browser tab – like everything else in ChromeOS – it is subject to sudden and ruthless garbage collection when other tabs start to hog memory. Watching a handful of YouTube videos is often enough to trigger this.

There also seems to be a new kind of “persistent” memory leak in Chrome. After getting close to memory exhaustion it isn’t enough to close a bunch of tabs and windows. Post exhaustion, with a only a few tabs open, switching between tabs can cause my chroot sessions to be garbage-collected all over again. Restarting the machine is the only way to begin with a clean slate.

Chrome – and ChromeOS – receive frequent updates. Google’s story is that both get better as time passes. But my experience has been exactly the opposite. The Chrome browser seems to be getting buggier – and this memory problem is only one of several annoyances. And the UI changes to ChromeOS tend – in my opinion and experience – to be moves backward. One example is the change to the keyboard shortcut viewer, summoned forth by pressing Ctrl-Alt-?. This used to bring up a really cool on-screen keyboard that allowed you to see, in real time, what changed by pressing various modifier keys (Shift, Ctrl, Alt, Search). It allowed easy exploration, and suggested ways that various shortcuts were related.

The on-screen keyboard was replaced by a simple dialog with a search bar and various “categories”. This approach works when you know what you are looking for – except that coming up with the right category to search is often non-obvious – but it is terrible for exploration. It used to be that by changing a flag (in chrome://flags) you could bring back the old behaviour, but that too has been removed.

The system is getting buggier, and the UI is getting less and less useful and friendly – in my opinion. These changes, coupled with the frustration of having my chroot sessions randomly garbage-collected, have turned a fun and freewheeling environment into a bummer. Every day I move closer to reflashing the firmware with MrChromebox’s Coreboot/Tianocore UEFI, axing ChromeOS for ever, and installing something else.

But what should I install?

GalliumOS might be my best bet, but I’m expecting a lot of pain to get an OS of my choice set up. I’d love to run some flavour of BSD, but every time I tried booting FreeBSD with SeaBIOS – the only option if you are not willing to overwrite the core firmware on the machine – it failed when the FreeBSD kernel tried to write to the screen. The bootloader worked, but not the kernel.

The appealing aspects of this Chromebook – its low price ($270!), decent build quality, stellar battery life, good display, and totally quiet operation (no spinning disks, no fans) – are being eclipsed by the increasingly annoying software updates. To say nothing of Google’s insistent march toward evil robot overlordship.

Read the 2019 journal.