Open source software, built in the evenings and mostly given away.
PCB Visualizer documents circuit boards. Kofte counts stitches. Macro Tracker is a food diary built on fifteen national food tables. Time Converter handles dates across time zones. I think software people trust with their data should be readable by those people, so I publish the source of nearly everything I make, and I write about the decisions behind it here.
Terje Rutgersen · southern Spain · MIT License
Projects
- PCB Visualizerlinux
Notebook for the debug interfaces of a circuit board. Runs locally, no account. - Macro Trackerandroid
Calorie and macro diary on fifteen national food tables. Offline, no account, and the scanner sends nothing. - Kofteandroid
Knitting counter. Offline, one-time purchase. - Time Converterchrome · firefox
Timezone conversion, no permissions, no network. - Neon Depthsweb
Browser roguelike, built in five days. - ORRERYwindows · linux
Live system map for Elite Dangerous. Reads the game's own log, no network. - BEDCA Databasecsv · doi
Spain's national food composition table as CSV. 957 foods, full provenance.
Principles
Offline first. Your data belongs on your device. My software runs locally, and its essential features keep working without a connection. A feature that needs the network is kept narrow, made optional where possible, and explained before you use it.
Open source. Most of what I make is published under the MIT License, including the server code and configuration behind the Macro Tracker. When a privacy statement says your data stays on your machine, you can check that in the code. If a project almost fits what you need, fork it.
No tracking. Nothing I make adds its own analytics or telemetry, and none of it needs an account. Google Play and the browser extension stores show me the install numbers and crash reports they collect for every listing. Each privacy statement says when data leaves your machine and where it goes. Ordinary visits to this website appear in a security log that is deleted after 14 days.
Free, or one price. Most of it costs nothing. Anything I sell, like Kofte, has a single price and no subscription.
Made to be read. These are hobby projects, and I build them on the assumption that strangers will read the code. That means tests, and a careful look at every dependency before it goes in.
Learning in public. I write about how each project was built, including the parts I got wrong. If you know a better way to do something here, I would like to hear it.
Writing
- A Notebook for the Board on My Desknov 2026 · hardware · tooling
- I Will Never Be Excited to Sharesep 2026 · opinion · self-hosting
- The Server I Said I Didn't Needsep 2026 · security · android
- Share-Alike Was the Whole Pointsep 2026 · opinion · android
- Fifty-Six People Wanted a CSV That Did Not Existaug 2026 · tooling · opinion
- A Royale with Gitaug 2026 · opinion · self-hosting
- Four Hundred Billion Stars and a Bad Mapaug 2026 · gamedev · tooling
- One Thing, Done Properlymar 2026 · privacy · android
- How Kofte Ships 16 Languages With Zero Librariesmar 2026 · android · localization
- Harden Your Web Servermar 2026 · security · self-hosting
- Host Your Own Websitemar 2026 · self-hosting
- Run Your Own VPNmar 2026 · privacy · self-hosting
- Deploy with Gitmar 2026 · self-hosting
- Automate Your Backupsmar 2026 · self-hosting
- The Wall of Shamemar 2026 · security · self-hosting
- Your Server Is a Jurisdictionmar 2026 · privacy · self-hosting
- CLI Cheat Sheetmar 2026 · linux · self-hosting
- Arch on the Desktop, Debian on the Servermar 2026 · linux · opinion
- Be a Bad Data Pointmar 2026 · privacy · opinion
- The Platform Phones Home Anywaymar 2026 · privacy · opinion
- Torrenting Was Right All Alongmar 2026 · opinion
Wall of Shame
This server has banned SSH brute-force attempts … times in the last two weeks. Bots scan every IP on the internet trying default credentials, and fail2ban catches them automatically. Here's how it works.
The last part of each address is cut before it is written to disk, so the full one never reaches this page and is not in the source either. It stays in the server's own log, where it is needed to actually block anything, and goes no further. An IP address identifies a person under EU law, and I have no legitimate claim to publish one: blocking an attack does not require naming the machine to you. Keeping the first three parts is a compromise. It is here because a wall of banned networks looks cool, and looking cool is worth something. It is just not worth more than the principles the rest of this site argues for, and those apply to whoever is on the other end of these attempts, some of whom are running a box someone else broke into first.
Your browser is showing two letters where those country flags should be. Windows ships no flag glyphs at all, and those letters are what a flag emoji is built from underneath, so Chrome falls back to them; Firefox bundles its own emoji font and draws the flag. The usual explanation is that drawing a flag means deciding what counts as a country, though Microsoft has never given one. Emojipedia keeps the list.