Echo Nolan

Software Engineer

Links online at echonolan.net/resume/cv.html or via QR code

Professional Experience

January 2020 - Present
Sabbatical. The cryptocurrency I worked on at O(1) - Mina - launched, and my deferred compensation along with my existing savings meant I could take a substantial amount of time off work.
December 2018 - January 2020
Protocol Engineer. O(1) Labs, San Francisco, CA. Helped build a new cryptocurrency, which successfully launched in early 2021. Worked primarily on security issues, performance and peer to peer networking. Achievements include: designed and implemented the trust system for DDoS mitigation. Rebuilt the transaction pool for efficiency and resiliency. Made the ledger Merkle synchronization process more efficient and secure. Code was primarily in OCaml.
July 2017 - November 2018
Software Engineer. Signal Vine Inc., remote. Worked on the backend of a two-way text messaging platform in the education technology space. Achievements include: Added support for new upstream providers, allowing the company to serve clients in foreign countries and saving the company ~33% on messaging and phone number costs. Improved SQL query performance by 40x in some cases, making users happy and enabling further growth. Primarily worked in Haskell, as well as Scala, PostgreSQL and MySQL.

Open Source Projects

May 2023 - Present
txt2img-unsupervised. Personal research project building a text-to-image model without directly using any labeled image data. Relies entirely on CLIP for the association between text and images. Results so far are promising. A blog post about the project is here. Developed the initial concept, gathered a 35M image dataset (blog post), ported a PyTorch VQGAN implementation to JAX, built an efficient preprocessing pipeline, trained baseline models, designed and implemented experimental models, optimized hyperparameters, designed and implemented a system for efficient sampling from the subset of a discrete set of unit vectors that are contained within a spherical cap. The blog post about the dataset also has a cute little gallery SPA. Model is a deep neural network using a transformer under the hood. Code mostly in Python, using JAX and Flax.
January 2024 - Present
Infinidata. A Python library for working with arbitrarily large datasets, created to support the spherical cap sampling system for txt2img-unsupervised. Written in Rust. Supports shuffling, arbitrary permutations, slices, concatenation, and more.
October 2016 - June 2017
Beescheduler. A single page web application to schedule goals using the goal tracking service Beeminder’s API. Personal project. Frontend using React, backend using Node.js and the Serverless Framework. Unofficially sunsetted as of 2024.
December 2015 - August 2016
AlanDeniseEricLauren. Personal project. An implementation of the ADEL algorithm for finding minimal subsets of a given input satisfying an arbitrary upward-closed property. Found a recent (2014) academic conference paper solving my problem and turned it into working, performant code. Released on Hackage.
Various
A webapp allowing users to rank software, written to empirically research the effects of programming language choices. CLI script to forward ports using the Private Internet Access VPN service. A mostly-complete BitTorrent client, Whiteout.

Open Source Contributions

June 2014 - October 2016
Idris. A programming language with dependent types, implemented in Haskell. Many contributions including improvements to the dynamic linker, parser, build system, terminal support, continuous integration and documentation. Wrote bug reports and reduced others, helped people on mailing lists and Stack Overflow.
March 2016 - June 2016
GHC Libraries. The built-in libraries for the flagship Haskell compiler. Fixed an especially hairy bug in the Windows networking functionality. The build tool Stack would hang intermittently when downloading dependencies. Traced it down to http-conduit, then to base. Submitted a patch to GHC which was merged May 19 2016. Submitted a workaround patch to the network library. Wrote a blog post describing the process.
Various
Support for using the Web3 Ethereum API in the browser, in Rust. Small changes to Cabal, Stack, the Selenium Docker images, Haskell’s network library, the NixOS packages, serverless-offline and serverless-simulate. Other miscellaneous work.