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.

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

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