Google Tech Talk: Faith, Evolution and Programming Languages

Faith and evolution provide complementary–and sometimes conflicting–models of the world, and they also can model the adoption of programming languages. Adherents of competing paradigms, such as functional and object-oriented programming, often appear motivated by faith. Families of related languages, such as C, C++, Java, and C#, may arise from pressures of evolution. As designers of languages, adoption rates provide us with scientific data, but the belief that elegant designs are better is a matter of faith…

This is a wondeful talk by Phillip Wadler from the University of Edinburgh, he’s one of the individuals responsible for getting Generics into Java 5, and has worked on Haskell and very heavily on the development of functional programming languages throughout his career.

It’s suprising how well the evolution vs faith analogy applies to the way in which we, as developers, often adopt programming languages. For some reason the talk made me remember the old Java vs .NET arguments which were less about rationale differences in the semantics and philosophy of the programming language and more about which camp you belonged to and your unswerving faith and loyalty to it. In fact thats a poignant example of when multiculturalism went out of the window and fundementalism was very much in fashion.

The talk also provides a fair amount of history around some of the issues that polorised language designers, static vs dynamic typing, for example. I found this provided some wonderful background that I was never aware of.

If your interested in Programming Languages, their adoption and their evolution over time then this is a fascinating, and unique, talk that you should really watch.

Google Tech Talk: Java on Guice: Dependency Injection, the Java Way

Here’s a really interesting talk about how to use Guice, a new open source dependency injection framework for Java by Google. Here’s a link to the user-guide which explains, using a example, why Guice might be a great alternative to using static references, or factory patterns when writing unit tests. I haven’t used Guice yet but i have written many unit tests for services that need to pass in Mocked services using the factory pattern, so I can immediately see the benefit of a framework like Guice.

I’m going to delve deeper into it, but I recommend watching the tech talk, they work through a simple example and it does sound very useful.

Platform dependent file-locking

MS Windows and Linux handle file locking differently. This article describes both approaches in detail. To summarise though, when you open a file for reading, under windows it prevents others from deleting it or writing to it, however under Linux it does not.

I fell foul of this while trying to run some Java based unit tests that worked perfectly well under Linux but started throwing errors on windows.

Cluster your JVM to simplify application architecture

Watched this tech talk over at google today, about using Terracotta’s DSO to act as network attached memory sharing critical parts of the Java Heap across servers. The talk focuses on how clustering in the runtime provides a simpler development environment without hindering scale out.

Got me thinking about how this could be quite useful for building distributed applications.

Find out more at