Responsive image

Below is a collection of projects I have done outside work and during my M. Sc. years at SFU/SIAT were I had the chance to study and apply Artificial Intelligence techniques such as Genetic Algorithms, Machine Learning and Expert Systems.

Countdown to citizenship

As an immigrant to Canada, I had to fill so many application forms. One of the most tedious forms to fill is the travel form where you have to list all the countries you have been to in the last 10 years...

After spending hours trying to cross-check my passport stamps, flight invoices and Google timeline, I realized I could automate part of this tedious process by analyzing my Google location history. That is how was born!

More details »

Artificial Intelligence

During my M.Sc., I studied the theory and implementation of a large range of articial intelligence methods including Evolutionary Computation, Machine Learning, Ontologies and Expert Systems. I learned how to weight the benefits and drawbacks of a particular AI approach when facing a concrete problem.

In my thesis project, I used a multi-objective genetic algorithm to optimize synthesizer's parameter to replicate a given target sound. I also developed a system using Genetic Programming and an Expert System to optimize build orders for the RTS game: Starcraft.

More details »

Knowledge Visualization

During my M.Sc., I learned how humans perceive information from different visualization approaches and how we can best communicate the information and the concepts represented. Coupled to a strong statistical background, it made me able to design insightful visualizations from data.

In the context of genetic programming, I designed a real-time visualization with Processing that shows the changes of the population during the evolution.

More details »

Interaction design and user experience

During my M.Sc., I studied diverse computer interaction forms including: direct physical interaction, embodied interaction and embedded interaction and their implementation using interactive technologies such as sensing systems, computer vision, reasoning engines and multimodal displays.

I designed and prototyped a new interface using computer vision and evaluated it with an user study.

More details »

fitness landscape

Countdown to Citizenship

Countdown to Citizenship is a tool to help count down absences from Canada using collected Google Location History data. I started this project using an open source project from The challenge with this project was dealing with large amounts of location data and doing all the processing and visualization browser side (for privacy reasons).

I kept the JSON streaming library, Oboe.js, used by the original project. I used a polygon from to represent Canada and used the Ray Casting Algorithm to check if each latitude/longitude pairs were inside or outside the polygon. Using this technique I was able to detect and record absences from Canada. As a post-processing step, I reuse the same technique to reverse-geocode the absences.

The absences are also visualized in real time (using promises) as snaking polylines on a map using Leaflet.js and on a table.


Artificial Intelligence - Starcraft Built Order

As with board games like Chess in the past, real-time strategy games are becoming popular test applications for real-time AI research. In this project we approach the real-time planning problem by considering build-order optimization in real-time strategy games. This problem class can be formulated as a resource accumulation and allocation problem where an agent has to decide which objects to produce at what time in order to meet one of several goals: either maximizing the number of produced objects in a given time period or producing a certain number of objects as fast as possible. I propose a system using genetic programming which optimizes build orders in the commercial real-time strategy game Starcraft©.


fitness landscape

fitness landscape

Knowledge Visualization - Genetic Programming

Genetic programming is an evolutionary technique used in optimization problem. Its dynamic nature makes it difficult to visualize. Indeed, hundred of candidate solutions are evolved per generation. There could be relationships between these candidate solutions. Phenomenon such as code growth can also happen. Information flocking uses the emergence of motion to visualize the dynamics of varying datasets. It makes possible to observe the data at different levels. I apply information flocking techniques to genetic programming visualization and intended to demonstrate its qualities.


Interaction design and user experience - Freepad

The field of sketching interface design in regards to video game is relatively young and has not been investigated in great depth. Freepad is a custom paper-based MIDI musical interface. We describe an extension to Freepad that supports user customization for real time strategy games. Using only a webcam, a pen and a sheet of paper, players can design their own interface by drawing shapes and linking them to simple or complex actions in the game. In an user study, we use this extended Freepad to explore the potential of sketching interfaces in strategy video games. Our results indicate that using Freepad improves the efficiency of players and their enjoyment in this kind of games.

Renault Simulator