Table of Contents
Event timelines of the Unix Industry and of GNU/Linux and Unix are available on the Web. A timeline tree of Unix releases is also available.
[Appleton] Randy Appleton. Improving Context Switching Performance of Idle Tasks under Linux. 2001.
Available on the Web.
[Baldwin-Clark] Carliss Baldwin and Kim Clark. Design Rules, Vol 1: The Power of Modularity. 2000. MIT Press. ISBN 0-262-024667.
[Bentley] Jon Bentley. Programming Pearls. 2nd Edition. 2000. Addison-Wesley. ISBN 0-201-65788-0.
The third essay in this book, “Data Structures Programs”, argues a case similar to that of Chapter9 with Bentley's characteristic eloquence. Some of the book isavailable on the Web.
[BlaauwBrooks] Gerrit A. Blaauw and Frederick P. Brooks. Computer Architecture: Concepts and Evolution. 1997. ISBN 0-201-10557-8. Addison-Wesley.
[Bolinger-Bronson] Dan Bolinger and Tan Bronson. Applying RCS and SCCS. O'Reilly & Associates. 1995. ISBN 1-56592-117-8.
Not just a cookbook, this also surveys the design issues in version-control systems.
[Brokken] Frank Brokken. C++ Annotations Version. 2002.
[BrooksD] David Brooks. Converting a UNIX .COM Site to Windows. 2000.
[Brooks] Frederick P. Brooks. The Mythical Man-Month. 20th Anniversary Edition. Addison-Wesley. 1995. ISBN 0-201-83595-9.
[Boehm] Hans Boehm. Advantages and Disadvantages of Conservative Garbage Collection.
Thorough discussion of tradeoffs between garbage-collected and non-garbage-collected environments. Available on the Web.
[Cameron] Debra Cameron, Bill Rosenblatt, and Eric Raymond. Learning GNU Emacs. 2nd Edition. O'Reilly & Associates. 1996. ISBN 1-56592-152-6.
[Cannon] L. W. Cannon, R. A. Elliot, L. W. Kirchhoff, J. A. Miller, J. M. Milner, R. W. Mitzw, E. P. Schan, N. O. Whittington, Henry Spencer, David Keppel, and Mark Brader. Recommended C Style and Coding Standards. 1990.
An updated version of the Indian Hill C Style and Coding Standards paper, with modifications by the last three authors. It describes a recommended coding standard for C programs. Available on the Web.
[Christensen] Clayton Christensen. The Innovator's Dilemma. HarperBusiness. 2000. ISBN 0-066-62069-4.
The book that introduced the term “disruptive technology”. A fascinating and lucid examination of how and why technology companies doing everything right get mugged by upstarts. A business book technical people should read.
[Comer] Unix Review. Douglas Comer. “Pervasive Unix: Cause for Celebration”. October 1985. p.42.
[Cooper] Alan Cooper. The Inmates Are Running the Asylum. Sams. 1999. ISBN 0-672-31649-8.
Despite some occasional quirks and crotchets, this book is a trenchant and brilliant analysis of what's wrong with software interface designs, and how to put it right.
[Coram-Lee] Tod Coram and Ji Lee. Experiences — A Pattern Language for User Interface Design. 1996.
[DuBois] Paul DuBois. Software Portability with Imake. O'Reilly & Associates. 1993. ISBN 1-56592-055-4.
[Eckel] Bruce Eckel. Thinking in Java. 3rd Edition. Prentice-Hall. 2003. ISBN 0-13-100287-2.
[Feller-Fitzgerald] Joseph Feller and Brian Fitzgerald. Understanding Open Source Software. 2002. ISBN 0-201-73496-6. Addison-Wesley.
[FlanaganJava] David Flanagan. Java in a Nutshell. O'Reilly & Associates. 1997. ISBN 1-56592-262-X.
[FlanaganJavaScript] David Flanagan. JavaScript: The Definitive Guide. 4th Edition. O'Reilly & Associates. 2002. ISBN 1-596-00048-0.
[Fowler] Martin Fowler. Refactoring. Addison-Wesley. 1999. ISBN 0-201-48567-2.
[Friedl] Jeffrey Friedl. Mastering Regular Expressions. 2nd Edition. 2002. ISBN 0-596-00289-0. O'Reilly & Associates. 484pp..
[Fuzz] Barton Miller, David Koski, Cjin Pheow Lee, Vivekananda Maganty, Ravi Murthy, Ajitkumar Natarajan, and Jeff Steidl. Fuzz Revisited: A Re-examination of the Reliability of Unix Utilities and Services. 2000.
[Gabriel] Richard Gabriel. Good News, Bad News, and How to Win Big. 1990.
[Gancarz] Mike Gancarz. The Unix Philosophy. Digital Press. 1995. ISBN 1-55558-123-4.
[GangOfFour] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. 1997. ISBN 0-201-63361-2.
[Garfinkel] Simson Garfinkel, Daniel Weise, and Steve Strassman. The Unix Hater's Handbook. IDG Books. 1994. ISBN 1-56884-203-1.
[Gentner-Nielsen] Communications of the ACM. Association for Computing Machinery. Don Gentner and Jacob Nielsen. “The Anti-Mac Interface”. August 1996.
[Gettys] Jim Gettys. The Two-Edged Sword. 1998.
[Glickstein] Bob Glickstein. Writing GNU Emacs Extensions. O'Reilly & Associates. 1997. ISBN 1-56592-261-1.
[Graham] Paul Graham. A Plan for Spam.
[Harold-Means] Elliotte Rusty Harold and W. Scott Means. XML in a Nutshell. 2nd Edition. O'Reilly & Associates. 2002. ISBN 0-596-00292-0.
[Hatton97] IEEE Software. Les Hatton. “Re-examining the Defect-Density versus Component Size Distribution”. March/April 1997.
[Hatton98] IEEE Software. Les Hatton. “Does OO Sync with the Way We Think?”. 15. (3).
[Hauben] Ronda Hauben. History of UNIX.
[Heller] Steve Heller. C++: A Dialog. Programming with the C++ Standard Library. Prentice-Hall. 2003. ISBN 0-13-009402-1.
[Hunt-Thomas] Andrew Hunt and David Thomas. The Pragmatic Programmer: From Journeyman to Master. Addison-Wesley. 2000. ISBN 0-201-61622-X.
[Kernighan95] Brian Kernighan. Experience with Tcl/Tk for Scientific and Engineering Visualization. USENIX Association Tcl/Tk Workshop Proceedings. 1995.
[Kernighan-Pike84] Brian Kernighan and Rob Pike. The Unix Programming Environment. Prentice-Hall. 1984. ISBN 0-13-937681-X.
[Kernighan-Pike99] Brian Kernighan and Rob Pike. The Practice of Programming. 1999. ISBN 0-201-61586-X. Addison-Wesley.
An excellent treatise on writing high-quality programs, surely destined to become a classic of the field.
[Kernighan-Plauger] Brian Kernighan and P. J. Plauger. Software Tools. Addison-Wesley. 1976. ISBN 201-03669-X.
[Kernighan-Ritchie] Brian Kernighan and Dennis Ritchie. The C Programming Language. 2nd Edition. Prentice-Hall Software Series. 1988. ISBN 0-13-110362-8.
[Lampson] ACM Operating Systems Review. Association for Computing Machinery. Butler Lampson. “Hints for Computer System Design”. October 1983.
[Lapin] J. E. Lapin. Portable C and Unix Systems Programming. Prentice-Hall. 1987. ISBN 0-13-686494-5.
[Leonard] Andrew Leonard. BSD Unix: Power to the People, from the Code. 2000.
[Levy] Steven Levy. Hackers: Heroes of the Computer Revolution. Anchor/Doubleday. 1984. ISBN 0-385-19195-2.
[Lewine] Donald Lewine. POSIX Programmer's Guide: Writing Portable Unix Programs. 1992. O'Reilly & Associates. ISBN 0-937175-73-0. 607pp..
[Libes-Ressler] Don Libes and Sandy Ressler. Life with Unix. 1989. ISBN 0-13-536657-7. Prentice-Hall.
This book gives a more detailed version of Unix's early history. It's particularly strong for the period 1979–1986.
[Lions] John Lions. Lions's Commentary on Unix 6th Edition. 1996. 1-57398-013-7. Peer-To-Peer Communications.
PostScript rendering of Lions's original floats around the Web. This URL may be unstable.
[Loukides-Oram] Mike Loukides and Andy Oram. Programming with GNU Software. O'Reilly & Associates. 1996. ISBN 1-56592-112-7.
[Lutz] Mark Lutz. Programming Python. O'Reilly & Associates. 1996. ISBN 1-56592-197-6.
[McIlroy78] The Bell System Technical Journal. Bell Laboratories. M. D. McIlroy, E. N. Pinson, and B. A. Tague. “Unix Time-Sharing System Forward”. 1978. 57 (6,part2). p.1902.
[McIlroy91] Proc. Virginia Computer Users Conference. Volume 21. M. D. McIlroy. “Unix on My Mind”. p.1-6.
[Miller] The Psychological Review. George Miller. “The Magical Number Seven, Plus or Minus Two”. Some limits on our capacity for processing information. 1956. 63. pp.81-97.
[Mumon] Mumon. The Gateless Gate.
A good modern translation is available on the Web.
[OpenSources] Sam Ockman and Chris DiBona. Open Sources: Voices from the Open Source Revolution. O'Reilly & Associates. 1999. ISBN 1-56592-582-3. 280pp..
[Oram-Talbot] Andrew Oram and Steve Talbot. Managing Projects with Make. O'Reilly & Associates. 1991. ISBN 0-937175-90-0.
[Ousterhout94] John Ousterhout. Tcl and the Tk Toolkit. Addison-Wesley. 1994. ISBN 0-201-63337-X.
[Ousterhout96] John Ousterhout. Why Threads Are a Bad Idea (for most purposes). 1996.
An invited talk at USENIX 1996. There is no written paper that corresponds to it, but the slide presentation is available on the Web.
[Padlipsky] Michael Padlipsky. The Elements of Networking Style. iUniverse.com. 2000. ISBN 0-595-08879-1.
[Parnas] Communications of the ACM. Parnas L. David. “On the Criteria to Be Used in Decomposing Systems into Modules”.
Available on the Web at the ACM Classics page.
[Pike] Rob Pike. Notes on Programming in C.
This document is popular on the Web; a title search is sure to find several copies. Here is one.
[Prechelt] Lutz Prechelt. An Empirical Comparison of C, C++, Java, Perl, Python, Rexx, and Tcl for a Search/String-Processing Program .
[Raskin] Jef Raskin. The Humane Interface. Addison-Wesley. 2000. ISBN 0-201-37937-6.
A summary is available on the Web.
[Ravenbrook] The Memory Management Reference.
[Raymond96] Eric S. Raymond. The New Hacker's Dictionary. 3rd Edition. 1996. ISBN 0-262-68092-0. MIT Press. 547pp..
Available on the Web at Jargon File Resource Page.
[Raymond01] Eric S. Raymond. The Cathedral and the Bazaar. 2nd Edition. 1999. ISBN 0-596-00131-2. O'Reilly & Associates. 240pp..
[Reps-Senzaki] Paul Reps and Nyogen Senzaki. Zen Flesh, Zen Bones. 1994. Shambhala Publications. ISBN 1-570-62063-6. 285pp..
A superb anthology of Zen primary sources, presented just as they are.
[Ritchie79] Dennis M. Ritchie. The Evolution of the Unix Time-Sharing System. 1979.
[Ritchie93] Dennis M. Ritchie. The Development of the C Language. 1993.
[RitchieQED] Dennis M. Ritchie. An Incomplete History of the QED Text Editor. 2003.
[Ritchie-Thompson] The Unix Time-Sharing System. Dennis M. Ritchie and Ken Thompson.
[Saltzer] ACM Transactions on Computer Systems. Association for Computing Machinery. James. H. Saltzer, David P. Reed, and David D. Clark. “End-to-End Arguments in System Design”. November 1984.
[Salus] Peter H. Salus. A Quarter-Century of Unix. Addison-Wesley. 1994. ISBN 0-201-54777-5.
An excellent overview of Unix history, explaining many of the design decisions in the words of the people who made them.
[Schaffer-Wolf] Evan Schaffer and Mike Wolf. The Unix Shell as a Fourth-Generation Language. 1991.
Available on the Web. An open-source implementation, NoSQL, is available and readily turned up by a Web search.
[Schwartz-Christiansen] Randal Schwartz and Tom Phoenix. Learning Perl. 3rd Edition. O'Reilly & Associates. 2001. ISBN 0-596-00132-0.
[Spinellis] Journal of Systems and Software. Diomidis Spinellis. “Notable Design Patterns for Domain-Specific Languages”. 56. (1). February 2001. p.91-99.
[Stallman] Richard M. Stallman. The GNU Manifesto.
[Stephenson] Neal Stephenson. In the Beginning Was the Command Line. 1999.
Available on the Web, and also as a trade paperback from Avon Books.
[Stevens90] W. Richard Stevens. Unix Network Programming. Prentice-Hall. 1990. ISBN 0-13-949876-1.
The classic on this topic. Note: Some later editions of this book omit coverage of the Version 6 networking facilities like mx().
[Stevens92] W. Richard Stevens. Advanced Programming in the Unix Environment. 1992. ISBN 0-201-56317-7. Addison-Wesley.
Stevens's comprehensive guide to the Unix API. A feast for the experienced programmer or the bright novice, and a worthy companion to Unix Network Programming.
[Stroustrup] Bjarne Stroustrup. The C++ Programming Language. Addison-Wesley. 1991. ISBN 0-201-53992-6.
[Tanenbaum-VanRenesse] Andrew S. Tanenbaum and Robbert van Renesse. A Critique of the Remote Procedure Call Paradigm. EUTECO'88 Proceedings, Participants Edition. 1988. pp.775-783.
[Tidwell] Doug Tidwell. XSLT: Mastering XML Transformations. O'Reilly & Associates. 2001. ISBN 1-596-00053-7.
[Torvalds] Linus Torvalds and David Diamond. Just for Fun. The Story of an Accidental Revolutionary. HarperBusiness. 2001. ISBN 0-06-662072-4.
[Vaughan] Gary V. Vaughan, Tom Tromey, and Ian Lance Taylor. GNU Autoconf, Automake, and Libtool. New Riders Publishing. 2000. 390p.. ISBN 1-578-70190-2.
A user's guide to the GNU autoconfiguration tools. Available on the Web.
[Vo] Software Practice & Experience. Kiem-Phong Vo. “The Discipline and Method Architecture for Reusable Libraries”. 2000. 30. p.107-128.
[Wall2000] Larry Wall, Tom Christiansen, and Jon Orwant. Programming Perl. 3rd Edition. O'Reilly & Associates. 2000. ISBN 0-596-00027-8.
[Welch] Brent Welch. Practical Programming in Tcl and Tk. Prentice-Hall. 1999. ISBN 0-13-022028-0.
[Williams] Sam Williams. Free as in Freedom. O'Reilly & Associates. 2002. ISBN 0-596-00287-4.
[Yourdon] Edward Yourdon. Death March. The Complete Software Developer's Guide to Surviving “Mission Impossible” Projects. Prentice-Hall. 1997. ISBN 0-137-48310-4.