Blog

Writings & Thoughts

Sharing what I learn along the way.

Building an App That Refuses to Guess

I built a financial planning tool for my own situation and then started turning it into a product. The rule that shaped it: when a required fact is missing, say so, rather than producing a confident number.

Personal FinanceDeterminismArchitectureTypeScript

What Launching Billing Taught Me About Getting Paid

ResuPals went from a free client-side tool to a product with accounts, plans, and Stripe. Every hard lesson was about the gap between a payment starting and the money actually arriving.

StripeNext.jsCloudflareProduct

Taking the Machine Fingerprint Off Agent Output

Three portable agent skills that strip the tells out of AI prose and code. Why the signal sits above the word level, why every rule carries an evidence grade, and why I refused to build it against a detector.

AIAgentic CodingAgent SkillsWriting

Electra v1: The Agent Orchestrator I Built to Find Out What I Wanted

An always-on host running a Telegram-fronted agent gateway and a task orchestrator, dispatching coding agents across isolated identities. It worked well enough to show me what I actually needed instead.

Agentic CodingOrchestrationSelf-HostingLinux

Measuring a Room and Keeping the Disagreements

A weekend floor planner built because a sectional was arriving and I needed to know if it fit. The useful part was refusing to resolve measurements that did not agree.

ToolsGeometryTypeScriptThree.js

Rebuilding Ephemera as a Zero-Knowledge Secret Sharing App

Ephemera v2 is a ground-up rebuild. Client-side AES-256-GCM encryption with keys the server never sees, a reveal gate that stops link previews from burning one-time secrets, real tests, and a migration path that upgraded the live database without downtime.

Next.jsTypeScriptWebCryptotRPCPostgreSQLSecurityTestingEncryption

Building the Throwaway Version First

I spent a weekend building an MVP of an app I actually want to make properly, with no intention of shipping it. The point was to find out which decisions were real.

PrototypingArchitectureProduct

Generating a Thousand Years of History, and the People Living in It

Procedural history written as a prefix on an existing change log, and a population that is derived on demand rather than stored. Two problems that turned out to have the same shape.

Procedural GenerationArchitectureDeterminismTypeScript

Agentic Coding in a Production Monorepo: The Harness Matters More Than the Model

How I actually use coding agents like Claude Code and Codex day to day - and why guardrails, not prompts, are what make them safe in a real codebase.

AIAgentic CodingClaude CodeDeveloper Experience

Space, Time, and Knowledge: Modeling a World as One Graph

How a character creator turned into a world engine, and the three-axis model that made almost every feature after that a question of where a new entity sits rather than what new system to build.

ArchitectureData ModelingProcedural GenerationTypeScript

Google Maps for a Fantasy World, and Why I Did Not Build That

Infinite zoom from a continent down to a single room sounds like a tile pyramid. For a procedurally generated world it is a trap, and nested documents are the better answer.

Procedural GenerationArchitectureSVGTypeScript

Deploying Ephemera with Coolify and Traefik

A deep dive into deploying a Next.js application with PostgreSQL on a self-hosted Coolify instance, troubleshooting Traefik routing, health checks, and Docker networking.

CoolifyTraefikDockerNext.jsPostgreSQLSelf-Hosting

I Scraped Every Rental Listing in a City to Pick a Neighborhood

A weekend tool that pulled rental listings into SQLite, tracked price changes over time, and told me which listings were actually a good deal instead of just new.

ScrapingSQLiteTypeScriptTools

Building ResuPals - A Privacy-First Resume Builder

How I built a fully client-side resume and cover letter builder with friendly mascot characters, focusing on privacy, ATS compliance, and user experience.

Next.jsTypeScriptPrivacyUX Design

Building My Homelab - Virtualization with Proxmox

How I built a production-grade virtualization platform using Proxmox VE to run multiple isolated services with VM lifecycle management and operational best practices.

ProxmoxVirtualizationHomelabLinux

Self-Hosting with Coolify and Cloudflare

How I deployed my portfolio and other web applications using Coolify as a self-hosted PaaS with Cloudflare for DNS and TLS.

Self-HostingCoolifyCloudflareDevOps

Secure Remote Access with Tailscale

How I use Tailscale to create a secure overlay network for remote administration without exposing management ports to the internet.

TailscaleSecurityNetworkingHomelab

Scaling Minecraft Servers to 100+ Concurrent Players

Lessons from running community Minecraft servers at scale, including performance tuning, monetization, and operational workflows.

MinecraftGame ServersScalingCommunity

Building Observability with Prometheus and Grafana

How I built a monitoring stack with Prometheus metrics, Grafana dashboards, and Discord alerting to maintain visibility across my infrastructure.

PrometheusGrafanaMonitoringDevOps

Network Segmentation with Unifi

How I designed my home network around security boundaries and controlled ingress using Unifi networking gear.

NetworkingUnifiSecurityHomelab

Building a Cosmic Portfolio with Next.js

How I designed and built a unique portfolio website with an animated black hole background using Next.js and Canvas.

Next.jsDesignCanvas

Building a Minecraft Server Consulting Business on Fiverr

How I ran a freelance consulting business helping clients build, optimize, and scale their Minecraft servers.

FreelanceMinecraftConsultingJava

5 TypeScript Tips I Wish I Knew Earlier

Practical TypeScript patterns and techniques that will level up your code quality and developer experience.

TypeScriptJavaScriptTips

Running Atomic Linux on Framework 16 with Bazzite

My experience running Bazzite, an immutable Fedora-based OS, on a Framework 16 laptop for development and systems work.

LinuxBazziteFrameworkFedora

React Performance Patterns That Actually Matter

Practical performance optimization techniques for React applications, focused on real-world scenarios.

ReactPerformanceJavaScript