Loading

Blog

Technical writeups, devlogs, project case studies, and engineering updates.

September 08, 20262 min read

Algorithmic Trading Signals: From Indicators to Backtests

RSI, MACD, and moving averages are the vocabulary of signal engines — but turning indicators into a tradable edge is a statistics problem. This post covers signal construction, backtesting without overfitting, walk-forwa

Read More
September 05, 20264 min read

Building My Portfolio: Glassmorphism, MDX, and SEO on Next.js

My first portfolio was a Vite + React site. It looked fine and loaded fast, but Google could barely see it. No metadata, no sitemap, no structured data — so I rebuilt it on Next.js.

Read More
September 05, 20262 min read

Design Tokens and Theme Systems with Tailwind

A theme that survives a redesign is a token system, not a palette. This post covers the three-layer token architecture (primitive → semantic → component), CSS-variable theming with data attributes, dark mode, and extendi

Read More
September 03, 20262 min read

Crawling at Scale: Scheduling, Deduplication, and Storage

A crawler that fetches one page is a script; one that fetches a thousand is a pipeline. This post covers frontier management, politeness policies, content deduplication, incremental re-crawls, and storage decisions for c

Read More
September 01, 20262 min read

GitHub Automation with the gh CLI: Triage, PRs, and Workflows

The gh CLI turns GitHub into a scriptable platform: issue triage, PR review automation, workflow control, and cross-repo coordination from shell scripts. This post covers real automation patterns for maintainers and heav

Read More
August 31, 20267 min read

Transformers Explained: From Attention to GPT

At 1:15 AM on a Wednesday, I was staring at a matrix multiplication that refused to converge. The loss curve looked like a seismograph during an earthquake. I had been debugging a transformer implementation for six hours

Read More
August 29, 20262 min read

Running a Local LLM Proxy: OpenAI-Compatible Gateways

An OpenAI-compatible proxy in front of a local model turns every AI tool you own into a free, private endpoint. This post covers the gateway pattern: API compatibility, streaming, timeouts, caching, and routing between p

Read More
August 27, 20262 min read

Vite Plugin Development: Hooks, Transforms, and Virtual Modules

Vite's plugin API is how tools like Tailwind, sitemaps, and OG-image generators become one-line integrations. This post covers the plugin lifecycle, transform hooks, virtual modules, and building a real sitemap plugin fr

Read More
August 25, 20262 min read

Browser Automation That Looks Human

Undetected automation is an engineering problem: fingerprints, navigator properties, input cadence, and session persistence. This post covers stealth browser architecture — what detection systems measure, how to defeat e

Read More
August 24, 20265 min read

MLOps: From Notebook to Production Pipeline

My machine learning model had 97% accuracy in the notebook. It had 71% accuracy in production. The gap was not mysterious: the notebook used clean, preprocessed data. Production received raw data with missing values, inc

Read More
August 23, 20266 min read

Building RAG Systems That Actually Work: Lessons from Production

The demo worked perfectly. The documents loaded, the embeddings computed, the retrieval returned relevant chunks, and the language model produced fluent, accurate answers. Then I pointed it at real data and everything br

Read More
August 22, 20262 min read

Supabase as a Production Backend: Auth, RLS, and Realtime

Supabase gives you Postgres, auth, and realtime without renting servers. But production-grade usage means row-level security done right, session handling, and understanding what's free vs what costs. This post covers the

Read More
August 20, 202610 min read

Orchestrating 24/7 AI Agents on a Mac

At 2:47 AM on a Thursday, the agent I trusted to watch a price feed stopped answering. It hadn't crashed. It hadn't logged an error. The process was alive, the network socket was open, and the LLM loop had simply deadloc

Read More
August 18, 202614 min read

Building Custom MCP Servers: Extending AI with Tools

We’ve all watched the same demo: an AI agent confidently inventing a function name that doesn't exist, citing a file path that's 90% right, and producing a plan that would break CI within three hours. The problem isn't t

Read More
August 16, 20261 min read

Glassmorphism Is Back — and This Tailwind Plugin Makes It Painless

Frosted-glass UI is everywhere again — every dashboard, every AI chat sidebar, every "spatial" web app. But hand-rolling the effect means repeating the same four-line blur recipe in every component:

Read More
August 16, 20261 min read

Sitemaps Are Free SEO — Here's the Vite Plugin That Generates Yours

Every static site I've shipped has gone through the same ritual: build the site, then manually write a sitemap.xml, forget to update it when a route changes, and discover a month later that Google indexed half my pages.

Read More
August 15, 202615 min read

Building HELIOS: A Gesture-Controlled AI OS in the Browser

Every operating system is a set of physical metaphors, and most of them are stuck in 1984. I spent years punching a mouse to move rectangles across a screen, clicking tiny close targets, and dragging windows by title bar

Read More
August 13, 202613 min read

A Zero-Cost Stack That Actually Works: AuraFinance

For six months, my entire financial life lived inside a spreadsheet that had grown to 4,187 rows. It worked, in the way that a fraying rope works: nobody wants to test it. CSVs were imported by hand, categories were gues

Read More
August 13, 202612 min read

Building a Web Scraper That Survives: Anti-Bot Evasion Tactics

At 9:42 PM on a Tuesday, DoxDock hit production for the first time. By 9:47 PM, 47 pages in, Cloudflare had slammed the door. The request logs showed the pattern clearly: 200, 200, 200, 200, then a 403, then a challenge

Read More
August 13, 202614 min read

LLM Inference Optimization: From Quantization to Speculative Decoding

Two weeks before we pushed HELIOS into our production path, I watched a single request take down a serving node. The GPU had 80GB of HBM, the 7B model weights occupied only 14GB of it, and the request was a 4,000-token s

Read More
August 12, 202614 min read

Why Rust is the Future of Systems Programming

I spent the first two hours of a 2019 flight fighting error[E0505]: cannot move out of 's' because it is borrowed. By the time we landed, I had fixed exactly one function and learned to read the compiler's error messages

Read More
August 11, 202614 min read

Software Architecture for Solo Developers

When I greenfielded 3ni8ma — leetspeak for "enigma" — I had a microservices architecture in mind before I had a feature list. I sketched an auth service, a puzzle service, a scoring service, and an event bus to glue them

Read More
August 10, 202613 min read

Understanding GPU Memory: VRAM, Bandwidth, and Why Your Model Won't Fit

It was 1:47 a.m. on a Sunday, and I was watching a two-megabyte allocation kill eleven hours of work.

Read More
August 09, 202612 min read

Designing CLI Tools That People Actually Enjoy Using

Most command-line tools are designed for the computer that executes them, not for the human staring at the terminal at the end of a long day. I have written both kinds, and the first release of astro-tasks was aggressive

Read More
August 07, 202612 min read

Production ML Pipelines: From Notebook to Serving

In my first attempt at production machine learning, the model worked beautifully in the notebook. It had an AUC of 0.81 on a holdout set, feature importance plots that made sense, and a clean confusion matrix. Two weeks

Read More
August 06, 202615 min read

PostgreSQL Internals: What Happens When You Run SELECT *

Every developer has a SELECT story. Mine started as a dashboard query that was fast on my laptop, then fell apart when DoxDock finally had real users. DoxDock is a document search service that stores OCR’d PDFs, extract

Read More
August 05, 202614 min read

The State of WebAssembly in 2026: Beyond the Browser

It started with a memory graph that would not stop climbing. In 2021, I was iterating on the prototype that became knowledge-globe — an interactive 3D map of how research papers cite across disciplines. The force-directe

Read More
August 04, 202612 min read

Containerization Without Docker: Alternatives for Development and Production

Somewhere between a Friday renewal notice from Docker, Inc. and a Monday CI outage, we stopped treating Docker as a default and started treating it as a choice.

Read More
August 03, 202612 min read

React Server Components: A Mental Model Shift

I’ve spent the last year rebuilding my personal site with Next.js’s App Router, and the thing that broke my brain wasn’t the file conventions or the routing API. It was React Server Components. Every pattern I had intern

Read More
August 02, 202614 min read

The Architecture of Real-Time Dashboards: WebSockets, Polling, and Event Sourcing

The first version of Aura Finance's dashboard was a lie. It showed portfolio balances that were five seconds old, occasionally stale by thirty, and completely wrong whenever the WebSocket that fed the backend silently di

Read More
July 30, 202612 min read

Civic Tech and Open Source Data Platforms: Building CommunityOne

At 11 PM on a rainy Tuesday, I was doing what too many concerned residents do: clicking through a county website trying to find out why a zoning variance hearing had been moved. The notice was on page three of a "News" s

Read More
July 29, 202613 min read

Tracking 200+ Hours: Automated Pipeline Infrastructure for 100% Heartbeat Acceptance

I have a number sitting in a dashboard right now: 214 hours, 23 minutes. That is the amount of time I have spent with files open and code on the screen this year. Most people would read that number and think about discip

Read More
July 28, 202614 min read

Spatial Computing on the Web: MediaPipe + Three.js

The first time a Three.js cube followed my index finger across a laptop screen — no controller, no touchscreen, no click — I felt the same small shock I remember from the first time a GPS arrow moved as I walked. Then th

Read More
July 27, 202614 min read

Building astro-tasks: A Python CLI Developer Dashboard for NASA Space Apps

At 11:47 PM on a Friday in October, I deleted six hours of work without telling anyone. The file was 372 lines of argparse boilerplate, and it was the only thing standing between my team and a demo that was due in less t

Read More