Projects

LoL Pro Elo

LoLProElo is a web application that visualizes the evolving strength of professional League of Legends teams across major regions. Inspired by FiveThirtyEight’s Elo-based sports rankings, the site pulls match data from public APIs and applies a Elo algorithm to track team performance over time. Users can explore historical Elo trends, compare teams across seasons, and see insights for specific seasons.

The project’s biggest challenges lay in data engineering: sourcing reliable match data, normalizing formats across regions and seasons, and building a system that updates automatically based on the latest results. While implementing the Elo model itself was relatively straightforward, designing a maintainable pipeline for continuous updates and clean data storage required significant iteration. Ultimately, LoLProElo reflects a blend of statistical modeling, automation, and a passion for esports analytics.

Rails React PostgreSQL Chart.js Sidekiq TailwindCSS

LoL Champ Recommender

LoLProElo is a web application that visualizes the evolving strength of professional League of Legends teams across major regions. Inspired by FiveThirtyEight’s Elo-based sports rankings, the site pulls match data from public APIs and applies a Elo algorithm to track team performance over time. Users can explore historical Elo trends, compare teams across seasons, and see insights for specific seasons.

The project’s biggest challenges lay in data engineering: sourcing reliable match data, normalizing formats across regions and seasons, and building a system that updates automatically based on the latest results. While implementing the Elo model itself was relatively straightforward, designing a maintainable pipeline for continuous updates and clean data storage required significant iteration. Ultimately, LoLProElo reflects a blend of statistical modeling, automation, and a passion for esports analytics.

Rails React PostgreSQL Chart.js Sidekiq TailwindCSS

The Linear Isomoprphic Keyboard

The Linear Isomorphic Keyboard is a personal project at the intersection of music, design, and software. It explores a simplified take on the piano keyboard—reimagining the layout to reduce complexity and potentially make learning and playing more intuitive. To test the concept, I built a physical prototype using 3D-printed components and repurposed parts from another keyboard. I’ve been practicing on both this alternate layout and a traditional keyboard to see how they compare.

The site itself is built with Rails with Turbo and Stimulus, and includes a lightweight backend to support logging and reviewing practice sessions. I set up basic CRUD functionality so I could easily track my progress and experiment with different practice strategies. It’s part journal, part prototype companion—and a way for me to learn by doing, both in music and in code.

Rails Turbo Stimulus PostgreSQL TailwindCSS

Tidebook

Tidebook is a lightweight, spaced repetition flashcard app built for the web, inspired by Anki and my desire to actually retain what LLMs were teaching me. Designed to help reinforce programming syntax and problem-solving strategies, it features a simple interface, category tagging, and a rating system that controls how far in the future cards are scheduled. At its core is a Go implementation of the Free Spaced Repetition Scheduler algorithm, which I built from scratch to power the review logic.

This was my first full web app in Go and an exploration of HTMX and server-first development. Although HTMX played a smaller role than expected, it helped me embrace a fast, frontend-light approach similar to Rails’ Hotwire. Without the opinionated structure of Rails, the biggest challenge was designing the architecture and flow of the app from scratch—routing, templating, and state management all required more manual decisions. Tidebook runs locally for now with a shared database and no auth, but I’m considering open-sourcing it or building on it further, especially with ideas for deeper LLM integration.

Golang HTMX PostgreSQL TailwindCSS
Archive

Rap Analysis

The Rap Analysis Project (RAP) is a web-based tool I built in college as part of a research grant exploring the musical structure of rap lyrics and how they’ve evolved over time. I developed a custom notation system to visually represent the rhythm, rhyme, and accents within a verse—using spacing to show timing, bold text for emphasis, and color to highlight rhyme schemes. Inspired by existing rhyming notations, this approach aimed to make the musicality of rap more accessible for analysis and appreciation. The app itself provides an interface for manually transcribing verses into this format. I presented this work at a musicology conference in Oregon, showcasing how structured lyric notation can offer insight into the craft of rap across different artists and eras.

While the code isn’t great to say the least the project remains one I’m proud of and interested in due to the nature of the work. If I were to revisit it, I’d rewrite the app with a modern stack and explore two new directions: static analysis of lyrics (to quantify an artist’s techniques over time), and machine learning models for automatic transcription directly from audio. With advancements in AI, it’s now much more feasible to imagine a system that can detect flow, rhyme, and rhythm programmatically—bringing this kind of analysis to a wider audience.

Rails JQuery