Software Dev Notes
Practical programming, architecture and tooling for developers.
Programming Fundamentals
Data structures, algorithms and core concepts.
How Binary Search Works: Halving Your Way to Any Value
Binary search finds a value in a sorted list by halving the search range each step, needing about log2 n comparisons. Here is how it works, with code.
BasicsHow Hash Tables Work: Average Constant-Time Lookups Explained
A hash table turns keys into array positions with a hash function, giving average constant-time lookups. Learn collisions, load factor and resizing.
Web Development
HTTP, frontend, backend and APIs.
How Cookies and Sessions Work in Web Applications
HTTP is stateless, so websites use cookies and sessions to remember users. Learn Set-Cookie, HttpOnly, Secure, SameSite and server-side sessions.
WebHow HTTP Request and Response Work, Step by Step
HTTP is the request and response protocol behind the web. This guide walks through methods, headers, status codes and what happens on each request.
Systems Programming
Memory, C, Rust and how computers run code.
How a C Program Goes From Source File to Executable
A C program passes through preprocessing, compilation, assembly and linking before it runs. Learn each stage, the files produced and the gcc commands.
SystemsHow Virtual Memory Works in Modern Operating Systems
Virtual memory gives each process its own address space, backed by pages and page tables. Learn page faults, the TLB and why it protects programs.
Software Architecture
Design principles, patterns and modular code.
Coupling and Cohesion: The Two Measures That Shape Maintainable Modules
Understand coupling and cohesion, the two classic measures of module design, with examples, a cohesion scale and practical steps to improve both.
ArchitectureHow Layered Architecture Works: Layers, Boundaries and Dependency Direction
Learn how layered architecture splits an application into presentation, business and data layers, and why dependency direction decides maintainability.
Developer Tools
Version control, terminals, editors and build systems.
How Build Systems Work: Dependency Graphs, Incremental Builds and Caching
Learn how build systems turn source files into programs using dependency graphs, timestamps or hashes, incremental rebuilds and remote caches.
ToolsHow Version Control Stores History: Snapshots, Hashes and Branches
See how Git stores history with content-addressed objects, snapshots, commit graphs and branch pointers, and why this design keeps changes cheap and safe.
Testing & Debugging
Writing tests and finding bugs efficiently.
How Debuggers Work: Breakpoints, Single-Stepping and Debug Symbols
Learn how debuggers pause programs with breakpoints, single-step through instructions, and map machine state back to source lines using debug symbols.
TestingUnit vs Integration Testing: What Each Catches and Where Each Fails
Compare unit and integration tests by scope, speed and failure diagnosis, and learn how to balance them in a test suite using the test pyramid.