available for work

Charlie Tonneslan.

Software engineer. The work I keep coming back to is civic and urban: housing, zoning, transit, civil infrastructure, and the policy that shapes them. Plenty of backend and developer tooling on the side, mostly Go.

Lately I've been shipping bug fixes into jackc/pgx, nats.go, wails, urfave/cli, and colly, with around 150 more PRs open across the Go, Rust, and Python ecosystems.

§ about

I'm a software engineer. The work I keep coming back to is civic and urban: housing, zoning, transit, civil infrastructure, and the policy that shapes them. Day-to-day I'm in TypeScript and Go, with some Python and Rust mixed in.

A lot of my time goes to open source. So far that's meant shipping bug fixes to Tailscale, LiveKit, etcd, pgx, gRPC, and a bunch of other Go projects. Good way to learn how large codebases actually work and to ship something other people use.

Looking for software engineering roles, especially anywhere code meets cities, planning, or public infrastructure.

What I Work With

TypeScriptPythonGoRustReactNext.jsNode.jsFastAPIPostgreSQLRedisDockerAWS

Focus Areas

Civic TechUrban PlanningHousing & ZoningTransit & InfrastructureDeveloper ToolingOpen Source

§ projects

littledb

Tiny embedded key/value store in Go. Single-file ACID with a copy-on-write B+tree, two-meta-page commits, and MVCC-style snapshot reads. Around 1,500 lines. Benchmarks within 5% of bbolt on writes (both bottleneck on fsync); ~6x slower on reads because there's deliberately no mmap.

GoB+treeCopy-on-WriteCRC32C

A real-asset civic tool, not a data viz. 5,000+ housing developments, zoning permits, transit projects, and capital infrastructure investments in Philadelphia, joined against 408 ACS census tracts, 10 council district polygons, 239 Registered Community Organizations, every city council member's contact info, 4,212 OPA property owners (the shell-LLC pattern catcher), and 6,400+ L&I displacement signals (demolition permits + housing-code violations). Postgres tsvector full-text search. Top-applicants and top-owners leaderboards. Per-district briefing pages with year-by-year activity charts. Status-history accountability tracker for stalled projects. Equity overlay choropleth on the map. Mobile bottom-sheet for organizers at meetings. /this-week content homepage with weekly aggregations. RSS feeds per district. Dynamic next/og preview cards for every project and district. Sitemap.xml so project pages are Google-indexable. /embed iframe for blogs and CDC sites. Public JSON API at /api/v1. Cited methodology page. Email alerts and weekly per-district digests via Resend. Built for council aides, organizers, and reporters.

TypeScriptNext.js 16MapLibre GLPostGISCensus ACSnext/og

Interactive map of 6,500+ affordable-housing projects across six U.S. cities (NYC, SF, LA, DC, Chicago, Philly), unified into one Postgres + PostGIS schema. Adds a census-tract rent-burden choropleth, a supply-demand gap analysis (burdened households per nearby affordable unit, pure PostGIS spatial join), and a stakeholders panel that surfaces the elected representative for any clicked development.

TypeScriptNext.jsPostgresPostGISLeafletCensus ACS

fourth-down-audit

NFL 4th-down decision audit. Trained a new XGBoost win-probability model on 300k plays of nflverse pbp; held out 2024 and landed at log-loss 0.465, within 0.3% of nflfastR's bundled WP model on the same plays. Added a conversion logit, an FG-make logit, and an empirical punt-net lookup, then scored every 4th down in 2018-2024 with 1,500-iter bootstrap CIs per coach-season. The dashboard ranks coaches by WP lost with confidence-interval bars, filters by situation (red zone, two-minute, own territory, FG range) and decision type, and on click pops a play drawer with the three-option E[WP] breakdown and an animated WP curve over the surrounding plays.

PythonXGBoostDuckDBNext.js

flamectl

Render a pprof profile as a single-file interactive SVG flamegraph. Takes input from a file, an HTTP URL, or stdin; emits one SVG you can open in any browser. About 600 lines of Go with hand-rolled tree aggregation and SVG layout.

GopprofSVG

agent-eval

Evaluation framework for agentic LLMs, built from scratch with the Anthropic SDK. 28 tasks across web, code, multistep, and reasoning, scored with a mix of deterministic checks and LLM-as-judge rubrics. Reports per-category pass rates with 95% confidence intervals because n=28 means real uncertainty.

TypeScriptAnthropic SDKLLM-as-Judge

Tune into about 5,000 live internet radio stations from a spinning 3D globe. Pick a country, click any glowing marker, hit play. Built on Next.js, Three.js (via globe.gl), and the volunteer-run Radio Browser API. The whole thing runs in the browser, no backend.

TypeScriptNext.jsThree.jsTailwind

§ open source

Bug fixes, race conditions, and edge cases I've run into in the wild. Mostly Go and Rust.

notable

other

§ stack

languages

TypeScript, Python, Go, Rust, SQL

frontend

React, Next.js, Tailwind CSS, Framer Motion

backend

Node.js, FastAPI, Gin, Express, GraphQL

data & ai

PostgreSQL, Redis, DuckDB, Anthropic SDK, Pandas

infra

Docker, GitHub Actions, AWS, Vercel

practices

CI/CD, Testing, Code Review

§ contact

Looking for software engineering roles, especially anywhere code meets cities, planning, or public infrastructure. If you're hiring or want to collaborate, drop a line.