Previously, a Senior Software Engineer / Tech Lead
at Wayfair
in Toronto, Canada.
Prior, a Software Engineering Manager at
Influitive, and before that,
a full-stack Software Engineer at
Canopy Labs (acquired by Drop) until 2017.
Graduated with a double major in Computer Science and Linguistics
from the University of Toronto.
As well, a General Assembly alum for Product Management.
I work mainly with Python, Java, JavaScript (React & Svelte[Kit]), and some Golang.
Native speaker of English and Filipino, 簡単な会話だけできる日本語と,
étage élémentaire de français.
Hobbies in photography, guitar, and sim racing.
Built with: SvelteKit, FastAPI
Granite (prev. MoneyBuddy) will be an AI-powered stock tracking tool designed to help Canadians gain a clear, consolidated view of their financial health. By integrating multiple investment accounts, it delivers insightful analytics, performance tracking, and AI-driven recommendations to optimize portfolios. Whether it's monitoring market trends, tracking dividends, or assessing diversification, Granite empowers users to make smarter financial decisions with ease.
Built with: HTML/CSS, jQuery, Python, Flask, MongoDB, nodeJS
Ladder is a simple leaderboard and ladder platform to keep track of office ping-pong stats of its employees (not company property). The system uses the Elo rating system to calculate the relative placements of the participants. The platform was built with Python on Flask and it's Jinja templating to display profiles and using MongoDB as its backing.
The personal profiles of the particpants featured:
The platform itself did not have a UI portion to input scores or match results, but instead relied on the Slack chatbot "Sudowoodo". The chatbot received commands in Slack with match outcomes which it then parsed and recorded through the Ladder API with HTTP calls. The chatbot supported several recognition patterns for inputting match results and querying stats. It was also able to provide opponent suggestions and other basic conversational skills.
Built with: Python, OpenCV2
As part of our ongoing efforts to compete within the videogame/e-sport Overwatch, a friend and I have been keeping track of our stats of our 1v1 matches. This includes win-loss rates, win-loss rates on specific hero matchups and preferred heroes.
After every 1v1 game, Overwatch provides a match result summary that gives the following information:
The final result is to have the entire process automated and provide the user (me) with the visualized result of our stats and perhaps even opening the tool the gaming community.
Built with: HTML/CSS, TypeScript, JavaScript
Originally implemented using HTML5 Canvas with vanilla JavaScript, I've recently ported it over to TypeScript as a means to learn the language. As part of the port, the code was refactored for better code organization and simplified code logic in some sections. As a challenge, no external graphic assets were used -- everything is drawn using the Canvas API.
Features include a basic scoring system, hold piece functionality, and a ghost piece-guiding system.
Reach me at me[@]luismpablo.com