About Me

Hi! I'm Ben, and this is my website. I'm a tech person. I've worked both developing new tools and applications for folks, and also as a technical point-of-contact working with customers to help them get the most of their products! Most of my experience has been with Python, and I consider myself to be very capable with that language. I've also had experience with the following languages, with passable levels of success:

I enjoy building tools which consider the user experience - if I was a user, how would I want to utilize this software? I've had some practice building small CLI tools for my own personal projects, and working on professional CLI tools to add features and make them more user friendly. Having worked as a technical support engineer, I've gotten a hang of what sorts of things users often get confused or frustrated by, and I always try to make sure my products avoid those pitfalls!

My Technical Journey

My first intros to coding started in grade 7. A friend of mine introducted me to Game Maker, a drag-and-drop software that lets people make simple 2D games for Windows. I've always enjoyed computer games, and had a wild imaginaion as a child, so I was delighted at the chance to build my own computer games! Shortly after, I'd produced Ben's Adventure, a 2D platformer game where a ghost from PacMan has to pass 20 levels to rescue his wife from some monsters. Seeing something I made come to life on the screen lit a fire inside me that still burns to this day!

Shortly afterwards, I began work on Ben's Adventure 2, a more ambitious game where the ghost has to save his kingdom from their invading neigbours. My abitions quickly exceeded the confines of Game Maker's traditional drag-and-drop interface, and led me into the arms of GML (Game Maker Language). This was my first expeirence with any scripting langauge, and in a time before YouTube tutorials were commonplace, I had difficulty figuring out how exactly it was supposed to work. But eventually, I got there, and was able to complete my Magnum Opus!

After that, I started getting into other game development. I tried my hand at allegro in C++, but realized that building a game engine from scratch didn't come with the immediate gratification that my previous projects had enjoyed. I wanted to build something in 3D, so I ended up moving to Unity, a 3D game design software. Here, I build a number of fun prototype games, learning C# as I went.

In university, I started a physics degree, and discovered computational modelling. Using code to solve physics problems sounded like a really fun endeavour, and I dove into learning Matlab, the favoured scientific computing language of my university. I found it really interesting, and completed several projects to model things like traffic grids, orbital mechanics, Malquist bias, and other interesting simulations.

Around this time, I was introduced to Python as well. I'd heard that places outside of my university prefer using Python + numpy to Matlab, since the former is free and the latter is most definitely not. I rebuilt a few of my Matlab projects in Python and discovered that I really liked Python. Matlab was entirely functional, and there wasn't any object orientation. The concept of organizing my code into classes really spoke to me, and I found Python quickly became my language of choice.

Over the course of my degree, I fell out of love with physics, and started branching into other projects. A game prototype here, an automation script there. My first large project was building a GUI interface for automating 3D prints in our university lab. I had basically no experience with networking, or even APIs, so I coded an entire socket interface to handle requests from a remote terminal to the server, which controlled the printers through a Raspberry Pi. Looking back, I cringe at the approach - it should have just been a webserver. But regardless, I learned a lot, and I think that's where I made the jump from coding hobyist to someone with a mind to making a career out of it.