a professor at Illinois got frustrated with existing systems programming textbooks
so he started a wikibook project and had students help write it
it covers C, processes, threads, synchronization, memory allocation, networking, filesystems, scheduling and security
One of the best free courses on low-level performance programming - Aalto University's Programming Parallel Computers covers SIMD, pipelining, cache optimization, and more.
If you care about squeezing CPU cycles, this is definitely worth taking up.
https://t.co/wWeN3xA2L2
If you're making technical decisions that shape a system, you're already doing software architecture.
The difference is whether you're doing it intentionally.
In Grokking Software Architecture, @codeliftsleep gives developers the vocabulary, frameworks, and thinking process needed to make better long-term technical decisions.
Watch the First Chapter Summary: https://t.co/z8tejnhusJ
spend time on learning cache memory today
1. L1i, L1d,L2, L3 cache
2.SRAM VS DRAM
3.cache locality
4.cache miss/hit rate
5.cache lines
6.false sharing
7.cache line bouncing
8.cache thrashing , LRU, P-LRU, random, LFU etc
tomorrow i will start simd and os internals.
If you've ever wanted to understand how debuggers work under the hood with a deep dive, this blog series is for you.
"Writing a Debugger From Scratch" by @timmisiak - 8 parts covering everything from attaching to a process all the way to source and symbols.
char (*(*x[3])(void))[5];
If reading that took you more than a few seconds, you want the right-left rule from Peter van der Linden's Expert C Programming.
Start at the name, look right, then left. When parentheses block you, pop out and keep going.
x
right: [3] → array of 3
left: * → pointers to
right: (void) → functions (no args) returning
left: * → pointers to
right: [5] → arrays of 5
left: char → char
So:
x is an array of 3 pointers to functions returning pointers to arrays of 5 char.
C declarations are weird. This book teaches you how to read them.