Wilfred
@wilfredh.bsky.social
๐ค 124
๐ฅ 257
๐ 185
Programming languages, human factors, and a healthy dose of Emacs.
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.
about 8 hours ago
0
0
0
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.
matklad.github.io/2026/02/25/a...
loading . . .
Against Query Based Compilers
Query based compilers are all the rage these days, so it feels only appropriate to chart some treacherous shoals in those waters.
https://matklad.github.io/2026/02/25/against-query-based-compilers.html
4 days ago
0
1
0
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.
9 days ago
0
0
0
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?
11 days ago
1
0
0
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!
blog.rfox.eu/en/Programmi...
loading . . .
Environment and the programming language Self (part one; environment)
I bring you a message about a language that has been at the birth of many others, but almost no one knows it. A rumor of a graphical environment offering options like no other, but almost no one using...
https://blog.rfox.eu/en/Programming/Series_about_Self/Environment_and_the_programming_language_Self_part_one_environment.html
13 days ago
0
1
1
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.
14 days ago
1
1
0
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.
14 days ago
0
0
0
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.
16 days ago
0
1
0
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.
github.com/Wilfred/diff...
16 days ago
0
28
5
Really elegant developer tool: Go's inline IDE feature is used with depreciation markers, so call sites are autofixed from OldApi() to NewApi() based on the implementation of OldApi.
go.dev/blog/inliner
loading . . .
//go:fix inline and the source-level inliner - The Go Programming Language
How Go 1.26's source-level inliner works, and how it can help you with self-service API migrations.
https://go.dev/blog/inliner
17 days ago
0
0
0
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.
20 days ago
1
1
0
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.
23 days ago
0
0
0
Writing type params with <> (e.g. List<Int>) 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)!
24 days ago
0
1
0
Agentic programming workflows rather remind me of genetic programming. The agent has a validation step that looks like a fitness function, and both run iterative trials.
26 days ago
0
1
0
I'm still not sure whether a language should include a "kitchen sink linter" like Rust's clippy or have a package oriented "thousand flowers bloom" linter like eslint for JS and TS. Clippy is delightful out of the box but eslint makes it so easy to have project specific lints.
28 days ago
0
1
0
Is there a good term for "after using this feature we realised that the best design is different from the current design"? In casual conversation I generally hear "bug" but there was nothing wrong with the original implementation.
28 days ago
1
1
0
I'm super impressed by how many lint rules can be implemented with just eslint's no-restricted-syntax and selectors. Example: { selector: "ExportNamedDeclaration[declaration=null][source=null]", message: "Add `export` directly to the function instead of a block export." }
about 1 month ago
0
0
0
There's something pleasingly self-referential about configuring an agent by talking to it. > Remember that [fact about data formats]. Agent: Noted. ... realise nothing happened ... > Write to your rules file that when I say "remember", I want you to write to the rules file.
about 1 month ago
0
1
0
Should lint suppressions be first class syntax or comments? Adding a proper metadata system (e.g. Clojure or Rust) is a big design space but it's clear which expressions are affected. Comments are much easier to implement but it's easy for users to get them wrong. Thoughts?
about 1 month ago
1
0
0
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"
hannahilea.com/blog/housepl...
loading . . .
An ode to houseplant programming ๐ชด
Waxing poetic about hyperlocal phytoid software development
https://hannahilea.com/blog/houseplant-programming/
about 1 month ago
1
1
0
One fun way of testing new AI models: take an existing codebase you have and just ask them to "review it and fix bugs". In principle this should find more issues over time as models get smarter. I've found a few bugs this way at least.
about 1 month ago
0
0
0
Cleaned up an old git repo of Ansible playbooks and it's amazing how much is just Docker now. Docker handles process supervision, centralises logging, and containers coexist without issues. It's nice when things get simpler.
about 1 month ago
0
0
0
After further playing with my LLM project, I'm surprised how hard it is to tune with system prompts. My agent kept saying "obviously" even though my prompt said "helpful, professional". Eventually I found that a "courteous" prompt gets "of course" which is better but not ideal.
about 2 months ago
0
0
0
I've been tinkering with an LLM interface with my calendar and it's really nice to use. "Delete my April trip" is a lot less fiddly than opening calendar, switching to the month view, scrolling to April and so on. I should probably build an undo as well though.
about 2 months ago
0
1
0
Today I learnt about "bypass charging", a phone feature where it can run directly off the mains without using the battery at all. No battery charging, less heat, less battery wear. Nifty.
www.androidauthority.com/phones-with-...
loading . . .
Here are all the phones that support bypass charging, and why you should use it
Few phones on the market can draw power directly from the wall, bypassing the battery while charging. But are the benefits tangible enough?
https://www.androidauthority.com/phones-with-bypass-charging-support-3509066/
about 2 months ago
0
1
2
I'm considering using WebP more: for example, my websites would load faster and browsers have supported it since 2020:
caniuse.com/webp
That said, GitHub just added support in August 2025, so I suspect I'd still find use cases that don't work yet:
github.blog/changelog/20...
loading . . .
WebP image format | Can I use... Support tables for HTML5, CSS3, etc
https://caniuse.com/webp
about 2 months ago
0
0
0
Test code is total: we require it to always terminate or it's a failure! It also typically has 100% line and branch coverage. I feel way less nervous about refactoring tests, you can always just run them.
about 2 months ago
0
1
0
I certainly see the appeal of an LLM system with full context and tool use (OpenClaw), but the lethal trifecta puts me off deploying it. I do like the idea of an agent with a heartbeat though. A bunch of nice cron-style workflows can be built on top.
about 2 months ago
0
0
0
Date of birth pickers are a surprisingly nuanced UI problem. What do you pick as the initial value? How do you allow users to easily move by large amounts (years) as well as small amounts (the exact day)? Defaulting to today and even allowing future dates is funny though.
about 2 months ago
0
3
0
I've written a website that archives all my posts/tweets/toots/skeets across different microblogging platforms! It's fun to be able to see similar posts that I wrote at completely different times. It also lets me edit links that have bitrotted.
miniblog.wilfred.me.uk
loading . . .
Wilfred miniblog
An archive of microblogs
https://miniblog.wilfred.me.uk/
2 months ago
0
0
0
When I moved back to the UK, I ordered SIMs for both myself and my wife. We ended up with consecutive numbers! It's really convenient sometimes.
2 months ago
0
1
0
An AI benchmark website that tries to run comparable benchmarks regularly to discover when LLM performance is degrading:
aistupidlevel.info
loading . . .
AI Benchmark Tool - Best AI Models 2025 | Compare Claude vs GPT vs Gemini
Ultimate AI benchmarking tool for 2025. Test AI performance, compare AI models, and find the best AI for coding. Real-time AI benchmark results and LLM performance tests.
https://aistupidlevel.info/
2 months ago
1
4
1
Futhark's design is deliberately trying to stay simple to keep long term design sustainable. The author also has an interesting discussion of relative versus absolute paths in import syntax, and how relative paths can make local analysis easier.
futhark-lang.org/blog/2018-06...
loading . . .
Designing a Programming Language for the Desert
A high-performance and high-level purely functional data-parallel array programming language that can execute on the GPU and CPU.
https://futhark-lang.org/blog/2018-06-18-designing-a-programming-language-for-the-desert.html
2 months ago
0
0
0
The vast majority of libraries have a single maintainer. Even if you weight by downloads, roughly half of downloaded libraries have a single maintainer too.
opensourcesecurity.io/2025/08-oss-...
loading . . .
Open Source is one person
The Register recently published a story titled Putin on the code: DoD reportedly relies on utility written by Russian dev. They should be ashamed of this story. This poor open source developer is gett...
https://opensourcesecurity.io/2025/08-oss-one-person/
2 months ago
0
3
1
Show, don't tell: effective advice for writing for both LLMs and people!
www.haskellforall.com/2026/01/prom...
loading . . .
Prompting 101: Show, donโt tell
Improve your prompts with better examples rather than better instructions
https://www.haskellforall.com/2026/01/prompting-101-show-dont-tell.html
2 months ago
0
1
0
I've been working on a search tool for a website with 9K items and a dumb implementation works just fine. I'd normally gravitate to a library or tool like elasticsearch (ES). Adding custom filters etc is trivial on handrolled code. I wonder what scale requires actual search infra like ES.
2 months ago
0
0
0
I see people advocating for writing a FAQ, but I really struggle to write one from scratch. The best FAQs are written as a response to, well, frequent questions. How do you populate the initial FAQ?
3 months ago
1
2
0
Wonderful post from the lead LLVM maintainer reflecting on how the project is run, the design issues in LLVM today, and opportunities to make it better:
www.npopov.com/2026/01/11/L...
loading . . .
LLVM: The bad parts
https://www.npopov.com/2026/01/11/LLVM-The-bad-parts.html
3 months ago
0
1
0
My default assumption is that external libraries are better than what I (or an LLM) would write in a v1. The extra effort to publish a project generally signifies that the author has spent a good amount of time on the problem. I end up prompting LLMs to prefer external code.
3 months ago
0
1
0
LLMs are great at style transfer, and this works surprisingly well for syntactic transformations too. I rewrote a small website's EJS templates to 1500 LOC of TSX with a oneshot in Claude. It took ~12 minutes, but it just worked. (TSX seems nicer than EJS for static analysis.)
3 months ago
0
1
0
It seems really odd to me that git uses 'cached' terminology for staging. For example, `git add
somefile.rs
; git diff --cached`. Caching implies state that you don't mind losing. There's very little state I want to lose in version control!
loading . . .
https://somefile.rs
3 months ago
1
1
0
Are there any nice cross-platform ways to trigger a notification from a terminal? I've been using
pushover.net
but you need to use a browser and it's noticeably slower than the native options. (Pushover is great for mobile notifications though.)
loading . . .
Pushover: Simple Notifications for Android, iPhone, iPad, and Desktop
https://pushover.net/
3 months ago
0
0
0
Terminad is a really interesting approach to rendering markdown in the CLI. It deliberately doesn't render links, so you can always see both the link text and the URL. In a browser you have hover to see URLs, but not necessarily in a terminal.
github.com/Canop/termimad
loading . . .
GitHub - Canop/termimad: A library to display rich (Markdown) snippets and texts in a rust terminal application
A library to display rich (Markdown) snippets and texts in a rust terminal application - Canop/termimad
https://github.com/Canop/termimad
3 months ago
0
3
0
reposted by
Wilfred
Ahmad Shadeed
3 months ago
This feature in
@developer.chrome.com
's DevTools is so helpful. Every time I get stuck on a calc() or other CSS functions, I solve the bug much quicker with it. Thanks to everyone who worked on this! ๐
3
48
7
Should code completion offer private methods/fields? If the user chooses a private method, you can offer a quickfix to change its visibility. It's clutter though. I frequently find myself wanting fields that I haven't exposed yet, and frustrated that the IDE hides them.
3 months ago
0
0
0
Blogged: Devlog 2: The Importance of Sandboxing Exploring PL opportunities when you have a first-class sandbox.
www.garden-lang.org/blog/sandbox...
loading . . .
Devlog 2: The Importance of Sandboxing - Garden
https://www.garden-lang.org/blog/sandbox.html
3 months ago
0
1
0
Is there a good canonical name for autofixes, where a static analysis tool can apply a change to resolve an issue? Clang calls them fix-its, LSP calls them quickfixes.
3 months ago
0
0
0
I've realised that
AGENTS.md
/
CLAUDE.md
solve two distinct problems: * It tells the LLM the conventions of the project, avoiding follow-up prompts. * It precomputes a summary of the project, saving a bunch of searches at the start of a session.
3 months ago
0
0
0
Igalia's post on self-hosting CI runners is a masterclass in build engineering. It shows dealing with weird API constraints, but still finding good designs. I also learnt that some CI systems use OCR on Apple's installers to automate!
www.azabani.com/2025/12/18/s...
loading . . .
Web engine CI on a shoestring budget
How we built a CI runner orchestration system that halved Servoโs build times for only 300 EUR a month.
https://www.azabani.com/2025/12/18/shoestring-web-engine-ci.html
3 months ago
0
1
0
I've been experimenting with different pagination UIs. It's so common to have arrows, but I've realised they're redundant here. When you have the adjacent values as well as the final value, you don't need > and >> arrows too. Thoughts?
3 months ago
0
0
0
Load more
feeds!
log in