Difftastic 0.69 is out! This is a pretty big release:
* Semantically insignificant commas are now ignored
* Difftastic now respects .gitattributes
* Added assembly support and improved 13 other languages
Programming languages, human factors, and a healthy dose of Emacs.
Difftastic 0.69 is out! This is a pretty big release:
* Semantically insignificant commas are now ignored
* Difftastic now respects .gitattributes
* Added assembly support and improved 13 other languages
Excellent series on Self, both the programming model and the tool chain.
I love how opening an inspector on a value (e.g. nil) then shows a link to all occurrences of the value in other open inspectors!
I enjoyed this article about personal project programming, but I particularly liked this definition:
"Production code has a phone number to call when it breaks"
I've released difftastic 0.68! A smaller update, but still worth upgrading:
* Improved Bash, C, Go, Lua, Nix, Perl, Python, Rust, Scala, Swift and YAML parsing.
* Minor display and git compatibility fixes.
My 3.5yo is learning to use a mouse, and it's super interesting.
He's mastered clicks and drags, but he hasn't yet figured out lifting up the mouse when run out of mouse pad. That's a tricky case where you deliberately break the relationship between mouse and cursor movement.
Reviewing some of my earliest web projects: they have a mix of Postgres, MySQL and Mongo.
These days I just use sqlite for all my personal projects. It's really good at my scale and makes deploying very easier.
I sometimes see blog posts lamenting how inconsistent UIs are in modern apps.
When did consistency peak? Windows 3? After the release of Aqua for macOS? The era when Bootstrap was the default CSS framework for many web developers?
The author of rust-analyzer discussing how language features help or hinder fast IDEs.
If you allow `from m import *` you can't analyse files in isolation, and it's even harder in Rust.
https://matklad.github.io/2026/02/25/against-query-based-compilers.html
Really elegant developer tool: Go's inline IDE feature is used with deprecation markers, so call sites are autofixed from OldApi() to NewApi() based on the implementation of OldApi.
Writing type params with <> (e.g. List) seems the most natural to me: probably because I encountered that syntax first.
Between C++, Java and TypeScript I think it's the most common too.
List[Int] seems to be next most common (Scala, Python) but TIL Gleam uses List(Int)!
Rust and RISC-V both feel like they've reached critical mass and I'd guess that they'll be used more in 5 years than they are today.
What other technologies fit this description?
Some excellent safety improvements in C++26: hardening the standard library against out-of-bounds bugs, and a safer semantics for uninitialised local variables: https://herbsutter.com/2026/03/29/c26-is-done-trip-report-march-2026-iso-c-standards-meeting-london-croydon-uk/
LLMs have been really helpful for me porting some JS projects to TS.
Since the types are erased and annotations are optional, I can go gradually and safely with more minimal human oversight.
(I'm not sure if it'll significantly help robustness, but it's lovely for navigation.)
I'm surprised there aren't more tools out there for starting a new project with some default config files.
There's `cargo new` but it's Rust specific and very minimal. create-react-app is React specific.
The only option I know of is cookiecutter. Surely it's a common problem?
I'm experimenting with imitating window UI elements when showing code snippets on my website.
What do you think? Do the familiar dots of the title bar help, or is it just confusing decoration?
First image is the current style, the second image has the window UI.
I've started naming my servers digiocean1.example.com, digiocean2.example.com and so on. I wish I'd done this much earlier.
I already have domain names for the actual deployed services, but it quickly gets confusing when you start moving things around.
I'm adding uptime data to my personal LLM bot. Does this information belong in the system prompt?
That was my initial plan, but I'm thinking that a tool would be better. Tools let me see information provenance ("queried the uptime tool").
There's also a small caching benefit.
Are there any developer experience advantages for `x := 1` over `let x = 1`?
A `let` keyword probably improves parsing error behaviour, and makes declarations more visible.
:= is more concise though.
What is the lowest resolution image that is still recognisable?
I made a space invader craft project at one point and spent a bunch of time wondering if I had enough materials.
Language design question: what type should while True {} have?
Bottom: It doesn't contain any break statements.
Unit: Treat loops with/without break consistently.
I already have lints that warn on unreachable code after diverging loops, so the Unit case feels surprising.