Eddie Antonio Santos

Curriculum Vitae

Software developer and computer science educator


MSc. Computing Science

University of Alberta
January 2016–November 2018

BSc. Computing Science

University of Alberta
September 2010–December 2015

Technical Skills

Programming languages

  • Python
  • JavaScript
  • C
  • Erlang
  • TypeScript
  • Ruby
  • Java
  • Scala
  • PHP
  • Perl
  • C#
  • R
  • Scheme
  • C++
  • Rust
  • Haskell
  • 6502 Assembly
  • MIPS assembly

SQL, Redis, MongoDB, SPARQL, ElasticSearch


Vim, IntelliJ Platform, Visual Studio Code, Atom, Eclipse


macOS, Ubuntu/Debian Linux, OpenBSD, Other Linux distributions

Version Control

Git, Mercurial


Docker, Vagrant

Natural languages

fluent reading, speaking, writing
fluent reading; semi-fluent speaking, writing
nêhiyawêwin (Plains Cree)
beginner reading, speaking, writing

Work Experience

Application Development Specialist

June 2018–
National Research Council Canada (NRC-CNRC)
  • Develop language software for Canadian indigenous languages (e.g., Plains Cree, SENĆOŦEN).

  • Collaborate with representatives from language communities and linguists.

  • Implement morphological computational modelling for polysynthetic languages.

Software Developer

February 2018–May 2018
Dr. Antti Arppe
  • Write code that cleans and organizes recording validation data.

  • Interpret requirements and deliver work in incremental sprints.

  • Create a web application in Flask/SQLAlchemy to assist in manual recordings validation.

Teaching assistant

January 2018–April 2018
Hazel Campbell
  • Lead CMPUT 296 (Front-end Web Development) labs.

  • Create novel, exploratory labs on web technologies.

  • Mark lab assignments.

  • Support and mentor students learning the material.

Course design assistant

September 2017–April 2018
Dr. Osmar Zaïane
  • Write, edit, and produce video tutorials teaching introductory Python and presenting fundamental computing science concepts.

  • Create quizzes to effectively test knowledge.

Teaching assistant

September 2016–December 2016
Dr. Abram Hindle
  • Lead CMPUT 301 (Software Engineering), CMPUT 404 (Web Development).

  • Lead demonstrations in software engineering and web development topics.

  • Improve quality of lab assignments.

  • Mark lab assignments.

  • Support and mentor students learning the material.

Research assistant

January 2016–August 2016
BioWare ULC
  • Research and develop state-of-the-art methods in crash report deduplication.

  • Perform experiments and empirical evaluations of technologies.

  • Write, test, and deploy production-quality implementations of novel algorithms.

Lead developer

May 2015–September 2015
Dr. Eleni Stroulia, Patrick von Hauff
  • Collaborate intensively with colleagues in medicine on a virtual patient simulation platform.

  • Research, evaluate, and integrate medical ontologies.

  • Write a web application using PHP, JavaScript (with React).

  • Experiment with databases such as Virtuoso, Neo4j and MongoDB.

  • Support and maintain a legacy PHP web application.

Computing Science tutor

  • Tutor students in introductory computing science, primarily using C and Python.

  • Establish a relationship with the student based on mutual trust and respect.

  • Proactively find resources that will help the student succeed.

  • Guide students to find the answer for themselves.

  • Promote active thinking rather than rote memorization.

Teaching assistant

University of Alberta
  • Lead SCI 100, Computing Science component.

  • Assist students learning Python as their first programming language.

  • Evaluate student coursework.

Lead developer

Dr. Joel Gehman and Dr. Matthew Grimes
  • Write a robust and versatile web crawling service using a variety of technologies including Scrapy, and PhantomJS duck-taped together using an Erlang load-balancer and Redis.

  • Expose the web crawling daemon as a service with a Node.JS web server.

  • Assist in development of the website front-end.

  • Configure and maintain custom daemon processes on Ubuntu 12.04 servers.

  • Patch a memory leak in an open source library (MongoDB Erlang Driver) used in a server program.

Web developer

Dr. Denilson Barbosa
  • Create and maintain existing web demos for text processing tools using JavaScript, jQuery, and D3.

  • Develop a database abstraction library in Java for interoperation between our various text processing tools and an assortment of persistence tools (including MongoDB).

  • Develop a simple CoffeeScript Node.js app for bridging the web demos to the text processing tools.

Web developer

Dr. Greg Goss
  • Evaluate the state of a legacy PHP web application and promptly chuck it out (incrementing a database cursor in the middle of template code that generates HTML tables? Ain’t nobody got time for that).

  • Create database migration tools to transition from an SQLite3 database schema to a more maintainable (i.e., normalized) schema.

  • Employ the use of full-text indices for measurably faster text search queries.

  • Design simple, clean CSS for the website.

Web developer

Dr. Davood Rafiei
  • Develop a PHP-backed web game for human computation.

  • Created an MySQL backed game server.

  • Linux system administration.


My OCRID: orcid.org/0000-0001-5337-715X

Hobbies and Volunteering

Ada’s Team tutor; leader of the Git Workshop.

Canada Learning Code lead instructor and mentor.

Open source maintainer and contributor.

Teach Python as part of Edmonton Public Library’s Community Expert program.

Creator of presentations on several technical topics. [1], [2], [3], [4] [5] [6]

Mentor for DiscoverE Summer Camps.

Created syllabics.app — a Cree syllabics converter