Projects

Snapcart (2024)

The app I built Snapcart to help my wife and I easily create a shopping list for recipes across several, physical recipe books. You take and upload a picture of ingredient list from a recipe and the app extracts the ingredients list and quantities with gpt-4o’s vision capabilities. Once you’ve uploaded all the recipes you want to purchase ingredients for, you create a shopping list. To do this, the app uses a language model that creates high level categories for similar items then groups them all together to make it easy to get everything you need for multiple recipes when shopping.
Read Moreā€¦

Cogno (2024)

On 2024-08-08, I wrote this note Given a word, propose words that are as lexically similar as possible. Either try and find the closest word or get points for top N closest words. Cogno is a daily word game that is a flip on the word game Semantle. You are given a starting word and your goal is to guess as many of the top 50 words and are semantically similar to the word as possible, based on the similarity score from the GoogleNews-vectors-negative300 and FastText datasets.
Read Moreā€¦

Bots Doing Things (2024)

I have been experimenting to figure out if language models can play the NYTimes game Connections with a high level of skill. I wrote a post where I tried to fine-tune gpt-3.5 to improve its play without much success. Larger models like gpt-4-turbo and claude-3-opus seem to be better at the game compared to gpt-3.5-turbo. I’ve refined my approach as well, writing code that allows the model to guess a single category at a time and which validates guesses to make the model’s attempts to play closer to what actually playing the game is like (this is different from my post where I ask the model to output all 4 categories at once).
Read Moreā€¦

Write Partner (2023)

I’ve found language models can be effective thought partners to help you deepen your ideas by generating questions that make you think and reflect. While I’d seen many projects attempt to use language models to remove the human from the loop in content generation, in this project I’m using a language model to prompt the user to communicate the content in a conversational way. You chat with a language model and present your ideas.
Read Moreā€¦

Personalized Guided Meditation (2023, unpublished)

I’ve experimented on and off with guided meditations to practice mindfulness. One area that was a challenge for me in this practice was that the script was often not quite relevant to what I was experiencing or didn’t really resonate with me. Using a language model and text to speech model, I built a Telegram bot that would take a prompt message and use that message as the topic to generate a personalized guided meditation.
Read Moreā€¦

AItinerary (2023, unpublished)

I built a site to take a prompt from a user about where they were and their preferences and from these, would generate an itinerary for their day and plot the proposed locations on a map. This project was inspired by use of ChatGPT while traveling to easily source points of interest and activities based on the types of things we wanted to do while visiting a new place. Tech: React, Next.
Read Moreā€¦

Marlow (2023)

I built a site that you can use to manage a list of books youā€™ve read and your ratings for them. From this reading history, you can use a language model backed approach to generate book recommendations based on your ratings and a small summary justifying the recommendation in the context of your reading history. It was a hard concept to validate, since it takes a while to read a book and determine if it was a good recommendation.
Read Moreā€¦

The Adventure of Penelope (2023)

I built a site to host a language model generated kidā€™s book I built using ChatGPT and Midjourney. The plot was sourced from my book club to see how a language model would perform writing a story with an unusual plot. It prompted some interesting conversations about the role of storytelling and art in culture on the orange website. Tech: React, Next.js, OpenAI, Midjourney, Vercel Source code

Book Club (2021-2023)

I built a site to track the books we read in our book club and remind folks what weā€™re reading for the next week. I also built some vanity charts to look at stats about what weā€™ve read over the years. Itā€™s backed by a Notion database so itā€™s easy for me to update quickly. This was one of the first sites I build using React and Next.js, so it’s quite basic and I relied a lot of frameworks and prebuilt components.
Read Moreā€¦

Wedding Texts (2019, deprecated)

I wrote a tiny site to use to send text messages to different groups of guests at our wedding. We used it to reminder guests about when the event started and to distribute a link to a shared album to collect photos. Tech: Twilio, Python, Flask

Rowing Vue (2018, deprecated)

I created a project to scrape https://log.concept2.com rowing data and store in a database. From this, I built a leaderboard site to show rowing activity for several athletes for the month and a summary page to display personal bests across common distances and times (for example, 2,000 meters, or 60 minutes). A cron triggered the scraper to pull new changes daily. Tech: Python, Vue, MySQL, Flask Scrapy, Docker

Python Hearts (2014)

I wrote an implementation of the Hearts card game towards the end of college to practice Python. This repo unexpectedly got a bit of traction several years later and has been used as the base project to train and implement an AI player, something I aspired to do when creating the project but never did. Tech: Python Source code

qc (2013)

I wrote a little command line utility to do math while doing research over the summer. It was my first submission to HN and received a bit of traction. I also wrote a post about it. Tech: Python, Shell Source code

My blog (2013-present)

My blog is (presently) a Hugo generated static site. In previous years, Iā€™ve written posts on it sporadically. This year, I added ā€œLogsā€ and ā€œToday I Learnedā€ (TIL) categories of posts. The former is the least formal and typically focuses on something I read or thought about at a surface level. These encourage my habit of writing and have started to become a way I bookmark things Iā€™ve really enjoyed, start to develop ideas or publicly journal, since Iā€™m personally not too keen on social media.
Read Moreā€¦