- Welcome to my corner of the web.
- I’m a Software Engineer and author this blog.
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鈥檝e 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....
Debugging Kernel Oops
Introduction When writing or using software, it鈥檚 not uncommon to run into bad states. Sometimes things break and we鈥檙e 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鈥檒l be faced with a vague error message without much to go on....
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鈥檚 non-blocking nature. Which leads into my first question: what exactly does non-blocking mean? To examine, I鈥檒l 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
If you spent any time developing web applications you鈥檝e come across a need to validate input, whether it be on forms or API endpoints. In an ideal world, we鈥檇 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鈥檛 always guarantee that it鈥檚 coming from a trusted source or that a malicious threat actor isn鈥檛 sitting in between the connection....
Parsing CSV Files in Go
In this post, we鈥檒l dive into processing CSV files with Go and its standard library.