For Fun

Life in the Ivory Tower

I obtained my Bachelor of Engineering degree at the University of Calgary where I studied a mix of electrical engineering and computer science. In my fourth year, my project group and I made an autonomous robot that navigated mazes. It used a Wii-mote for localization and IR sensors to stop itself from crashing into walls. This was my first foray into the field of artificial intelligence. It was also in my fourth year that I became progressively more addicted to functional programming languages (e.g. Lisp and Scheme), and the compilers to support them. I have been pursuing these two interests, artificial intelligence and compilation, since then.

I obtained my Master's of Applied Science degree at the University of Toronto, where I worked on machine learning and computer vision under the supervision of Prof. Brendan Frey. My thesis project was on using video to help improve static image classification performance, a framework that we called "Flobject Analysis". The approach was quite successful and seemed quite promising. We beat other state-of-the-classifiers such as HOG, and intersection kernels, by more than 20% increase in accuracy. You can read about it here.

I obtained my Ph.D. at the University of California, Berkeley, where I designed a new general purpose programming language called Stanza with my advisors Jonathan Bachrach and George Necula. Currently available programming languages fall roughly into two camps: dynamically typed "scripting" languages, and statically typed "production" languages. Scripting languages are great during the early phases of software development. They are flexible and allow users to get things done quickly. However, as programs mature and grow, the lack of any error checking starts to impede progress, feeling much like attempting to build a skyscraper out of duct-tape. Statically typed production languages offer the tools necessary to build stable and reliable software, but at the cost of being less flexible. Stanza is designed to accomodate the entire lifetime of software design and implementation, allowing users to bring prototypes to polished products under the same language. It is an optionally typed language, and users are free to put in as many or as few types as desired depending upon which phase of implementation they are in. Check it out at www.lbstanza.org.

Currently, I am the CTO of JITX Inc, where we designed a new programming language for automating circuit board design. Circuit board designs are currently manually designed, drafted, and reviewed by teams of skilled engineers. Our technology lets you generate hardware systems using code. Instead of drawing another one-off schematic, you can turn your engineering knowledge into code, which can be reused without error.

Master's Thesis
'Flobject' Analysis: Learning about Static Images from Motion
Patrick S. Li. 'Flobject' Analysis: Learning about Static Images from Motion. 2011. Master's Thesis, Graduate Department of Electrical Engineering, University of Toronto.

Ph.D. Thesis
Design and Implementation of an Optionally-Typed Functional Programming Language
Patrick S. Li. Design and Implementation of an Optionally-Typed Functional Programming Language. Fall 2017. Ph.D. Thesis, Graduate Department of Electrical Engineering and Computer Science, University of California, Berkeley.

Learning Better Image Representations Using "Flobject Analysis"
PS Li, IE Givoni, BJ Frey, Learning better image representations using flobject analysis. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 2011.

Factorizing Appearance Using Epitomic Flobject Analysis
PS Li, BJ Frey, Factorizing appearance using epitomic flobject analysis. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 2012.

Specification for the FIRRTL Language
PS Li, AM Izraelevitz, J Bachrach, Specification for the FIRRTL Language. Technical Report. EECS Department, University of California, Berkeley. February 2016.