logo

alex@www

:

~/portfolio

This Website


Spring 2024


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus ut lacinia eros. Nullam malesuada enim libero, sed finibus libero viverra ut. Integer interdum pellentesque laoreet. Aliquam sit amet neque eget quam sollicitudin ornare. Donec sollicitudin auctor diam, et ullamcorper libero maximus a. In eget lacinia ex. Suspendisse lectus neque, lacinia ac odio et, placerat dignissim diam. Etiam et felis vel orci laoreet rhoncus. Aliquam ligula nunc, pretium eget metus in, viverra mattis tellus.

Shopping List App


Fall 2022


On a couple occasions in the months leading up to this project I found myself needing to return to the grocery store to buy items for recipes that I had missed writing down. I decided to make an app which will help prevent me from making this mistake again. This app allows users to add recipes as simple collections of ingredients which can then be imported directly into a shopping list. The user can swipe away items they already have before they leave and check off the items they have purchased while at the store. I also added functionality where users can join user groups to allow a household to share the same recipe pool and ongoing shopping list which will update in real time. Since the app is built on top of a rest API, the real time updates are handled by broadcasting a hash of the updated shopping list over a websocket and any connected users in the household group will automatically perform a get request on the new data if their hash does not match.

Cannon Game


Fall 2022


I started this project as an opportunity to learn about SDL2, which is a C++ graphics library I have been interested in for quite some time. The game itself is a remake of a game I made in high school using Pygame. Remaking a game instead of trying to make a new one allowed me to focus fully on working with SDL2 and refamiliarizing myself with C++. Due to the hands-off nature of SDL2, I had to implement many core parts of the game engine on my own. Some systems I implemented were an Entity Component System (ECS), a simple state machine, asset managers, and window management. These systems were made by wrapping the core SDL calls with much more usable classes. Despite the object oriented nature of the engine, the game itself doesn't suffer from a convoluted inheritance tree thanks to the ECS system.

Old Website


Summer 2022


This website was built to serve two purposes. The first was to act as an easily accessible place to host my resume while having more freedom with the design than a traditional resume template. The second was to provide an incentive to practice web development skills which were not a focus of my university classes. To add to the challenge, I decided I would create the website in pure ReactJS without assistance from any additional UI libraries such as react-bootstrap or material-ui. This site is currently self-hosted on my own home server using Nginx and the latest Ubuntu LTS release.

LaTandao App


Spring 2022


LaTandao is an app I helped build as part of the CMPUT 401 course at the University of Alberta. CMPUT 401 is a project-based course which aims to teach the software development process and project management by having the students build real world applications. My group was given the task of building an app for La Connexional, a local Edmonton event organizing group. They had a preliminary concept for an app which would allow users to view events and products that businesses could promote on the platform. I mainly contributed to this project through my work on the backend. The backend is built with Django and MySQL and serves content to the app with a REST API. I also wrote the backend for the chat function using Django channels which is socket based with a Redis cache so that the chat experience is responsive. The messages are regularly saved from the redis cache to the MySQL database so that messages which arrived when a user was not logged in are still preserved. Due to rapidly approaching deadlines, I taught myself Flutter and Dart so that I could build a standalone chat application which was incorporated into the app as the chat tab by the frontend team. The backend was deployed to a cloud instance of Ubuntu 20.04.

Remote Garden Watering App


Summer 2020


This is a project I developed to practice what I had learned from CMPUT 301. The app was written in Java using the Android platform tools. The server was a simple server written in python running on a Raspberry Pi that communicated over sockets to turn relays on and off. These relays were then wired into solenoid valves so that I could turn sprinklers on and off using the Android app. Were I to do this project again, I would not write it this way. I would instead communicate with some form of REST API since the sockets made the connection too fragile for a mobile app. Despite it's limitations, the project was a success and allowed for myself and my family to water the gardens from 200km away.