Welcome

A personal blog

Writing a Wakatime Plugin for Helix in Scheme

My daily editor is Helix. I never got deep into Vim, so switching to Helix cost me nothing in terms of adjustment — it actually felt more natural. Helix works great out of the box, and the “select-then-act” editing model clicks with me more intuitively than Vim’s “verb-then-noun” approach. Helix mainline doesn’t have a plugin system, which has long been one of the biggest pain points in the community. However, mattwparas maintains a fork (the steel-event-system branch) that integrates Steel — an embedded Scheme implementation — as a plugin runtime. Scheme is a dialect of Lisp, and Steel is a dialect of Scheme, so you can probably guess what writing plugins looks like: lots of parentheses. ...

May 3, 2026 · 9 min

Cross-Compiling Rust Projects to FreeBSD with cargo-zigbuild

Notes on cross-compiling a Rust project from Linux (x86_64) to FreeBSD x86_64 using cargo-zigbuild, and the pitfalls I ran into along the way. The project is a Discord bot that depends on crates like sysinfo, tikv-jemallocator, and sea-orm (SQLite). Background Zig ships with a multi-platform libc and cross-compilation toolchain. cargo-zigbuild leverages Zig as the linker to enable Rust cross-compilation — usually much more convenient than setting up a cross toolchain yourself. That said, targeting FreeBSD comes with some unique gotchas. ...

April 6, 2026 · 7 min

How I Improved My Rust Compilation Experience

Slow compilation and massive target/ directories — the classic Rust complaints. This post documents the techniques I’m currently using to make things better, using my project ClewdR (an async web service with 394 crate dependencies) as an example. Environment: Rust 1.94.1, CachyOS (Arch-based), NVMe SSD, Btrfs. rust-lld Linking is the final step of Rust compilation, and traditionally the slowest. GNU ld performs terribly here, especially with LTO enabled. The old approach was to manually install lld or mold and configure .cargo/config.toml: ...

April 6, 2026 · 5 min

In-Place ext4 to Btrfs Conversion on an Oracle Cloud Ubuntu VM

A writeup of converting an Oracle Cloud Ubuntu 26.04 ARM VM from ext4 to Btrfs in place. WARNING: The operations in this post involve an in-place filesystem conversion — if anything goes wrong, data cannot be recovered. My VM was a blank machine with no important data, which is the only reason I felt comfortable doing this. If your machine has anything you can’t afford to lose, make sure you have a full backup first (Oracle Cloud Boot Volume Backup, rsync to a remote, dd image, etc.), and verify it’s actually restorable before proceeding. A failed filesystem conversion with no backup means total data loss — there’s no undoing it. ...

April 6, 2026 · 6 min