Tuesday 21 October 2008

Spending time on the train

I have been spending a lot of time on the train this week commuting into London for a database training course. During the 2 hours of commuting I have been trying to make productive use of my time by reading on the way in and listening to podcasts on the way home (when my brain is too fried to read!).

One of the .Net Rocks podcasts (episode 232) suggests blogging about some of the technical books you've read and trying to explain why they were of value to you so it might encourage others to read them too. So here goes:

Currently reading (i.e. on the train) : 
C# in Depth by Jon Skeet. Bought it after hearing his DNR appearance (episode 383) and was intrigued to find a book that explains the detailed how and why of C#, not just the simple get stuff working level material. He really concentrates on the details of the language and how it has evolved through its three major versions.

I have only read the first couple of chapters (lots to absorb and think about as I read), but have already learnt some interesting things about the language such as:
  • More about nullable types and that there is a null-coalescing operator ?? used to detect nullness and return a default value instead
INullable i = null;
int j = i ?? 10;
i = 5;
int k = i;
At the end of this, j = 10 and k = 5.
  • I have also learnt a lot about generics. I knew enough to be dangerous when using the System.Collections.Generic namespace before, but now I feel I could write a genric class with mulitple where statements.
  • I have also learnt (much to my surprise) that C# does not "pass everything by reference" - I'll let you read the book to see why!
This book fills the whole on my shelf that "Effective C#" would fill if I owned a copy. The Scott Meyers [More] Effective C++ books were two of the most important books I read when I was learning C++ in the days before Google. I am hoping this book will fill in some of the "hard-core" details of C# in the same kind of vain. I spend so much of my life with the C# compiler, it helps to know what it is doing on my behalf (and what it could do if only I knew how to ask!)

I have also recently read (last year or so) :-

Agile Software Development - Alaistair Cockburn - the book that managed to convince me that there is a reason why Agile software development seems to work. It explains some of the theory as to why people on your team behave the way they do and what can be done to influence them.

Patterns of Enterprise Application Architecture - Martin Fowler - An extremely useful and interesting book describing a set of commonly used patterns when building larger scale enterprise applications. The big brother to the gang of four patterns which look at design in the small.

xUnit Test Patterns - Gerard Meszaros - a very thought provoking book on unit testing and its associated patterns. First third is some interesting theory and then the second part is a set of patterns for unit testing. Very useful book to have around in a team trying hard to adopt TTD.



Saturday 4 October 2008

Definitive NHibernate Resources

At last I have found the definitive source of all things NHibernate, www.nhforge.org. Previously I had been using www.hibernate.org/343.html which seems to be a little out of date (latest version info is wrong as an example), but the new NHibernate community forge site seems to be bang up to date and contain a lot of very interesting community generated content.