miniblog.

2
I've started using DNSControl for configuring DNS for my personal domains and it's been delightful. Declarative DNS! I get comments (the DSL is just JS), history (it's in git) and trivial rollback! I've switched my DNS provider to Hetzner (which is free!) to use this.
1
I've now worked on several systems where the JSON was so big that avoiding pretty-printing was a performance win!
1
I eventually learned that there's a 'correct way up' for USB A cables. The two small holes should be on top. Tragically not all power adapters get this right, even for name brands. My ability to get the cable right first time still isn't much better than 50%!
2
I love how JS makes project-specific imports unambiguous: `import "./project-dir/foo"` versus `import "installed-pkg/foo". I've been doing the same in my PL. I've just realised that `import "/home/wilfred/project/foo"` now works too. It's weird but probably harmless?
51
I've had a surprising amount of success asking an LLM to try projects in my toy programming language and report language or tooling issues. Today it noticed that foo(bar,) is syntactically legal but assert(bar,) is not. The parser error is poor in this case too. A real UX bug!
3
Difftastic 0.71 is out! This is a polish release, still well worth upgrading: * A ton of performance improvements, especially for nasty corner cases. * Improved C++, Dockerfile, Haskell, JavaScript, Makefile, Perl, Ruby, Rust, Scala and TypeScript.
3
I've been experimenting with LLM autoresearch. I prompted Sol to make difftastic faster without changing output on the test suite, and log everything it tried: https://github.com/Wilfred/difftastic/blob/c6e9c6fed4c71276a8b0e377c92695c3d929dc7f/PERF_RESEARCH_LOG.md It found some interesting performance tweaks, although it's too tolerant of complexity.
11
Are there many good static analysis tools for CSS? I have website projects in both Django and Express that almost certainly have unused rules due to unused classes.
5
I've given up migrating my VPS hosts to newer distro versions. Instead, I'm trying to rebuild a new host with the newer distro version. I'm slowly making all my server config reproducible and automated as a result :)
2
Bevy has an amazing approach to code review that requires two reviews by the community before a maintainer will review and merge. "We let anyone submit PRs without vetting: why is the bar higher for reviewing?" https://shaping.systems/blog/open-code-review/
The literal 0xffu8 in Rust is pretty tricky to read without syntax highlighting. It looks like a plain hexadecimal value at first. (Why not have syntax highlighting? Ironically I was debugging and improving VS Code's Rust highlighting.)
12
I don't use subagents much: I usually want to discuss and iterate on the subtask. Subagents are typically unattended. I find myself writing md files for a new session to read. Are there any harnesses that treat forking as a first class feature?
2
Implementation chicken: When there's an obvious feature gap in an ecosystem and everyone is waiting for someone else to write it. I see this most frequently with OSS toolchains. Basic functionality in new programming languages is another common scenario.
1
I'm debating whether `from foo import *` is a bad feature for my toy programming language. Forcing `import foo as f` and later `f::bar()` is so much more amenable to local static analysis. You also don't get issues with name clashes. It's certainly convenient though.
171
I've released difftastic 0.70! In this release: * Added Dockerfile and fish shell support * Improved Dart, Emacs Lisp, Erlang, Java, OCaml, PHP, Protocol Buffers and TOML. * A bunch of display and performance fixes.
Showing 1-15 of 125 posts