When I quit my day job in the summer of 2006 to bring an idea of mine to
life as an Internet startup, I was faced with a huge number of questions
and not a lot of clear answers. The excitement of starting a new project
was soon tempered by the difficulty of choosing among the dizzying array
of possible technical platforms and solutions. While the shelves were
full of books focusing on each of the components of a web application,
what I really wanted was a look at how all the pieces fit together. Too
often, I found books that seemed like annotated versions of Javadocs,
with he- ful explanatory notes that setEnabled(boolean enabled) would
set the enabled flag. At the other end of the spectrum were abstract
architectural tracts that might have made for good reading but certainly
didn't give me a head start on the architecture. I wanted to see how
these technologies worked when used for nontrivial applications; I
wanted to see ugly problems and their solutions--I wanted a look at the
source code of a modern web application.