# davlgd tech blog > The tech lab, where I break, build & learn things ## Home - [Projects](https://labs.davlgd.com/projects/index.html.md): Open-source bits I maintain. - [Search](https://labs.davlgd.com/search/index.html.md): grep -r through the archive. ## Posts - [Posts](https://labs.davlgd.com/posts/index.html.md): All my posts — software/hardware experiments, Linux deep-dives, language tinkering. - [RFC Atlas: the whole RFC series, on a sphere](https://labs.davlgd.com/posts/2026-08-31-rfc-atlas/index.html.md): 9834 documents, 65511 relationships - [uutils: what a Rust coreutils changes for you](https://labs.davlgd.com/posts/2026-08-26-uutils-rust-coreutils/index.html.md): One binary, 114 commands - [MCP in V: shipping against a moving specification](https://labs.davlgd.com/posts/2026-08-19-v-mcp-module/index.html.md): Aligned to the spec, then the spec moved - [mktemp: stop inventing your own temporary files](https://labs.davlgd.com/posts/2026-08-12-mktemp-install/index.html.md): Two lines that make a script safe - [env: the shebang line, and why it breaks](https://labs.davlgd.com/posts/2026-07-29-env-shebang/index.html.md): One argument, two behaviours - [V 0.5.2: object storage in the standard library](https://labs.davlgd.com/posts/2026-07-22-v-net-s3/index.html.md): SigV4 in pure V, no dependencies - [time: two of them, and you use the wrong one](https://labs.davlgd.com/posts/2026-07-15-time-command/index.html.md): The shell keyword hides the real command - [script: record and replay your terminal](https://labs.davlgd.com/posts/2026-07-01-script-record-terminal/index.html.md): A session you can play back - [smolvm: microVMs for code you did not write](https://labs.davlgd.com/posts/2026-06-24-smolvm-microvms/index.html.md): Three hypervisors behind one API - [lsof: everything is a file, and here is the proof](https://labs.davlgd.com/posts/2026-06-17-lsof-open-files/index.html.md): Who is holding that open? - [strings, file and xxd: looking inside a binary](https://labs.davlgd.com/posts/2026-06-03-strings-file-xxd/index.html.md): What is this file, really? - [Verne: I rewrote my blog's generator, in V](https://labs.davlgd.com/posts/2026-05-27-verne-static-site-generator/index.html.md): From Astro to Hugo to my own, in 22 hours - [shuf and split: cutting and shuffling files](https://labs.davlgd.com/posts/2026-05-20-shuf-split/index.html.md): Sampling and slicing, without a script - [Zen C, four months later: from promising to shipping](https://labs.davlgd.com/posts/2026-05-13-zen-c/index.html.md): When a hyped language survives its first quarter - [tr: the most underrated one-liner in your shell](https://labs.davlgd.com/posts/2026-05-06-tr-translate/index.html.md): Translate, squeeze, delete - [x402 v2: the payment status code nobody used](https://labs.davlgd.com/posts/2026-04-29-x402-v2/index.html.md): HTTP 402, finally answered - [comm and join: set operations without a database](https://labs.davlgd.com/posts/2026-04-22-comm-join/index.html.md): Two sorted files, four questions - [column and numfmt: making shell output readable](https://labs.davlgd.com/posts/2026-04-08-column-numfmt/index.html.md): Alignment, without the awk - [seq: the little generator that beats your for loop](https://labs.davlgd.com/posts/2026-03-25-seq-command/index.html.md): Counting, with a catch - [true and false: two commands that do nothing](https://labs.davlgd.com/posts/2026-03-11-true-false-commands/index.html.md): And a copyright notice longer than the code - [factor: your OS ships a prime factorization tool](https://labs.davlgd.com/posts/2026-02-25-factor-primes/index.html.md): In coreutils, of all places - [zellij: a multiplexer that tells you the shortcuts](https://labs.davlgd.com/posts/2026-02-18-zellij-multiplexer/index.html.md): Layouts in a file, not a script - [tsort: there is a topological sort in your coreutils](https://labs.davlgd.com/posts/2026-02-11-tsort-topological/index.html.md): Version 7 UNIX, for building libraries - [cgroups v2: the limits your tools cannot see](https://labs.davlgd.com/posts/2026-01-28-cgroups-v2-limits/index.html.md): free says 31 GB, the kernel disagrees - [nice: being polite with the scheduler](https://labs.davlgd.com/posts/2026-01-14-nice-priority/index.html.md): Priority is not a quota - [jj: git without the staging area](https://labs.davlgd.com/posts/2026-01-07-jj-version-control/index.html.md): Every change is a commit, and undo works - [cal 9 1752: the eleven days that never existed](https://labs.davlgd.com/posts/2025-12-31-cal-1752/index.html.md): The month with a hole in it - [taskpolicy: the macOS answer to taskset](https://labs.davlgd.com/posts/2025-12-17-taskpolicy-macos/index.html.md): Ask, do not pin - [taskset: choosing which cores your command runs on](https://labs.davlgd.com/posts/2025-12-03-taskset-cpu-affinity/index.html.md): Pin it down - [watch: the poor man's monitoring, in one command](https://labs.davlgd.com/posts/2025-11-19-watch-command/index.html.md): Re-run it until something changes - [systemd timers: cron, with a dry run](https://labs.davlgd.com/posts/2025-11-12-systemd-timers/index.html.md): Check the schedule before you trust it - [nohup, disown and setsid: surviving the hangup](https://labs.davlgd.com/posts/2025-11-05-nohup-disown-setsid/index.html.md): What dies when you close the terminal - [flock: stopping a cron job from running twice](https://labs.davlgd.com/posts/2025-10-22-flock-command/index.html.md): Overlap is the bug you never see - [at: scheduling a command to run once](https://labs.davlgd.com/posts/2025-10-08-at-command/index.html.md): Cron's forgotten cousin - [sleep and timeout: doing nothing, on purpose](https://labs.davlgd.com/posts/2025-09-24-sleep-timeout/index.html.md): Two ways to control the clock - [pv: put a progress bar on any pipe](https://labs.davlgd.com/posts/2025-09-10-pv-pipe-viewer/index.html.md): Watching bytes go by - [mkosi: one config file, twelve kinds of image](https://labs.davlgd.com/posts/2025-09-03-mkosi-images/index.html.md): Declarative, and it burns to USB - [mkfifo: a file that is actually a pipe](https://labs.davlgd.com/posts/2025-08-27-mkfifo-named-pipe/index.html.md): Zero bytes, and it carries everything - [stdbuf: why your tail -f | grep prints nothing](https://labs.davlgd.com/posts/2025-08-13-stdbuf-buffering/index.html.md): The buffer nobody asked for - [moreutils: the coreutils that never shipped](https://labs.davlgd.com/posts/2025-07-30-moreutils/index.html.md): Fifteen tools you will want tomorrow - [sponge: why sort file > file empties your file](https://labs.davlgd.com/posts/2025-07-16-sponge-command/index.html.md): Truncated before it even began - [xargs: turning a text stream into arguments](https://labs.davlgd.com/posts/2025-07-02-xargs-command/index.html.md): Because not every command reads stdin - [tee: writing to a file you are not allowed to write to](https://labs.davlgd.com/posts/2025-06-18-tee-command/index.html.md): The pipe that forks - [units: how many furlongs per fortnight is that?](https://labs.davlgd.com/posts/2025-06-04-units-conversion/index.html.md): Three thousand units, one command - [dc: the calculator that is older than C](https://labs.davlgd.com/posts/2025-05-21-dc-calculator/index.html.md): Reverse Polish, from the PDP-11 - [expect: when yes is not the answer to every question](https://labs.davlgd.com/posts/2025-05-07-expect-command/index.html.md): When one 'y' won't do - [Back to write](https://labs.davlgd.com/posts/2025-05-06-back-to-write/index.html.md): But not to basics - [How to create a CLI in V](https://labs.davlgd.com/posts/2024-10-21-how-to-create-a-cli-vlang/index.html.md): That's what "batteries included" means - [Chroot to any Linux (to test it)](https://labs.davlgd.com/posts/2024-05-chroot-to-any-linux-to-test-it/index.html.md): Bring your own kernel - [What's a (minimal) Linux?](https://labs.davlgd.com/posts/2024-05-whats-a-minimal-linux/index.html.md): KISS Linux, the manual way - [Why I do not use WordPress for this blog](https://labs.davlgd.com/posts/2024-04-why-i-now-use-wordpress-for-this-blog/index.html.md): Better keep it simple - [A road story to my first Exherbo Linux packages](https://labs.davlgd.com/posts/2024-03-my-first-exherbo-packages/index.html.md): My love letter to distributed open source and home made things - [Zig and WASM: your best friend here is the compiler](https://labs.davlgd.com/posts/2024-03-zig-compiler-wasm/index.html.md): WASM is coming... everywhere! - [Having fun with (Franken)PHP](https://labs.davlgd.com/posts/2024-03-having-fun-with-franken-php/index.html.md): No dangerous code has been resurrected for this article - [Anchor () element: do you know its download and ping attributes?](https://labs.davlgd.com/posts/2024-02-anchor-download-ping-attributes/index.html.md): I love to still have such n00b moments - [How I developed my own static hosting web server, in V](https://labs.davlgd.com/posts/2024-02-how-own-web-server-vlang/index.html.md): Not the better, but self crafted - [Do you know the yes command?](https://labs.davlgd.com/posts/2024-02-yes-command/index.html.md): Automate, the old-fashioned way - [How I use Linux distributions on my Mac, with a single command](https://labs.davlgd.com/posts/2024-02-docker-alias/index.html.md): Thanks to aliases and Docker - [Put an ‘up’ alias in your life (to start with)](https://labs.davlgd.com/posts/2024-02-add-up-aliases/index.html.md): And launch it as often as you want - [Convert images to WebP from Finder in macOS, thanks to Automator and Quick actions](https://labs.davlgd.com/posts/2024-01-automator-convert-webp-macos/index.html.md): This blog's key to lightness - [Zed: your next IDE to try](https://labs.davlgd.com/posts/2024-01-zed/index.html.md): Not Otomo's - [EasyGit: a git server… based on iCloud Drive](https://labs.davlgd.com/posts/2024-01-easygit-icloud-drive/index.html.md): How simple is that? - [Schedule article publication in an AstroPaper blog](https://labs.davlgd.com/posts/2024-01-schedule-posts-astropaper/index.html.md): Static is fantastic (sort of) - [asitop: monitor your Apple Silicon SoC, power consumption included](https://labs.davlgd.com/posts/2024-01-apple-silicon-asitop/index.html.md): How low is it? - [GitHub Desktop became my best friend to rewrite (git) history](https://labs.davlgd.com/posts/2024-01-github-desktop-rewrite-history/index.html.md): Never do that... until you do it - [How I've upgraded this blog to Astro(Paper) 4.0](https://labs.davlgd.com/posts/2024-01-blog-update-astropaper-v4/index.html.md): New year, new blog... and already a new version - [How I mirror my GitHub repositories on GitLab (thanks to Framagit)](https://labs.davlgd.com/posts/2023-12-github-gitlab-framagit/index.html.md): Publishing source code is good. Having a 3-2-1 backup system is better - [How this blog was built](https://labs.davlgd.com/posts/2023-12-how-this-blog-was-built/index.html.md): Thanks to Astro, Clever Cloud and GitHub