@yuzu_jpg I find it better at teaching/learning from than the others, surprisingly. Its usage of diagrams, interactive visuals, and mathematical notation makes for a much better UX to me in this regard.
The decision was Next.js vs React + Vite.
I've spent years in Next.js. I like the DX. I like Vercel deployments. Picking it again would have been easy.
Still, for a project, I decided to actually weigh the two instead of defaulting. While working through pros and cons, I came across "The Rule of Least Power", a W3C design principle from Tim Berners-Lee: choose the least powerful language suitable for the purpose. Less powerful things are easier to analyze, reason about, and repurpose. Power costs you something even when you don't use it.
It's directed at language selection, but it applies to architecture in general. It's a close cousin of Occam's Razor.
So I considered what Next.js gives me: SSR, RSC, ISR, middleware, image optimization, a routing convention, edge functions.
And what this project needs: a client-rendered SPA talking to an API.
Almost nothing from the first shows up in the second.
DX was never the real question. Both tools are excellent there. The real question was whether I wanted to carry a server framework's worth of conventions and coupling for an app that doesn't need server rendering.
I went with React + Vite + TanStack Router (for the file-based routing I'd miss from Next.js), deployed on Cloudflare. It covers what the project needs, and stops there.
This applies well beyond frameworks. Unused capability still costs you. Most of us have stories of building for scale we never reached, and paying for it the whole time. Adding power when a requirement actually shows up is easy. Removing it later rarely happens.
Pick the least powerful tool that does the job. The job, not the imagined future version of it.
I find myself reaching for Claude Code far beyond engineering tasks these days.
Last week my disk became full, and I honestly wasn't so sure why.
Analyzed my disk through Fable, found the main sources, and devised a plan to execute through Sonnet to free up space.
Storage dropped from 99% to 44%.
I know there are dedicated tools for this kind of thing. But it's wild how easy it is now to essentially make disposable software that solves all kinds of problems.
Golden age of productivity.
Also probably the most dangerous thing I've done to my machine 🤷♂️
I've been getting more out of this one-liner prompt than I'd like to admit:
"Remove, replace, or rephrase common AI-isms."
I mostly use it when after the model clobbers my original voice and tone.
Most LLMs are surprisingly good at identifying these patterns and cleaning them up. The results aren't perfect, but often much better than expected.
I've found Gemini tends to make things overly terse and dry with this prompt while Opus and Grok have been better.
I have not subjected Fable to such menial tasks, yet.
As always, output is only as good as the input.
What's the one-liner prompt you reach for most?
Obvious in hindsight, but I’m surprised by how effective it is in practice. The issues I used to catch during review now arrive already caught and fixed.
A good Definition of Done already helps a ton on its own. But there are dedicated tools that take it even further — a strong example is Kun Chen’s open-source tool No Mistakes.
What criteria are you putting in your own DoD? Or are you using any dedicated review or validation tools?
I got used to the “plan → execute → verify → fix” loop in my agentic engineering workflow.
Recently I added a Definition of Done section to my AGENTS.md / CLAUDE.md.
The difference was surprisingly noticeable: agents are now producing higher-quality output from the first attempt, and my review process became significantly faster and more confident.
The exact criteria will vary by project, but here’s a clean, generic starting template that’s copy-paste ready:
## Definition of Done
A task is complete only when every applicable check below passes. Never declare work done or open a PR with a failing check. Done means a reviewer can approve the change after a quick skim: the agent catches everything a human reviewer would otherwise catch.
- One focused change — the diff does exactly what the task requires. No unrelated refactors or scope creep.
- All automated checks pass locally — linting, type checking, and tests are green.
- Behavior is verified — new or changed logic ships with tests and evidence (passing test output; before/after screenshots for UI changes).
- Self-review completed — review your own diff with available review tools/skills, then fix every critical and important finding.
- Gaps are surfaced — document what was intentionally left out and why in the summary.
- Summary answers the reviewer’s questions — what changed, why, and how to verify it.
@ECortes_Vargas@SunwingVacay@SunwingVacay Ours just got delayed a day; flight to Orlando. Notice came less than 8 hours before departure. Scrambling to work out our itinerary and already booked accommodations. WG030
@dan_abramov Inner Engineering. Fixed my inability fall asleep within a week. Empathy and able to connect with people sort of just “unlocked” (noticed much later). A lot of subtle changes; every aspect of my life got at least a notch better. Practicing for 6+ years now.