LuisMPablo

About

Currently a Senior Software Engineer at Wayfair in Toronto, Canada.
Previously 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.
Most recently, a General Assembly alum for Product Management.

I work mainly with Ruby, Python, JavaScript, HTML/CSS, and some Golang.
Varying professional experience with: Apache Spark, AngularJS, Apache Mesos, MongoDB, MySQL, Postgres, NodeJS/Express, React, and VueJS.

Native speaker of English and Filipino, 簡単な会話だけできる日本語と, étage élémentaire de français.
I also enjoy taking (mostly) landscape photography with the Nikon D7100 and playing my guitar.

Projects

MoneyBuddy

A website to help individuals with personal finance

Built with: VueJS, Netlify

MoneyBuddy is a personal project that came from my own journey of learning more about personal finance. As someone who learns through general trial and error, it gave me an idea to create a set of "calculators" and visualizations that help demonstrate various concepts in personal finance, such as how dividend payouts are calculated, the power of compounded interest, and even the pitfalls of not paying credit card bills in full.

The entire website (as of writing) is written in Nuxt.js/VueJS and statically generated and loaded from Netlify.

Ladder+Sudowoodo

A ping-pong ladder system with a chatbot interface

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:

  • their Elo Score history
  • Slack profile picture + handle
  • Win streak, lose streak, average points per game
  • Game stats breakdown per opponent

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.

OverParse

A screenshot parser for the game Overwatch

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:

  • Hero usage
  • Round results
  • Final scores
OverParse is a simple screenshot parsing tool built for myself to easily extract stats from the results screen of a 1v1 match onto a CSV or JSON file that can be easily copy pasted to the rest of the existing results.

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.

HTML5 Tetris

The classic game of Tetris

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.

Contact

Reach me at me[@]luismpablo.com

Photography

Gallery currently unavailable.

Please visit my instagram account instead.