miniblog.

Setting up my new SSD, and I've learnt that TRIM isn't always worthwhile on modern disks: https://www.spinics.net/lists/raid/msg40916.html
Emacs trick I've not seen before: press t in an edebug session! This pauses for one second at every stop point, effectively stepping for you automatically. https://www.gnu.org/software/emacs/manual/html_node/elisp/Edebug-Execution-Modes.html#Edebug-Execution-Modes
DigiKam 7 is out, including a much improved ML model for organising photos! https://www.digikam.org/news/2020-07-19-7.0.0_release_announcement/ Since using Google Photos, I've wanted this feature in all the photo apps I use.
On the typical lisp function taking more arguments than its Haskell analogue: https://chrisdone.com/posts/haskell-lisp-philosophy-difference/
I've read about dematerialisation, but it's interesting to see in a computer context. I've bought an NVMe disk and USB-powered speakers this week. Both had fewer components than the parts they replaced.
Building Docker images with Nix, and a neat discussion of graphing algorithms to decide how to flatten layers: https://grahamc.com/blog/nix-and-layered-docker-images
Rust's backtraces moving to be native Rust: https://github.com/rust-lang/rust/pull/74682/commits/06d565c967bfb7c6ff52a991bbe47b4a2a25de3e This prevents malformed DWARF info leading to security issues, an avenue for vulnerabilities I'd not considered before. https://twitter.com/Brittain_Ben/status/1288193388588740615
I've been doing more functional programming recently, and realised just how general a for loop is. We needed a function `int list -> (bool, int) list` that would mark each item if it was the largest seen so far. Pretty straightforward.
Rewriting, debugging, and fuzzing a new manual format in OpenBSD: https://www.openbsd.org/papers/bsdcan15-mandoc.pdf I particularly enjoyed the root cause analysis of the fuzzing bugs found.
Photo
A fresh linux install also makes me realise how few programs I use regularly. I've only installed Emacs, Firefox, a few interpreters/compilers and vlc. I keep thinking I must be missing something, but I haven't needed anything else yet.
OpenBSD replacing sudo with doas, as a simpler, easier to reason about alternative: https://flak.tedunangst.com/post/doas The motivation resonates with me too: I only ever use sudo for personal usage, not managing complex groups of users with different permissions.
Did a fresh Arch Linux install on a new SSD today. It was easier than I remembered, even with LUKS and LVM set up. Configuring wifi cards has got much easier: it's really important for the initial bootstrap these days.
I'm fascinated to learn that hard disk repair services will replace individual components in disks for you: https://www.youtube.com/watch?v=0iiEKZhDapo Needing a clean room is a pretty major hurdle to doing the maintenance yourself.
# mount /dev/MyVolGroup/root /mnt # mkdir /mnt/home # mount /dev/MyVolGroup/home /mnt/home Unix mounting conventions still feel strange to me. Creating a directory in one mount, only to mount something else at the same path. It feels weird to create a dir in the first mount.
Apparently some hardware manufacturers use FreeDOS for their hardware management tools! https://en.wikipedia.org/wiki/FreeDOS#Commercial_uses
I haven't used resumable exceptions much at all. I keep coming across scenarios where I wish the current language had them. Most recent example: writing a tree-walking interpreter with a step counter. I'd love to throw ScriptExceededLimit with an option of resuming.
Abusing GitHub actions to keep the lights on when you're committing: https://devopsdirective.com/posts/2020/07/stupid-github-actions/
"[peerDependencies are] a commonly misunderstood gem of the npm model" https://lexi-lambda.github.io/blog/2016/08/24/understanding-the-npm-dependency-model/
A neat subgenre of quines: invalid programs that print their own source code! $ python https://reproducing.py/ File "https://t.co/z9z9h8CFOT";, line 1 File "https://t.co/z9z9h8CFOT";, line 1 ^ IndentationError: unexpected indent
@cstanhope Interesting, I didn't know that about Pascal! Go does make returning an accumulator a little more concise. Compare with e.g. Python: def foo(): res = [] # not needed in Go for x in y: if z: res.append(x) return res That's the biggest advantage I can see though.
Showing 1,361-1,380 of 7,508 posts