Data Analysis
Tuning the search implementation for optimal performance
December 1, 2025 | ~1800 words | 9 min read
Let's (finally) make some broad changes to the tool library's search configuration.
We'll add some components and tune some parameters, then choose the combination that yields the best results.
Quantifying the problem
November 16, 2025 | ~1400 words | 7 min read
Subjective analysis can only take us so far.
Let's attempt to quantify search performance so we can measure whether our solutions are working.
In this post, I describe methodology to infer the relevant items for each query and the quality of search results.
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.
Identifying the problem(s)
June 26, 2025 | ~1800 words | 9 min read
An overview of the Chicago Tool Library's web 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.
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?
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.
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.
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.
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.
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.
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.