Distributed Systems
Compilers
- http://mattias-.github.io/2015-01-03/DIY-Make-Your-Own-Programming-language/
- http://stackoverflow.com/questions/1669/learning-to-write-a-compiler
- http://homepage.ntlworld.com/edmund.grimley-evans/cc500/
- http://compilers.iecc.com/crenshaw/
- https://github.com/rui314/8cc (http://www.sigbus.info/how-i-wrote-a-self-hosting-c-compiler-in-40-days.html)
- http://bellard.org/tcc/
- http://llvm.org/docs/tutorial/
- Compilers Stanford
- Automata by Ullman
- Toy compiler, Writing own compiler
- Build your own Lisp
- http://research.microsoft.com/en-us/um/people/simonpj/papers/pj-lester-book/
- Interpretor: http://ruslanspivak.com/lsbasi-part1/
Compiler articles
- http://blog.jamesdbloom.com/JVMInternals.html
- http://blog.altoros.com/golang-internals-part-2-diving-into-the-go-compiler.html
Networking
- http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html
- http://intronetworks.cs.luc.edu/
Infrastructure workouts
- Design and implement a durable complex event-processing service with exactly-once semantics.
- Create an internal framework for writing new API endpoints
- You’ve scaled a large system before. You realize that 95% of scaling is doing nitty-gritty detail work.
- You have extensive experience with server operations, though you lean more towards writing code.
- Design and implement a distributed authentication service
- Implement efficient realtime queries on top of MongoDB by consuming the MongoDB replication log.
- Add features to DDP, Meteor’s state synchronization protocol. For example, you might add protocol-level support for pagination of realtime datasets, and write a DDP caching proxy that performs this pagination in a separate tier from the application logic.
- Write a kernel for a distributed operating system that schedules application processes across a set of machines. Make it capable of updating itself in place without any downtime.
- Implement an advanced package dependency resolver on top of a pseudoboolean SAT solver.
- Perform static analysis on JavaScript to automatically determine the correct load order for the files, when the app developer hasn’t specified it.
- Write a full implementation of SQL that runs in-memory in a web browser, and also supports arbitrary realtime queries and speculative local execution of updates that are in flight to the server.