# The Codex

I want to document my journey — reading, writing, and breaking.

## Active Learning

### Layer 1: The Hardware (Nand2Tetris)
- **Status:** Active
- **Goal:** Demystifying the CPU. I wanted to build a computer from scratch to understand exactly how code becomes electricity.
- **Sources:** Nand2Tetris.org
- **Key insight:** Software is just a very tall stack of abstractions on top of NAND gates. I will build an assembler and VM translator, proving that there is no magic inside the black box, just logic.
- **Output:** [repo or PR](https://github.com/fauzanfebrian/nand2tetris)

### Layer 2: Kernel Engineering
- **Status:** Stalled
- **Goal:** Moving from 'user space' consumer to 'kernel space' controller. Using XV6 and Linux to understand syscalls, process scheduling, and pipes.
- **Sources:** Cusdeb Operating System Camp
- **Key insight:** 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.
- **Output:** [repo or PR](https://github.com/fauzanfebrian/xv6-riscv)

### Layer 3: Advanced C & Memory
- **Status:** Completed
- **Goal:** 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.
- **Sources:** Vlad Budnitski (Advanced C); MyCodeSchool
- **Key insight:** 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.
- **Output:** [repo or PR](https://github.com/fauzanfebrian/c-memory-playground)

### Layer 3: Open Source (Nextcloud)
- **Status:** Merged
- **Goal:** Leaving the playground. Applying low-level discipline to a massive, real-world production codebase.
- **Sources:** Nextcloud Server Repo; Open Source Contribution
- **Key insight:** Reading production code is harder than writing it. I navigated a massive codebase to merge a PR for Nextcloud Server. The code works.
- **Output:** [repo or PR](https://github.com/nextcloud/server/pull/55992)

### Backend Internals
- **Status:** Completed
- **Goal:** Moving past 'it works' to 'how it scales'. Tearing down communication protocols and database internals to understand the cost of every request.
- **Sources:** Hussein Nasser (Backend Engineering)
- **Key insight:** 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.
- **Output:** [repo or PR](https://github.com/fauzanfebrian/spotify)

## Bookshelf

### Code: The Hidden Language of Computer Hardware and Software
- **Author:** Charles Petzold
- **The gist:** The book that explains how a flashlight switch eventually becomes a CPU. If you skip this, you're just guessing how computers work.

### Operating System Concepts
- **Author:** Abraham Silberschatz
- **The gist:** The "Dinosaur Book." It is dense, dry, and absolutely necessary if you want to understand what the kernel is actually doing with your threads.

### Babel: Or the Necessity of Violence
- **Author:** R.F. Kuang
- **The gist:** A brutal look at how language—like code, is a tool for both connection and empire. Because not everything I read is technical.

## Writing

### [LEARNING LOG] Fix ASIX AX88179 Ethernet Crash Loop on Linux When Using a UGREEN USB-C Hub
UGREEN USB-C Hub's LCD spams the USB bus and kills ASIX Ethernet on Linux. Fix it with a signed DKMS driver.

Read: [Fix ASIX AX88179 Ethernet Crash Loop on Linux When Using a UGREEN USB-C Hub](/forge/fix-ax88179-ethernet-crash-loop-linux-ugreen-usb-c-hub)

### [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: [From npm install to insmod: My Journey into Linux Kernel Module](/forge/from-npm-install-to-insmod-my-journey-into-linux-kernel-module)

### [LEARNING LOG] From NestJS to malloc: My Nightly Battle with Memory
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: [From NestJS to malloc: My Nightly Battle with Memory](/forge/from-nestjs-to-malloc-my-nightly-battle-with-memory)

[Read others →](/forge)


---
### [ SYSTEM DIRECTORY ]
- [Root](https://fauzanfebrian.my.id/)
- [Forge](https://fauzanfebrian.my.id/forge)
- [Codex](https://fauzanfebrian.my.id/codex)
- [Tools](https://fauzanfebrian.my.id/tools)
