Dr Russel Winder's Training Activity

Background

I have been programming for many, many years. My programming language learning sequence has been Fortran, Algol68, Pascal, C, Prolog, C++, Scheme, Miranda, Java, Python, Groovy, Ruby, Scala, OCaml, Clojure, and Go. I haven't used all these languages for active projects, but they all influenced the way I program. They also influence the way I teach programming: cross fertilization from one language to another, especially one computational model to another, significantly improves any programmer's programming.

Build tools and programming development support tools have been an interest of mine since almost the moment I started programming. This has meant a lot of scripting programming, especially in Sh, Csh and Bash as I have been Unix and Linux focused for most of my career. Recently though this has mean a fascination with tools such as Waf, SCons, Gradle, Maven, Ant, Rant, Rake, and Gant. Also of course IDEs such as Eclipse, NetBeans and IntelliJ IDEA.

Version control is crucial for any software development project so it is natural to have an interest in these. The arrival of the distributed version control systems (Bazaar, Mercurial, Git, etc.) has been a huge boon to the free and open source software community. Although less of an issue within a corporate environment where centralized systems (Subversion, etc.) involve few inappropriate hurdles, distributed version control systems can improve workflows and make things much easier all round.

Courses

The following are courses that I have available for immediate presentation. I also undertake custom course creation and presentation: