Latest News

About Me

My name is Jordan Frank, and I'm a software engineer at Facebook. The information on this page is related to work undertaken during my graduate studies in the Computer Science department at McGill University in Montreal, Quebec. I was supervised by Profs. Doina Precup and Shie Mannor. My research was supported, in part, by the NSERC Alexander Graham Bell Ph.D. Canadian Graduate Scholarship, for which I will always remain extremely grateful. Here is my relatively current CV. I am a member of the Reasoning and Learning Lab and the Center for Intelligent Machines. I'm interested in many topics, from compilers to cryptography, but my research area was in, what I like to call, ubiquitous machine learning. The big question that motivates my work and studies is:

What could we learn if we had access to all of the data collected by all of the electronic devices that every person on earth interacts with on a daily basis?

To answer such a question requires scaling machine learning algorithms up to deal with a barrage of incoming data from a complex, non-stationary world. I can think of no better place in the world for me to continue working on answering this question than at Facebook.



Data and Code

Research & Projects

My PhD work is focused on a project that we are calling the The Digital Rashomon Project. From Wikipedia: The Rashomon effect is the effect of the subjectivity of perception on recollection, by which observers of an event are able to produce substantially different but equally plausible accounts of it. We are currently investigating methods for modeling human behaviour using data collected from smartphones. More information can be found here. We have developed a system called WalkID that can identify the person carrying a mobile phone based on their gait, or style of their walk. The Discovery Channel did a piece on this technology, which can be seen online here (our segment starts at 8:24). See the Publications section above for more details.

We have recently developed and made available an opensource framework for developing data-driven applications on the Android platform. The framework consists of a set of classes that can be used for developing plugins that either consume or produce data, and a means for wiring these plugins together to build a useful system. A few example output plugins have been developed to generate data from the GPS, GSM radio, Wifi radio, accelerometer, magnetometer, and temperature sensors. Additionally, we have developed input plugins for logging the data, uploading the data to a web service, classifying the accelerometer data to detect primitive activities, and clustering locations that a user visits based on wifi fingerprints. The code and applications, and the documentation (which is currently being updated) can be found here. The code is released under the MIT software license, and is thus free to use without warranty, provided that proper attribution is included.

My masters work focused on incorporating variance reduction techniques from the stochastic simulation community into reinforcement learning algorithms in order to improve performance. The rare events paper in the previous section is one example of such a method, and uses adaptive importance sampling as a variance reduction technique.

In Dec. 2007, I took part in the Hierarchical Organization of Behavior: Computational, Psychological and Neural Perspectives workshop at NIPS. The website for this workshop can be found here. I presented some recent work on using Recognizers for learning about options (ie. temporally extended courses of action) in environments with large state and action spaces, where function approximation is employed for state and action representation. (Extended abstract, Slides)

Here are the projects that I completed during my Master's degree at McGill University.

I was on the technical committee for the RL-Competition at ICML'08, and I was the web chair for the 2009 RL Competition. It's a great competition, and a terrific way to try out those fancy Reinforcement Learning algorithms in some fairly tough domains.

My badge:


I taught COMP-202: Introduction to Computing 1 at McGill University in the Summer 2007 semester.

I also was a Teaching Assistant at McGill for COMP-202 in Fall 2006 and Winter 2009, COMP-652 (Machine Learning) in Fall 2008, 2009, and 2010, and COMP-102 (Computers and Computing) in Winter 2011.

Additionally, I was the delegate for the School of Computer Science at McGill to the Teaching Assistant union, AGSEM, from 2008-2010.

Outside Academia

I helped to found, and am still involved with a company called Nitobi (recently acquired by Adobe), which does cutting-edge web and mobile app development.

I have also contributed articles to a couple of online developer websites:

I have a lot of experience doing web development with Javascript and HTML.

I was bored one afternoon, and read a neat article by Peter Norvig about how to solve any Sudoku game, and decided to see if I could implement it in Javascript for solving online Sudoku puzzles. Here is the code. To use it, you will need Greasemonkey (Mozilla Firefox users only), you will need to install the script, and then if you visit, it will solve the puzzle automatically. Seems to be able to solve every puzzle that I've tried.