RSSAmplifier

Blog

(untitled)

fossable.orgRSS feed ↗12 posts

Latest posts

Attest: a refreshingly simple test framework for the age of AI

perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away Terre des Hommes (1939) - Antoine de Saint Exupéry How could the world possibly need yet another test framework? Anytime you see a space with a bunch of competing tools, it's a signal that there's a hard problem somewhere under the covers. Of course, I don't…

The formatter is always right

[!WARNING] This page exists deep within bikeshed territory, proceed at your own risk! Unformatted code is like a dirty car. Yeah, it can take you from point A to point B just as well as a clean one, but no one else wants to get in your car (join your project) unless they have to (forced by a manager). What baffles me is that, unlike cleaning your car, formatting your code takes literally one…

Control is effort

Here's a story that perfectly captures " control is effort ". I was searching for a robot vacuum that would work in "local-only" mode without having to connect to a cloud of any kind. That way I would have full control over the device and wouldn't be relying on the Internet for my floor to get cleaned. It didn't take long before I came across valetudo.cloud . Their subtitle is Free…

Virtual Estate

When I encounter the term digital estate , it's almost always when someone has died and it's now time to figure out what to do with their Internet remains. Should they be deleted, inherited by next of kin, memorialized, etc..? Technically, digital estate exists long before that point, but it's usually not referred to as such. My simple definition is: Digital estate is the collection…

What I would have spent my Bitcoins on (if I hadn't lost them in 2011)

My story isn't as sad as some. I didn't spend a billion dollars on a pizza or lose millions from an accidental rm -rf of a wallet. Instead, I got involved in Bitcoin mining pretty early on using a NVIDIA GeForce 9500GT when I wasn't gaming. Even back then with a block reward of 25 BTC, it was becoming difficult to mine a block on your own, so I mainly mined with a pool of other…

Unlicensing

I initially chose the AGPL license for Fossable's SaaS projects because I wanted to make sure that no one could run their own derivative services without also making them free and open source . AGPL is about the strongest copyleft license you can get; even running a server requires its source code to be made available to users. That all sounds great to me, but a dozen paragraphs of legalese…

Why isn't 'mkdir -p' default?

mkdir: cannot create directory ‘/tmp/test/123’: No such file or directory It happened again - you forgot to create the damned parent directory first. Of course, mkdir can do it with the addition of a paltry -p flag. Now you commit a three-character change and re-run the failing CI job for the eighth time in a row. I've written quite a few shell scripts in my life. In every…

A journey through operating systems and time

This is a personal history of all the major operating systems I've used over the decades. Maybe this will be interesting for someone to read, but I'm mainly writing it down in case I forget. Windows 95/ME (2001 - 2003) As a millennial, my first ever computer experience was with a big beige CRT monitor/computer running Windows 95. It belonged to someone at my parents'…

7 years of development: discipline in software engineering

June 7th 2025 marks 7 long years of development on Sandpolis , an attempt to build the ultimate remote administration/management tool for sysadmins like you and me. For 7 years I thought about and/or worked on this project almost daily, and yet it's still nowhere near being finished, not even MVP-level. Am I the worst software developer ever to touch a keyboard? Unlikely :) Quite a…

Logging Etiquette

[!WARNING] This page exists deep within bikeshed territory, proceed at your own risk! What log message do you think is better? Starting the car Started the car successfully Logging after the thing happens (AKA past tense) gives you the opportunity to include additional information like perhaps "how long did the operation take?" or most importantly: "did the operation succeed or fail?". Logging…

How not to get locked out of your AWS account

A few weeks ago, a nightmare-level situation began to unfold. A routine login attempt to the AWS console for fossable.org suddenly hit me with an email verification challenge: My choice of recovery email for the root account was a bit of a problem. It actually belonged to the fossable.org domain itself, hosted by an email server within the very same AWS account I was trying to login to. A server…

IaaC guide with NixOS on EC2

I've been refining the way I do IaaC and immutable infrastructure for years. Before I switched to NixOS, I had enormous Ansible playbooks that configured everything imperatively. My playbooks are much simpler now, with most of the configuration declaratively specified in configuration.nix . Here are the main tools in my current workflow: Packer (for building AMI images) Ansible (for handling…