Li Haoyi

haoyi.sg@gmail.com

Work

Fluent Technologies

Singapore

Engineering Lead

Oct 2016 - Apr 2017
  • Built the Fluent code explorer, an online tool to seamlessly browse and search a company's entire codebase and commit history.

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
  • Evangelized, integrated and rolled out React.js as the standard front-end UI framework across product engineering, to overwhelmingly positive feedback on our developer feedback surveys.
  • 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

  • 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

      Facebook

      Palo Alto, CA

      Software Engineer Intern, Messaging Team

      May 2011 - Aug 2011

        Singapore Armed Forces

        Singapore

        Lieutenant, Platoon Commander, 35th Battalion Singapore Combat Engineers

        Jan 2008 - Nov 2009

          Reference

          Talks

          Four Facets of Good Open-Source Libraries

          Scala Scripting

          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