C++ Object Oriented Data Structures
Compilers – Principles, Techniques and Tools
The ‘dragon’ book. This is the first book on compiler design and parser generation that I read (though that was a borrowed copy of the previous edition). It provides a great introduction and got me interested in lex (and flex) and yacc (bison). There is a second edition of this book. I’m guessing that the previous version had a different title.
.NET Web Services
Inside Distributed COM
One of a number of COM books from Microsoft that covered the ongoing development of the technology before they shelved it to work on .NET.
Effective C#
I have found the ‘Effective C++’ books by Meyers to be indispensable when trying to get a development team with varying levels of experience up to speed. They’re also handy as a starting point for ‘best practices for C++’ lists, and if you’ve got a team of more than a couple of engineers you need such a list.
This book has some useful advice (and there may be a newer edition…I’ve got to take a look soon) but doesn’t seem to dive as deep or think as broadly as the C++ books. It has some useful advice around the basics of making C# work and work well though and if I had a major component of a product based in the managed environment I’d likely use this as the starting point for a C# best practices list and recommend that the team members read it or something similar. There is a third edition of this book on pre-order.
Numerical Recipes, Third Edition
The book for numerical computing recipes covering a broad range of topics with excellent examples and sufficient detail to get the job done. This edition is implemented in C++ instead of C in the previous editions (or fortran 77). This book has been of great value many times in my career.
Programming .NET Components
Designing and Using OLE Custom Controls
Pro Visual C++/CLI and the .NET 2.0 Platform
Managed C++ is an interesting twist on the intersection between the CLR environment and native code development. I’m not sure I’d use it in a real system as .NET programmers are likely to be more comfortable with C# or VB.NET but it is worth being aware of for the possible cases where this middle ground might simplify things. This looks like a revised edition of this book.
Programming with Visual C++ .NET
Javascript – The Definitive Guide, Sixth Edition
Covers most of the things you’d want to know about JavaScript as of the time it was written. Not really stand-alone, but as a reference to the language and various environments it can run in it is very useful.
Computer Graphics – Principles and Practice
One of the first broad based texts on computer graphics that I read. A bit to generic to be useful for practical issues, but a nice overview of the topic. There is a third edition of this book.
Debugging .NET 2.0 Applications
The .NET Developer’s Guide to Windows Security
Effective C++, Second Edition
This is one of my favorite ‘advanced topics’ books on C++ programming (along with its companion volume). I have run discussion groups based on this book at two previous workplaces with good results. An excellent place to go looking for ‘best practices’ items for C++ programming as well.
Object Oriented Design Heuristics
A decent overview of object oriented design techniques.
Object Oriented Analysis and Design
Object oriented design as described by Grady Booch. There is a third edition.
Essential COM
The ‘Box’ book that acted as the initial ‘primer’ on COM technology. Covers the basics of how COM works but the technology evolved far beyond the initial version described here.
Unix Internals – The New Frontier
The Design and Implementation of the 4.4 BSD Operating System
Letter Forms
Debugging the Development Process
The Elements of Typographic Style
There was a time when I became very interested in fonts, typefaces and the associated technology. This was one of the books that came highly recommended as a source of wisdom in the typographic world.
There are certainly many subtleties to properly designing and using typefaces that I took away from that dive into letter forms and the knowledge continues to serve me well.
Internetworking with TCP/IP, Volume I, Third Edition
The core volume of the ‘Comer’ books on IP. This one covers all of the internal protocol details (see volume two for implementation advice and code fragments). Anyone who wants to write networked code needs a book like this one (or just buy this book and be done). There is now a sixth edition.
It does lack significant IPv6 information (and I’ve got less knowledge at the moment on that front than I’d prefer…something that needs looking into soon). I tend to fall back to the RFCs (as they are the source documents for all of this) when I need the real details. Trying to come up to speed on something as complex as IPv6 through the standards documents would be challenging though…got to go and find a book soon.
Design Patterns
The original ‘patterns’ book. I have used the patterns described here on a regular basis without really thinking about it. The real benefit of this volume (from my perspective) is to provide a shared vocabulary that allows engineers to talk about these patterns of activity in a concise and consistent manner. It has been quite some time since I last read through this one and I should probably revisit it soon.
Moving to a new job and a new development team is going to move communications back to front and center. The last few years I’ve been working with a team that I’ve known for quite a while and we haven’t been replacing attrition. Getting back to a more expansive environment will be good, but I’m looking at the things I need to knock some rust off of before I get there. Shouldn’t be a big issue, but I can’t ignore it.
Developing Professional Applications for Windows 95 and NT Using MFC
One of the better early references on MFC that I bought. Clear and easy to work through.