Steve’s Backstory

Born English. Grew up Australian — got the accent to prove it. Dual citizen. I enjoy living in beautiful Brisbane but do still feel the tug of Ol’ Blighty — particularly my home town in Derbyshire.

I’m an avid computer programmer who loves programming languages. As an industry veteran, I’ve used a multitude of languages professionally: Ingres 4GL (don’t ask), C, Bourne Shell, Korn Shell, AWK, Perl, Bash, Delphi Object Pascal, C++, Python, Java, Ruby, JavaScript, C#, Scala, and Haskell.

Privately, I was learning about all sorts of other languages to varying degrees: Component Pascal, Oberon, Oberon-2, Modula-3, Mesa/Cedar, ALGOL, Eiffel, Sather, Icon, CLU, Smalltalk, Scheme, Goo, Dylan, EuLisp, Racket, Common Lisp, Shen, Slate, Io, Factor, Objective-C, APL, J, K, Q, Prolog, Caml, OCaml, F#, Standard ML, Mythryl, Mozart Oz, Alice ML, Erlang, Haskell, Idris, Coq, Agda, Ur, ATS, F*, Haxe, Elm, TypeScript, PureScript, Swift, and Rust.

I’m currently working with Haskell. I like other contemporary languages such as Rust, PureScript, Elm, and OCaml. Additionally other research languages such as Idris (with version 2 currently in development) and ATS (with version 3 currently in development). I’m less connected with Scala these days — though I still follow along with developments from time to time. I’ve done a bit of introductory work with Coq and Agda and have found it quite challenging.

Formative Years

Commodore 64 startup animation

I had heaps of fun starting with Basic on the Dick Smith Wizard in 82. Then on the Commodore 64, I wrote text-based adventures in Basic, 2D sprite games in 6502 assembly, and experimented with electronic music composition. I regret not being about to afford to upgrade to a Commodore Amiga as it was an excellent platform for writing video games, demos and compilers.


Programming Languages

I love programming languages and what makes them tick. Earlier, I studied compilers and runtime system techniques. Lately, I’ve been studying Programming Language Theory in my spare time. I dub it the study of TLC — Types, Logic, and Categories.

Software Engineering

Trade-offs, tricks, patterns, the big picture, dogma-slaying, and coffee.



Reading, human languages, and chess.