FootEducation
Patient-education site for foot and ankle conditions. I inherited it running pirated software behind a firewall it wasn't actually using. Cleaned it up, ended the crashes, and Google search clicks more than doubled the following year.
Web Admin & Developer
I'm a freelance web developer in Oakland. Most of my client work is inheriting websites, then making them fast, secure, and easy for the owner to edit without needing me.
On my own time I work on music data. It pulled me into machine learning, natural language processing, and recommender-systems research, and that's the direction I want to keep building toward. I studied cognitive science, which is probably why I keep chasing questions like "can you measure a vibe?"
Three medical education sites and a lot of things that should not have been running. I found pirated software, ended the recurring crashes, cut the database bloat by more than half, and locked the servers down. The editors never noticed any of it happening, which was the point.
Client sites I've built, rebuilt, or repaired. The case study above covers three of them.
Patient-education site for foot and ankle conditions. I inherited it running pirated software behind a firewall it wasn't actually using. Cleaned it up, ended the crashes, and Google search clicks more than doubled the following year.
Nine orthopedic patient-education sites sharing one WordPress install. The database had grown so bloated the host was throttling it. I cut it to under a tenth of its size over six weeks without the editors noticing, and wrote a search plugin that covers the whole network.
Peer-reviewed online orthopedic textbook. Its physician editors couldn't change a page without going through a page-builder plugin, so I wrote a tool that moved all 266 pages to WordPress's native editor, and a second one that checked nothing got lost.
Symptom-checker survey app holding 10,000+ patient responses. It crashed regularly on a tiny server with no firewall. I found the cause, fixed it, locked the server down, and stopped a contact-form spam flood without making the form harder for patients to use.
Volunteer redesign for a nonprofit that offers free wellness programs to people with cancer. I rebuilt the site around how clients actually look for services, and I still maintain it.
Healthcare joint venture site. I moved it from a large agency's hosting to a smaller provider, then rebuilt it so the owners could edit it themselves instead of calling a developer.
Wellness organization in Sonoma Valley. I built and maintain the site, including a large directory of regional health resources that staff can keep adding to on their own.
Things I build on my own time. The first two involve music data and the rest are smaller: a linguistics joke, a fix for a daily annoyance, that kind of thing.
Music recommendation engine that connects artists by how they talk about making music, using their own interview quotes, to find kinships that cross genre lines. The project that pulled me into machine learning and recommender-systems research.
Sister project to Basilect Engine using a different signal: which artists NTS Radio hosts choose to play in the same show. I crawled 86,600 episodes, cleaned up 1.5 million messy artist names, and ranked 11 million artist pairs by how many different hosts put them together. There's an interactive map of the results.
Generator of absurd character names built from weighted phoneme pools and fake-etymology suffix families. Vanilla JS with live frontend on GitHub Pages.
Sends text and links from a PC to any iPhone on the LAN through a browser — no app install. Flask + Server-Sent Events out of WSL2, QR pairing, mDNS so the phone bookmark never goes stale. Later ported from Python to Go.
CLI that pulls your Last.fm loved tracks into a new Spotify playlist, with date-range filtering and a calibration tool for tuning the fuzzy track matching.
Small tools I wrote for the client sites in Selected Work when nothing off the shelf did the job. I'm slowly cleaning them up so they work on other people's sites too.
WordPress plugin that gives a multisite network one auto-updating sitemap page and one search box covering every site in the network. Running in production on a nine-site network.
Command-line tool that moves pages off the Elementor page builder and into WordPress's native editor. It pulls the real content out of Elementor's data, backs up each page, and checks its own work after every write. Migrated a 266-page medical textbook with zero failures.
Screenshots a list of key pages before and after each change so anything that broke is visible right away. I ran it after every phase of the multisite cleanup, 27 pages per pass.