Gregory L. Rosenblatt
Summary
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
Publications
A unified approach to solving seven programming problems (functional pearl)
Proceedings of the ACM on Programming Languages. Volume 1, Issue ICFP, September 2017. Article No. 8
[Paper] [Video] [Reusable artifact]We present seven programming challenges in Racket, and an elegant, unified approach to solving them using constraint logic programming in miniKanren.
Talks
Barliman: trying the halting problem backwards, blindfolded
Barliman is a prototype smart editor capable of program synthesis: given part of a program and a set of tests to pass, Barliman attempts to complete the program for you.
Professional experience
University of Alabama at Birmingham
Birmingham, ALScientist
February 2020presentBioinformatician
September 2017February 2020Applying 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, ONPlatform Engineer
July 2014February 2015Improved 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, ONSoftware Engineer
October 2013June 2014Part of the founding team originally from Well.ca
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
Well.ca
Kitchener, ONSoftware Engineer
August 2012October 2013Refactored 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, CASoftware Engineer
January 2011June 2012Developed 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, CTQuantitative Developer
May 2006August 2009Developed 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, ONIndependent Researcher
February 2015September 2017Drawing 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
Education
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