Gregory L. Rosenblatt
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.
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.
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.
a tile-based multiplayer game framework
Several amusing games were made with this. They are lost.
a 3D game programming system, including a GUI library
ICLR 2018 Workshop
Abstract: We present a method for solving Programming by Example (PBE) problems that tightly integrates a neural network with a constraint logic programming system called miniKanren. Internally, miniKanren searches for a program that satisfies the recursive constraints imposed by the provided examples. Our Recurrent Neural Network (RNN) model uses these constraints as input to score candidate programs. We show evidence that using our method to guide miniKanren’s search is a promising approach to solving PBE problems.
TL;DR: We use a neural model to guide the search of a constraint logic programming system performing program synthesis, where the neural model uses as input the internal representation of the symbolic system.
Keywords: Program synthesis, deductive search, deep learning, recurrent neural networks
Proceedings of the ACM on Programming Languages. Volume 1, Issue ICFP, September 2017. Article No. 8
We present seven programming challenges in Racket, and an elegant, unified approach to solving them using constraint logic programming in miniKanren.
Barliman: trying the halting problem backwards, blindfolded (with William E. Byrd)
Independent ResearcherFebruary 2015present
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
Platform EngineerJuly 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 RetailToronto, ON
Software EngineerOctober 2013June 2014
Part 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
Software EngineerAugust 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
- Palo Alto, CA
Software EngineerJanuary 2011June 2012
Developed and maintained internal development tools and infrastructure
- Distributed continuous test run infrastructure
- Automatic test failure blame assignment and task creation
- Task management system
- Dev-server allocation and management system
- Real-time asynchronous job tier
Ellington Management GroupOld Greenwich, CT
Quantitative DeveloperMay 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 Technology19992004
Bachelor of Science in Mechanical Engineering
Concentration in Aerospace