- Version Control with Git: Powerful tools and techniques for collaborative software development, by Jon Loeliger, O'Reilly, 2009
- Mercurial: The Definitive Guide -- Modern Software for Collaboration, by Bryan O'Sullivan, O'Reilly, 2009 (also see the online version at hgbook.red-bean.com)
- Programming Scala: Tackle Multi-Core Complexity on the Java Virtual Machine,
by Venkat Subramaniam, Pragmatic Programmers, 2009
For those who may not know ...
- Mercurial (like Git) is an open-source, distributed version-control system.
- While Scala is the "hot" new JVM-based programming language that not only contains the "best of both worlds" from other statically-typed languages (like Java) as well as dynamic languages like Groovy, but also the best of both worlds from object-oriented programming languages (OOPLs) and functional programming languages (like Erlang and Haskell). Plus it has message-passing and actor-based support for concurrency (like Erlang) while still being strongly typed and having access to all your favorite Java APIs (and anything else that compiles to JVM). Not too mention that Scala has a kick-butt Web development framework called Lift that is a next-generation framework to the likes of Rails/Grails and Apache Struts.
Scala is my first pick for the programming language that is most excitingly poised for the multi-core programming revolution in the age of multicore processors, cloud-computing, web 2.0 and access to all your favorite Java APIs/apps.