LEARNING LOG
From npm install to insmod: My Journey into Linux Kernel Module
I moved from Node.js to Linux Kernel Module. A look at how the Kernel is just an Express.js app, and how to build a self-destructing kernel module.
Read the case study →I want to document my journey. This is my attempt to index what I learn. A collection of what I'm reading, writing, and breaking.
Demystifying the CPU. I wanted to build a computer from scratch to understand exactly how code becomes electricity.
Software is just a very tall stack of abstractions on top of NAND gates. I built an assembler and VM translator, proving that there is no magic inside the black box—just logic.
Moving from 'user space' consumer to 'kernel space' controller. Using XV6 and Linux to understand syscalls, process scheduling, and pipes.
The OS isn't a black box. I successfully recreated Go routines in C using RISC-V pipe syscalls. It's messy, it's dangerous, and it gives you total control.
To understand the cost of every byte. Why high-level languages are safe but slow, and how to crash a program with a single pointer.
Manual memory management is about discipline. In TypeScript, a mistake is a bug. In C, it's a segfault. I learned to respect the heap and eliminate leaks.
Leaving the playground. Applying low-level discipline to a massive, real-world production codebase.
Reading production code is harder than writing it. I navigated a massive codebase to merge a PR for Nextcloud Server. The code works.
Moving past 'it works' to 'how it scales'. Tearing down communication protocols and database internals to understand the cost of every request.
Abstractions are a tax. Understanding the difference between a message queue and a POST request at the syscall level is what separates an engineer from a framework user.
LEARNING LOG
I moved from Node.js to Linux Kernel Module. A look at how the Kernel is just an Express.js app, and how to build a self-destructing kernel module.
Read the case study →LEARNING LOG
I abandoned the safety of Garbage Collection to fight raw bytes. A look at memory padding, the expensive reality of realloc(), and why 13 bytes sometimes equals 24.
Read the case study →API INTEGRATION
Visualizing audio habits in real-time. Bypassed standard polling for Server-Sent Events (SSE) to handle live data streams without the heavy overhead of WebSockets.
Read the case study →