A field guide to running real databases in the browser — SQLite-WASM, DuckDB, PGlite, and SurrealDB — plus the local-first movement and the search tradeoffs behind them.
Building a local-first RAG engine (Context Harness) and sharpening my agent tooling — shipping Claude skills and a token-killing CLI proxy across a Nix-managed fleet. On the side: hexagonal chess in Rust and far too much homelab. Updated June 2026.
We decided 'dynamic website' had to mean megabytes of JavaScript framework and a server to feed it. This series is about a heresy: a static site can be genuinely dynamic, with a real database doing th…
An honest writeup of running SurrealDB in the browser — not for search, but to get dynamic application state out of a static site generator on free hosting, with no SPA and no heavy JS framework. The …
New parents get a lot of advice about sleep. What they don't get is a baseline. Is my kid sleeping a normal amount? Is the longest stretch actually getting longer, or do I just feel like it does at 3a…
I wanted my blog to feel like a terminal — not in the lazy "monospace font and a green-on-black palette" way, but structurally. The model I kept coming back to was neofetch: an ASCII distro logo on th…
Local-first RAG engine in Rust — SQLite, hybrid search, Lua extensions, and an MCP server that hands your context to any AI tool.
Eight hex-chess variants in Rust/Bevy, compiled to WASM, with serverless WebRTC peer-to-peer multiplayer.
Nix Fleet, part 3. Part 1 covered the architecture; Part 2 made builds painless. This part handles the thing you must not commit to a public config repo: secrets. My whole system is declared in a Git…
Nix Fleet, part 4. The series so far: the one-flake architecture, remote builders, and fleet-wide secrets. This part is where it all gets pointed at bare metal — a 5-bay ARM NAS, installed declarative…
Nix Fleet, part 1. This post is the architecture overview. Later parts go deep on the pieces it depends on: cross-arch remote builders, fleet-wide secrets with agenix, and bare-metal install of a NAS …
Nix Fleet, part 2. Part 1 laid out the one-flake-every-machine architecture. This part solves the problem that makes a mixed Linux/macOS fleet painful: my laptop can't build Linux. When you develop N…
I've been running coding agents against real work for a while now, and the thing nobody warns you about is the output tax. Every time the agent runs git status, cargo test, or aws lambda list-function…
As an engineer, the context you need to do your job is scattered across a dozen systems: decisions made in chat threads, the why behind a change buried in a pull request, design rationale in a wiki pa…
Curated Claude agent skills shipped across my fleet as a Nix flake input via home-manager — version-pinned, reproducible.
Most "I built an AI agent" posts skip the unglamorous parts: how the environment gets set up identically on another machine, where the API key actually lives, and what breaks when you try to make it r…
Publishes all of your site's contents and relevant metadata into a SurrealDB SQL file. Serves this file from your site. Loads an in-memory SurrealDB database on the page. Enables full-text search over…
A Bash script that scaffolds a new Zola post — generating the frontmatter, date, and slug from the title so a fresh draft is one command.
Hello! Let's learn how to update your 3D printer's firmware and how to ask for help if you need it. Error Analysis The "cold extrusion prevented" error occurs when a 3D printer's firmware blocks extru…
Welcome to Lina’s Christmas 3D Printing Survival Guide! This special guide is designed to make your Christmas morning magical by introducing you to the fascinating world of 3D printing. With the Tronx…
Rust Memory Container Cheat Sheet and the Rust Container Cheat Sheet. These visual aids provide concise and clear representations of Rust's memory containers, aiding in understanding their structures …
Mastering C with Effective C: Introduction to Makefiles Introduction Welcome to the first post in the "Mastering C with Effective C" series! In this post, we'll explore the basics of Makefiles and how…
Upgrading Your C Project Build to Use Nix Flakes: A Modern Guide Hello again, fellow C enthusiasts! In our previous blog post, we explored building a C program with external library dependencies using…
Welcome, fellow C enthusiasts, to a whimsical journey through the world of library dependencies in C programming! This is the second post in the series "Mastering C with Effective C" series! Not at a…
The index for my Mastering C series — working through Robert Seacord's Effective C as a Rust dev before moving on to Zig.
A beginner-friendly walk through rendering a rotating 3D cube in the terminal with C — projection math, trig, and a simple animation loop.
Idea: build a website of "recipes that do not exist" Build a website and training data, generate a recipe page with a hero image The Website https://medium.com/technest/build-a-food-blog-with-next-js-…
Graph Algorithms in Rust: Breadth First Search (BFS) coming soon Reference Implementations HTTrack Cyotek WebCopy Content Grabber ParseHub OutWit Hub spidy Evine https://github.com/rivermont/spidy h…
Part 2 in the series Graph Algorithms, Implementing Breadth First Search (BFS) in Typescript. For a primer on BFS and it's applications and procedure, read Part 1: Graph Algorithms: Breadth First Sear…
Graph Algorithms: Bredth First Search (BFS) In preparation for programming interviews, and generally improving my own understanding of algorithms I've decided to put together a series of blog posts ab…
The companion repo for this post can be found here: This is a post detailing my progress on building an Emulator in Rust. This isn't something I'm building from scratch, but in pursuit of learning rus…
A no-frills link-in-bio landing page — HF/ham radio contacts, Keybase verification, payment info, and a pointer to the devlog.
I decided I had to pull the trigger on my web domains.
A custom Jotform widget that looks up parcel data from ArcGIS by ID — a small embedded form-field demo from 2021.