RSSAmplifier

Blog

Jan Tuomi

Minimalist, digital gardener, senior software engineer.

jan.systemsRSS feed ↗32 posts

Latest posts

Linux OCI containers as plain FreeBSD jails (without Podman)

Abstract : Linux software distributed as OCI container images can be extracted into a FreeBSD jail with Linux compatibility enabled. With a couple of mounts set up to make the extracted root a valid Linux userland, the "container" can run like a regular jail without involving virtual machines or a separate control interface ( podman ). Isolation is handled by the jail subsystem. FreeBSD has a…

🌱 Now, spring 2026

Planning the wedding, reworking my wardrobe. Home reno. Dogs playing in the dog park. Jojo (the shiba inu) breached containment one night. We were going to take him out on a walk but the dog was nowhere to be seen. The backyard gate was slightly open. We tried finding him by driving around the neighborhood. Some people on social media had seen him walking around so we tried to track him, but we…

A home server journey, part 5: Ansible

This is the fifth episode in a series where I set up a FreeBSD home server, explaining all the steps, problems and solutions along the way. This time we're provisioning the server with Ansible. Check out episodes 1 , 2 , 3 , 4 . Automation Ansible is a tool for running a bunch of Python scripts, or "tasks", in a kind of declarative way. It's commonly used for provisioning servers. My…

A home server journey, part 4: Networking

This is the fourth episode in a series where I set up a FreeBSD home server, explaining all the steps, problems and solutions along the way. This time we're looking at networking. Check out episodes 1 , 2 , 3 . Dual interfaces I already have a private network ( 192.168.0.0/16 ) that uses my pfSense router as its gateway. The FreeBSD server will connect to this network through ethernet…

A home server journey, part 3: Installation

This is the third episode in a series where I set up a FreeBSD home server, explaining all the steps, problems and solutions along the way. This time we're installing the OS for the first time. Check out episodes 1 and 2 . Installing FreeBSD Installation should be pretty straightforward. I'm going to go with the latest stable release installer ( 14.3-RELEASE ) in the amd64 + memstick.iso…

❄️ Now, winter 2025

Fall has gone by, fast. Mostly rain and darkness. Managing the estate of my late father has taken up a lot of time I would've otherwise spent on hobbies. Some decor and reno at home, some game programming, a lot of games. Game design has been on my mind a lot lately. I also attended my first ever Finnish defence forces reservist refresher training exercise. I had a good time! Metroidvania…

EuroBSDCon 2025: conference notes

EuroBSDCon is one of the events organized under the BSD community umbrella, focusing on all things related to and descending from 4.4 Berkeley Software Distribution. This year's event was held between September 25th and 28th in Zagreb, Croatia, but the city and country change every year. My event experience consisted of two days of "trainings", sometimes also referred to as labs, and two days…

🍁 Now, fall 2025

Late summer and early autumn have been a time of ups and downs. I lost my father to illness. The passing was expected, in a way, so I have had time to process things in advance, but when it actually happened it turned everything on its head for a while. Sorting out things after the death has taken a lot of time and effort, but things are now more or less in order. I have got a lot of support and…

A home server journey, part 2: Hardware

“My first impulse, when presented with any spanking-new piece of computer hardware, is to imagine how it will look in ten years’ time, gathering dust under a card table in a thrift shop.” ― William Gibson, Distrust That Particular Flavor This is the second post in a blog series chronicling my progress with designing and setting up a new, physical FreeBSD home server. Last time we went over my…

A home server journey, part 1: Motivation

This is the first post in a blog series chronicling my progress with designing and setting up a new, physical FreeBSD home server. I'm guessing this will become at least a three-parter, but that depends on how things actually go, and how in-depth I happen to write. This first part is about my motivations and requirements, whereas the latter ones will be more technical-deepdive-like. A…

☀️ Now, summer 2025

A torii gate in the Kenroku-en garden Here's three seasons of updates in one package. AutereDB project I was reading Designing Data-intensive Applications and I came across a chapter where the author goes over log-structured database architecture. I knew about B-tree based systems, but this seemingly simpler approach was new to me. I was intrigued, but I also felt like I didn't fully…

My pile of incomplete projects

The number of started projects and/or empty checkboxes in my to do list is getting out of hand. I have: > 7 hobby tech projects in a state where I need to put ”just a bit” more effort to them to get them to the finish line, 2 or 3 hobby tech projects that have an incalculable number of man-hours left, and a nebulous cloud of non-tech stuff that should be done (and preferably prioritized).…

jan.systems tech stack retro/prospective

I have a website authoring system that involves Obsidian sync and a hand-crafted static site generator (SSG) written in Scheme that: syncs Markdown files to my VPS compiles Markdown source files into HTML pages using pandoc parses and processes Markdown frontmatter as metadata builds an RSS feed from the pages builds the blog archive page that shows a time-sorted list of blog posts builds the…

MacOS: Opening Git commit prompt in active GUI editor

This is a quick, neat thing I happened to find on accident. As a result of the application bundle system that MacOS uses ubiquitously, you can figure out the currently open application with the __CFBundleIdentifier environment variable. $ echo $__CFBundleIdentifier dev.zed.Zed This bundle identifier uniquely identifies an installed application. Many editors or IDEs (Zed in my example) allow you to…

Path-conditional config and SSH key signing in `git`

Today I learned about two recent-ish Git features. Conditional configs Since Git version 2.13, it is possible to use different Git configurations based on values such as the current branch, or what's useful in my use case, path prefix: # File: .gitconfig [includeIf "gitdir:~/Projects/Work/" ] path = .gitconfig-work 🔗 includeIf in Git documentation I personally use separate Git…

🍁 Now, fall 2024

Home Dog dug up the yard and the new grass. Multiple times even. Planted some clovers to hide the bald spot. Fixed up a vine that fell down from the wall. Painted some rooms. The previous owner left them in a sorry state. Built a little bathroom shelf, a little nightstand and a sound diffuser. Getting the hang of woodworking. .gallery { display: flex; flex-flow: row wrap; margin: -10px; } .gallery…

🌞 Now, summer 2024

Home Yard work: some small landscaping, changed the topsoil to something less dry, and planted grass and flowers. Purchased a wine fridge for some reason. This led directly to... A new hobby Started learning about wines. Organized a wine tasting. My top pick: Domaine Laroche Chablis 1er Cru Les Vaudevey 2022. Wines from the tasting Career I passed the AWS Certified Developer Associate certificate…

Subjective review: Miru

A graphic from the first pages of the Miru zine with the text ”Time to kill a god” overlaid on an imposing four-eyed figure. TL;DR It’s my favorite solo game, but it has some pacing problems. 8/10. Miru, the solo analog adventure 🎲 Intended audience : people who are familiar with basic tabletop role-playing game concepts. Miru is a journaling solo RPG adventure by Hinokodo . Solo RPGs are…

Managing dotfiles in `git`

Dealing with dotfiles can be a nuisance. I use a method that I read about in this Git tutorial (which is in turn based on a Hacker News post). It is the most elegant approach I've come across. It does not need to clutter your home directory, it does not cause your shell prompt to show Git status info whenever you're in a subdirectory of $HOME . It stays out of the way, but is still…

Opening multiple DB tunnels with AWS SSM

To open a tunneled connection to an AWS managed database, such as RDS or DocumentDB, the commonly recommended way is to use a bastion host and aws ssm start-session . The bastion host is an EC2 instance that is in the same VPC as your database. The AWS CLI command allows you to connect to SSM-enabled EC2 instances from your development machine using IAM authorization, without having to manage SSH…

It doesn't mean that

When I learned my first programming language I learned about functions. A function is a thing you can call. The function might then return a value. Then I learned about functional programming And learned that those words did not mean that at all. Or at least that was not their full, universal meaning. Those functions were actually procedures . Or subroutines . A function should be mathematical and…

Directory aware `git`

Update 2024-12-22: The functionality described here is available natively in modern versions of Git, see more recent note Path-conditional config and SSH key signing in git . Update 2024-05-10: Fixed a bug in the provided script. Update 2024-05-14: Added user name and email config features. I have separate SSH keys and email addresses for personal projects and work projects. My work-related Git…

ATK16 – My homegrown computer

ATK16 is a learning project I've been working on for some time. It started off as a 16-bit, reduced instruction set computer (RISC) CPU design but evolved into an entire computer with peripherals and software. Instead of repeating myself, I'm going to direct you to the ATK16 project page . It's not complete by any means, but I've written a bunch about the project and my…

🌱 Now, spring 2024

Inches of snow are falling on the yard, covering any new green growths. The dog likes it, I don't. Your browser does not support the video tag. Travel Attended the QCon London 2024 in London Went to Tahko for a company leisure trip to downhill ski and snowmobile Music BLEK was live for 3 hours on student radio Radiodiodi with a dungeon synth genre deepdive program. According to metrics, 20…

Automatic slideshows with reveal-unfold.js

Lightning talk I recently presented a lightning talk about the IndieWeb and personal websites to my colleagues at the office. Even though I don't normally enjoy presenting, speaking about things I'm passionate about always turns out to be rather easy. The talk and the presentation that I used to support the talk were well received. A slide from the PowerPoint presentation Tinkering…

QCon London 2024 takeaways

QCon London 2024 was a multidisciplinary software engineering conference in the London QEII Centre in April 2024. I attended with the intention to learn about what's going on in the software-sphere. Especially in terms of software architecture. This was also my first time in the UK so I had to do some touristing. The weather was a bit chilly, half-cloudy with some intermittent drizzle. London…

Cookbook

This note relates to the project Cookbook . I have started a terse cookbook project for myself. Our household struggles with coming up with simple meals to prepare when doing the week's shopping. This should act as inspiration.

Cassettes

I like the idea of cassettes. They are cheap and analog, and there’s a culture of sharing and trading them. I like the sound of tape saturation and hysteresis. They feel much more approachable than vinyls. I dislike snobbery. So I bought a cassette player A Sony cassette recorder next to a pile of cassettes It’s a Sony TCM-459V and it’s only a bit noisy and wobbly. It can record too. After…

Deploying the garden

Every respectable tech blog must contain two posts: ”This site now has RSS” ”This is how this site is deployed” Other content is optional. Writing on the go Content updates go like this: I write Markdown in a special directory in my Obsidian Vault The change is synced to my Digital Ocean server via Obsidian Sync (I run an Obsidian process on my server) A file system monitor script picks it up and…

Diddle, a minimalist event scheduler

I don't like Doodle. It pushes ads and its premium subscription relentlessly while simultaneously feeling like a clumsy, lumbering beast. There is also a lot to be desired in terms of accessibility and mobile-friendliness. There are alternatives, like dudle or framadate . I could probably make do with those. However, to me this felt like an opportunity to spin up a quick MVP. This MVP turned…

There's an RSS feed now

As part of the site build process, I use pandoc-rss to automatically build an RSS feed of my posts.

❄️ Now, winter 2023

Currently Working on this site Doing small renovations and fixes to the house Learning Chicken Scheme and using it to build desmoctl and this website Reading Category Theory for Programmers by Bartosz Milewski Recently Purchased a 100 m2 terraced house Upstreamed some fixes to Spliit Started a project of reading more books. I never read much growing up so this is something I have to learn to do.…