Data Analysis

Chicago Tool Library Search Improvements: Part 2

Quick wins

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

Now that we've identified some common problems, let's make the first steps toward solving them. First we'll focus on small, simple changes that will have an immediate impact.

Chicago Tool Library Search Improvements: Part 1

Identifying the problem(s)

June 26, 2025 | ~1800 words | 9 min read

An overview of the Circulate app and common problems with its search functionality. Not talking solutions yet, just seeing what types of problems exist. Plus, some constraints and limitations of a volunteer project with a shoestring budget.

Should I Renew My Kroger Boost Membership?

Running the numbers to see if it's worth it

February 1, 2025 | ~1200 words | 6 min read

My previous job gave me a free Kroger Boost membership. Now that membership is expiring. Is it worth renewing for $59?

Should My Fantasy Football League Change Our Kicker Scoring Settings?

Analyzing potential changes to fantasy football's least important position

September 1, 2024 | ~1400 words | 7 min read

Another year, another request for fantasy football rule changes. This time some people want to use a new scoring system for kickers. Let's (over)analyze how it would impact scoring.

Analyzing Vehicle Size and Pedestrian Safety

Are SUVs and trucks more likely to kill pedestrians?

January 10, 2023 | ~2000 words | 10 min read

Traffic deaths in the US are increasing, and big SUVs and trucks seem to be taking over the roads everywhere. Are those things related? I analyzed publicly available traffic crash data and found that yes, bigger cars are statistically more likely to injure or kill pedestrians.

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.

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.

The Lazy Data Scientist's Fantasy Football Rankings

Blending fantasy football expert rankings with rank aggregation methods

September 3, 2019 | ~900 words | 5 min read

Exploring how rank aggregation methods can be applied to fantasy football. Sometimes the consensus is more accurate than the predictions from any individual expert.

Are "Hot Ones" Viewers Sexist?

Maybe a little bit, according to text analysis of YouTube comments

August 16, 2019 | ~2900 words | 14 min read

I analyzed the comments from episodes of the popular YouTube series "Hot Ones" and found some differences between episodes with male and female guests.