READY.

LOAD"PROJECTS",8,1

Projects

Things I have built and still use. Everything here is public, most of it is GPL-3.0, and all of it exists because I wanted it on my own machine first.


FPGA

WEFT (WEFT Elaborates FPGA Toolchains) – an MCP server that gives an LLM client a structured interface to an Intel Quartus Prime 25.1 flow: lint and simulate in seconds, compile asynchronously, and read the results back as JSON instead of megabytes of log. Python, GPL-3.0, with its own CI, container build and documentation.

<<< GitHub >>>

<<< DOCS >>>


Terminal tools

hyprtilt – a keyboard-first TUI and command line for arranging and rotating Hyprland monitors. It edits your own configuration in place inside a managed block, both the Lua form (hl.monitor({...})) and hyprlang (monitor=...). One static Rust binary, no daemon, no sidecar files.

<<< GitHub >>>


LazySubmodules – Git submodules that track branches, tag patterns or fixed commits instead of only a detached SHA. A scriptable command line and an interactive TUI, with a lock file. Written in Go; lsm is the short name.

<<< GitHub >>>


mtsh – a zsh prompt that reports the state you would otherwise have to ask for: the clock, the machine, where you are, and what git thinks of it. One frame per command, and it does not make you wait for it.

<<< GitHub >>>

<<< READ MORE >>>


Local inference, local notes

Three projects that share one rule: nothing leaves the machine.

SHUTTLE – a local-inference layer for coding agents. Your files are read by llama.cpp on your own hardware instead of being pushed into the agent’s context. MCP server, rootless Podman, no egress, cited answers, and every number in the README measured rather than asserted.

<<< GitHub >>>


glosator – turns a PDF textbook into sequential, linked Obsidian notes: one note per section, with a summary, a plain-language explanation, the formulas, the figures cropped from the page, a bilingual glossary and the pitfalls the source warns about. A glosator is the person who writes glosses on a difficult text, which is exactly the job.

<<< GitHub >>>


tachygraf – the sibling of glosator, for recordings instead of books. It turns a recorded lecture into a verbatim transcript and a set of linked study notes, with a timestamp and a block ID on every paragraph, so every claim in a note links back to the moment it was said. A tachygraf is the ancient shorthand clerk who took speech down as it was spoken.

<<< GitHub >>>


Shell and system

GnuRAMage (gramage) – a GNU RAM disk synchronization tool written in bash: keeps a RAM disk in step with an HDD, with project exclusions.

<<< GitHub >>>

<<< READ MORE >>>


AutoGit-o-Matic – periodically pulls or fetches git repositories, for when the same work lives on several computers.

<<< GitHub >>>

<<< READ MORE >>>


setup-DotFiles – sets up a fresh Arch Linux workstation, one question at a time: the packages, docker, the SSH key, the dotfiles. The arch branch installs with pacman and yay only; the Debian and Ubuntu versions live on their own branches and share no code path with it.

<<< GitHub >>>

<<< READ MORE >>>


podman-wrk – builds a developer container on the machine that has a network, writes it to one file, and loads it on the machine that does not. Everything — plugins, parsers, language servers — is fetched at build time, and the build fails if any of it did not land, because finding out what is missing on an air-gapped host is finding out too late. One shell script, one Containerfile, no daemon and no registry. Public domain.

<<< GitHub >>>


dockd-cmake3dot5-git – my first AUR contribution: a packaging of the Lenovo ThinkPad dock management daemon, built against the CMake version it actually needs.

<<< AUR >>>

<<< GitHub mirror >>>


Notes and the web

Copilot Export JSON to Markdown – converts a GitHub Copilot JSON export into Markdown, as a Python script and an Obsidian plugin.

<<< GitHub >>>

<<< READ MORE >>>


hugo-theme-c64-boot – the theme this site is wearing. A Commodore 64 that has just been switched on: the page is the screen, the navigation is the 1541 disk directory with real block counts, and the errors are the ones the machine printed. No external requests, eight palettes, works without JavaScript.

<<< GitHub >>>

<<< DEMO >>>