Introduction
For my first post I will write a little bit about myself. I’ll share with you, kind reader, my interests, my background, and some of my ambitions. The first part will cover my career, and then I’ll talk about some personal interests. I hope you enjoy my ranting and please feel free to reach out with any opinions of your own, corrections or comments.
Career
For detailed information on my career and education, please see my resume page.
Throughout my career, I have worked primarily as a backend software engineer making web applications. Additionally, I did some work on data engineering and business intelligence projects. These applications were often data-intensive, monolithic, or distributed systems in varying combinations. I really find big data software to be such a fun space to work in.
I have no preference toward any specific architectures. I try not to be dogmatic about the best tool. The most important thing to me regarding engineering is having a cohesive team with strong principles. Graciously, I have had the privilege of working with many smart individuals on all different types of teams.
Education
Before I entered the industry, I completed my undergrad at a small, technical engineering college in Vermont. From my hands-on experience there, I have developed a very pragmatic mindset with my approach to problem solving. I’m not keen on claims about the “smartest solution”. Usually, I am starting with the simplest solution. My ego has never helped me crack a tough engineering problem. Collaboration and clear communication have.
Simple has served me well in my career… but maybe I actually mean “elegant”; mathematical elegance, specifically. From Wikipedia:
… the solution to a problem (such as a proof of a mathematical theorem) exhibits mathematical elegance if it is surprisingly simple and insightful yet effective and constructive.
I think that properly describes what I’m trying to say. Especially around what is “effective and constructive”.
Mathematics
In college I met a wonderful professor who taught me math could actually be a joy. Later in my career, a colleague introduced me to functional programming. Both of these moments were transformative in my self study interests and ultimately my career.
It has been a goal of mine to learn more about applied and pure mathematics and how they relate to functional programming. For example, the Curry Howard Isomorphism is a fascinating topic in this space, and I’ve been introduced to it through many wonderful authors, such as Sandy Maguire and his book Thinking with Types (which I highly recommend).
Philosophy
Now let’s get more personal and philosophical. I am continuously fascinated by the importance and impact mathematics has on our level of human thought. I only have an undergraduate engineering level of training in math, which includes what most software engineers would learn; calculus, discrete mathematics, linear algebra, etc. Proofs were covered in the discrete class. It’s these things, math and programming, that really intrigue me and I believe this relationship can be tapped for new tools we can use as engineers.
At the moment Haskell is my programming language of choice. It has built-in abstractions from Abstract Algebra and Category Theory. You can leverage these mathematical devices as tools for solving problems, and that to me is really cool. An interesting topic that I stumbled upon, for example, is the Algebraic Path Finding. A method for generalizing shortest path algorithms using Semirings. I would really like to cover this more in a future post and dive into the text Path Problems in Networks.
So, it is my great ambition to bring these interests into my day-to-day job in enterprise-level software engineering. I want to use these abstractions to develop hardened applications that are correct, simple and elegant. It would be really, really fun to dive deeper into this world of Algebra, Computation, and thought.
Thanks
One last addition before I wrap things up. I’d like to mention a few little details about my preferred dev environment. These are likely to become future topics for posts.
A major tool I use is NeoVim (btw). I also am a huge fan of NixOS (also, btw). These two projects allow me to express the “hacker” in me. I’ll discuss these things more in the future, but if you’d like to check out some Nix and NeoVim related stuff I have, please see my dotfiles repo, which is a nix flake using home-manager and has a nix-managed NeoVim Lua config.
Thanks for reading.