Ryan Harrs

Software Developer

Learn More

About Me

I am a Computer Science co-op student in my third year at the University of Waterloo, having completed three work terms and five school terms. I am skilled in the following languages: Java, C++, C, Bash, Python, HTML, AngularJS, MySQL, FAME, and Racket. I also am proficient with the following technologies: Git, Jenkins, Unix/Linux, Appium, Selenium, Adobe Experience Manager, Sanity, and Jira.

I enjoy the challenges of solving difficult problems. I have honed my problem solving skills through math contests and programming competitions, and have received numerous awards and distinctions for them. I adapt quickly to the coding environments I am thrown into, picking up new languages and new coding techniques wherever I go.

Sections

Projects

In my free time, for school work, and in my work experience I have had accrued many skills and programming experience working on various projects.

View a detailed list of my past and current initiatives

Interests

Programming takes up the majority of my time, but I also enjoy spending my time playing sports and travelling.

Learn more about my personal interests

Projects

Video Games:

One of the main reasons I started to code was because I loved video games. The ability to create my own video games is what attracted me to computer science. My first video game I created was a Dungeon Fighting game developed in Java, then I went on to create a Texas Hold'Em simulator to further master my Java skills. I then decided to switch over to C++ to create a Tetris simulator. Tetris being my latest video game, I have chosen to showcase it here. There are several features in this version (ie special rules for different levels, high scores, etc) that I implemented to further challenge myself. You can check out my code and run the game on your own local machine by going to my GitHub repo here.

FAME Project:

The database I was working with at the Ministry of Finance with was a time series database called FAME, with it's own domain specific programming language. My job was to write and edit scripts that would input new data into the database. A large project I worked on here involved the department getting millions of sets of international trade data every month that would need to be put into the database. Due to the sheer quantity and complexity of the data, a previous developer at the ministry had written a program in C++ to read and input all the data into our database. Almost a year before I started working there, FAME (the database management system) was updated and the C++ script no longer worked due to incompatibility issues. Programmers before me were unable to find a solution. They could not get the C++ script to work, and neither could I. Which is why I decided to write a new script in the native FAME language. After thousands of lines of code in a language that I had just learned earlier that work term, I managed to write a script in the native FAME language that preformed the same tasks as the C++ script, that would input the millions of sets of data into the database.

Webpagetest Project:

During one of my co-ops, I was tasked with testing the response times and performance of one of our websites using the webpagetest.org website, and recording the results. I set up a headless CMS (Content Management Studio) using Sanity to store the results. I wrote a Java program that used the webpagetest API to automate the tests, and to store the results into the Sanity database using Sanity's API. So the program would run the whole tests for me with all the variables and then store the results for me as well. I then went further to implement a Jenkins job to run the program periodically so I didn't have to run the Java program manually. The Jenkins job would build and run the program itself on a predetermined schedule.

Vex Robotics Competition:

In high school I built a total of 3 different Vex robots, two with vex parts and one with machined metal parts. I worked with small teams of 3-6 people for each robot build, and my main role on each team was the lead programmer. A vex match contains two parts, the autonomous part and the tele-operated part. The autonomous part is when a program runs on the robot to move it around the playing field without any player interaction, then in the tele-operated part of the game a driver then takes over control of the robot and moves it around with a remote. With my most successful robot, my team won the "Think Award" for best autonomous programming. I was quite proud of this award because though we didn't have the best robot at the tournament, we had the best programming for the autonomous period of the game.

Jira-Python Migration Project:

The purpose of this project was to migrate multiple Jira projects from one instance of Jira to another instance without any loss of information. Jira has a built in function for this, but customizations to the Jira environment and other factors made it so that multiple aspects of Jira projects aren't always migrated such as: related issues, attachments, comments and more. So instead, using the Jira Python library,I wrote a Python script that was capable of migrating entire Jira projects without losing any of the information in the Jira project. I made this script reusable as well so that if I ever wanted to merge another Jira project from any instance of Jira it would be easily doable.

Contact Me

For inquires, you can email me at ryanharrs@gmail.com

Feel free to connect with me on any of the following!