Matt Raymond - About
MATT RAYMOND

Content

Work Experience
Software Engineering Intern
Personal Projects
12 Hour Game Jams
Instrument Library Database
Game Of Life (500 Lines in C++)


Work Experience



Software Engineering Intern


May 2019 - Present

For this internship, I worked with Toyoda Gosei Americas to develop a new system for reading information off of pdf purchase orders, storing the information in a server, and then allowing different people different levels of access to that information.

As the sole engineer assigned to this project, I was required to act as a fullstack developer, running all steps of development myself (with guidance from senior developers). As a result, I performed the following actions:

  • Colaborated with the client to understand their program requirements
  • Developed an automated workflow that would run smoothly and handle edge cases effectively
  • Presented UI mockups and workflow to management
  • Developed a C# and SQL Server backend for reading, processing, and saving POs
  • Developed a Javascript (Bootstrap), HTML, and ASP.NET frontend to communicate with users

This application was then integrated into an existing .NET application in order to increase ease of access for users.

TLDR: During this internship, I utilized the following technologies:

  • SQL Server
  • C#
  • ASP.NET
  • TET PDFlib
  • Javascript
  • Bootstrap
  • Visio

Personal Projects



12 Hour Game Jams


When we have the free time, a group of friends and I will get together and throw together a game in 12 hours (realistically 9 because of meal breaks). This includes finding a game jam to join, coming up with the theme and mechanics, developing the code, writing the music, and creating the art.


Ye Olden Monch

For Ye Olden Monch, I wrote a main theme and a menu theme, as well as stingers (audio cues) for the different events in the game.

-•••-

Instrument Library Database


While at school, I wanted to get some semblance of real-world programming environments, so I decided to create a database for my job at our school's instrument library using C# and winforms. Up until that point, the job required a lot of time-consuming data entry and manipulation in Excel, and I really thought that there was a better way to do this. As a result, I put together a list of all of the things that I wanted to eliminate from my job and all of the things that I could add to help my boss schedule us more efficiently. I decided to make a working prototype and pitch the idea to my boss (Rob Octavio).

To remove the repetitive typing, I set up a system where all student information was saved to an xml file on our local HD (we only had one computer, so a server would have been overkill), which was encrypted to make sure that student data was safe. after their first login, all you would have to do is swipe the student's ID and all of their information populated itself. Scan a barcode on an instrument and all of its information would populate itself as well. The check in/out logs, as well as instrument lists were also encrypted to ensure security.

I pitched the idea to my boss, who really liked the idea, so much that he discussed it with the chair of the music school (Amy Graziano) to try to get it officially recognized. She liked the idea as well, so they set me up with the school's head of IT (Adam Borecki) to continue development.

In order to make our scheduling more efficient, I began adding analytical functions to the database, including a function that would graph the number of transactions throughout the week in order to spot peak days. I was going to add more, but the head of IT told me that he was not familiar enough with C# to be able to continue maintenance after I graduated, so the project was deprecated and a new, less ambitious database was developed using Javascript and Google Sheets.

TLDR: I created an instrument scanning and database system in C# and pitched to my boss and the chair of the department. He really liked it and asked me to continue development with the head of IT, but due to maintenance concerns post-graduation, the project had to be scrapped.

The code for this project can be found here.

-•••-

Game of Life (500 Lines)


For one of my Data Structures assignments, we used C++ to build a terminal version of Conway's Game of Life. We included three different modes:

  • Classic Mode
  • Mirror Mode (cells reflected off walls like a mirror)
  • Donut Mode (cells traveling off the screen in one direction appear on the other side)

Since this was a fairly simple project, my partner and I made it a little more challenging by trying to program it in under 500 lines. We succeeded, but with comments it ended up being slightly over.

In order to do this, we had to approach it as analytically as possible in order to squeeze out every unnecessary line. As a result, we ended up being able to write each game mode in only 2/3 lines lines:

                

// When programming, we wrote it as Columns and Rows because of the way the instructions were worded // Performs classic return. Takes yx coordinates as ints, and a pointer to the number of neighbors void Grid::ClassicReturn(int y, int x, int* count){ // If the coordinates are contained in the grid if(!(((x < 0) || (y < 0)) || ((x >= xsize_) || (y >= ysize_)))) // If the character is an X if(currentgen_[y][x] == 'X') (*count)++; } // Performs donut return. Takes yx coordinates as ints, and a pointer to the number of neighbors void Grid::DonutReturn(int y, int x, int* count){ x = (x+xsize_)%xsize_; // e.g. if grid.length=5 and x=5, x=(5+5)%5 = 10%5 = 0, or the other side of the grid y = (y+ysize_)%ysize_; if(currentgen_[y][x] == 'X') (*count)++; } // Performs mirror return. Takes yx coordinates as ints, and a pointer to the number of neighbors void Grid::MirrorReturn(int y, int x, int* count){ x = ((x==-1) || (x==xsize_)) ? abs(x)-1 : x; // e.g. if grid.length=5 and x=-1, x=abs(-1)-1 = 1-1 = 0 y = ((y==-1) || (y==ysize_)) ? abs(y)-1 : y; // if grid.length=5 and x=6, x=abs(6)-1 = 6-1 = 5 if(currentgen_[y][x] == 'X') (*count)++; }

The code for this project (Built for a Linux image) can be found here.

TLDR:My partner and I challeneged ourselves to write Conway's Game of Life in under 500 lines of C++.