About

Welcome to my Portfolio

Profile Picture

I'm a University of Toronto 2022 graduate student specializing in Software Engineering with a minor in Statistics. My passions include learning new technical tools and using them to create practical applications.

Profile

I'm currently seeking a student software engineering/data science position. I'm currently open to relocation. If you think I'm a good fit, please contact me via ben.gavrilov@mail.utoronto.ca.

  • Fullname: Ben Gavrilov
  • Birth Date: November 26, 1999
  • Email: ben.gavrilov@mail.utoronto.ca

Skills

I'm a hard worker with a high tolerance for rapid change both from a technical and non-technical standpoint. I'm especially proficient in the design and analysis of abstract data structures and can apply it on just about any technical platform.

  • 95%
    Python
  • 90%
    C
  • 90%
    Java
  • 90%
    Golang
  • 85%
    SQL (MySQL, PostgreSQL)
  • 85%
    NoSQL(Elasticsearch,MongoDB,DynamoDB)
  • 90%
    React & TypeScript
  • 85%
    AWS
Resume

More of my credentials.

Here are my work experiences and education.

Work Experience

Software Engineer

May 2021 - August 2021

Relay Financial (Series A Startup)

  • Overlooked and implemented internal tooling components that reduced over 20 hours a week of engineering support for the customer service team by utilizing Node, React, Typescript, and AWS
  • Streamlined internal tooling development processes by setting up robust CircleCI pipelines to schedule unit test automations, configure builds and deployments, and report logs to CloudWatch
  • Saved over $37,000 USD by introducing the first transaction disputing functionality which allows internal users to dispute fraudulent account activity by integrating with QuickBooks, Xero, Finicity, Sardine, Middesk, and Gusto

Software Engineer

September 2020 - December 2020

Sportcred

  • Developed a beta version sports themed social media platform
  • Constructed a web application with React JS on the front-end, Golang on the back-end, Neo4j for data warehousing, and Firebase SDKs to store images in a Google Cloud Storage bucket
  • Introduced a completely modular microservice architecture where all components communicate via REST API
  • Worked with UX designers, product owners, quality assurance analysts, and a scrum master within an agile environment to facilitate deliverables

Technical Systems Engineer

May 2020 - August 2020

Royal Bank of Canada (RBC)

  • Worked within the wealth management team to maintain information systems consisting of market data on the cloud
  • Developed Python applications for automation with Jenkins continuous integration for data processing pipelines
  • Delivered applications utilizing rest API calls from internal microservices that connect to the ELK (Elasticsearch, Logstash, Kibana) stack (NoSQL) through OpenShift (docker, kubernetes) automation
  • Reduced logback processing time by 35% through multithreading with file channel streams and byte buffers
  • Set up a monitoring service for an internal server with agents tracking API calls, resource allocation, and response time aggregation
  • Developed, implemented, and visualized models in Python to aid in predicting failure rates of internal microservices using daily Dynatrace data

Software Engineer

May 2019 - August 2019

Bond Brand Loyalty (BBL)

  • Developed to specifications based on PBIs (Azure DevOps) for abstract applications using the ASP.NET MVC 5 framework
  • Designed, coded, tested, debugged and documented web applications- Desktop and mobile responsive sites
  • Delivered solutions balancing technical and business requirements with the Digital Development team
  • Upheld back-end by maintaining UAT/PROD MS SQL servers, databases, and Web/Rest APIs for Scotiabank Rewards
  • Developed front-end user interface utilizing HTML5, CSS, jQuery, Bootstrap, and Angular infrastructures

Data Analyst

September 2014 - November 2014

Advantex

  • Collected and manipulated over 1200 small business data using Microsoft Excel and Java automation processes
  • Worked closely with business analysts to apply logical analytics to develop solutions for small businesses

Education

Bachelor of Science

September 2017 - April 2022

University of Toronto

  • Completed

Ontario Secondary School Diploma (OSSD)

September 2013 - June 2017

Stephen Lewis Secondary School

  • Completed
Projects
Spotlight Projects
Pathfinding Visualizer
Chatting Platform
Ben's Personal Site
Image Manipulation
Reverse Image Search
Image Database
Image Filters
Compression
Text Compression
School

April 2022

BSc in Computer Science, Mathematics, & Statistics
Software Engineering Specialization
Statistics Minor

Contact

I'd love to connect with you.

Let me get to know more about you.

Where to find me

27 King's College Cir
Toronto, ON
M5S Canada

Email Me At

ben.gavrilov@mail.utoronto.ca

Let's Connect
LinkedIn Profile
+

Reverse Image Search


    Nowadays most search engines provide some support for image retrieval, which allows you, for example, to search the web for images that are similar to a given image. If a search engine used a single process to search a large number of images to find the most similar one it would take a very long time to get the results. This project allows users to input an image file and a directory (think of this as the global dataset) to search for the most similar image. The user can then choose to either perform the search using a single process or to use a parallel version that forks new processes and manages communication through various pipes. In reality, determining how similar two images are is a complex problem, which is in fact an active area of research. The project uses a simple metric based on the Euclidean distance between two pixels of different images. The purpose of this project was to demonstrate drastic performance differences between delegating a task to a single process vs a parallel process. (Github Link)
+

Image Database (for querying)


    It is important to ease data access so that logs and reports can be completed more effectively. This project consists of an image database that allows for storage and querying of different image files. When entering an image a user must select some attributes associated with the image. These attributes are then used to query. When querying a user must select an array of attributes and the query will return all images with all the given attributes. The user can also perform removal queries where images with the given attributes are deleted. The project also allows for a print command which prints all of the current images in the database. Keep in mind that when querying, images are returned in order of insertion, that is the most recently added images in that query will appear last. (Github Link)
+

Image Filters


    Image manipulation seems to be a rather popular feature among many image based platforms (I.e, Instagram, Snapchat). Image manipulation can be achieved rather easily by manipulating the rgb colour spectrum. Images are usually represented by dimensions of pixels, and so we can manipulate each individual pixel. Each pixel for a colour image is encoded by three numbers representing the colour of the pixel. The first number is the red value, the second number is the green value, and the third number is the blue value for that individual pixel. Given this structure we can perform manipulations. For example, suppose we want to make a coloured image black and white. This can be done by averaging the values of all three colour numbers for a pixel and replacing each of those colour numbers with the average. Do this for all pixels and voila! (Github Link)
+

Text Compressor


    Compression allows for more practical data storage and transport. It is what allows us to access content at a time effective rate. Think about streaming sites, it would take far too long to transmit the actual file size. Instead it is compressed and decompressed upon transmission to save time but more importantly space! This program allows a user to upload a .txt file and compress it to a form thats on average ~30% smaller in size whilst maintaining its original integrity. Upon usage run the decoder to get the original .txt file. The algorithm uses the huffman coding model to achieve loseless compression. A huffman code is a type of prefix code. The algorithm takes all the unique characters in the .txt file and derives a Huffman tree from the estimated probability or frequency of occurrence of each character for all the common characters. Since we know that a .txt file contains characters and symbols where each character/symbol requires a byte (8 bits) of storage; we can encode this to manipulate file size. Instead we store each character in its encoded binary representation. The idea is that characters/symbols that appear more frequently in the file will be represented by a binary representation smaller than 8 bits in size. Characters that don't appear frequently in the file can take up a greater amount of bits. The net size will always be smaller than the original file. (Github Link)
+

My Site


    I've created this personal website to not only showcase my accomplishments but more so to illustrate my web development capabilities (Homepage). I created this site using:
+

Pathfinding Visualizer


    Pathfinding algorithms have always been one of the most critical structures for many modern applications. Take a look at google maps for example, when you want to get directions to a location, google maps gives you a route. Now note that this route is the shortest possible path at the current time as it would be too time costly to give an arbitrary path. Factors that determine the shortest path may include traffic and the number of lanes on a road. These are all congestion factors that help find the shortest path. Take a look at another scenario within Uber Pool for example. You are putting a second stop before your final location so the shortest path must consider the shortest path to the second stop and then the shortest path to the final stop. These are all features that have been implemented into this visualizer. You can add checkpoints as well as add obstructions between points and the application will still find the shortest path. Some of the algorithms used include Dijkstra's algorithm, A* Search, Breadth-first Search, and Depth-first Search (this will not always yield the fastest path). Play around with the application to gain a better understanding of Pathfinding algorithms. (Use the App)
+

Chatting Platform


    What's the worlds most sought after resource? An uninterrupted medium for communication. Our means of communication is often the most overlooked technological tool. Today we are able to communicate via messaging, emailing, video chatting, audio chatting, as well as in plenty of other forms. It is crazy to think that two people at separate locations on earth can communicate over the internet. Although not as complex as many modern day communication platforms, this chat application hosts a server (a main lobby per say) where individuals can log on with their first and last name and chat with anyone else on the server anywhere around the world. This is in principle how a reddit forum works or perhaps a discord chat operates. The app was made with Node.js, express, and websockets to allow different clients to communicate via the server. The client interface always displays the number of current users on the server as well as notifies them when a user has entered or left the main chat. (Use the App)