Web Apps

Vibe coding a web app

How good are the latest and greatest LLM agents?

September 20, 2025 | ~1600 words | 8 min read

I built a simple Streamlit web app for a DIY electrolyte mix recipe. Embracing the "vibe coding" lifestyle, I decided to let a Claude agent do most of the work for me. Here's how it went. (Spoiler: pretty good but far from perfect)

Strava Noise Reduction

Messing around with Kalman filters to fix noisy Strava activities

September 26, 2022 | ~2500 words | 12 min read

I use Strava to track my runs, and sometimes I'm annoyed with how noisy the GPS tracks are. I recently learned about Kalman filtering, a methodology for smoothing noisy data. Let's see if it can solve my Strava problem. Plus, a small Flask app that integrates with the Strava API.

Should My Fantasy Football League Change Our Defense Scoring Settings?

Analyzing the impact of possible changes

September 6, 2022 | ~1000 words | 5 min read

Some of my fantasy football league members want to make changes to defense scoring settings. I'm not sure it's a good idea, or if it even matters at all. Let's find out! Featuring a Streamlit web app and the (ugly) Yahoo Fantasy Sports API.

Using FastAPI to Recreate the Flask Tutorial

November 8, 2021 | ~1100 words | 6 min read

I wanted to try out the popular FastAPI framework. As a learning exercise, I reproduced a simple Flask tutorial using FastAPI.

Developing a Generalized Elo Rating System for Multiplayer Games

And using it to prove that I’m a terrible poker player

September 26, 2021 | ~2700 words | 13 min read

Elo is a rating system for two-player games, such as chess. I developed a Python implementation of a generalized Elo system that works for multiplayer games. Then I built a web app to track the Elo ratings of my friend group's poker games. At the risk of personal embarrassment, I'm publishing the results.