LazyPi made people mad - Yesterday I released LazyPi and some Pi users were not impressed.
That reaction was fair.
[read more...]Rob Zolkos
Building Software. Lots of AI lately. Curious and creative. Sharing what I learn.
You can find me on Twitter, GitHub, or write me an email
LazyPi made people mad - Yesterday I released LazyPi and some Pi users were not impressed.
That reaction was fair.
[read more...]Deep Dive: How Claude Code's /insights Command Works - The /insights command in Claude Code generates a comprehensive HTML report analyzing your usage patterns across all your Claude Code sessions. It’s designed to help you understand how you interact with Claude, what’s working well, where friction occurs, and how to improve your workflows.
It’s output is really cool and I encourage you to try it and read it through!
Command: /insights
Description: “Generate a report analyzing your Claude Code sessions”
Output: An interactive HTML report saved to ~/.claude/usage-data/report.html
But what’s really happening under the hood? Let’s trace through the entire pipeline.
[read more...]So where can we use our Claude subscription then? - There’s been confusion about where we can actually use a Claude subscription. This comes after Anthropic took action to prevent third-party applications from spoofing the Claude Code harness to use Claude subscriptions.
[read more...]A Month Exploring Fizzy - In their book Getting Real, 37signals talk about Open Doors — the idea that you should give customers access to their data through RSS feeds and APIs. Let them get their information when they want it, how they want it. Open up and good things happen.
Fizzy takes that seriously. When 37signals released Fizzy with its full git history available, they didn’t just open-source the code — they shipped a complete API and webhook system too. The doors were wide open baby!
So I dove in — reading the source, building tools, and sharing what I found. Every time curiosity kicked in, there was a direct path from “I wonder if…” to something I could actually try and execute. This post is a catch-all for my very bubbly month of December.
[read more...]Fizzy's Pull Requests: Who Built What and How - Sifting through Fizzy’s pull requests, it was fascinating to see how the 37signals team thinks through problems, builds solutions, and ships software together. Outside of their massive contributions to open source libraries, the podcast and the books — this was a chance to see up close, with real code, the application building process.
Below you will read which 37signals team members owned which domains in this project, and which PRs best demonstrate their craft. If you’re new to the codebase (or want to level up in specific areas), I will point you to the PRs worth studying. Each section highlights an engineer’s domain knowledge and the code reviews that showcase their thinking.
[read more...]Fizzy Design Evolution: A Flipbook from Git - After writing about the making of Fizzy told through git commits, I wanted to see the design evolution with my own eyes. Reading about “Let’s try bubbles” and “Rename bubbles => cards” is one thing. Watching the interface transform over 18 months is another.
So I got to work: I went through each day of commits in the Fizzy repository, got the application to a bootable state, seeded the database, and took a screenshot. Then I stitched those screenshots together into a flipbook-style video.
Here’s the final result - I hope you enjoy it! Read on below for details about the process and the backing music.
[read more...]Vanilla CSS is all you need - Back in April 2024, Jason Zimdars from 37signals published a post about modern CSS patterns in Campfire. He explained how their team builds sophisticated web applications using nothing but vanilla CSS. No Sass. No PostCSS. No build tools.
The post stuck with me. Over the past year and a half, 37signals has released two more products (Writebook and Fizzy) built on the same nobuild philosophy. I wanted to know if these patterns held up. Had they evolved?
[read more...]The Making of Fizzy, Told by Git - Today Fizzy was released and the entire source code of its development history is open for anyone to see. DHH announced on X that the full git history is available - a rare opportunity to peek behind the curtain of how a 37signals product comes together.
I cloned down the repository and prompted Claude Code:
“Can you go through the entire git history and write a documentary about the development of this application. What date the first commit was. Any major tweaks, changes and decisions and experiments. You can take multiple passes and use sub-agents to build up a picture. Make sure to cite commits for any interesting things. If there is anything dramatic then make sure to see if you can figure out decision making. Summarize at the end but the story should go into STORY.md”
It responded with:
“This is a fascinating task! Let me create a comprehensive investigation plan and use multiple agents to build up a complete picture of this project’s history.”
Here is the story of Fizzy - as interpreted by Claude - from the trail of git commits. Enjoy!
[read more...]Fizzy Webhooks: What You Need to Know - Fizzy is a new issue tracker (source available) from 37signals with a refreshingly clean UI. Beyond looking good, it ships with a solid webhook system for integrating with external services.
For most teams, webhooks are the bridge between the issues you track and the tools you already rely on. They let you push events into chat, incident tools, reporting pipelines, and anything else that speaks HTTP. If you are evaluating Fizzy or planning an integration, understanding what these webhooks can do will save you time.
I also put together a short PDF with the full payload structure and example code, which I link at the end of this post if you want to go deeper.
Here are a few ideas for things you could build on top of Fizzy’s events:
card_published to card_closed and which assignees or boards close issues the fastest.card_published, card_assigned, card_unassigned, and card_closed events.card_triaged, card_sent_back_to_triage, and card_postponed.card_board_changed to keep a separate dashboard of cards moving into your incident or escalation boards.comment_created events into a search index or knowledge base so you can search discussions across boards.If you want to go deeper, you can also build more opinionated tools that surface insights and notify people who never log in to Fizzy:
card_published, card_closed, card_postponed, and card_sent_back_to_triage events.card_triaged or card_closed event.card_postponed, card_board_changed, and card_closed.card_published, card_closed, and comment_created to show progress and recent discussion.card_published, card_reopened, card_triaged, and card_sent_back_to_triage, then email the summary to attendees before the meeting.Here is how to set it up.
[read more...]A Mermaid Validation Skill for Claude Code - AI coding agents generate significantly more markdown documentation than we used to write manually. This creates opportunities to explain concepts visually with mermaid diagrams - flowcharts, sequence diagrams, and other visualizations defined in text. When Claude generates these diagrams, the syntax can be invalid even though the code looks correct. Claude Code skills provide a way to teach Claude domain-specific workflows - in this case, validating diagrams before marking the work complete.
[read more...]First Impressions of Sonic (the stealth xAi Grok coding model?) -
Update (August 26, 2025): Sonic has been confirmed as the new Grok Code model and is now officially available today! What was once a “stealth” model is now xAi’s publicly released coding assistant.
A new stealth model called Sonic has quietly appeared in places like Opencode and Cursor, and it’s rumored to be xAi’s Grok coding model. I spent a full day working with it inside Opencode, replacing my usual Claude Sonnet 4 workflow — and came away impressed. The short version? It feels like Sonnet, but turbocharged.
Sonic showed up in Opencode’s model selector — no special invite required. Selecting it as the active model made it fully functional, with no setup beyond choosing it in the dropdown. During this stealth period it’s free to use and offers a massive 256,000 token context window. I didn’t encounter any rate limits or throttling all day.
Instead of a contrived “hello world,” I dropped Sonic into my real workflow. Where I’d usually use Sonnet 4, I asked Sonic to help me build a new Training Center CRUD feature in a Ruby on Rails application.
It generated the models, migrations, controllers, and views exactly as expected — and most importantly, it did it fast. Text streamed out so quickly it was hard to keep up. Compared to Claude Code, I’d estimate 3x faster tokens per second, consistently.
That was my wow moment: speed without sacrificing accuracy. It nailed the Rails conventions and felt like a drop-in Sonnet replacement.
My go-to evaluation prompt for coding models is: “Tell me about this codebase and what the most complex parts are.” On my legacy Rails codebase, Sonic immediately identified the correct overloaded model as the main complexity hotspot, and even suggested ways to refactor it.
The result was near identical in quality to what I’d get from Sonnet or even Opus — but again, the response flew back near-instantly. For day-to-day comprehension and reasoning, Sonic seems to match the best while dramatically cutting wait time.
Bottom line: if you’re used to Sonnet, Sonic feels like the same experience at high speed.
Right now Sonic is free to use in Opencode during its stealth rollout. No public pricing details are available yet, but if it undercuts Sonnet, it could be a winner.
I haven’t seen any rate limits or regional restrictions. Cursor users also report seeing Sonic available as a selectable model.
After a full day of work, I would — and did — ship production code with Sonic. It handled CRUD features, comprehension of a large legacy codebase, and various refactors without issue.
The real differentiator is speed. If Sonnet is your baseline, Sonic offers the same reasoning ability but with response times that feel instantaneous. Unless something changes in pricing or reliability, this could easily become my daily driver.