I did not have much time for programming that year. Apart of my job, of course! I think number of my blog posts confirms that;) Anyway, I read a few programming books in the mean time... and would like to recommend two of them.
Seven Languages in Seven Weeks
Is a "A Pragmatic Guide to Learning Programming Languages" by Bruce A. Tate (see: http://pragprog.com/book/btlang/seven-languages-in-seven-weeks).
It's a journey through seven programming languages, showing how different they can be and to how different programming worlds they belong to.
The book presents:
- Ruby - modern dynamic, object oriented language used a lot in web development
- Prolog - logic programming language that is just different from anything other I have ever seen before
- Scala - getting more and more popular object oriented and functional language for JVM
- Erlang - functional language designed in Ericsson labs for running mission critical apps
- Clojure - modern Lisp implementation for JVM
- Haskell - functional language, but with totally different philosophy than Lisp
From my perspective each of presented languages from the list has some interesting points and each has been choosen for some reason. Author does not concentrate on teaching you details of the language and its syntax, but wants you to understand its philosophy. He wants you to learn how to learn things. He wants you not to limit your thinking by knowing only one potential solution to your problem.
Another point is that after almost seven (like the title hi) years of professional Java development, I was finding myself a little bit closed. But that book certanly opened my eyes. I believe discovering the variety of programming worlds makes me better programmer (and brings more fun!) than learing next 187'th Java framework...
Author puts it that way:
"Java was like having a rich lawyer as a brother. He was fun when he was younger, but now he's a black hole that sucks away all the joy in a 100-mile radius."
—Bruce A. Tate - Seven Languages in Seven Weeks
PostGIS in Action
by Regina O. Obe and Leo S. Hsu is a guide to PostGIS - spatial extension for PostgreSQL database (see: http://www.manning.com/obe/)
It allows you not only to store spatial data as a maps, locations etc but to perform a lot of operations like searching, measuring distance, areas or making geometrical transformations.
I would say this is a must read for GIS developers like me. It is clear that it contains deep technical explanation of spatial data types or, database functions to operate in them.
What is much more important is contains all the GIS background you should (must!) be aware of before you start working with spatial data. It may be surprising for some, but you can not just treat spatial data as coordinates on Euclidean coordinate systems. Earth is not flat! Earth is not a ball neither.
To make you "GIS ready" programmer, authors guide you through things like spatial reference systems or map projections and make you understand the difference between them. They describe which one would be the best for each set of requirements, like for example calculating accurate distances or preserving shapes and angles for visualization.
I should also mention useful information about performance tuning as well as a lot general SQL hints like "do it that way" or "never use" etc. There are also nice bonus chapters like PostreSQL administration guide or SQL tutorial to get you back on track.
Enjoy reading and Happy New Year!