Patch Workflow

This post will serve as a reference for me to revisit and improve upon as I continue learning* I joined the LFX Mentorship program for the Linux kernel not that long ago, and I’ve been working on finding an effective workflow for creating and managing patches. Initially, I created all my patches using git format-patch and relied on git send-email to mail them out. However, during my time in the Linux Kernel Bug Fixing Summer 2024 program (LKMP), I was introduced to b4 and git worktree through interactions with mentors, Ricardo B....

December 17, 2024 · 4 min · felipe

Debugging Kernel Oops

Introduction When writing or using software, it’s not uncommon to run into bad states. Sometimes things break and we’re met with a cryptic stack trace. In a web server, this may look like an HTTP 500 response along with a helpful error message hinting at where the issue may lie - if you were diligent about adding proper error handling, that is - in the best case. Other times you’ll be faced with a vague error message without much to go on....

June 1, 2024 · 7 min · felipe

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....

May 25, 2024 · 8 min · felipe

Linux Kernel Development: Exploring USB device drivers

In this follow-up post, I cover my experience experimenting with USB device drivers.

May 20, 2024 · 6 min · felipe

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.

May 9, 2024 · 8 min · felipe

Input validation for the security-minded developer

If you spent any time developing web applications you’ve come across a need to validate input, whether it be on forms or API endpoints. In an ideal world, we’d only deal with trusted users with good intentions and completely close off any interactions with untrusted users. But the reality is that most applications need to deal with input, and we can’t always guarantee that it’s coming from a trusted source or that a malicious threat actor isn’t sitting in between the connection....

May 3, 2024 · 9 min · felipe

Parsing CSV Files in Go

In this post, we’ll dive into processing CSV files with Go and its standard library.

April 30, 2024 · 9 min · felipe