Peloton for the Mind

What if “bicycle for the mind” never meant that it’s a way to speed up, but a way to exercise? Since in 2026 nobody uses bikes to exercise anymore, the more understandable metaphor would be “a Peloton for the mind,” an ergometer to get your mind-muscles into motion at all before they atrophy. Then the goal is not to be quick, to get stuff done – at least not for you, personally, – but to learn and do something interesting. The old-skool Hacker ethos. The vibe you still have in niche communities of embedded system tinkerers, of fantasy console game makers, of 6502 assembly fans, etc. etc. There’s infinite ways to have fun and learn with a computer. And there’s ways to make a living using a computer in various ways. If these two goals don’t align, you need a tool to make the chores go over as quickly as possible, so you have more time for the interesting things.

Continue reading …

FreeBSDKit: Swift Package to Write Capability-Aware FreeBSD Apps

Shout-out to FreeBSDKit:

FreeBSDKit provides idiomatic Swift, C and C++ interfaces to FreeBSD’s unique system features including Capsicum sandboxing, jails, process descriptors, kqueue-based signal handling, and inter-process communication with descriptor passing. The framework embraces move-only semantics (~Copyable) to model resource ownership explicitly in the type system.

“FreeBSD” hooked me, “move-only semantics” got me interested, “jail” made me read the README.

I only know about FreeBSD’s features from Oliver Epper, but everytime he talk about it, I want to play with the OS. These features sound generally useful to run applications in relative isolation without the Docker overhead. Having a genuinely attractive Swift package for this makes the urge to experiment even stronger!

FreeBSD Jails as an OS-level virtualization option in particular got me interested for NAS/home server work. Code snippet for jail management:

import Jails
import Descriptors

// Build jail parameters
var iov = JailIOVector()
iov.add(key: "name", value: "myjail")
iov.add(key: "path", value: "/jail/myjail")
iov.add(key: "host.hostname", value: "jailed.local")
iov.add(key: "persist", value: true)

// Create jail and get descriptor
let flags: JailSetFlags = [.create, .getDesc, .ownDesc]
var jailDesc = try SystemJailDescriptor.set(iov: &iov, flags: flags)

// Attach current process to jail
try jailDesc.attach()

// Remove jail (requires owning descriptor)
try jailDesc.remove()

Zettelkasten Productivity: Books Written per Books Ingested

Over on the Zettelkasten forums, Edmund Gröpl, in a post: “On Zettelkasten Productivity”, proposes to reframe the “how many books have I written” lifetime achievement number as “how many books have grown out of what I read”, showing how small the ‘tip’ of our productivity is compared to the huge foundation of what we read.

Continue reading …