2025-07-31
A dive into open chat protocols
wiki.alopex.li/ADiveIntoOpenChat2025-07-03
Beamer Viewer
beamerviewer.euxane.euThis web app displays notes and slides in separate windows,
keeping both synchronised.
It accepts simple, double-width, or double-height PDF presentations:
2025-06-20
Cursed Knowledge | Immich
immich.app/cursed-knowledgeThings we wish we didn't know
2025-06-16
CSS Classes considered harmful
www.keithcirkel.co.uk/css-classes-considered-harmfulThe solution to all of these problems
I humbly put forward that modern web development provides us all the utilities to move away from class names and implement something much more robust, with some fairly straightforward changes:
Attributes
Attributes allow us to parameterise a component using a key-value representation, very similar to Map<string, T>. Browsers come with a wealth of selector functions to parse the values of an attribute.
2025-05-23
Async from scratch 1: What's in a Future, anyway? | natkr's ramblings
natkr.com/2025-04-10-async-from-scratch-1There are a lot of guides about how to use async Rust from a "user's
perspective", but I think it's also worth understanding how it
works, what those async blocks actually mean.
2025-02-04
Running a Debian Sid on Ubuntu
blogops.mixinet.net/posts/incus2024-11-20
On "Safe" C++
izzys.casa/2024/11/on-safe-cxx2024-10-16
Damas-Hindley-Milner inference two ways
bernsteinbear.com/blog/type-inference2024-09-25
in which interactive development saves the day
technomancy.us/1892024-09-17
Master hexagonal architecture in Rust
www.howtocodeit.com/articles/master-hexagonal-architecture-rustEverything you need to write flexible, future-proof Rust applications using hexagonal architecture.
2024-08-14
A Flexible Minimalist Neovim for 2024
wickstrom.tech/2024-08-12-a-flexible-minimalist-neovim.html2024-06-20
Go's 'range over function' iterators and avoiding iteration errors
utcc.utoronto.ca/~cks/space/blog/programming/GoIteratorsAndAvoidingMistakes2024-06-19
Aurora - Python Static Site Generator
aurora.jamesg.blogAurora: An extensible, Python-based static site generator.
2024-06-18
Understanding a Python closure oddity
utcc.utoronto.ca/~cks/space/blog/python/UnderstandingClosureOddity2024-06-14
A useful shell prompt
blog.meain.io/2022/my-shell-promptFeatureful zsh prompt.
litterbox - IRC logger
git.causal.agency/litterbox/about2024-06-13
Category Theory for Programmers: The Preface
bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface2024-06-12
My experience crafting an interpreter with Rust
ceronman.com/2021/07/22/my-experience-crafting-an-interpreter-with-rustLast year I finally decided to learn some Rust. The official book by Steve Klabnik and Carol Nichols is excellent, but even after reading it and working on some small code exercises, I felt that I …
2024-06-11
NetBSD 10 on a Pinebook Pro laptop
www.idatum.net/netbsd-10-on-a-pinebook-pro-laptop.htmlI've been running NetBSD on a RockPro64 since NetBSD 10-BETA, and I'm still happy with it now with NetBSD 10-RELEASE. I'm always looking for hardware to hack NetBSD though, and I recently watched a FOSDEM 2024 video: NetBSD 10: Thirty years, still going strong!. The Pinebook Pro laptop was mentioned at one point, which has the same RockChip SoC as the RockPro64. That reminded me I'd been wanting to give this inexpensive ARM 64 laptop a try.
2024-06-10
soju IRC bouncer
soju.imsoju is a user-friendly IRC bouncer. soju connects to upstream IRC servers on behalf of the user to provide extra functionality. soju supports many features such as multiple users, numerous IRCv3 extensions, chat history playback and detached channels. It is well-suited for both small and large deployments.