“If I had eight hours to chop down a tree, I’d spend six sharpening my axe.”
Abraham Lincoln
If software development is the big tree, our sharpened axes are …

Java. When we have to do mobile phone applications, we use the Java programming language. This is used for both Android and JME programming.

The Ruby programming language, which we use for website back-ends and general system administration of our FreeBSD and Linux machines, as replacement for the venerable Perl, which we have now retired.

For websites, we use the very impressive Ruby on Rails web framework. For tasks where we need a web framework, but for some reason Rails will not work, we generally fall back to Django, with the Python programming language. For systems software, we employ the trusty Haskell programming language, which we like for making whole categories of programming errors outright impossible to express. All our new staff members are required to learn this programming language, because of how it teaches discipline in thought.

Which brings us to pedagogy. The programming language we use, internally, to express algorithms and generally to teach principles is Standard ML. In particular, we use SML/NJ; but where a learning program escapes and becomes worth using as a more-serious program, we have to compile it with the veritable MLton compiler. In theory, we use SML because of its rigorous definition; but in practice, we have never actually had to refer to the Definition. In respect of the late creator of SML, our main network system is called Milner.

We also use Erlang. Initially, it was in order to interface with certain systems in the telecommunications industry; but these days, it is because we recognise the power of the actor model for building robust distributed systems. In this, Erlang stands almost unchallenged.

PostgreSQL provides everything we need in a database system. We have never had any reason to use anything else. Our software, of course, does interface with other database systems. But insofar as the option is ours, PostgreSQL.

For client side web development, we cannot avoid HTML, like everybody else. However, of late, we have found a cleaner way to describe our webpages: Haml. More-important is a sister project of Haml’s called Sass; it is what we use to describe our stylesheets.
And while everybody else is writing JavaScript code, as we did since the last millenium, we have moved on to using CoffeeScript to describe our client side dynamism. We make sure we have a cross-platform system built, even with efficient allocation of programmer resources, by leveraging the excellent jQuery library.