Why this book? Who should read this book. How to use this book. Related references.
The durability of Unix. Why learn Unix's culture? What Unix does right. Basics of the Unix philosophy. Applying the Unix philosophy. Our major case studies.
Chapter 2: On Not Reinventing The Wheel
Laziness is an economic virtue. Taoist programming. Leveraging open-source software. Open-source resources. Open-source licensing and its consequences.
How to choose a language for your application. C versus C++. The memory-management problem and its consequences. The argument for interpretive languages. Mixed-language strategies. Perl. Python. Shell. Tcl/Tk. Java. Emacs Lisp.
Chapter 4: The Tactics of Development
The essential Unix development tools. Leveraging the compiler. Editors. Make. Design for transparency. Run-time debugging. Profiling. Version-control systems. Emacs as the universal front-end.
Chapter 5: As Simple As Possible, But No Simpler
Application partitioning. Avoiding the monolith. The implications of cheap process spawning. Classical filters and redirection. Shellouts, wrappers, and plugins. Pipes, messages, shared memory, signals. Client/server partitioning as a complexity-control tactic. Beware of threads.
Chapter 6: The Well-Tempered Application
Unix conventions and the Rule of Least Surprise. How run-control files should look. What to make configurable. Conventions for command-line options. Environment variables.
Chapter 7: Showing Your Best Face
History of interface design under Unix. Tradeoffs between CLI and GUI Don't give it a GUI if it doesn't need one. Separating the GUI from the back end. Dual-mode interfaces. The Web browser as universal front end.
Leveraging YACC and LEX for applications. Interface builders for GUIs. The uses and abuses of macroexpansion. Glade.
Chapter 9: Designing for Portability
Unix standards: which ones matter, which ones don't. ANSI/POSIX. Tools for portability -- Imake, autoconf, custom shell configurators. GCC as a portability lever.
Chapter 10: A KISS And A Handshake
The importance of readability. False economy of binary protocols. Classical Internet protocols and the Internet meta-protocol. HTTP as universal application protocol.
Chapter 11: Documenting With Less Pain
Unix documentation styles. Man pages. HTML. Texinfo. Sgml-tools. POD. Javadoc. DocBook. Mixing styles. Unsolved problems.
Chapter 12: The Open-Source Development Model
Why does open-source software work? Open development. Scaling effects. Capturing the advantages of open development in commercial projects. RFCs and the open standards process. Standards as DNA, programs as RNA.
Other topics to be included: