Writing

Notes on the web, React, TypeScript, and Rust.

Tutorials and thoughts from building software. Posts live on blog.msdqn.dev.

Nix on Android: A Real Shell on Your Phone

Two Android phones, one with a locked bootloader running nix-on-droid under proot, the other unlocked with Nix running natively at /nix. Both get the same zsh, Neovim and CLI tools as my Mac, built from one flake.

One Nix Flake for Every Machine I Own

Three Macs, two NixOS machines, two VPSes, a Raspberry Pi, WSL and two Android phones, all built from one flake. How the repository is laid out, how home-manager is shared down to a phone, and the bugs that only showed up on real hardware.

Cosmium: Why I Patch Chromium Instead of Hiding It With JavaScript

A Chromium in a container does not look like anyone's computer, and stealth plugins can only cover that from JavaScript. What Cosmium patches in C++, how it keeps a fingerprint coherent, and how it compares to stealth plugins, patched drivers and other anti-detect browsers.

Why Axum Is the Best Web Framework for Rust

Axum is mostly Tokio, Hyper and Tower, with routing and extractors on top. Why that makes it my default for Rust backends, how extractors, errors and tests work in practice, and where it still falls short.