About

Hi! I’m a software developer living in Ottawa, ON. I like taking a balanced approach to solving problems, and I believe in the value of diverse ideas and regularly challenging existing beliefs and wisdom.

I care about developing software engineering practices that promote a high of standard quality, reliability, accessibility, pragmatism, and maintainability. In my opinion, the way software engineering is currently practiced inadequately pursues these qualities. Software engineering is still a nascent profession, after all. We have a long way to grow before we really have the right to call ourselves an “engineering” discipline.

I believe the key to this growth to continuously learn and reflect on what we know, believe, and do. Based on this, I believe we need to get better at communicating and collaborating with each other, our clients, and our business partners. We need to stop putting ourselves above others while simultaneously belittling ourselves by believing that people who know nothing about what we do are more qualified to make decisions about how we do our jobs than we are. We need the empathy and humility to know our weaknesses, and to cherish and defend the people in our organizations who make up for what we lack. We similarly need the courage and the self-respect to be resolute in our commitment to not cut corners, and to stand our ground against the pressure we face each day to abandon such professional integrity. In short, we need to start acting like the professionals we are supposed to be. We owe it to ourselves, our colleagues, our clients, our bosses, the public we serve, and to society for putting us in the position of privilege we enjoy.

While I believe that a balanced and multifaceted approach to everything always yields the best results, I am not afraid to tip the scales and upset the status quo if I feel there is a better path forward. I currently see pure functional programming as that better path forward. While awareness and interest regarding it have steadily been growing in the last decade, there is still so much more room for it to grow. It is still widely misunderstood and underappreciated, which is a terrible shame because there is so much we stand to gain by taking it seriously and learning the lessons it has to teach. A shared understanding of theory and mathematical modelling is the foundation of practice in every other engineering profession that makes them as reliable and effective as they are. Functional programming can provide this for us. I do not believe that functional programming is the solution to all our problems. I do believe however that an understanding of it is absolutely necessary in order to really understand and reason about what we are doing when we write software, and that we do ourselves and everyone who relies on us a disservice by neglecting it in our academic institutions, our professional development, and in the tools and languages we use.

To this end, I have made it my professional mission to relentlessly pursue knowledge and experience in functional programming - specifically pure, statically typed functional programming - and to share the lessons, insights, opportunities, and ideas it has to offer as far and wide as I can, for the benefit of all. This blog is one such manifestation of this objective.

Outside of my professional life, my passions are music, nature and animals (especially birds), gardening, walking, cooking, enjoying the company of others, and playing chess. I am also a staunch supporter of the humanities, and their preservation in post-secondary institutions, and have particular interest in philosophy, linguistics, democracy, politics, and social justice.