Book Reviews

This page contains reviews of some technical books I've read since June 2005. My long term goal is to create lists of recommended reading on different subjects.

Lisp

Clojure for Machine Learning by Akhil Wali

Clojure for the Brave and True by Daniel Higginbotham

Mastering Clojure Macros by Colin Jones

Clojure for Domain-specific Languages by Ryan D. Kelker

Clojure High Performance Programming by Shantanu Kumar

The Art of the Metaobject Protocol by Gregor Kiczales, Jim des Rivieres and Daniel G. Bobrow

Clojure Data Analysis Cookbook by Eric Rochester

Loving Common Lisp, or the Savvy Programmer's Secret Weapon by Mark Watson

Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig

The Joy of Clojure by Michael Fogus and Chris Houser

Clojure Programming by Chas Emerick, Brian Carper and Christophe Grand

Practical Clojure by Luke VanderHart and Stuart Sierra

Programming Clojure by Stuart Halloway

Structure and Interpretation of Computer Programs by Abelson and Sussman

Let Over Lambda by Doug Hoyte

ANSI Common Lisp by Paul Graham

Practical Common Lisp by Peter Seibel

Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS by Sonya E. Keene

The Seasoned Schemer by Daniel P. Friedman, Matthias Felleisen

The Little Schemer - 4th Edition by Daniel P. Friedman, Matthias Felleisen

Smalltalk

Pharo by Example by Black, Ducasse, Nierstrasz and Pollet

Haskell

Learn You a Haskell for Great Good! by Miran Lipovaca

C++

Multi-Paradigm Design for C++ by James O. Coplien

The C++ Standard Library Extensions: A Tutorial and Reference by Pete Becker

Advanced C++ Programming Styles and Idioms by James O. Coplien

Beyond the C++ Standard Library: An Introduction to Boost by Björn Karlsson

Effective C++ Third Edition by Scott Meyers

C++ Template Metaprogramming by David Abrahams, Aleksey Gurtovoy

Erlang and Elixir

Programming Elixir by David Thomas

Erlang and OTP in Action by Martin Logan, Eric Merritt and Richard Carlsson

Erlang Programming by Francesco Cesarini and Simon Thompson

Programming Erlang: Software for a Concurrent World by Joe Armstrong

Multicore

Professional Multicore Programming: Design and Implementation for C++ Developers by Cameron Hughes and Tracey Hughes

The Art of Multiprocessor Programming by Maurice Herlihy and Nir Shavit

.Net

WCF Cookbook by Steven Cheng

Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries (2nd Edition) by Krzysztof Cwalina and Brad Abrams

Fluent C# by Rebecca M. Riordan

Pro .NET 4 Parallel Programming in C# by Adam Freeman

Parallel Programming with Microsoft .NET: Design Patterns for Decomposition and Coordination on Multicore Architectures by Colin Campbell, Ralph Johnson, Ade Miller and Stephen Toub

C# 4.0 in a Nutshell: The Definitive Reference by Joseph Albahari and Ben Albahari

Effective C#: 50 Specific Ways to Improve Your C# by Bill Wagner

Patterns

Refactoring for Software Design Smells by Girish Suryanarayana, Ganesh Samarthyam, Tushar Sharma

Patterns of Software: Tales from the Software Community by Richard P. Gabriel

The Patterns Handbook : Techniques, Strategies, and Applications by Linda Rising (Editor)

The Timeless Way of Building by Christopher Alexander

OCaml

OCaml from the Very Beginning by John Whitington

Practical OCaml by Joshua B. Smith

Java

Clean Code by Robert C. Martin

Beyond Java by Bruce Tate

Processing, Generative Art

The Nature of Code: Simulating Natural Systems with Processing by Daniel Shiffman

Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction by Daniel Shiffman

Forth

Thinking Forth by Leo Brodie

JavaScript

JavaScript Patterns by Stoyan Stefanov

JavaScript: The Good Parts by Douglas Crockford

JavaScript: The Definitive Guide, 4th Edition by David Flanagan

Prolog

Programming in Prolog by Clocksin, W.F. and Mellish, C.S.

Python

Programming Collective Intelligence by Toby Segaran

Dive into Python 3 by Mark Pilgrim

Learning Python by Mark Lutz

Testing

Agile Testing: A Practical Guide for Testers and Agile Teams by Lisa Crispin and Janet Gregory

Ruby

Programming Ruby, Second Edition by Thomas, Fowler, Hunt

Psychology and Learning

Peak: Secrets from the New Science of Expertise by Anders Ericsson and Robert Pool

The Wisdom of Psychopaths: What Saints, Spies, and Serial Killers Can Teach Us About Success by Kevin Dutton

Snakes in Suits: When Psychopaths Go to Work by Paul Babiak and Robert D. Hare

In the Theater of Consciousness: The Workspace of the Mind by Bernard J. Baars

Forensic Psychology by David Canter

On Intelligence by Jeff Hawkins

The Mind of a Mnemonist - A little book about a vast memory by A. R. Luria

Psychopathology of everyday life by Sigmund Freud

Dreaming by J. Allan Hobson

The Mind Map Book by Tony Buzan and Barry Buzan

The Time Paradox by Philip Zimbardo and John Boyd

A Whole New Mind by Daniel H. Pink

Pragmatic Thinking and Learning by Andy Hunt

The Lucifer Effect by Philip Zimbardo

Design and Architecture

Building Microservices by Sam Newman

Object-Oriented Metrics in Practice by Michele Lanza and Radu Marinescu

Growing Object-Oriented Software, Guided by Tests by Steve Freeman and Nat Pryce

The Architecture of Happiness by Alain De Botton

Machine Beauty by David Gelernter

Domain-Driven Design by Eric Evans

Business

The Unicorn Project: A Novel about Developers, Digital Disruption, and Thriving in the Age of Data by Gene Kim

Founders at Work: Stories of Startups Early Days by Jessica Livingston

Eric Sink on the Business of Software by Eric Sink

In Search of Stupidity: Over 20 Years of High-Tech Marketing Disasters by Merrill R. Chapman

Web Development

Head First HTML with CSS & XHTML by Eric Freeman, Elisabeth Freeman

The CSS Anthology: 101 Essential Tips, Tricks & Hacks by Rachel Andrew

PHP 5 Objects, Patterns, and Practice by Matt Zandstra

PHP Bible, 2nd Edition by Tim Converse and Joyce Park

Modeling, UML

Agile Database Techniques : Effective Strategies for the Agile Software Developer by Scott Ambler

The Elements of UML 2.0 Style by Scott W. Ambler

A UML Pattern Language by Paul Evitts

The Object Primer : Agile Model-Driven Development with UML 2.0 by Scott W. Ambler

User Interface Design

The Design of Everyday Things by Donald A. Norman

User Interface Design for Programmers by Joel Spolsky

Biographies and Computing History

A Mind at Play: How Claude Shannon Invented the Information Age Jimmy Soni and Rob Goodman

The Apollo Guidance Computer: Architecture and Operation by Frank O'Brien

Code: The Hidden Language of Computer Hardware and Software by Charles Petzold

Coders at Work by Peter Seibel

Masterminds of Programming by Federico Biancuzzi and Shane Warden

Soul of a New Machine by Tracy Kidder

Dreaming in Code by Scott Rosenberg

iWoz: Computer Geek to Cult Icon by Steve Wozniak (Author), Gina Smith (Contributor)

Hackers: Heroes of the Computer Revolution by Steven Levy

Cube Farm by Reverend Bill Blunden

Math

Statistics Done Wrong by Alex Reinhart

Tools

The Definitive ANTLR 4 Reference by Terence Parr

General Programming Books

The Leprechauns of Software Engineering by Laurent Bossavit

A Machine Made this Book by John Whitington

Making Software by Andy Oram (ed.) and Greg Wilson (ed.)

97 Things Every Software Architect Should Know edited by Richard Monson-Haefel

The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt, David Thomas

The Best of Verity Stob by Verity Stob

Facts and Fallacies of Software Engineering by Robert L. Glass

Extreme Programming Refactored: The Case Against XP by Matt Stephens, Doug Rosenberg

The Tao of Programming by Geoffrey James

Hackers and Painters: Big Ideas from the Computer Age by Paul Graham

The Best Software Writing I by Joel Spolsky (Editor)

Extreme Programming Explained : Embrace Change (2nd Edition) by Kent Beck with Cynthia Andres

Joel on Software by Joel Spolsky

Code Complete, Second Edition by Steve McConnell

Working Effectively with Legacy Code by Michael C. Feathers

Leadership, Management

Rework by Jason Fried and David Heinemeier Hansson

Drive: The Surprising Truth About What Motivates Us by Daniel H. Pink

The Design of Design by Frederick P. Brooks

Smart and Gets Things Done by Joel Spolsky

The Wisdom of Crowds by James Surowiecki

The Psychology of Computer Programming: Silver Anniversary Edition by Gerald M. Weinberg

Toyota Production System: Beyond Large-Scale Production by Taiichi Ohno

Flipp eller Flopp? Om Misslyckandets Dynamik by Lars Strannegård (Review in Swedish)

Fursten (Il principe) by Niccolo Machiavelli (Review in Swedish)

Linux

The Art of UNIX Programming by Eric S. Raymond

Linux and the Unix Philosophy by Mike Gancarz

The Cathedral & the Bazaar by Eric S. Raymond