[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.
Available on the Web.
[BrooksD] David Brooks.
Converting a UNIX .COM Site to Windows.
2000.
Available on the Web.
[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.
Available on the Web.
[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.
Available on the Web.
[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.
Available on the Web.
[Gabriel] Richard Gabriel.
Good News, Bad News, and How to Win Big.
1990.
Available on
the Web.
[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.
Available
on the Web.
[Gentner-Nielsen]
Communications of the ACM.
Association for Computing Machinery.
Don Gentner and Jacob Nielsen. “The Anti-Mac Interface”. August 1996.
Available on the
Web.
[Gettys] Jim Gettys.
The Two-Edged Sword.
1998.
Available on the Web.
[Glickstein] Bob Glickstein.
Writing GNU Emacs Extensions.
O'Reilly & Associates.
1997.
ISBN 1-56592-261-1.
[Graham] Paul Graham.
A Plan for Spam.
Available on the Web.
[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.
Available
on the Web.
[Hatton98]
IEEE Software.
Les Hatton. “Does OO Sync with the Way We Think?”.
(3).
Available
on the Web.
[Hauben] Ronda Hauben.
History of UNIX.
Available on the Web.
[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.
Available
on the Web.
[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.
Available
on the Web.
[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.
Available on the Web.
[Levy] Steven Levy.
Hackers: Heroes of the Computer Revolution.
Anchor/Doubleday.
1984.
ISBN 0-385-19195-2.
Available on the Web.
[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.
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.
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..
Available on the Web.
[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.
[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.
Available on
the Web.
[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.
Available on the Web.
[Ritchie93] Dennis M. Ritchie.
The Development of the C Language.
1993.
Available on the Web.
[RitchieQED] Dennis M. Ritchie.
An Incomplete History of the QED Text Editor.
2003.
Available on the Web.
[Ritchie-Thompson]
The Unix Time-Sharing System.
Dennis M. Ritchie and Ken Thompson.
Available on the Web.
[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.
Available on the Web.
[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”.
(1).
February 2001.
p.91-99.
Available
on the Web.
[Stallman] Richard M. Stallman.
The GNU Manifesto.
Available on
the Web.
[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.
p.107-128.
Available
on the Web.
[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.
Available
on the Web.
[Yourdon] Edward Yourdon.
Death March.
The Complete Software Developer's Guide to Surviving
“Mission Impossible” Projects.
Prentice-Hall.
1997.
ISBN 0-137-48310-4.