Skip to content
vx

Some of the pixels do things: try the sun or moon, the big tree and the windsock.

vxI write software meant to outlast the machine it runs on.

I write minimal init systems in C. The code is small enough to read in one sitting and sticks to POSIX interfaces where it can.

Role
Systems engineer
Focus
Init systems, POSIX C
Current
4suite / 4rc
Source
github.com/vx9k

Work

Small programs that each do one job, listed in the order they run.

4suite

github.com/vx9k/4suite ↗

A self-contained boot stack in C: init, rc, logger and user, each with its own scope and its own README.

Language
C
Target
Linux, BSD planned
Build
Ninja
License
MIT

Linux only for now. signalfd is a Linux interface; BSD support is planned.

Components

  • 4initshipping

    Minimal PID 1. Blocks signals and reads them through a signalfd, forks 4rc into its own session, then reaps children on every SIGCHLD. Inspired by rofl0r's minimal init.

  • 4rcin progress

    The service manager 4init starts. Early days: its own README says it “larps as being functional”.

  • loggerplanned

    Part of the suite's scope. Not started.

  • userplanned

    Part of the suite's scope. Not started.

website

github.com/vx9k/website ↗

A static Next.js export served from Cloudflare Workers. The landscape at the top is pixel art, drawn when the site is built and shipped as SVG. The trees move in a wind made of CSS, the sun swaps the palette, and the page reads in English, Spanish and Portuguese.

Language
TypeScript
Framework
Next.js
Graphics
SVG
Hosting
Cloudflare Workers

Principles

Three rules that decide most of my trade-offs before I write a line.

  1. Standards over shortcuts

    POSIX interfaces over vendor extensions. If a program runs on only one platform, someone decided that, and the decision needs a reason.

  2. One job, done predictably

    An init that only manages processes. A service manager that only manages services. Scope creep is usually the first sign something's about to become unreliable.

  3. Small enough to understand fully

    Code you can hold in your head beats code you have to trust. If I can't explain why a line is there, it doesn't stay.

Stack

Languages
C, TypeScript
Web
Next.js, React, Tailwind CSS
Tooling
clang-format, Ninja, pnpm, Git, GitHub Actions

Contact

I'd rather ship something small that I fully understand than something large I'm still discovering the edges of.

github.com/vx9k Source for this site