Personal ATProto PDS implementation optimised for NixOS/Caddy, with no Bluesky infrastructure defaults.
I have been working on AI projects since 2017 primarily as the token software engineer in a group of AI researchers. My roles have consisted of taking models trained by research teams and integrating them into applications that real people can use. These experiences have given me a degree of exposure to how AI is built, developed, and run that most software engineers haven't had. That said, not having a formal background in AI or working much on the model development side there has been a gap in my understanding about how the tools that we use work. The time has come for me to close that gap.
Ewan's personal package monorepo — language-agnostic workspace with TypeScript, Rust, and Python packages.
Rust CLI tools for managing nixos/nix-darwin configurations — now part of the @ewanc26/pkgs monorepo.
eBPF is one of those technologies that immediately feels powerful but rarely feels friendly at the start. I wanted to experiment with user‑space probes using Rust and Aya, but the setup itself was solid, but the combination of ARM processors, Podman security constraints, and Aya’s toolchain requirements made the early steps unexpectedly tricky: a Mac Studio M3 Ultra as the primary machine and a Linux laptop where container‑based attempts (Podman) were unreliable. Aya itself pulls in a non‑trivial toolchain, and I initially ended up on nightly Rust with a scattered set of workarounds.
Calling JS from Rust, building the Connect-4 board as a Vec, and rendering it as HTML across the WASM boundary.
Got nerd sniped into missing a workout, and improving the performace of rendering 500k rectangles by 10x.
Project structure, wasm-bindgen, enums, and traits — first steps toward building Connect-4 with Rust and WASM.
Architecture of Flashlight, a browser roguelike with vanilla JS, Rust/WASM, recursive shadowcasting, and BFS pathfinding.
The periodic Rust-induced conflicts happening with the Linux kernel hint at underlying generational problems facing the project. And it’s already led a prominent maintainer to quit.
Creating motion streaks in a Bevy game using a ring buffer.
Building the calendar stacking UI in Rust with Dioxus, my favorite UI library for cross platform development.
Using Petgraph's directed graph to model overlapping calendar events instead of self-referential types in Rust.
How Apple, Google, and Outlook stack overlapping calendar events differently, and what sane stacking looks like.
A spritesheet animation state machine in Rust with page-based looping and variant transitions for 2D games.
The history of WD-40, a chemical substance with an unusual origin story and a rust-fighting ability that has become a standby of workbenches the world over.