davidpinn.jpg

David Pinn

I'm an experienced software engineer, a member of the development team at AppFusions, a devotee of functional programming, and the developer of Risk Register.

Software engineering thoughts

The availability of programming languages, development tools, and deployment platforms has made software development something like photography: we can all do it at some level. Nevertheless, software engineering remains a discipline of its own, and software that 'just works' isn't necessarily good software. Martin Fowler once wrote: "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."

The journey so far

Having started my career in management information systems in the 1980s and 1990s, I transitioned into software architecture roles as a consultant, and also as a product developer. Now a member of the team at AppFusions, I'm deeply into integration projects - making software systems talk to each other, though they were not originally built to do so.

I've had love affairs with many technologies along the way: IBM REXX (ahead of its time, I tell you), PL/I, SQL, Pascal, C, C++, Scala, expert systems, object-oriented programming, OO patterns (remember them?), application servers, JavaServer Pages, Enterprise JavaBeans (ughh!), OSGi, various JavaScript libraries, Google Web Toolkit, and more. All those fancies served their purposes, more or less, for a season. If I've not retained a faultless memory of their syntaxes, I believe I've retained some insight into the problems they attempted to solve.

And now for the rest

The Play Framework and Java is my week day, with a bit of Scala thrown in for good measure.

I also know a thing or two about the Atlassian product suite (JIRA, Confluence, Bitbucket, etc), having spent much of the last four years writing plugins for those products. I'm also something of an expert on Akka, the actor-based toolkit for building asynchronous message-based components on the JVM, having used it on several recent projects.

The way forward for software engineering has much to do with functional programming: writing code in reliable, highly composable chunks. There's a ground-swell of support for the functional approach to coding, even in the most conservative arenas. In the Java world, I believe JDK 1.8 was a watershed release because of its endorsement of, and partial adoption of, functional concepts. I'm all for it.

One of my life goals is to write something significant in Haskell, which appeals to me very much, though I know it only superficially. Haskell's lazy evaluation fascinates me.


As a co-founder of ProjectBalm, I'm always looking for ways to make project management less difficult. Our first software product is Risk Register, an add-on for Atlassian JIRA that lets you define project risks, walk them through a treatment workflow, and view them as a list or as a risk matrix. If you are a JIRA user, do yourself and your manager a favour by checking it out.


I live and work in the Blue Mountains near Sydney, Australia. There are some fantastic walks in the area, and I'm often using breaks in the coding to explore them. The zillion steps down Federal Pass will either get me fit or kill me; visit this website often to find out which.