Technical Papers Every Programmer Should Read (At Least Twice)
A Fast File System for UNIX: <a href="http://www.cs.berkeley.edu/~brewer/cs262/FFS.pdf" rel="nofollow">http://www.cs.berkeley.edu/~brewer/cs262/FFS.pdf</a> Modern filesystems are based on this design. They add significant features - like journaling - but by reading this paper, you will form a basis for how modern file systems work.<p>The Google Filesystem: <a href="http://labs.google.com/papers/gfs.html" rel="nofollow">http://labs.google.com/papers/gfs.html</a> Great example of what you can design when you decide certain things - like storing small files - are not important.<p>MapReduce: Simplified Data Processing on Large Clusters: <a href="http://research.google.com/archive/mapreduce.html" rel="nofollow">http://research.google.com/archive/mapreduce.html</a> Great example of taking an existing idea and using it to achieve high performance.<p>The Implementation of the Cilk 5 Multithreaded Language: <a href="http://supertech.csail.mit.edu/papers/cilk5.pdf" rel="nofollow">http://supertech.csail.mit.edu/papers/cilk5.pdf</a> Apple's Grand Central Dispatch uses a lot of ideas from this paper.