Coding with Claude
December 22, 2024 (2 years ago)
First, I am an AI/LLM skeptic
I am a skeptic when it comes to AI/LLM. I have seen too many projects fail to deliver on their promises. But I am also a pragmatist. I know that AI/LLM can be a powerful tool when used correctly. So when I heard about Claude, I decided to give it a try.
An LLM wrote that paragraph above, just from the header. It's not actually want I wanted to say but it's sensible. I had used Claude a bunch before, and my skepticism is entirely around both the churn and the hype. It is hard to consistently gauge progress when the state of the art changes several times a month. There is no question that AI provides significant leverage in many tasks I do throughout the day.
But I don't want to really delegate tasks fully to any agent, because that feels like offshoring some of the most critical parts of my work and my context will suffer because of it. It reminds me of teaching my kids to drive. If I stop paying attention, something comes up and it's a missed learning opportunity at best and at the other side, a crash.
The project
I really, really hate time zones. I also tend to have different sets of time zones based on the context I'm in. Worldtimebuddy is fine, but it doesn't have the features that I want. I thought this would be a pretty good tool to build with Claude.
You can see the current version at /tz.
The starting prompt
Create a single page web application that allows users to add time zones, and pick dates on a calendar to show a 12 hour slice of what the time is in each time zone.
I didn't want anything too fancy here, just the basics. Claude did exactly that, and picked a component library (shadcn/ui) that I hadn't heard of before. As a tailwind enthusiast, it was fun to see the different UI kit. The first iteration of this app was surprisingly good and surprisingly usable.
It didn't have any customization of the time range, or to pick other dates, but it worked. I asked it to add the customized time slices, and it did that.
The next step was prompting to save via localStorage, and give the sets a
name, and help make it a bit more user friendly
Add the ability to save favorite time zone combinations in localStorage, and color each rendered time slice in the time zone based on if it's standard working hours (9am-5pm), adjacent to working hours but not off hours (6am - 9am, or 5pm - 9pm) and night hours.
I've written this styling code countless times before. It feels mundane, and was nice to hand off to the LLM. Since it's visual, if something weird came up it would be easy to spot, also.
An aside for compliments
The Anthropic tooling made it easy to iterate on the idea and the code. Working with the app directly in the workspace was helpful. Claude proactively suggested improvements, like to export or import favorites, which I already had in mind.
Claude doesn't seem to truly understand what time zones mean for people, but I could improve that with additional prompts.
Very quickly, I got an application that worked and I was excited to "take over". It meant refactoring a little bit, reasoning more about storage mechanics, link sharing properties, and a few other things, but Claude took care of a lot of the mundane bits. It definitely saved time, but perhaps most importantly it allowed me to think more deeply about how a user will experience the application rather than the plumbing.
tl;dr Claude let me prototype and iterate faster than ever before, which let's me focus more on the user experience. The downside is that refactoring can be challenging, especially when it's workflows.
Update 2025-03-01: Anthropic recently released Claude Code, an agentic coding tool specifically for things like this. I look forward to building the next little widget with it.