About

I'm Nick Zuber, a software engineer on the maps and devices teams at Robin, helping modernize the open office. Previously, I interned at Box as a tooling engineer where I helped work on ClusterRunner, which is an open source tool for horizontally optimizing tests & testing infrastructure.

In my spare time, I love to research and study certain areas of computer science. My current research interests span across programming language design, user experience and interaction, and type theory. In particular, I've been learning about fluid type systems: bringing static type analysis to dynamic programming languages through type inference at no cost.

I recently graduated with a BS in Computer Science and minor in Mathematics from University of Massachusetts Lowell, where I studied programming language design and gradual typing with Matteo Cimini, machine learning with Dr. Jerome J. Braun, and compiler architecture and design with Jay McCarthy.

Other things I enjoy: compilers, chess, graph theory, WebAssembly, crossword puzzles, OCaml, developer tooling, open source software, table tennis, classical piano, scented candles, and loving plants with all my heart.

Updates

Over the years I've has the pleasure of working with some amazing people and I've made some accomplishments along the way. You can take a look at my resume to see what I've been up to lately.

May 2018

Graduated from University of Massachusetts Lowell with a BS in Computer Science and minor in Mathematics, focusing on metatheory of programming languages.

Dec 2017

Accepted an offer to work full time at my favorite startup, Robin. I joined the front end engineering team to help build out our component library, developer build & release tools, and some cool new products.

June 2017

Began my next internship at Box, joining the productivity engineering team.

I've always loved building developer tools as a hobby, and doing it professionally was just as fun.

May 2016

Started my internship at Robin, joining the mobile team as a software engineer.

I got to learn a lot about what goes into building a new product and how to iterate quickly on ideas first hand, which was a cool experience.

May 2015

Joined Veranda Outdoors for the summer and led a small team of developers and created a wholesale ordering platform.

Feb 2015

Did some contract work for my university to create a web app that helped professors automate the class scheduling process.

Sept 2014

Officially started attending college at University of Massachusetts Lowell, studying Computer Science and Mathematics.

Projects

I love working on side projects. Creating free & accessible software is something I'm really passionate about. All of my projects can be found on GitHub, but a few of my personal favorites are highlighted here.

Infrared: Inferred static type checker for JavaScript

open source

developer toollanguagetype system

Infrared is a developer tool that statically analyzes JavaScript projects and finds type errors. If you've ever used Flow before, this project is kind of like that but specializing in type inference.

This project fills the gap between vanilla JavaScript and TypeScript: if you want to go all-in on a type system you should use TypeScript. If you want type safety without changing anything in your project, use Infrared.

github

Meteorite: Smarter GitHub notifications

open source + Robin

productivityweb app

Smarter GitHub notifications. Organize and score notifications based on importance and relevance.

Meterorite is the solution for managing your GitHub notifications by filtering out the ones that don't matter to you, scoring & sorting the one that matter based on personalized heuristics, and using desktop notifications.

ClusterRunner: Optimize test suites horizontally

box

developer toolproductivity

ClusterRunner is a testing tool that makes it easy to execute test suites across your infrastructure in the fastest and most efficient way possible.

This project is run internally at Box on ~100,000 tests each day and speeds up the feedback loop by 300x. I created a caching layer for build artifacts and reworked the API.

ReasonML + JavaScript interoperability tool

open source + bucklescript

developer toolproductivity

This is an easy to use cli tool that helps you seamlessly interop ReasonML code with an existing JavaScript project. You tell us where your ReasonML code is, and we'll handle the rest!

After this project started getting pretty popular, I worked with the BuckleScript team to help integrate this functionality into the main project!

Kelp: x86-64 compiler

COMP 4060: Compiler Construction

compilerlanguage

While learning about compilers, I also built one from scratch using OCaml. It compiles a JavaScript-like language which features like closures, functions, vectors, and types, to x86-64 assembly.

Don't think I skipped out on the fun stuff; I also wrote an automatic garbage collector in C to compliment it.

Markup: Create & share TeX snippets

open source + university of massachusetts lowell

communityweb app

Markup is a web app that lets people easily create and share rich TeX snippets. You can write snippets containing markdown and/or math typesettting - similar to the math typesetting you find in LaTeX distributions.

I made this to help myself and other students collaborate in our mathematics and CS courses. It was also a simple way to describe questions to professors over email, which was nice.

Needle: Extensive data structure library

open source

communityproductivity

Needle is a standalone extensive data structure library in JavaScript.

Fun fact, this was actually one of my first open source projects I ever made (will always have a special place in my heart).

Writings

When I'm not reading about new things, I like writing about them. I've recently been posting all of my articles to Medium, but I've listed out a few of my favorites below:

Why GitHub notifications make it hard to get things done & how to fix it.

February 2019, Medium article

My quest to solving the worlds most pressing issues: managing GitHub notifications. I talk about some ways that can help with this problem and finish by introducing Meteorite – a tool designed for making notifications smarter.

Proving type soundness in a simply typed lambda calculus.

March 2018

Evaluation contexts, typing rules, runtime semantic rules, and type soundness for a simply typed lambda calculus with various traditional language features.

Exploring Linear Discriminant Analysis Classification of Non-Normal Data using Poker Hands.

December 2017

We explore the effectiveness of linear discriminant analysis on a multi-class non-normally distributed dataset and try to identify the points of unreliablility so that we can attempt to counter it and produce more reliable results.

Readings

Reading not only helps me stay sane on the commutes to work, but it also helps me take deeper dives into topics of interest. Below is a collection of books and academic papers that I've enjoyed recently.

Things marked with an asterisk (*) denote something that I'm currently in the middle of reading.

Types and Programming Languages*

Benejamin C. Pierce

All things type theory and metatheory on programming languages. Great read for brushing up on formal fundementals.

Fast and Precise Type Checking for JavaScript

Facebook Inc, University of California, San Diego

All about the inner workings of Flow and how its gradual type system was implemented, and some of the design decisions that went into it.

Hypergraphs: First Properties

Alain Bretto, Universite de CaenCaenFrance

Various different mathematical properties and their importance in regards to hypergraphs.

Advanced Programming Language Design*

Ralph A. Finkler

Deep dives into programming language features and tradeoffs for when building and designing a programming language.