Great book, I will definitely buy it, thanks for your work! The history is very important, as you’ve said in your blog post, but companies and universities don’t care much about such things unfortunately. I see there is a chapter on Clojure, so just wondering if you had the chance to interview Rich Hickey for the book?
No, I didn't. I probably should have, but the sheer magnitude of the project ran off with all my good ideas :). There's already a bunch of things I want to add in a second edition, if that ever happens, there are just so many stories to tell and only so much time.
.
Thanks for sharing, I wonder how do you keep the stylistic and mental alignment of the codebase - is this happens during the code review or there are specific instructions during at the plan/implement stages?
Just ask chat gpt about state of the art in context pruning and other methods to optimize the context being provided to a LLM, it's a good research helper. The right mental model is that it's basically like RAG in reverse, instead of trying to select and rank from a data set, you're trying to select and rank from context given a budget.
I think it all depends on your platform and use cases. In my experience AI tools work best with Python and JS/Typescript and some simple use cases (web apps, basic data science etc). Also, I've found they can be of great help with refactorings and cases when you need to do something similar to already existing code, but with a twist or change.
The approach described resonates well with my (limited) experience using tools like Cursor/Cline and Aider, thanks for writing this up.
It feels more like the waterfall-style method and it takes time to get used to it after years of test-driven/agile development.
The nice thing is that you can easily go both ways - e.g. do full "vibe coding" to build a throw-away prototype, then ask the AI for help creating documentation and end-to-end tests for it, then collaborate with it to redesign the architecture, create a new implementation plan, and start coding from scratch.
Learning about Rama (https://redplanetlabs.com/) which has been released recently. The tech is very cool and also it's Clojure, but still not sure what would be the best use case for it.
Last time I checked it is perfectly possible to use anything including TS via jsbundling-rails and esbuild, so honestly I don’t understand what is the problem here.
I’m also on a fence re Hotwire, but apparently it works for them in Basecamp and Hey, so that’s what they are investing into.
Anecdotally, recently in Ruby shops I see an increase in new projects using Hotwire as a push back against bloated and hard to maintain React front ends and people are delighted how everything is easier now. RoR codebases are not the only ones which did not age well, I’ve seen quite a few React/NextJs legacy projects I would prefer not to touch at all. So I don’t think technology is the main culprit here.