I write code, manage servers, and do UIs for Tom Mitchell's lab in the Machine Learning department of the School of Computer Science at CMU. You can find (a possibly dated version of) my complete CV online. Prior to 2018, I worked with William Cohen, also at CMU. My recent history is as follows:
  • January 2019 - Present :: Theo :: With Tom Mitchell. Theo is a combined knowledge base and inference system with first-class facts (i.e. you can have facts about facts, and facts about facts about facts, etc). In the past, a Java implementation of Theo underlaid NELL, the Never-Ending Language Learner. For LIA, we are working on a Python implementation of Theo with a Django-mediated database backend. PyTheo on bitbucket.
  • June 2018 - Present :: LIA :: With Tom Mitchell, Forough Arabshahi, Igor Labutov, and a variety of undergrad and master's students. The Learning by Instruction Agent is a digital assistant that can learn to combine simple tasks into more complex ones via natural language instructions.
  • September 2017 - June 2018 :: RollMe :: With William Cohen, Vidhisha Balachandran. RollMe is an organization and planning scheme for machine learning pipelines and research groups. Common research tasks are organized in a network, providing support for documentation, porting proven ideas to related datasets or problems, and collecting best practices. The document hub works in concert with the CodaLab cloud computing system, which helps track experiments and prevent results from getting lost. RollMe document hub, Task browser, CodaLab node.
  • April 2016 - June 2018 :: TensorLog :: With William Cohen. TensorLog is a differentiable deductive database which solves queries by expressing clauses of a logical theory as factor graphs. TensorLog on github.
  • June 2016 - 2017+ :: GNAT :: With William Cohen, Lidong Bing, Bhuwan Dhingra, Eli Whitney, Lam Wing Chang, Joseph Gibli. GNAT is A Grounded NELL-like AKBC Toolkit, and incorporates several knowledge base building and completion projects in an attempt to identify repeated tasks and develop tools suited to them. GNAT website; github of prototype tools.
  • Jan 2013 - 2016+ :: ProPPR :: With William Cohen, William Wang. Programming with Personalized Page Rank uses graph-walking algorithms to make inferences over logic program proof graphs. ProPPR on github. Resulted in:

I pay attention to how my code is organized, and work to minimize code duplication and other hacks wherever possible. I transform deadline-driven code into reusable workhorses, and prototypes into solid software that can process data quickly at scale. I'm diagram-driven, and generally produce UI sketches as well as domain, class, and sequence diagrams as a part of my normal development process. This habit becomes invaluable when it comes to generating documentation and passing projects on. I have some basic background in user-oriented design, and furthered my study of the topic through coursework in the MHCI program at CMU. Thanks is very much due to my contact with John Zimmerman's teams, which grounded our projects in real user habits, needs, and goals, and convinced me that good design provides an excellent avenue through which academia can become accessible to the public.