Hi!

I'm James, a Software Engineer and Computer Science graduate from University of Toronto.

After 8 years of programming, I've worked in many different fields including Machine Learning, Operating Systems, Web Development, Data Science, Business Intelligence, and Application Development.

Check out Experience to see an overview of my professional experience, Projects to see some cool projects I've made, or Skills for an overview of languages and technologies I've worked with.

Experience

Associate Software Developer

Konrad Group Ltd.

  • Developed Complex, User Facing Website Components in ReactJS. Developed large, complex page components used on the homepage of a major Canadian law firm.
  • Built Major Backend Features in JavaScipt and C#. The features I implemented include video streaming, calendar and contact exporting, and live PDF generation.

Software Engineer - Volunteer

Storytellers of Canada

  • Worked on a team of 6 students to develop and deploy a storytelling social media app for the organization.
  • I implemented backend server functions, designed app prototypes, and built major frontend components for both iOS and Android.
  • This app was built using Python for the backend and React Native for the frontend.

Associate Software Engineer

J.D. Irving Ltd.

  • Designed and Engineered the core logic of an optimization engine used to determine product sourcing decisions on a billion dollar scale.
  • Built front end web interfaces which reacted in real-time to data in R, Julia, and Python.

Associate Business Systems Analyst

J.D. Irving Ltd.

  • Designed and Engineered Truck Routing Software, which is currently used in multiple terminals throughout North America, and helps coordinate deliveries valued at over one million dollars per terminal per day.
  • Designed and built interactive tools to provide beautiful, intuitive, effective visualizations of data.
  • Developed complex mathematical functions, web scrapers, big data parsers, and other components of large projects.

Associate Business Systems Analyst

J.D. Irving Ltd.

  • Designed Dashboards and Websites. This was my focus when I began this position, but after exceeding expectations in this domain, I began developing software with the company.
  • Designed and built software to detect planting deviations from aerial photographs. This software performed extremely well and provided valuable insights which directly led to increased profits.
  • Built software for teams to document, review, and prioritize completed, current, and future projects. This program was used by multiple teams, and later evolved into the core code of the group's project coordinating software.

First Place

New Brunswick High School Programming Competition

  • Solved 7 challenging programming problems in 3.5 hours, to take first place in the province.
  • My chosen language for this competition was Python, in which I was self taught.
  • You can see the questions for the competition, my answers, and additional information HERE.

Projects

Here are some of the projects that I've built by myself.

Field Analyser
Potato Field Analyser
While working at J.D. Irving, I often had free time after completing all my job duties. So, I used my extra time to build this project to solve a business problem.
My software used drone footage of potato fields, accurately measured the distances between all potatoes in each row, and outputted statistics and visuals.
My project far exceeded all expectations, and directly influenced changes leading to increased profits.
Truck Routing
Truck Router
I wrote this software by myself, and it developed into the routing software used by Midland Transport Ltd.
My software is currently used daily by multiple truck terminals in both Canada and the United States, and it coordinates over 1 million dollars worth of shipments per terminal per day.
Additionally, this project has been showcased in multiple events to demonstrate the power of advanced analytics in the company.
Walk Time
Random Walk Time Generator
Currently built in 30+ Languages
A few co-workers and myself went for walks around our building every afternoon.
One morning, I made a quick Python script to generate a random time between 1 pm and 4 pm for our walk.
My co-workers responded with versions they made in JavaScript and R.
So the next day I sent a version in Java, then C the day after, and the trend continued for a month.
This Website!
My Portfolio
I made this website as a way to showcase my accomplishments, skills and some of my open source projects.
I built this website using HTML, CSS, and JavaScript, and some open source repositories such as jQuery, particles.js, and scrollex.js.
I'm hosting this site on GitHub Pages, and I'm using a custom domain from Google Domains.

Skills

These are my skills and the tools that I have experience working with.

Programming Languages

  • Python is my preferred programing language in most situations, and is the default language I think in.
  • In a professional setting, I have used Python for everything from implementing neural nets to creating data visualizations.
  • I have also used Python through much of my education, and I even won a programming competition with it!
  • I've worked with C through the entirety of my programming career.
  • I first encountered C when I was the programmer for my high school robotics team.
  • Throughout university I've taken many courses focusing on C, and used it for many class projects ranging from sudoku solvers to file systems.
  • React is a fairly new framework for me, but I have used it extensively in the past year.
  • I used React Native to build the frontend of a story sharing app for the Storytellers of Canada, as a project in school.
  • I also used React to build a social network as a side project, simply for practice with React.
  • I've used Java for 5 years, using it for the first time in a highschool programming class.
  • I've used Java to build many programs in university, and used it as part of a team working on a large Restaurant Software project.
  • While working with a Corporate Analytics team, many of my co-workers used R.
  • Because of this I quickly grew accustomed to reading and editing R code, and soon found myself using R for writing quick scripts for parsing or cleaning data.
  • I've more recently worked with R on a very large project, and even used it's frontend framework, shiny, to build reactive UIs in R.
  • I was first introduced to HTML/CSS/JS during my job as an Associate Business Systems Analyst.
  • I quickly realized how powerful and versatile these languages are, and they are now my go-to tools for creating user interfaces.
  • I've built countless projects and components with JavaScipt, many of which are still being used today.
  • I first used MySQL out of necessity as an Associate Business Systems Analyst, while building an application to serve clients data in a user-friendly fashion.
  • I then took a university course on relational databases with PostgreSQL, where I constructed many complex SQL queries.
  • Although Visual Basic is quickly falling out of use, I feel the need to mention it because was my very first programming language!!
  • VB6 was installed on all of the computers at my highschool, and when I discovered it, I quickly began learning it.
  • I spend countless hours writing games in VB6, and this began my programming obsession.
  • During the summer, when I didn't have access to the school computers, I transitioned to using C# to recreate my games and build more applications.
  • TypeScript: I've worked with TypeScript for about a month at J.D. Irving, while building an internal data-serving API.
  • Bash: As a Linux user, I use bash every day. Although I don't have extensive experience writing applications with Bash, I'm extremely comfortable issuing commands and writing quick scripts with it.
  • Batch: I've used Batch scripts professionally on a few projects to make use of multiple languages and command-line utilities on Windows.
  • Verilog: I've taken 3 university courses on System Architecture, including one focusing on Verilog specifically. During this class I wrote over 20 sizable Verilog programs.
  • Julia: I used Julia for a major project at J.D. Irving to build an optimization engine.

Software Technologies

  • I have been using Linux for over 6 years, and have been exclusively running Linux on my personal machines for 3 years.
  • I have experience with many Linux distributions including Ubuntu, Debian, Kali, and Fedora.
  • Additionally, I am proficient on the command line, and have experience working on remote Linux servers.
  • I first used git in a course in my first year of university, and have used it constantly since.
  • I have used git in a personal setting, in university, and professionally.
  • I'm very comfortable making commits, creating and merging branches, and resolving conflicts.
  • Finally, I am aware of git best practices and common branching models.
  • I have explored, researched, and implemented every model in the Scikit-Learn Library.
  • I have built Scikit-Learn models professionally in production on multiple occasions.
  • As with the Scikit-Learn framework, I have built models professionally in production on multiple occasions with Google OR Tools.
  • I have implemented the routing library, the linear programming solver, and the SAT solver on large business problems.
  • I have worked both for teams using Azure Dev Ops, and for teams using Jira.
  • I am proficient in organizing sprints, work items to be completed, tracking product versions and coordinating team efforts with these tools.

Additional Skills

  • I've excelled in math since I was young, and often find myself exploring mathematical concepts for fun.
  • In 2021, I completed my degree with a Mathematics Minor from The University of Toronto.
  • I have taken many math courses in university including Calculus, Linear Algebra, Number Theory, Theory of Computation, and Abstract Mathematics.
  • I have worked on various hardware infrastructure including SoC FPGAs, VEX Robotics, and Arduino.
  • I worked with SoC FPGAs in university, and wrote many programs at the hardware level.
  • In high school I wrote the software for our robotics team's robot with VEX robotics and Robot C.
  • I've built lots of small projects from scratch with Arduino.
  • I've typeset over 100 documents with LaTeX, both for work and for school.
  • These document have been filled with various features including complex mathematics and tables.
  • I've worked in corporate in three different positions, so I'm well versed in corporate culture and have picked up various business skills.
  • I've given many presentations, led meetings, and organized projects.
  • I also have extensively used Microsoft Teams, Outlook, and Skype for Business.