How Did I Get Here?

When I started university, my intention was to become a high school math teacher. So how did I end up working in full stack development? A little by accident, but mostly by being open to new opportunities, making the right connections, and working hard to exceed expectations.

University Days

In 2011 I started the Concurrent Education program at Brock University, with mathematics as my teachable subject. What attracted me to this particular program was the ability to earn both a B.Sc. and a B.Ed. at the same time. In the first two years I would be taking the same math courses as those in the 'regular' math program, except with history of education and child & youth study courses in lieu of some electives. And then in the later years I would be taking more courses focused on teaching.

Math was always my favourite subject in school. I liked solving problems rather than just memorizing facts. And I liked how questions only had one answer, but that it was up to you on how to get there. As a teacher, I wanted to share the beauty I saw in the study of mathematics and help break its bad reputation. More often than not you hear about students hating math. Heck, it was a common trope in the shows we saw on TV! I'd argue that this messaging is harmful to students — that instead of treating mistakes as an opportunity to learn, it causes some students to just internalize the idea that math is 'too hard', or make them feel like they are just 'bad' at it. Kind of like a self-fulfilling prophecy.

As expected, I really enjoyed the math courses at Brock. From calculus, to statistics. Linear algebra, to differential equations — I was loving it all! My education courses on the other hand... not so much. The content was interesting, but I really wasn't keen on the weekly seminars (accompaniments to lectures where students discussed assigned readings as a group). Even worse, my first in-school placement fell in a period of time when teachers in Ontario were on strike. All extracurricular activities were cancelled, and morale felt pretty low.

One thing I didn't expect, however, was to fall in love with coding. It turns out the 'regular' math program at Brock University was not so regular at all! In the years I was there, the program was actually called MICA (Mathematics Integrated with Computers and Applications). In our courses, we were taught how to use technology to help internalize the mathematical concepts we were learning by interpreting them computationally, visually and algebraically. We used tools like MAPLE, and even learned programming fundamentals in VB.NET in order to run simulations on the systems of equations we were analyzing.

Some MICA courses were project-focused too, which I really liked. One project that stands out to me was a math education game my friend Eric and I created for students to practice differentiation rules (product, quotient, and chain rules in particular). It was a windows form application inspired by The Legend of Zelda: Ocarina of Time where players could earn rupees by answering questions correctly. They could then navigate to the different areas in the game to purchase items, and when all items were obtained, fight Ganon (a challenge question encompassing all 3 rules).

MICA project
A screenshot from our MICA project, a form for answering a quotient rule question.

This was a big "Aha!" moment for me. I have always enjoyed making things — I sew, I bake, I doodle, you name it! Being able to use the computer as just another creative medium really clicked with me, especially because I have always had a fascination with technology as well. When I was about 13 years old, my parents allowed me keep our family PC in my room for school work. I don't think they saw me much afterwards; I practically lived in front of that computer! I loved chatting with my friends on MSN Messenger, downloading music off of Limewire, and spending countless hours decorating my MySpace page. My first 'smartphone' (before that term became common) was even a PocketPC called the HTC TYTN. It had a UI reminiscent of Windows XP, complete with a start menu and taskbar. There was no app store. If you wanted to play a game, you would have to download its APK file on your computer and copy it to your phone in the correct folder. My family thought I was pretty tech-savvy! Yet, I never even thought about coding until university. Go figure I'd love it. By the end of my second year (2013), I knew that the Concurrent Education was no longer for me, especially looking at the courses I would be missing in years three and four of the MICA program.

The Big Switch

Switching programs was surprisingly easy. All I needed to do was speak to an Academic Advisor to initiate a formal transfer, and get it approved by the Dean. The advisor asked why I wanted to switch, and I told her about the courses I was interested in and that I would like to continue learning some programming. It was not that I was no longer interested in teaching; I just wanted to explore all my options, and maybe find a career that combined all my passions: math, education, and now coding. Whether it's academia (researching and teaching higher ed), or something else entirely! She recommended that I get to know some of the math professors and try to find a mentor.

And that is how I met Dr. Thomas Wolf. I emailed him out of the blue one afternoon during my third year of university. His research in differential equations and computer algebra sounded interesting, so I asked if he had time to chat with me about it. We ended up really hitting it off! He agreed to let me assist him with his latest project on Non-Abelian Laurent ODEs. We even applied for a research grant to fund my efforts, but it was sadly declined. Instead, he said I could count my research as a whole credit towards my degree, provided I turn in an 'Honours Project' paper at the end. To top it off, he offered to pay me himself if I also worked for his online business, Caribou Contests.

I truly owe my entire career to Thomas. While I started at Caribou (around 2014) writing math questions for students in grades 3-12 and arranging them within a given contest, I ended up working for him for several years whilst completing not only my undergrad, but my graduate degree and college diploma (more details on those below). As we got to know each other better, I expressed my interest in programming with him, and he — yet again — took a chance on me. You see, one of the unique features to Caribou Contests (compared to other mathematics competitions) is their interactive type questions. These questions are often in the form of web games, which participants are also free to practice on Caribou's game page. And despite not knowing the first thing about web development, he asked if I wanted to create a little game named Floodfill.

Floodfill
A screenshot of the final Floodfill interface, as seen on the Caribou Contests games page.

So I spent the summer after my fourth and final year of undergrad (2015) learning all I could about HTML, CSS, JavaScript, jQuery, PHP, and even some SQL. Client vs. server side code? Check. AJAX requests? Check. Drawing on an HTML5 canvas? Check. Using Fabric.js to interact with canvas objects? CHECK! Eventually, I was able to build a working prototype of Floodfill. It loaded puzzle data from a file (one of Thomas's masters students generated a bunch of these files some time ago) and rendered the regions onto a canvas. The user could then select a colour and click on a region to fill it with that colour. Once all regions were coloured, an algorithm would check if any adjacent regions had the same colour. Thomas was happy with my prototype, and from his feedback I iterated on the design of the interface a few times. When it was finally time to publish the game to the website, we uploaded the puzzle data into the Caribou MySQL database, and modified the code to load puzzles from there instead. And boy, did it feel good to publish!

Beyond Undergrad

I pursued a graduate degree in mathematics simply because I was not done learning. In fact, Thomas encouraged me to do so! It was a great opportunity to figure out once and for all whether academia was for me, while having the funding available to fully explore this option. Overall, I had a good experience. I met some pretty cool people at McMaster and had a very supportive supervisor. By 2016 though, I realized that I wanted to pursue a career in web development instead, and finished the master's program with a one-year Research Project (rather than a two-year Thesis).

Afterwards, I chose to go to college because, despite my experience, I was afraid that I could not compete with someone who, say, studied Computer Science and had a couple co-op terms under their belt. I wanted to learn more traditionally about data structures, algorithm efficiency, object-oriented programming, and the software development life-cycle as a whole, as well as really hone the skills I had already acquired. Throughout this time, I continued to create a few other games for Caribou, each of which I am very proud of. But overall, I think I made the right decision for me because, on top of everything, I gained confidence in my abilities. My professors were very encouraging at Mohawk, one of whom offered to be reference for me. And he was true to his word! I received my first full-time job offer as a Full Stack Developer just one month after finishing my diploma in 2018.

So there you have it. I will forever be grateful to Thomas for giving me the opportunities he did, both at Brock and at Caribou. Not only did he introduce me to the wonderful world of web development, but also to EdTech, a space where I have been able to combine all of my passions — just like I was hoping back when I left the Concurrent Education program all those years ago. And even though I am not a teacher, I am happy knowing that the work I have done thus far has had a positive impact on student success. I have many more stories to tell about my work in EdTech these last few years, so please keep an eye out for future blog posts!