Gregory L. Rosenblatt
GitHub: gregr


I currently live in Toronto, Ontario. I used to be a Software Engineer. Then I did independent research for a little while. Now I work for the University of Alabama at Birmingham.

My focus is more on general ideas than on specific technologies. Though, I do like to choose which technologies to work with, preferring well-designed languages, tools and 100% solutions. Unfortunately I have plenty of experience with poorly-designed technology.

I enjoy being managed well.

My approach to problem solving emphasizes tool-building and automation. This includes code generation, transformation 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.

Notable personal projects

The following projects were the product of significant effort made as I grew up as a programmer.

  • 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.



Extraprofessional experience

  • Funemployment

    Toronto, ON

    Independent Researcher

    February 2015September 2017

    Drawing the future into the present

    • Joint work 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

Professional experience

  • University of Alabama at Birmingham

    Birmingham, AL


    September 2017present

    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


  • 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.

Some reading I've enjoyed and recommend