Code

Outside of work I build self-hosted tools, personal websites, and whatever else catches my interest. Side projects are where I experiment with new technology and stay sharp since at work I stick to stable, mature frameworks. There is plenty more to see on my GitHub account.

Live

010

Eleven sites, one repo, one desktop at home. Every one of these is answering requests right now.

chat

Go SQLite llama.cpp

A conversation with a small model running on the card in my desktop, with tools for whatever it cannot know and an incognito mode that writes nothing down.

{
  "sha": "b03fc93",
  "message": "Add a live queue and notifications to chat",
  "date": "2026-09-29T01:43:36Z",
  "author": "Isaac Bythewood"
}

llm

Go SQLite llama-swap

One set of weights on one card in front of every service here that wants one, with a key per caller and every prompt and completion written down.

{
  "sha": "843399f",
  "message": "Close the log shipper in chat and llm",
  "date": "2026-09-28T23:19:51Z",
  "author": "Isaac Bythewood"
}

auth

Go SQLite Argon2

The front door to the rest of these. One account, a six digit code pushed to my phone over ntfy, and a session the other sites check against this one.

{
  "sha": "465aa69",
  "message": "Move ntfy links to buttons so a tap only opens ntfy",
  "date": "2026-09-25T19:29:18Z",
  "author": "Isaac Bythewood"
}

dash

Go SSE Vite

One page of markets, news, the weather, and the health of everything else here, all of it pushing itself over server sent events.

{
  "sha": "0b8dca7",
  "message": "Poll the live banner every 10 minutes",
  "date": "2026-09-29T02:11:57Z",
  "author": "Isaac Bythewood"
}

repos

Go Git SQLite

A git remote I push to over HTTPS, with a browser on top: commits, diffs, blobs and atom feeds. It mirrors my GitHub account too.

{
  "sha": "c0506d1",
  "message": "Fix raw answering 200 for a missing file",
  "date": "2026-09-28T23:19:51Z",
  "author": "Isaac Bythewood"
}

logging

Go SQLite Typst

Every site here ships its structured logs to this one, so a request I want to find is in one place instead of eleven docker logs.

{
  "sha": "96040b2",
  "message": "Fix undefined colours in the volume chart",
  "date": "2026-09-29T01:43:36Z",
  "author": "Isaac Bythewood"
}

status

Go SQLite Lighthouse

Uptime monitoring and public status pages, with Lighthouse audits and an SEO crawler on a timer and PDF reports out the other end.

{
  "sha": "465aa69",
  "message": "Move ntfy links to buttons so a tap only opens ntfy",
  "date": "2026-09-25T19:29:18Z",
  "author": "Isaac Bythewood"
}

analytics

Go SQLite GeoIP

Self-hosted website analytics: a collector, dashboards you can share without a login, a world map, and Typst PDF reports.

{
  "sha": "195ec99",
  "message": "Ship logs only from production images",
  "date": "2026-09-23T02:21:48Z",
  "author": "Isaac Bythewood"
}

blog

Go Typst Vite

Markdown files on disk and no database behind them, with live search, and a PDF and a social card built for every post.

{
  "sha": "f333ca6",
  "message": "Redirect old SVG card URLs to PNG",
  "date": "2026-09-23T02:36:24Z",
  "author": "Isaac Bythewood"
}

isaacbythewood.com

Go Vite Canvas

The site you are reading. Go and Vite with no third party Go dependencies at all, canvas animations included.

{
  "sha": "4c418fe",
  "message": "Remove search.bythewood.me since chat covers it",
  "date": "2026-09-23T17:18:20Z",
  "author": "Isaac Bythewood"
}

Active

002

orchard

Go Vite SQLite

Every site I run, in one repo, along with the shared Cloudflare Tunnel and Caddy that front them. It all runs from a desktop at home, this site included.

{
  "sha": "0b8dca7",
  "message": "Poll the live banner every 10 minutes",
  "date": "2026-09-29T02:11:57Z",
  "author": "Isaac Bythewood"
}
GitHub

taproot

Docker Shell

The dotfiles and containers I use to set up a machine for development, one to write code in and one that runs a local coding model.

{
  "sha": "2fd1cd0",
  "message": "Swap htop for btop",
  "date": "2026-09-28T23:06:09Z",
  "author": "Isaac Bythewood"
}
GitHub

Archived

021

Read-only snapshots. Some of these still run, rebuilt in a language they did not start in, and some are switched off for good.

isaacbythewood.com-nextjs

Archived Next.js React

The Next.js build of this site: a custom cursor, a page transition loader, and full canvas background animations. Replaced by the Go rebuild you are reading now.

GitHub

blog.bythewood.me-rust

Archived Rust Axum Typst

Single binary markdown blog: no database, live search, Typst PDF export, and great SEO.

GitHub

blog.bythewood.me-flask

Archived Python Flask

The Flask rewrite of my blog: markdown files on disk, no database, and no CMS behind it. Replaced by the Rust build above.

GitHub

blog.bythewood.me-wagtail

Archived Python Django Wagtail

The Django and Wagtail build of my blog, with a real CMS behind it. The last handcoded version, and where the blog spent most of its life.

GitHub

darkfurrow.com-rust

Archived Rust Axum

A living almanac of seasons, soil, and the quiet knowledge that used to be common. Taken offline, and I no longer own the domain.

GitHub

status-django

Archived Python Django SQLite

The Django build of my uptime monitor and status page builder, before it was rewritten in Rust.

GitHub

analytics-django

Archived Python Django SQLite

The Django build of my self-hosted website analytics, before it was rewritten in Rust.

GitHub

status-rust

Archived Rust Axum SQLite

Single binary uptime monitoring and status pages: HTTP probes, Lighthouse audits, an SEO crawler, and PDF reports.

GitHub

analytics-rust

Archived Rust Axum SQLite

Single binary website analytics: a collector API, dashboards, a world map, and PDF reports.

GitHub

timelite-nextjs

Archived Next.js React

Time tracking that never leaves your browser. No accounts, no sync, no server side state.

GitHub

repos-rust

Archived Rust Axum gix

A minimal self-hosted git browser. Bare repos as a website: commits, diffs, syntax highlighted blobs, atom feeds, and clone over HTTPS.

GitHub

finance-rust

Archived Rust Axum SQLite

A self-hosted market watcher for stocks, ETFs, indexes and futures, with live charts, key stats, fundamentals and SEC filings.

GitHub

dockerfiles

Archived Docker

All the Dockerfiles I used for various purposes, each with its usage notes at the top.

GitHub

dotfiles

Archived Shell Neovim

Config files for setting up a new system the way I like it.

GitHub

timestrap-django

Archived Python Django

Time tracking you can host anywhere, with full export in several formats and an extensible core.

GitHub

alpinefiles

Archived Shell Alpine

The files I ran on my Alpine Linux servers: Caddy, Docker, borg backups, and ufw.

GitHub

newtab

Archived JavaScript Chrome

A clean new tab page extension for Chrome, built to be taken and customized.

GitHub

ai-art

Archived Python PyTorch

Art generation with VQGAN and CLIP in docker containers. A simplified, updated and expanded take on the original notebooks.

GitHub

docker-teamspeak

Archived Docker Shell

A nice and easy way to get a TeamSpeak server up and running with Docker.

GitHub

docker-minecraft

Archived Docker Shell

An easy way to get a Minecraft server up and running with Docker.

GitHub

pinry

Archived Python

A tiling image board system. Development moved on to pinry/pinry.

GitHub