Gregory L. Rosenblatt
GitHub: gregr


I work for the Hugh Kaul Precision Medicine Institute at the University of Alabama at Birmingham. I build biomedical reasoning tools using relational programming techniques. I live in Toronto, Ontario.

My approach to problem solving emphasizes tool-building and automation. This includes generating and transforming code, and other language-oriented techniques. When solving mysteries, I understand and reason about code before jumping into a debugger.

A major goal of mine is to become better at designing for human beings. The past inspires me.

I play Go/Weiqi/Baduk at the 5 dan level.

Research interests

  • Relational (constraint logic) programming
  • Old-school symbolic artificial intelligence
  • Program synthesis
  • Computational reflection
  • Supercompilation
  • Multi-stage programming
  • Semi-automated theorem proving



Professional experience

  • University of Alabama at Birmingham

    Birmingham, AL


    February 2020present


    September 2017February 2020

    Applying computer science to build medical reasoning tools

    • mediKanren user interface
    • Relational programming system extended with graph database and search
    • Automated ingestion and reformatting of biological graph data sources
  • 500px

    Toronto, ON

    Platform Engineer

    July 2014February 2015

    Improved platform stability and performance

    • Kafka-based data pipeline prototype
    • Refactoring of Rails application to produce microservices written in Go
    • Internal libraries/tools that simplify creation of new Go services
  • Tulip Retail

    Toronto, ON

    Software Engineer

    October 2013June 2014

    Part of the founding team originally from

    Worked on both retail platform and individual client projects

    • Re-design of data model and platform in terms of a service-oriented architecture
    • Framework for building hypermedia APIs
    • Data ingestion and processing library
    • Continuous image import system

    Kitchener, ON

    Software Engineer

    August 2012October 2013

    Refactored and redesigned the warehouse management system

    • Separation of WMS into an independent service providing a web API
    • Design and performance analysis of alternative communication protocols
    • Internal tools and automation for development and deployment
  • Facebook

    Palo Alto, CA

    Software Engineer

    January 2011June 2012

    Developed and maintained internal development tools and infrastructure

    • Distributed continuous test run infrastructure
    • Automatic test failure blame assignment and task creation
    • Phabricator
    • Task management system
    • Dev-server allocation and management system
    • Real-time asynchronous job tier
  • Ellington Management Group

    Old Greenwich, CT

    Quantitative Developer

    May 2006August 2009

    Developed and maintained various modelling and trading systems

    • Distributed computing infrastructure
    • Cross-language services and remote procedure call library
    • Quantitative model implementations
    • Real-time market data streaming and aggregation
    • Automated trading and order management system

Extraprofessional experience

  • Funemployment

    Toronto, ON

    Independent Researcher

    February 2015September 2017

    Drawing the future into the present

    • Worked with William E. Byrd on Barliman, a prototype smart editor capable of real-time program synthesis
    • Described Hyperprograms for reconciling program comprehensibility and efficiency
    • Sketched an alternative to the web

    Taking the programming out of programming

    • Making the programming a better place
    • Fighting the social injustice of programming-inequality
    • Increasing the minimum programming to fight poverty
    • Providing affordable programming to keep people off the streets
    • Putting programming on the table for you and your family
    • Cutting programming emissions to slow climate change
    • Looking for a cure to programming
    • Programming is the leading cause of programming
    • 1 out of every 1 programmers suffers from programming, but many are in denial
    • Staging programming interventions
    • Just say 'no' to programming


  • Rochester Institute of Technology


    Bachelor of Science in Mechanical Engineering

    Concentration in Aerospace

  • Stanford Online Courses for AI and Machine Learning

    Fall 2011

    Statement of Accomplishment

    This was the original online offering of these two classes from which coursera and udacity were spun off.

Older projects

  • Racket-Misc


    This is a library of miscellaneous utilities for the Racket programming language. It features records, cursors (zippers and lenses), unrestricted generators, algebraic effects, gratuitous experiments in syntactic sugar, and more.

  • The Chive Programming Language


    This was my first serious attempt at a full programming language implementation. It features a scheme-like hygienic macro system based on syntactic closures.

    It was put aside when I started working at Facebook.

  • Uriel


    a tile-based multiplayer game framework

    Several amusing games were made with this. They are lost.

  • Starscape


    a 3D game programming system, including a GUI library

  • Creating a Scripting System in C++


    This is an article series I wrote for in five parts.

Some reading I've enjoyed and recommend