Bit-level reasoning, concurrency, portable builds, and a socket-based HTTP server capstone.
Use masks, flags, shifts, and cache-aware data layouts, then measure changes instead of trusting intuition.
Compare process isolation with shared-memory threads, then use pthreads, mutexes, condition variables, and signals safely.
Split code into reusable headers and libraries, build static and shared objects, and make the same source compile cleanly with GCC and Clang.
Build an educational HTTP server with sockets, request parsing, routing, responses, and graceful shutdown, then test it with curl.