Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Reading list

Inspired in part by Apprenticeship Patterns, I've decided to maintain a public reading list. The goals are pretty simple:

  • Be honest about what books I've read, partially read, and plan to read.

  • Write a few sentences about each book – mostly for myself but also for anyone who might be interested.

  • Only include books related to development, user experience design, and entrepreneurship.

  • Include screencasts as well since that's how I do much of my learning.

Note that many of these entries were written long after having read the actual book. I apologize for any inaccuracies. Also, the completion dates are often rough approximations.


The Little Schemer Daniel P. Friedman & Matthias Felleisen

Really good so far. Making me think how much of our work is done recursively. It's easy to overlook using high level 
languages, like Ruby. Currently Reading.

The Cucumber Book: Behaviour-Driven Development for Testers and Developers Matt Wynne and Aslak Hellesøy

The most interesting chapters, like AJAX testing, are still in beta. Currently reading.

Crafting Rails Applications: Expert Practices for Everyday Rails Development Jose Valim

Only read the first few chapters but it's already paid off by giving you a deeper insight into whats really going on
in Rails. Currently Reading.

The Pragmatic Programmer Andrew Hunt & Dave Thomas

Seminal book loaded with practical advice for writing good software. Packed with really smart analogies (e.g. tracer 
bullets) written in simple, clear language. I'm inclined to agree with the book's bold, opening paragraph: "This book will 
help you become a better programmer."

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman Dave Hoover & Adewale Oshineye

Inspirational read, especially if you've only been coding for a few years. Lots of good ideas for improving your skills 
organized into loosely overlapping patterns. Also, peppered with thought-provoking quotes. Completed in February 2011.

Agile Coaching Rachel Davies & Liz Sedley

Most useful if you plan to lead a team of agile developers. If you're simply looking to better familiarize yourself with 
Agile practices, this isn't your best choice. That's not to say you won't read about general practices. You will, but 
this book focuses more so on coaching. Partially read in late 2009.

The Agile Samurai: How Agile Masters Deliver Great Software Jonathan Rasmusson

This book makes for a good primer. It's very easy to understand and you're sure to come away with a decent understanding 
of what Agile is all about. A slight criticism, some of the methodologies (e.g. inception deck) seemed a little contrived. 
Overall, a good read for those looking to learn the basics of Agile. Partially read in mid 2010.

The Entrepreneur’s Guide to Customer Development Brant Cooper & Patrick Vlaskovits

Presents a strong case that most startups fail not because they couldn't to make a product but because no one wanted to 
use the product they made. The solution? We need to step away from our terminals and talk to potential customers. Find 
out what people really need. Make the product they want even if it's not entirely inline with your vision. This book will 
guide you through the process. Completed in December 2010.

Arduino: A Quick-Start Guide Mark Schmidt

This is an excellent primer to building robots with Arduino. One caveat. This book is written for programmers with very 
little knowledge of electronics. This means the book assumes a basic knowledge of programming and almost no knowledge of    
electronics. That's great for most web developers. But if you're an experienced hardware hacker, this probably isn't the 
book for you. Partially read in mid 2010.

Pragmatic Guide to Git Travis Swicegood

This makes a good reference. If you're like me you have an excellent understanding of Git – at least until you mess some-
thing up. That's when things get tricky and you start to feel like you could wreck the entire code base. That's when this 
book comes in handy. Partially read in mid 2010.

O’Reilly Head First: HTML with CSS and XHTML Elisabeth Robson & Eric T. Freeman

Despite the hokey cover art, this book gets the job done. I started this read with absolutely no knowledge of HTML/CSS. 
Two weeks later I could build a (shitty) website. Note, however, that this book is probably a bit dated (e.g. I don't 
recall any mention of HTML5/CSS3). Complete in November 2008.

HTML5 & CSS3: Develop with Tomorrow’s Standards Today Brian P. Hogan

There's a lot of HTML5/CSS3 resources out there and, unfortunately, this is not the best of them. Hogan spends too many 
pages covering concepts that hardly require any explanation at all (e.g. how to use new markup tags). Also, he goes into
unnecessary detail when explaining how to use JavaScript to ensure support for older browsers. I suppose this could be 
good if you're looking for a leisurely overview of the latest web standards. But ultimately for me this book failed to 
distinguish itself. Partially read in early 2010.

Pro JavaScript Techniques John Resig

Excellent, exhaustive overview of modern JavaScript from the creator of jQuery. Admittedly I've never read this book 
cover-to-cover but I seem to learn something new every time I flip through it. I suspect the web would be a different 
place today had this been published a decade earlier. Partially read in early 2010.

JavaScript: The Good Parts Douglas Crockford

Absolutely my favorite JavaScript book. Crockford's style is incredibly concise – almost to the point of laconic. Yes, 
this can make it difficult to understand. But it also makes for a rewarding read since you probably had to work a little 
bit to really understand the patterns that make functional languages very powerful (e.g. closure, lexical scoping, currying,
etc). As Crockford says: "This is not a book for dummies...Don’t be discouraged if it takes multiple readings to get it. 
Your efforts will be rewarded." Completed in early 2010.

Learning jQuery: Better Interaction Design and Web Development with Simple JavaScript Techniques Jonathan Chaffer & Karl Swedberg

I've heard other books (e.g. jQuery in Action) put this one to shame but it got the job done for me. I was able to finish 
the entire book in about a week and immediately apply what I'd learned. I'd have a look at other books as well but you 
could certainly do worse than this. Completed in late 2009.

Head First PHP & MySQL Lynn Beighley & Michael Morrison

Every profession has it's cross to bear and ours is having to code in PHP. Truth be told, I have no intention of becoming 
an expert PHP developer but occasionally I need to hack a WordPress plugin, build a registration form, etc. This book gave 
me the basic competency needed to tackle simple tasks using PHP.

Learning Processing: A Beginner’s Guide to Programming Images, Animation, and Interaction Dainel Shiffman

Excellent introduction to the Processing language. The book, however, aims also to teach the basics of programming. This 
means experienced programmers might find themselves skipping large sections which cover rudimentary programming concepts
(assignment, data structures, etc). Still, you'll probably run across some things you didn't know about – especially if 
you haven't spent much time programming animations or games. Note that you can also use this book to learn Processing.js 
since the APIs are essentially interchangeable. Completed in mid 2010.

Agile Web Development with Ruby Sam Ruby, Dave Thomas, David Heinemeier Hansson

Relatively speaking, there weren't too many basic Rails book when I was first learning. So, like everyone else, I spent a 
good deal of time reading Agile Web. It was decent for the time; however, I suspect beginners would be better off having a 
look at newer, easier to understand resources – such as Michael Hartl's introduction. Partially read in late 2008.

Getting Real: The Smarter, Faster, Easier way to build a Successful Web Application 37signals

Lots of tips for how to cut out the bullshit and focus on rapidly building a solid, successful web application. At its most 
basic, this book suggests you stop planing, start writing code, and let the details sort themselves out as you go. That's 
pretty good advice but only, I think, if you have a very strong team. Like all 37signals books, this has a kind of bad-boy
contrarian philosophy that could lead to disastrous software if followed by less qualified development teams. Nevertheless, 
it's a good read. Completed early 2009.

Rails 3 Upgrade Handbook Jeremy Anally

Upgrading is not a fun process. This tiny book makes it a bit more tolerable. A must if you find yourself needing to bring 
an old application up to speed. Completed in late 2010.

The Rails 3 Way Obie Fernandez

I've only poked through this book a little bit and mostly as a reference tool. But given the author, it's likely to be a 
high quality read. Nevertheless, you might consider reading Peter Cooper's much-discussed review which details some pretty 
significant shortcomings. Partially completed in early 2011.

Simply Rails 2 Patrick Lenz

Along with Agile Web, this book helped me grasp the basics when I was still a total novice. Of course, I wouldn't recommend
it for current learners since it's way out of date. If you're looking to learn the basics, check out Michael Hartl's 
introduction. Completed in early 2009.

The RSpec Book: Behavior-Driven Development with RSpec, Cucumber, and Friends David Chelimsky, et al.

I can't imagine anyone really understanding RSpec until they've read this book. It's long and at times complicated, but 
absolutely integral if you're looking to be a professional Ruby developer. Completed (after many false starts) in mid 2010.

Rails Test Perscriptions: Keeping Your Application Healthy Noel Rappin

I was initially annoyed by this book's use of Test Unit rather than RSpec. But I gradually warmed up to it. Most of the 
topics transcend this-or-that framework, so there's much to be gained regardless of your preferred framework. And in the
end, there's lots of good information in here. This book is intended for readers with at least some existing knowledge 
of testing. Completed in early 2011.

Beginning Ruby: From Novice to Professional Peter Cooper

Best all around Ruby primer. Cooper begins teaching you programming basics, like flow control, using simple string methods.
Later, he gives an excellent explanation of object orientation and various data structures. By the end of the book, Cooper
touches on to fairly advanced topics, like metaprogramming. Thinking back, it's amazing how much this book covers in 
relatively few pages. Completed in early 2010.

Design Patterns in Ruby Russ Olsen

Olsen covers each of the classic design patterns discussing how they might be implemented with Ruby. His simple style and 
choice of examples makes this potentially daunting read relatively easy to follow. Especially enjoyed the "In The Wild" 
sections which show examples of each pattern being used in open source projects. Advanced developers will probably get 
more out of this read, but there's no reason less experience developers should be discouraged. Partially completed in mid 

Learn to Program Chris Pine

Absolutely the best book to get started if you have never programmed in your life. Pine gently guides you through the 
very basics (What's a string? What's an array? What's an if statement?). Each chapter ends with a few problems which, 
in my experience, were difficult enough to get you thinking without leaving you stumped and discouraged. This is book 
that got me started and I try pushing it on everyone I met. Completed in late 2008.

Metaprogramming Ruby Paolo Perrotta

This book answers all kinds of mysteries. If you've ever wondered "How the hell is that even possible?" this book 
probably has the answer. Dynamic finders in Rails? How to build a DSL? How RSpec works under the hood? This book sheds 
light on the dark magic that makes Ruby so powerful. Most importantly, however, this book showed me that metaprogramming 
really isn't that complicated. Completed in mid 2010.

Why’s Poignant Guide to Ruby why the lucky stiff

Part comic, part novel, part technical manual. If Kurt Vonnegut were to write a programming book, it'd probably end up 
like this. It's an odd book but it definitely has flashes on brilliance. I'd recommend reading it in conjunction with
Peter Cooper's "Beginning Ruby". They make a nice pair.

Beginning Unix Paul Love, Joe Merlino, Craig Zimmerman, Jeremy C. Reed, Paul Weinstein

I'm no Unix hacker. And for the most part, I'd like to keep it that way: focusing on programming rather than sysadmin. But
we all need to know our way around the terminal at least a little bit. This book taught me everything I needed to know 
(and probably more). If ssh-ing on to a server makes you nervous, you should probably just bite the bullet and read this
book. Completed in Early 2010.

Designing For The Social Web Joshua Porter

This book's about UX design not programming. One bit that stuck with me: Porter suggests modeling software interfaces after 
real world objects (e.g. users don't need to be told what a shopping cart is or how it works). Partially completed in early

Don’t Make Me Think: A Common Sense Approach to Web Usability Steve Krug

If you only read one book on usability, make it this one. It's short, pragmatic, and has surprising breadth. Some of Krug's
advice has proven indispensable. For example, Krug explains how to get people to actually read your website. Or in another
chapter, Krug explains how to make your site simpler through tiny, incremental usability improvements. Completed in late 

Digging into WordPress Chris Coyier & Jeff Starr

I don't really love WordPress but often it's the most practical choice for simple projects. Occasionally, I find myself
looking to do something off the beaten path, and that's where this book comes in handy. In typical Chris Coyier style, the
prose is a bit long-winded. But depending on your familiarly with the topic being discussed, that can definitely be a good 
thing. At any rate, it's my goto WordPress reference guide. Partially completed in early 2010.

20 Things I Learned About Browsers and the Web Folks at Google Chrome

Nice, non-technical explanation of how the web works and have evolved over time. Impressive design and HTML5 book effect.


Meet Postgresql Peepcode

Gives quite a bit of advanced information (e.g. generating reports). Perhaps more than you'll need if you're just 
looking to simply convert your Rails app to Postgres. Nevertheless, I highly recommend it if you're using Heroku and 
need to get your development environment using Postgres rather than MySQL. Watched March 6, 2011.

Node.js Roadmap Ryan Dahl

Dahl discusses various improvements planned for Node version 0.3 (faster buffer, streams, etc). Much of the talk is pretty 
low level, so it's not a good choice if you're unfamiliar with Node. Concludes with a cool demo of a simple chat server.
Watched 14 February 2011.

Project Future Douglas Crockford

Crockford discusses a wide variety of topics – urban planning, war, politics, suburbanization, righteous hatred, and Walt 
Disney – all as part of a wonderfully discursive discussion of our future and past. If it's not obvious, this is not a 
technical talk. Quotes I liked: "I used to think that everyone should learn to program. I don't think that anymore. 
Programming is a talent." Watched 14 February 2011.

Classy Web Development with Sinatra: Series Adam Keys

A good place to start if you have no experience using Sinatra. After watching this screencast, I felt confident about when
and how to best use Sinatra. And a few months later, when making a simple registration page, I found myself reaching for 
Sinatra rather than PHP. That's when I knew it was a worthwhile watch. Watched in late 2010.

Meet Node.js Geoffery Grosenbach (Peepcode)

Another high quality screencast from the folks at Peepcode. I have to admit I didn't run out and build the next great node 
app, but I did come away with an understanding of what Node.js is all about and why it's so exciting. Watched in mid 2010.

Ruby 1.9: What You Need To Know David A. Black

A two part screencast to get you up to speed with Ruby 1.9. It doesn't cover every little detail but it does an excellent
job hitting the main points. Watched in mid 2010.

Crockford on JavaScript Douglas Crockford

Crockford's six part public lecture series on JavaScript. The series begins with a brief history of programming languages,
discussing the process of language design becoming progressively more abstract and powerful. But, as Crockford is careful 
to point out, programmers have often been terrible at recognizing advancements even in their own field. Too often, the 
current generation of coders is reluctant to embrace a new technology. So progress is stalled until a fresh batch of 
programmers enter the field and are willing to accept new technologies precisely because they have no ties to the old way 
of doing things. 

Crockford argues this same tendency in part explains why JavaScript has been dismissed as a "toy language". It's functional 
nature was out of step with the current emphasis on object oriented design. Had anyone taken a sustained look, however, 
they'd have discovered a powerful, flexible, even superior language. As Crockford says, "JavaScript is Lisp in C's clothes". 

More generally, Crockford is suggesting we reconsider our current commitment to object oriented languages and their reliance 
on complicated taxonomies. Functional languages offer more powerful features, like closure, and thus more flexible design 
patterns. And given the popularity of something like Node.js, I'm inclined to take Crockford's ideas seriously. Watched in
mid 2010.

Version Control Made Easy Jim Weirich

Weirich does much more than just explain how to use Git. He takes you on a tour of how version control ought to work, 
starting from the very basics. Gradually you'll see how Git conforms to the patterns he describes, and by the end, you'll 
have a fundamental understanding what makes Git a superior version control solution. Watched in mid 2010.

Haml & Sass Geoffery Grosenbach (Peepcode)

If you're not using HAML and SASS, you probably should be. It's pretty awesome and very simple to learn. In fact, this 
screencast will teach you everything you need to know. Watched in early 2010.

Advanced Active Record Envycast

Awesome little screen cast from the makers of New Relic. Chalked full of little tips. No matter your experience level, 
you'll probably learn something new here. Watched in mid 2009.

Everyday Active Record: Series Ryan Bates

Ryan Bates is too awesome. If you watched Railscasts, these are very similar but longer, more focused, and have better 
visualizations. Note these are intended for beginner to intermediate level developers. Watched in mid 2009.

Mastering Rails Forms: Series Ryan Bates

This is like a three hour Railscast episode which focuses on forms. Very high quality. Intended for beginner to 
intermediate level developers. Watched in mid 2009.

Phusion Passenger Geoffery Grosenbach (Peepcode)

I don't really use Passenger anymore since I deploy everything to Heroku. But if you're looking to use Passenger this is a 
good primer. Watched in mid 2009.

Productivity for Programmers Lars Pind

Not amazing but totally worth a watch. One bit of advice I took from this: Identify the most and least productive hours of 
your day. Be sure to program during your productive hours and use the less productive times for other activities (exercise,
lunch, socializing, etc). Watched in mid 2009.

Scaling Ruby Envycast

Honestly, this screencast discusses a bunch of problems I've never had to encounter firsthand. Still, it was watching if 
only to broaden my horizons. Watched in mid 2009.

RSpec Series: Basics, Mocks and Models, Controllers and Tools Peepcode

This is a set of three screencasts each discussing different aspects of the RSpec testing framework. Testing is very 
difficult especially at first. While these screencasts definitely help, I suggest attacking the topic with a variety of 
resources. Unless you're already familiar with similar testing frameworks, these screencasts probably won't teach you 
everything you need to know. Watched in mid 2009.

Things I plan to read.

Mythical Man Month Frederick P. Brooks

Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages Bruce Tate

Clean Code: A Handbook of Agile Software Craftsmanship Robert C. Martin

Business Model Generation Alexander Osterwald & Yves Pigneur

jQuery Pocket Reference David Flanagan

Design Patterns: Elements of Reusable Object Oriented Software Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides

Things I plan to watch.

Meet Rails 3: Series Peepcode

Play by Play: John Barnette Peepcode


List of books and screencasts related to development, user experience design, and entrepreneurship.



No releases published
You can’t perform that action at this time.