I am David M. Barr, also known by the pseudonym barrbrain. My pseudonym dates back to primary school and was a reference to fictional character I played for Tournament of Minds. As I used it as my handle for my first open-source contributions and it is unique, I’ve decided to own it proudly. My passion has always been to create. When I was a wee lad, I wanted to be an architect - I knew that they were clever and designed grand things. When I was eight years old, I discovered electronics and set my sights on becoming an electronic engineer. Along the way I discovered that I didn’t have the dexterity for solder work, nor the money for a PCB printer but that I could programme a computer to do all sorts of amazing things. This has been my passion ever since.
I entered the world of programming with a snippet of BASIC I found in a textbook that was being retired for fifty cents. When BASIC was too limiting, I learned a bit of x86 assembler under DOS. When that became too cumbersome, I learned ANSI C. When that became too repetitive I learned C** and the STL. When memory management seemed like busy work, I learned Java. Enlightenment came when Haskell introduced me to the world of functional programming.
For the past few years, I’ve spent most of my time in ‘enterprise’ software development. Enterprise is a word to attach to a product that ‘just works’, in the sense ‘just held together well enough not to collapse into a smouldering pile of rubble’. At least, that is my observation of its general usage. I am proud that the projects that I have worked on are not typical of enterprise. In the enterprise world, the bar on software quality is very low. I believe this to be because most participants in the industry like to toot their own horn and more-so because there is an endemic problem with organisations profiting from their own creative failure. This constant exposure to products that hardly perform their designated task well, let alone be adaptable to a wider range of tasks creates a large degree of dissatisfaction. Eventually it can become a sufficient motivator to create something newer, simpler, better or more robust.
There have only been a handful of times so far that I have been motivated enough to start or contribute to a new open-source project. The first project I contributed to was Calculating Pi as it was a hobby of mine. Later I contributed to a port of a wireless broadband driver to a new version of the Linux kernel, because I didn’t have the $15 for an ethernet hub but I had the time. Recently, I have begun a project to translate backup streams from one SCM to import streams for another, because I tried a large range of other solutions and they all failed for my case. Having examined the available solutions, I decided a different approach might yield far greater results.
I hope to use this site to document the application of my experience as a programmer to building a new project from nothing to fully functional in a short timeframe. To achieve this sort of outcome it is critical to limit the initial scope of the project. I will document my rationale for some of the scoping decisions I’ve made along the way.
I hope that eventually my site will be useful for inexperienced developers entering the world of open-source.