Projects
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.
For example:
Read More…
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.
These values are precalculated and stored in a SQLite database.
The project is hosted on Railway and build with Python and FastHTML.
The app stores state client side.
Read More…
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).
At some point, I will push the code for that (TODO
).
Read More…
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. The language model asks follow-up questions with the aim of deepening your idea. The prompt does not instruct the model to fill in gaps, but rather to find out more about what you mean and playback what you’ve said to clarify ambiguities. In addition to this chat, another language model separately analyzes the conversation log and is instructed to augment and edit a document based on the new ideas you articulate in the chat. It proposes these edits in a shared editor, akin to collaborating with someone in a google doc. The user can accept or pass on these edits or make their own. The result is a document, written in the users tone that captures the ideas they’ve articulated in a well structured form.
Read More…
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. I generated the script with a language model, then created the audio track with a Python app and text to speech API to return the full meditation as an audio track in a response message from the bot. I learned a lot about using the Python event loop doing this project.
Read More…
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.js, OpenAI, Vercel
Read More…
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. I didn’t come up with a mechanism to reinforce good or bad recommendations once you’ve read a book and have feedback. I experimented with several different prompt engineering approaches to increase the quality and variety of the recommendations. Because I was relying on a language model, there was a cutoff date in my knowledge of books. I learned a lot about prompt engineering from this project and a good bit more about React as well.
Read More…
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
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…
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
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
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
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
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…