Full stack software developer in Seattle. I've been building for the web professionally since 2008 — starting with PHP and the LAMP stack, growing into Laravel and modern JavaScript frameworks, and more recently exploring Rust systems programming and mesh network communications.
I like connecting systems and people. Most of what I build serves a community or solves a communication problem. I care about idiomatic solutions, clean architecture, and not reaching for duct tape when the problem deserves a real fix.
Backend: Laravel · Rust (Axum) · Python · Node.js · TypeScript
Frontend: SvelteKit · Electron · Tailwind CSS · N[e|u]xt.js
Data: MySQL · Postgres · PostGIS · Redis · Shapefiles / QGIS
Infrastructure: Linux (Debian, Arch) · Nginx · Docker Compose · DNS · Dovecot / Postfix · GitHub Actions
Tools: VSCodium · Kiro · PlatformIO · Rust toolchains · GNU build tools
Exploring: Mesh networking (Reticulum) · Cryptographic protocols · Audio systems
On my radar: AWS CodePipeline · CloudFormation · Kubernetes · Kafka
Ferret RNS - A Rust implementation of the Reticulum Network Stack. I wanted to learn "best practices" in spec-drive agentic development on a project I could enjoy. I also wanted to experiment with some new features, such as additional CLI utilities and a new interface type for connecting over QUIC.
Reticulum QUIC Interface - A QUIC transport interface for the official Python reference implementation of the Reticulum Network Stack pairing QUIC's more efficient transport handling with Reticulum's built-in encryption philosophy.
Mane Mix — A music hosting platform I ported from a legacy C/C++ codebase to Rust with a SvelteKit 5 frontend. Handles uploads, streaming, albums, playlists, and FFmpeg-based transcoding. Deployed with Docker Compose, PostgreSQL, and Redis. The audio pipeline was new territory for me.
Manehattan — A social network I built in 2015 that had serveral thousand users at its peak. Currently rebuilding the codebase. Running a small social network for years taught me as much about reliability, user trust, and responding to feedback as it did about writing code.
Outage Monitor — Rust CLI that compares geospatial power outage data against a specific Seattle location and sends Telegram alerts. Async Tokio runtime, mutex-protected shared state, monadic error handling. I wrote it to solve a real problem in my own building.
I've spent much of my career in web frameworks, such as Laravel, building and maintaining production applications end to end: data modeling, API design, deployment, DNS, mail servers, the works. These days, I'm really fond of Typescript and Svelte for web development. I enjoy Rust for low-level code and performant event-driven projects. I'm comfortable deep in a Linux terminal configuring Nginx or Postfix, and just as comfortable in a frontend codebase making things feel right for users.
More recently I've been drawn to lower-level problems — designing protocols, writing concurrent Rust, working with geospatial data. I learn by building, and I tend to pick personal projects that stretch into something I don't fully know yet.
I like languages — human and interpreted. I'm actively studying Norwegian, Mandarin, and Spanish. I'm really fond of clean code, and I think the best code communicates effectively its intent to the next developer to read it.