Books
Shelfari: Book reviews on your book blog
Jump to:
Stuff I’d like to read
Giving: How Each of Us Can Change the World by President Bill Clinton
Linux System Programming: Talking Directly to the Kernel and C Library
Agile Software Development
The Pragmatic Programmer
Peopleware
In progress
Linux Device Drivers, 3rd Edition by Corbet/Rubini/Kroah-Hartman
Stuff I’ve read (or at least skimmed)
Linux Kernel Development (by Robert Love)
Advanced UNIX Programming (by Marc Rochkind)
Practical Common Lisp
The Little Schemer
Herding Cats: A Primer for Programmers Who Lead Programmers
Oracle 10g Grid & Real Application Clusters (RAC)
Mac OS X Tiger for UNIX Geeks
Advanced Programming in the UNIX Environment
Beyond the C++ Standard Library : An Introduction to Boost
A really interesting read. Some of the more interesting things that I picked up:
boost::shared_ptr- likeauto_ptron steroids, a very nice reference-counted smart pointer. Not only can it clean up memory allocated with new, but you can pass in a custom deleter and thus use it to clean up anything, such as close a file or database connection, etc. The book also coversshared_array, intrusive_ptr, weak_ptr, scoped_ptr,andscoped_arrayboost::numeric_castcan warn you when you’re casting a number to a smaller number type that will truncate.boost::lexical_castcan convert back and forth between strings and numbers, thereby accomplishing in one concise line, conversions that I normally do with a few lines ofstringstreamcode.boost::regexcan do all kinds of interesting things with regular expressions.boost::anyis an interesting variant type that allows storing several types of values, but is type-safe in the sense that it makes the caller specify the correct type in order to gain access.boost::tupleis a logical extension ofstd::pairand allows a nice way to get multiple return values from a function:boost::tuple
gcd_lcm(int val1, int val2); … boost::tie(gcd, lcm) = gcd_lcm(15, 20); boost::signalis an interesting “signals and slots” (or “publish and subscribe” or callbacks) implementation.
The Career Programmer: Guerilla Tactics for an Imperfect World
A bit too cynical and whimsical for my taste, but nonetheless offers some good advice about the “softer” aspects of creating software for a living.
First, Break All the Rules: What the World’s Greatest Managers Do Differently
It’s a pretty interesting book. The authors worked for the Gallup Organization, which aside from being famous for its political polls, does a lot of consulting work for big corporations. They did a lot of surveys where they tried to figure out what practices successful managers use that differ from other managers. What they found is that the greatest managers treat each person as an individual with their own particular set of talents and weaknesses and that they try to emphasize each person’s strengths. They don’t try to fix a person’s weaknesses; rather they concentrate on cultivating their talents. They identify four keys:
- Select for talent
- Define the right outcomes
- Focus on strengths
- Find the right fit
This is an extreme simplification of the book’s premises, but I do think that it’s worth the read if you are interested in this sort of thing.
The One Thing You Need To Know : …About Great Managing, Great Leading, and Sustained Individual Success [ABRIDGED] (Audio CD)
4 CD set with some really interesting insights about managing, leading, and individual success. Talks about:
- The difference between managing and leading
- Hiring for talent
- Giving praise
- Cultivating a person’s strengths
- How to keep employees motivated
- How leaders create a compelling vision of the future
- Maximizing individual success by concentrating on your talents and ridding from your life any activities that you don’t enjoy
Like the above book, also from Marcus Buckingham of the Gallup Organization. A good listen.
Software Development for Small Teams: A RUP-Centric Approach
All in all, not a super useful book to me, but if you’re interested in processes like RUP and PSP, then you may really enjoy this.
Jabber Developer’s Handbook
I really enjoyed this book. So much so that I read almost all of the book in a single day. The best thing that I can say about this book is that I went from knowing literally nothing about Jabber to knowing enough to write a Yahoo! Music Engine plugin that allows the Yahoo! Music Engine to be remote controlled over Jabber. The great thing about Jabber (or what is now called XMPP) is that it’s not just a protocol for IM. More generally, it’s a point to point communication protocol that doesn’t require opening up ports on firewalls.
Programming .NET Components
This book gave me a good introduction to some of the basic concepts and philosophy behind .NET. It explains “DLL Hell” and how .NET solves the problem with assemblies, strong naming, the GAC, etc. It talks a lot about interfaces and explicit and implicit interface implementation and some of the interesting things that C# does with events, delegates, and asynchronous method calls. This is not a good book for a programming beginner, but it is a great one for someone who is looking for best practices for .NET component implementation. I met the author, Juval Löwy, a few years ago at a party since he used to write articles for my wife’s magazine. He is super smart and really nice.
Microsoft Visual C# .NET 2003 Developer’s Cookbook
I really like the “cookbook format” which seems to have become a popular trend in technical books lately. I like these type of books, because you can quickly pick up useful snippets of information and you can just sort of browse them when you’re looking to solve a particular problem, without feeling like you need to read the whole book cover to cover. This one had some information which came in handy while developing my Yahoo! Music Engine plugins - in particular some of the info on COM Interop.
Perl Cookbook
Another one of those “cookbook format” books. This one is chock full of useful Perl tips and I often refer to it.
Perl Black Book
Another Perl book that I have found to be very useful.
Rapid Application Development with Mozilla
When I quickly looked through this book in the store, I was impressed with the breadth of topics that it covered, but when I bought it, I was disappointed by how unclear the explanations were and how it seemed to ramble on and not say anything that interested me. Mind you, I read this after already knowing quite a bit about Mozilla.
Creating Applications with Mozilla
A lot of what I know about XUL, XBL, RDF, etc…, came from this book. While I found it to have a lot of minor typos (which annoys me probably more than most since my wife is an editor) and the book is a little bit dated now, the explanations are quite clear - more clear, IMHO, than the McFarlane book. If you want to see what this book is all about, check out the online version. I bought the dead tree version, because I like to be able to read in bed and such.
Hacking the TiVo
This book was close by my side while I was hacking my DirecTiVo to do two kernel montes and all the nifty stuff that allows me to use its USB ports for networking, use HME, run a TiVoWeb, etc… You could get all of this info by poring through the dealdatabase.com forums but that would be incredibly painful and it is really, really nice to have all of the info nicely organized at your side in dead-tree format.
Design Patterns
The classic Gang of Four (GoF) book about design patterns - Strategy, Visitor, Command, Facade, etc…
Code Complete
It’s a big book, but has all sorts of interesting practical stuff about requirements, software design and craftsmanship, testing, debugging, refactoring, code tuning, tools, etc.
Code Reading: The Open Source Perspective
This one caught my eye in the bookstore and I was really excited about reading it. It turned out drier than what I expected, but what I liked about it is the chapter about “Advanced Control Flow” which talked about pthreads, signals, setjmp, longjmp, etc. The other unique and refreshing thing about this book is that instead of giving lame, artificial examples to illustrate concepts, it includes actual code from open source projects such as Apache, NetBSD, Tomcat, etc.
MySQL 4
I’ve used this as a MySQL reference on many an occasion and so far it hasn’t let me down.
Flow: The Psychology of Optimal Experience
I listened to the audiobook in my car. This book talks about getting into what a lot of us, especially athletes, might call “the zone” - that state where you are completely involved in a task and all cyliinders are firing and everything is just flowing perfectly. Interesting stuff. The takeaway for me from this book was that I need to stop trying to multitask all the time and instead I should just give my undivided attention to tasks. I think I still have a long way to go on that though - multitasking is an alluring trap, especially when you have multitasking computers with terminals running screen and browsers with multiple tabs.
Getting Things Done
This book kind of revolutionized my life in that it got me thinking about how to manage things without getting overly complex and taught me to always to think of the next action for any task and to keep my inbox as clean as possible. Definitely recommended to anybody who needs to get things done.
Ready for Anything
I listened to the audiobook version in my car. This is much less detailed than Getting Things Done (GtD) as it’s more of a collection of observations from David Allen than a how-to book. In a way, it’s more interesting though because it tackles some of the reasons of why his methods work. And some of the quotes at the end of each essay are really great ones (although some of them appear in GtD as well).
Popularity: 10% [?]





