brenhill.net

Now

updated 2026-05-26

Trying to be a better softball coach, and a better father to my two daughters, than I was yesterday.

Figuring out what stays on the priority list and what gets to fall off. Some days, barely keeping it together.

Sad about the German exchange student we’ve hosted all year heading home in a few weeks.

And in the late-night hours where I’m fighting to stay awake — applying agentic AI coding tools to the work. They take the tedium out of writing code, which is helping me find my passion for creating things again.

Reading Now

  • Dungeon Crawler Carl (series) · Matt Dinniman

Watching Now

  • Star Wars: Maul – Shadow Lord

Eating Now

  • Self-Made Charcuterie

Drinking Now

  • Chianti Classico tasting at Porto Vino · Porto Vino

Projects

  • The civil-engineering software I lead at Dimensional Solutions, Inc. — Foundation3D, Mat3D, and Shaft3D — a desktop product suite used in production by engineers to design code-compliant foundations, back-calculate loads on existing structures, and track project materials. Currently piloting its evolution to a three-tier server architecture.

    C# · .NET 8 · WPF · MVVM · Prism · SQL Server · Azure DevOps

    notes · site

  • Riftward

    active

    A browser-based 2D top-down pixel-art space game in the buy-to-play multiplayer sandbox category (Valheim / Factorio / V Rising shape). Authoritative Node.js server, WebSocket realtime, one seeded procgen galaxy per server. Currently in alpha playtest.

    TypeScript · Node 22 · Vite · Canvas 2D · WebSockets · zod · SQLite · Fly.io · Cloudflare Pages · Vitest · Biome · GitHub Actions

    notes

  • An interactive graph visualization mapping relationships between chefs, restaurants, winemakers, and wineries — type a name, see a force-directed graph of mentors, alumni, sister labels, similar styles. Click any node to recenter on that entity. Alpha, Houston-chef-scene seed dataset.

    TypeScript · Next.js 16 · React 19 · React Flow · Tailwind 4 · zod · Cloudflare Workers (OpenNext) · Cloudflare R2 · Anthropic API · Vitest · ESLint

    notes · site

  • Ranks Texas retail electricity plans by projected annual cost using your actual smart-meter usage, not the generic 500 / 1000 / 2000 kWh benchmarks PowerToChoose advertises. Pulls plan listings and per-REP Electricity Facts Labels, applies each plan's pricing structure to your real consumption. Engine and UI in progress.

    Python 3.12 · uv · FastAPI · Jinja2 · HTMX · SQLModel · Alembic · Postgres 17 · Cloudflare R2 · pdfplumber · uPlot · Docker on Synology · Cloudflare Tunnel · pytest · ruff · pyright · GitHub Actions

    notes

  • Monte Carlo lineup simulator for 8U coach-pitch softball — feed it season and two-game batting stats, get a ranking of lineup orders by expected runs over N simulated games. Pseudo-AB shrinkage toward team mean so a 4-for-6 weekend doesn't dominate the projection.

    Python · stdlib only · Monte Carlo · argparse CLI

    notes · repo

  • Nightly tracker for Royal Caribbean and Celebrity casino-club offers and sailing prices. Reads the cruise lines' own JSON and GraphQL endpoints rather than scraping the DOM, keeps every observation in Postgres, and emails each user one digest per run when a watched sailing moves. Invite-gated alpha.

    Node 22 · Express · Postgres 17 · Playwright · Resend · Docker Compose on Synology · Cloudflare Tunnel · node --test

    notes · site

  • Price Watch

    active

    Scheduled price collector for things I want to buy, flights included. Tiered fetchers step up from plain HTTP to a headed Chromium session for retailers that refuse headless browsers, every reading lands in Postgres, and an alert fires when a rule becomes true. Deploys itself from main every five minutes.

    Node 24 · Postgres 17 · Playwright · Xvfb · Cloudflare Access · Resend · ntfy · Docker Compose on Synology · node --test

    notes

See the CV for work history.