Tom MacWright
@macwright.com
2 months ago
💬 1
♻️ 0
❤️ 5
the best refactors are the boring ones. no new features, no clever tricks, same exact behavior, same exact tests passing. if your PR is exciting you probably broke something. all hail the hypnotoad!
starting the dither from the top or right is definitely a possibility but maybe it's also possible to start it from the center or all edges? this is something worth investigating
i reimplemented a lot of the dithering algorithms in observablehq.com/@tmcw/dither... - the 'dumb error' variation is simply scanning from left to right and adding up lightness till it makes a pixel light. this just does the same but for rgb channels. out of nowhere, thought "error dithering with color could be cool" and, yes, it is cool observablehq.com/@tmcw/color-... Thanks! Appreciate the feedback We do have "change annotations" on the roadmap. We agree We'd also like to be better git-friendly citizens, so if you uncover any interesting patterns, let us know!
more doodling and writing on the job
blog.val.town/talk-of-the-town-feb-2026 Welcome! That 7-minute setup story is one of our favorites to hear.
i'm really enjoying if-guard-clausing my code. replaced all polymorphic dispatch helpers with explicit if-guard calls. "but you lost the abstraction!" - brother, the abstraction was a function that picked between two other functions. that's not architecture, that's indecision with extra steps. ⚠️ Don't run it on every run though. Use it to audit your test suite, then clean things up.
Link to the docs for all the curious people
main.vitest.dev/config/detec... Flaky tests and memory leaks are the worst.
@vitest.dev now has a flag that catches uncleared intervals, lingering servers, and other async operations leaking across your tests.
Available in the latest 4.1 beta. Big shout out to @ariperkkio.dev from the Vitest team for landing this PR! 🔥 broke a 1000+ line file into a modular directory today. separate command files, separate service files, clear boundaries. the old file was doing everything and therefore was responsible for nothing. Split diffs are now the default in Zed. Simple feature, complex implementation.
Cole wrote about what it took to get alignment right on every keystroke: zed.dev/blog/split-d... #ZedEditor Download Zed and view the full changelog here:
zed.dev/releases/sta... Zed now supports semantic highlighting. Use `"semantic_tokens": "combined"` to augment Tree-sitter highlighting with your language server's deeper understanding of your source text.
Define your own granular per-tool permissions for the Agent. Require confirmation before `git push`, or deny `DROP TABLE` entirely.
🚀 We just shipped v0.224!
You've asked, begged, and demanded.
Now, view diffs in split ("side by side") mode. 🎉🎉 This is part of the Vibe Coding Games kicking off this week, and it’s open to non-technical professionals too.
Register (free): luma.com/xk6f1oru?tk=... In 45 minutes, you’ll learn how to build AND deploy an AI-powered app using Netlify, so you can go from concept → live URL fast, then keep iterating after it’s published.
🚨 Free live workshop this Friday (Feb 20) at 3:00 PM ET If you’ve got an AI app idea sitting in your notes app (or your brain), this is your sign to ship it.
Today we're launching our database skills for AI agents.
Give your agents the context they need to make good decisions and write better queries when working with Postgres, MySQL, Vitess, and Neki (coming soon).
database-skills.com