↩ back

About me

My name is Lawrence and I am a Software Engineering student at the University of Waterloo.

I believe in the right tool for the right job, and thus I am constantly learning and experimenting new technologies to expand my toolbox.

I pride myself in being a well-rounded full-stack developer. I have a strong background in modern web UI development and I have professional experience doing back-end work with Rails, PostgreSQL and MongoDB.

I am currently learning Clojure and distributed systems.

TL;DR? Download my résumé.


Projects

VI Worsened

github.com/lpan/viw

Viw is my coolest project so far. It is a VI-like, terminal-based text editor with undo & redo written in C. I drew inspirations from event sourcing, data-driven programming and the flux architecture. Make sure to read my blog What I learnt from coding a text editor in C

Rebash

github.com/lpan/rebash

Rebash is definitely one of my most underrated projects. Most people I talked to showed 0 interest in it. However, this project is what got me into functional programming. It is a configurable terminal emulator React component. I was too lazy to style it but trust me, it is really cool.

Visit my Github for more.


Work experience

Universe

I worked at Universe as a full-stack engineer co-op from May 2017 to August 2017.

I first worked on the embedded widgets code base. I upgraded react-router from v2 to v4, set up code splitting and completely redesigned the third-party script that deploys Universe’s embedded widgets. This allows multiple embeddable widgets to exist in the same repository and to be deployed in a uniform way. It also unlocks many previously impossible features such as widget customization, etc.

Toward the end of my co-op term, I worked with the platform team to release Universe’s public GraphQL API. I was involved with reimagining Universe’s domain models. I also shipped Universe’s first single page application that consumes the new GraphQL endpoint to production.

Plotly

I worked at Plotly as a front-end engineer co-op from May 2016 to August 2016.

At Plotly, my job was maintaining a large-scale React & Redux SaaS application that interacts with plotly.js.

I was involved with Flux to Redux migration. I also helped introducing different user tiers (pro user vs free user). I came up with an abstraction that simplifies front-end feature access control.