A custom play button with the letter S cut out of it.

Developer & Designer


Check out the try me links where available.

NSCC Course Map API

Role: Main Developer

The NSCC Course Map API is an API that provides data about IT courses at NSCC. There are 10 GET endpoints to choose from, all of which are viewable in the API documentation. This project was made during a second year programming class for my IT Web Programming diploma, and all of the endpoints are created using Azure Server-less functions. Throughout the creation of this API, the database was created and seeded using a provided ERD, the database server is hosted on and connected to via the cloud, the endpoints were created via Azure Functions in VSCode, and the documentation was fleshed out in Azure and the resulting documentation JSON was exported and uploaded to Swagger Docs.

Social Media Sports Feed

Role: Main Developer

This is a webpage built using PHP & Laravel that allows users to post news about current sports events. Its admin features include user administration, content moderation, and theme management. Regular users who have registered have the ability to read all posts, as well as create, edit and delete their own posts. I built this application as a final project for a course during my IT Web Programming diploma, and I would say my biggest takeaway was a better understanding of the pros and cons of opinionated frameworks. When you create a new Laravel project the base files are created for you, and the framework is quite opinionated about how you should add and organize new files. I would argue that this is actually a good thing in many cases because following the opinion of Laravel helps keep you organized while providing extra features. Not all frameworks are this opinionated, but building this project helped me better understand the pros and cons of opinionated and non-opinionated frameworks.


Role: Main Developer

I designed and coded this website from scratch as a final project for a course in my IT Web Programming diploma. This project is built using React, styled using SASS, and bundled using the Parcel JS bundler. While reinforcing my ReactJS skills, this project also showcases my fundamental web design skills. These skills include the C.R.A.P (contrast, repetition, alignment & proximity) principles and creating color palettes. In addition to the initial build of the website I had to take part in a follow up client meeting to discuss the build. The purpose of the meeting was for me to gather, synthesis, and implement client feedback. In this case the client was my instructor.

ESLint Configuration

Role: Main Developer

After I built my first few projects I learned about linters, and realized the benefits of having a linting configuration that lints your code for you. It notifies you of errors as you code, and it can also help you fix those errors all while adhering to a set code style. At the time I realized these benefits, I also knew I wanted to build my own, reusable solution. This led to me creating and maintaining this ESLint & Prettier configuration for myself. I like to build side projects that I can use to continuously learn from, and one useful technique I learned while maintaining this configuration is how to implement GitHub Actions to streamline my continuous integration pipeline. Whenever I made changes I found myself forgetting to publish to NPM because it is an extra step. I took this opportunity to learn GitHub actions, and now the publish step is automated for me whenever I publish a new release on GitHub. This continuous integration pipeline reduced my overhead and makes sure my package updates are always published.

Portfolio Website

Role: Main Developer

This project is this current site, so Welcome! It is built in React & Gatsby, and uses Continuous Integration & Continuous Deployment to make sure the latest is always deployed. The front-end of the website uses modern React concepts & methods like styled components and React hooks to build the UI. Gatsby allows me add routing and dynamically generate blog post pages via a template using their Node APIs, and then they get generated to static html files. The blog posts and post pagination are queried using GraphQL.

Want To Work Together?

I love to collaborate! If you like my work and want to reach out about an opportunity, contact me via the button below.

Contact Me Here