Welcome to my corner of the web! I’m a Software Engineer and author this blog.
A Status Line for Claude Code
How I set up Claude Code’s status line to stay on top of context window usage.
LKMP Bug Fixing Summer 2024
A recap of my Linux Kernel Mentorship Program Bug Fixing Summer 2024 experience — contributions, tools, speaking engagements, and lessons learned.
Patch Workflow
My current Linux kernel patch workflow using git worktree and b4, from cloning a bare repository to sending patches upstream.
Debugging Kernel Oops
A practical guide to reading and debugging Linux kernel Oops messages, covering report anatomy, System.map lookups, and debugging with objdump and gdb.
Making sense of Node.js internals: a first pass
In this post, I attempt to peel back one of the layers that make up Node.js. I plan to continue my deep dive in future posts, so this is not meant to be exhaustive, but I hope to lay out some of the underlying principles that contribute to Node’s non-blocking nature. Which leads into my first question: what exactly does non-blocking mean? To examine, I’ll first visit some basic operating systems theory concepts. ...
Linux Kernel Development: Exploring USB device drivers
In this follow-up post, I cover my experience experimenting with USB device drivers.
Getting Started With Linux Kernel Development
In this post, I cover my experience diving into writing a Loadable Kernel Module (LKM) for the Linux kernel. From setting up the development environment to compiling and testing the module.
Input validation for the security-minded developer
A practical look at input validation for web developers, covering numbers, text, SQL injection, CSV injection, and insecure deserialization with Go code examples.
Parsing CSV Files in Go
In this post, we’ll dive into processing CSV files with Go and its standard library.