Li Haoyi

haoyi.sg@gmail.com

Work

Dropbox

San Francisco, CA

Software Engineer, Developer Tools

Mar 2015 - Oct 2016
  • Built static analysis tools for in Python and Coffeescript, allowing fast refactoring without fear. Enforces correctness, file-layout conventions, and blocks code smells such as import cycles or dead code. Rejects 50+ diffs a week
  • Rolled out an improved development workflow, reducing edit-refresh latency by 3x for Python and Coffeescript
  • Led a team of 2-3 to destroy flaky tests in our CI system; via research, monitoring, and automatic quarantine, we reduced the number of builds failing due to flaky tests from about 10% to 1%
  • Helped manage our CI system comprising >3000 CI machines
  • Mentored an intern completing a successful project (test quarantine) in his 12 weeks here

Software Engineer, Web Platform

Mar 2014 - Mar 2015
  • Set up selenium test infrastructure (> 300 CI machines), created a streamlined developer workflow, and got it adopted across engineering. Reduced the number of bugs reaching production by 5-10 a week
  • Modularized our >100,000 lines of Coffeescript, moving from a 'cat em all' build system to Require.js modules
  • Built an auto-packager using machine learning to reduce the number of separate Javascript downloads by 200ish per page, cutting international latency by several seconds.

Software Engineer, Dropbox for Business

Aug 2013 - Mar 2014
  • Worked on two-account migration for www.dropbox.com, two-account pairing flow
  • Performance improvements for most common pages, including speeding up the home page by 6x

Open Source

Scala.js

Ammonite

  • Implemented the Ammonite REPL (lihaoyi.github.io/Ammonite) an improved Scala REPL with syntax highlighting, pretty-printed output, multi-line editing, and many other quality-of-life improvements

  • Effectively the equivalent of IPython REPL for the Scala

  • Well known in the community and used in many Scala shops, from startups to large ones like Twitter and Verizon

  • Was forked to be used as the REPL for "Dotty", a project by the core Scala team trying to define the future of Scala

Other Projects

Built many libraries that are widely used (>90,000 downloads a month) in the Scala community, both on Scala.js and on Scala's traditional platform the JVM. Examples include:

Google Summer of Code

GSOC 2016

  • Mentored Abhishek Kumar, working on performance, usability and Windows-support for Ammonite's scripts
  • Mentored Vladimir Polushin, who extended Fastparse's string-parsing to support parsing binary and streaming input

GSOC 2015

  • Mentored Laszlo Mero, who first implemented script-running support for the Ammonite REPL

Buzzwords

  • Scala - Python - Coffeescript - Javascript - Java - C# - Bash - Ruby - SQL - F# - PHP
  • React.js - Flask - PostgreSQL - Selenium - JVM Internals - Amazon Web Services - IntelliJ - Ubuntu
  • Static Analysis - Compilers - REPLs - Parser Combinators - Syntactic Macros - FRP
  • Web Dev - Algorithms - Performance - 3D Graphics - 3D Physics - Control Systems - Sandboxing

Ancient History

Massachusetts Institute of Technology

Cambridge, MA

Undergraduate Computer Science, GPA 4.8/5.0

Sep 2010 - Jun 2013

    Dropbox

    San Francisco, CA

    Software Engineer Intern, API Team

    May 2012 - Aug 2012
    • Built, documented and launched infrastructure to allow API apps to upload large files to Dropbox
    • Wrote unit tests, improved documentation and set up continuous integration for the Dropbox client SDKs

    Facebook

    Palo Alto, CA

    Software Engineer Intern, Messaging Team

    May 2011 - Aug 2011
    • Built an extensible attachment framework for Facebook Messages.

    Singapore Armed Forces

    Singapore

    Lieutenant, Platoon Commander, 35th Battalion Singapore Combat Engineers

    Jan 2008 - Nov 2009
    • Managed the platoon's discipline and wellbeing, and their proficiency at operating military bridges.
    • Took part in combined-arms field exercises

    Reference

    Talks

    Isomorphic Web Developement without Javascript, with Scala.js!

    Isomorphic Web Developement without Javascript, with Scala.js!

    Shell-scripting in a Typed, OO Language

    Fast, Modern, OO Parser Combinators

    FastParse: Fast, Modern Parser Combinators

    Beyond Bash

    Why (You might like) Scala.js

    Scala.js - Safety & Sanity in the wild west of the web

    Bootstrapping the Scala.js Ecosystem

    Hands-On Scala.js

    Cross-platform development with Scala.js

    Fun Functional-Reactive Programming with Scala.Rx

    Live-Coding Scala.js

    Metascala: a tiny DIY JVM