After a near-disaster, the agent powering Google Antigravity said something that surprised me. I asked it for more details, and eventually the agent, Claude Opus 4.5 (Thinking) offered to write this Power User Guide. I present it here with no validation or editing, just in case it has any merit. (Does it? I don’t know!)
Author: Kerrick Long
It can be hard and downright painful to grapple with the idea that people we find reprehensible in their personal lives might also be capable of producing work that is beautiful, moving, or useful to us. How we handle and process that information and how we choose to move forward is part of our work.
I was vibe coding with Antigravity tonight, and I broke it in the most bizarre way. With the repo at this commit and with a clean working tree, I gave Gemini 3 Pro (High) this prompt:
Check out my git tags. Check out my git log! Ope, check out my @
CHANGELOG.md… And then write it.
For a few moments it seemed to chug along just fine, building a coherent Chain of Thought. Then it got weirder, and weirder.
I just published a new gem: ratatui_ruby, which offers Ratatui bindings for Ruby. It allows you to cook up Terminal User Interfaces in Ruby. I expect to write more about it in the coming days. Until then, check out the repo, the documentation, the examples, the mailing lists, the issue tracker, and the ruby gem!
With Ruby 4 set to release on Christmas Day and available in preview now, the Pragmatic Bookshelf just made a huge announcement.
Stephen Margheim (fractaledmind) wrote Affordances: The Missing Layer in Frontend Architecture this month. This quick post is my reply to his great article.
I hear the objection already: “Isn’t this just… semantic CSS classes? We tried that.”
You’re right that we tried it. But “it didn’t work” deserves unpacking.
I was indeed objecting that in my mind. But I was not thinking, “it didn’t work.” I was thinking, “and it has kept working for decades. Obviously the utility-only workflow described is terrible; it’s why I refuse to choose Tailwind. How are affordances better than what’s worked for a decade?”
I am not a graphic designer or a musician. My wife, though, graduated summa cum laude with a BA in Music. She also has a bookcase full of graphic design, interaction design, and user experience design books I have largely ignored. She may not be surprised by what I learned today, but I was. Perhaps you will be pleasantly surprised, too.
Chirag Mehta made a really great tool. Pick a color or paste a hex code, and it gives you the nearest descriptive name for that color.
This is article is the first installment in the Workflow Patterns for AI-Assisted Development series. To get notified when a new article is published, subscribe for free via email or RSS.
Domain Language Mining
Discover jargon from an unfamiliar field using LLMs to help you write better software.
When 37Signals launched Writebook in 2024, it was under their ONCE License Agreement. Notably, that license “does not include the rights to publish, distribute, sublicense, and/or sell copies of the Software, source code or products derived from it.”
For over a decade, Humble Bundle has offered DRM-free media for a great price, while also supporting charity. Even years later, I can’t get their “jingle” out of my head:
Pay what you want, DRM-free,
Mac/Windows/Linux, and helps charity
Sadly, this is no longer true.
Some researchers have suggested that a pattern is “a solution to a problem in a context,” citing Chris Alexander’s work in architecture (see the bibliography). Here are some thoughts on this.
- A pattern is a template, not a specific solution.
- Alexander’s “pattern” theory remains unaccepted by his peers.
- No dictionary supports his definition of the word “pattern.” (Although it is true that one may assign any meaning to any word, when a word’s meaning has been established over several millennia of human experience, it is probably unwise to do so.)
- Although “a solution to a problem in a context” is a compelling writing style–after all, nearly every sales letter follows it–that does not make an instance of that writing style a “pattern.”
With the publication of Design Patterns by the “Gang of Four,” Christopher Alexander’s pattern language format caught fire in software engineering. Three decades later, industry authors still publish book after book after book enumerating pattern languages. Even outside of software, the Alexandrian form continues to spread. From pedagogy to presentations, from activism even back to architecture, pattern languages continue to be mined and shared.
When I was a younger developer, I thought I knew how to make code better by, as the kids would say today, following vibes. Much later, a coworker gave me a copy of Martin Fowler’s Refactoring. I regret how long I put off reading it. Even later, I read Sandi Metz’s 99 Bottles of OOP and learned just how safe refactoring could be. Fearless refactoring is a skill that must be learned, and it is almost a superpower!
The real reason [acceptance tests and unit tests] aren’t redundant is that their primary function is not testing. The fact that they are tests is incidental. Unit tests and acceptance tests are documents first, and tests second.
As my wife and I were listening to Uncle Bob’s book on professionalism in software, this line surprised me. Maybe it’s just because I don’t understand tests as well as I’d like, but I had to stop and take note. He clarified exactly what he meant, too:
I’ve been disconnected from the junior and hiring scene since I stepped back into an individual contributor role. Recently, though, a friend of mine decided they wanted to get into the field. I poked my head up and looked around, and I was shocked at what I found. This talk is a great overview of what’s different today compared to six years ago, and what can be done about it.
I’ve been making SPAs for over a decade, but I’ve always held the opinion that it’s only the right tool for web apps, not websites. I’m glad to finally see some evidence in support of this viewpoint!
I haven’t written PHP for over a decade. I haven’t even touched it since 2017. But in the spirit of legitimate peripheral participation, I asked a couple of LLMs to write a WordPress plugin for this blog. Within 15 minutes, I had a proof of concept from ChatGPT. Next, I got Claude to generate an even better version in one shot. I iterated to add a feature and said, “Hey! It compiles! Ship it!“
It was a fun experiment: a microcosm of failure, puzzle-solving, success, and iterative improvement.
