From a young age I have always been interested in mathematics and computers. Specifically I have always been interested in the ways in which knowledge can be applied to make people’s life better.
This led me to study mathematics at university, during which time I found applied mathematics and operations research. There was a revelation when I saw that there were entire branches of study that were aimed at reducing waste and increasing efficiency, this very much resonated with me. From that point on it was clear how I, personally, could make the most positive impact on the world. Specifically I saw that by developing concepts and technologies I could have a far wider positive impact on an entire area that I ever could working on these projects alone. So I dedicated myself to learning more about this area and how it could be realistically implemented in real world scenarios. One thing I learned very early on was that in order to scale up these concepts so they could be applied to real-world phenomena you need to use computers and you need to use them well. A few times I ran into problems where we were using the best algorithms but still not getting good results because the code implementing the algorithms wasn’t good enough. So I saw that I needed to become more than just a consumer of computing products and start being a developer. As I had an ongoing interest in adult education around the same time I was tutoring calculus subjects at Melbourne University, so I immediately turned to what I knew from an educational setting and looked at how I could apply that knowledge to myself for effectively learning software development.
After spending some time learning to program I became aware of some of the fundamental truths with regards to the software lifecycle. Like many others I eventually had the insight that just knowing how to make an algorithm get the right output for a given input was a smaller part of the problem than I had initially thought. Kludged solutions obviously don’t work well in the context of bigger systems, but at the time I didn’t really know the extent that occurred, I did however know that I was deeply dissatisfied with low quality code. Upon realizing that I needed to know more about software development in order to actually achieve any real world results I set upon learning as much as I could, I had the great fortune of meeting some people who were experienced and also willing to mentor someone who was essentially new to software engineering (thanks Sean!). Knowing the value of this mentoring I took this opportunity very seriously, I developed a slight addiction to websites like stackoverflow at the same time! (I have since recovered from this addition of posting answers on there)
Seeing just how beneficial good software engineering practices were to the actual achievement of my goals I felt very motivated to try help other people with this knowledge. My passion for writing software libraries and educational materials comes from seeing how much this helped me in my own career. A big part of my involvement in the JaggedVerge organization is very much an attempt to pay it forward in much the same way that my mentors did with me. By having the opportunities to keep working on projects I hope to continue to be able to develop high quality software libraries to give back to the community and create educational resources in the process.
I remain especially interested in numeric and mathematical systems and I’m in a somewhat unique position to bridge the gap between software engineering professionals and professional mathematicians/scientists (there’s easily multiple blog posts that could be written on this gap). While I tend to prefer more imperative modes of thought I can definitely think in a more declarative manner too. I am also interested in real time systems and microcontrollers. I am especially keen to take on any projects in these areas and would be keeping an eye out for any opportunities to develop libraries and educational materials while doing so. I’m also have some experience with systems programming.