Claude Code has changed how I build software
I keep being blown away by what AI/LLMs can do. It has completely changed my day-to-day work across every major aspect of software engineering.
Even though I’ve been using these tools for many months now, I continuously still get surprised by the things I can get it to do sometimes. I want to share one example of something I did today that once again made me stop and think about where we are with these tools.
Building metrics infrastructure and metrics dashboards for Couchers
Context: As you will know, I’m the co-founder and tech lead for Couchers.org, a non-profit, open-source couch surfing platform. As part of our plan for this year which we announced towards the end of last year, we are focusing now on being more data-centric to make better decisions for our community, and concentrate our efforts on the right stuff. As part of this, I’ve been building some infrastructure for us to gather and compare metrics over time. We now have a system that uses dbt (Data Build Tool) to transform raw SQL queries into metric series, and Metabase to display that data in a way that our less-technical folks can understand it.
This weekend, I sat down to add a bunch of metrics with the help of Claude Code, and planned to integrate them end-to-end starting from the metrics catalog all the way to the Metabase dashboards. However, it turns out Metabase doesn’t allow you to define dashboards via code! At first I wasn’t really sure what to do about it, but then I came up with this pretty spiffy plan:
- I cloned the Metabase git repo, and launched Claude Code there, and asked it to do two things:
how are the dashboards in metabase stored? i want to modify some programmatically (with claude code/an LLM), so I want to know how they are stored.
Then followed this up with:
okay write a comprehensive (and self contaiend) markdown document (called
claude-dashboards-metabase.md) explaining how to authenticate to the API, how to use the API, etc for this task. The idea is that we’ll create a bunch of dashboards which will live under a collection called “Claude Managed”; and each dashboard will be produced based on certain sets of metrics. you need to fully describe the structure of the API in such a way that I can give it to Claude in a different session and it can clean-room implement a tool to operate this.
This generated a pretty lengthy Markdown document explaining a bunch of stuff about the API, Claude Code reports it was about 1100 lines and that it took some 40 tool uses, 100k+ tokens, and about 5 minutes to write. I never actually looked at this document. I skimmed to check it looked sensible-ish.
-
I then went into our metrics repo, and asked Claude Code to build a Python tool based on this description of the Metabase API, in order to read and modify a set of dashboards under a “Claude Managed” collection. I had some trouble with the authentication and had to check that Metabase requires the API key in a particular header, which I told Claude; but otherwise it did this almost autonomously.
-
I could then go away and prompt Claude Code to my heart’s desire to build cool dashboards from the metrics in the repo, updating the tool to add more features (like checking dashboards for errors, etc).
This whole exercise took me some 30 minutes to do! This is obviously an outlier in how easily and quickly I got it done, but it does illustrate the things one can do with careful prompting. I think this was an outlier in that I came up with the right combination of “mini-architecture” to make the most of Claude Code, which highlights what I think is an important point in general: these tools are extremely powerful and you simply have to figure out and learn how to use them.
A short note on lock-in
I’m generally pretty averse to building workflows that are reliant on proprietary tools that I cannot control. However, I think AI is moving at a pace now where you have to risk it for the biscuit. The top tools (and LLMs themselves) right now are proprietary, and you better stay on top of these things. The other fact I think is that we are quickly seeing the open LLMs catch up to the closed ones, and similarly we are seeing tools like OpenCode catch up to Claude Code (I haven’t tried OpenCode, it might even be ahead) — once things stabilize, I am sure we will have open models and open tools that work as well as Claude Code does today. The other fact is that the cost of tokens (per unit “intelligence”) is falling quickly (historically even with exponential decay), so these tools that are now expensive and unique will soon be very much a commodity.