Photograph

Gregory McWhirter

Work E-mail:
gregm -at- ziprecruiter -dot- com
Personal E-Mail:
greg -at- ideafreemonoid -dot- org

Personal Information

I am currently working as a software engineer on the search team at ZipRecruiter.

For two years, I was a mathematics and computer science teacher at the Windward School in west Los Angeles.

I completed a Ph. D. at the University of California, Irvine in the department of Logic and Philosophy of Science concerning how to identify deceptive behavior in formal models of signalling.

I am originally from central Pennsylvania. I received a joint bachelor's degree from the University of Pittsburgh in mathematics and philosophy.

Interests and Hobbies

I enjoy programming projects in javascript, python, and C. I have lately become interested in game AI and how it might relate to the learning research I undertook in graduate school.

In terms of hobbies, I enjoy playing board games and painting miniatures for use in those games. I also enjoy computer games, camping, and attempting to grow plants in the limited space of a Los Angeles apartment complex.

Portfolio Highlights

For a fuller portfolio, please visit my GitHub profile.

gsmcwhirter/ideafreemonoid.org
the code for my personal website
Language/Technology (current)
CouchApp (CouchDB) + Ember (old version) frontend, node.js backend w/ express for git hooks
Language/Technology (rewrite)
node.js backend, React frontend, PostgreSQL database
gsmcwhirter/dynamics-visualization
displays solution trajectories of 2x2 games
Language/Technology
JavaScript, HTML5 canvas
gsmcwhirter/dynamics
calculates solution trajectories of 2x2 games
Language/Technology
JavaScript
gsmcwhirter/c-simulations
a framework for game-theoretic dynamical system simulations in C (docs: https://c-simulations.readthedocs.org/en/latest/)
Language/Technology
C
gsmcwhirter/self-deception
uses the c-simulations framework to run research simulations concerning self-deception
Language/Technology
C
gsmcwhirter/universal-deception
uses the c-simulations framework to run research simulations concerning universal deception
Language/Technology
C
gsmcwhirter/simulations
a framework for game-theoretic dynamical system simulations in Python (docs: https://simulations.readthedocs.org/en/latest/)
Language/Technology
Python
WindwardProgramming-2014/wwgamelib
an attempt at a 2d game wrapper for students to use at Windward School; somewhat incomplete (docs: http://wwgamelib.readthedocs.org/en/develop/)
Language/Technology
Python, pyglet
WindwardProgramming-2014/zombiehunter
a demo game using wwgamelib
Language/Technology
Python
WindwardAPCS/Bioinformatics
a Bioinformatics project in Java for AP Computer Science A students; completed code available on request (also available as gsmcwhirter/Bioinformatics)
Language/Technology
Java
WindwardAPCS/Simulations
a predator-prey simulation in Java for AP Computer Science A students; completed code available on request (also available as gsmcwhirter/Simulations-1)
Language/Technology
Java, javafx
swtor-apps/swtor-tanking
a node.js extension for optimizing game stats given certain constraints
Language/Technology
C/C++, node.js
swtor-apps/swtor-tanking-site
the code for the website that used to host the swtor-tanking calculator; no longer live
Language/Technology
node.js w/ express

C Simulation Code

I have recently transitioned most of my simulations to plain C from python due to speed requirements. The most recent frameworks are available from my c-simulations project. Documentation for this project is ongoing and available at its readthedocs page.

Examples of this framework being used are available in my universal-deception project and my self-deception project.

Python Simulation Code

Formerly, I maintained the following simulations framework in python/cython. It can certainly still be used, though I have no intention of providing updates at this time.

Packages here can be re-used by either globally installing them or using a virualenv for your project. I recommend the latter way.

To start a new project using one of the packages below, you can follow these steps (replacing "simulations" with the package name):

mkdir myproject
cd myproject
virtualenv --distribute .
virtualenv --relocatable .
pip -E . install --extra-index-url https://www.ideafreemonoid.org/pip simulations

As an alternative to the final step, you can download and extract the linked archive from any build and run the following command in the extracted directory:

pip -E /path/to/myproject install .

Once you have a project set up and want to use it, you can activate your virtualenv by the following command:

source /path/to/myproject/bin/activate

When you want to return to your normal system environment, you can deactivate the virtualenv by entering the following command:

deactivate