Andrew Dillon
Software Engineer

About Me

Hello! My name is Andrew. I'm a passionate software engineer, an open source maintainer, a writer, and a leader. I enjoy solving hard problems, designing robust systems, and building high quality products that people love to use. I'm a cheerful team player and I bring out the best in others.

Personal and professional growth is very important to me. I am a curious person and love to learn new things. I enjoy reading books, ballroom dancing, playing piano, and working with my hands.


I first learned how to write software in high school. One year, my parents gifted me a Lego Robot. At the time, I didn't know the first thing about programming. So I decided to learn! I discovered the leJOS project and started learning Java in order to program my robot.

I lived in a small, rural town. My school didn't offer any computer science classes so I had to learn everything on my own from the internet and books. Eventually I mastered the basics, wrote a simple program, uploaded it to my little robotic rover, and watched excitedly as it roved around the room. I'd found a new passion and have been pursuing it ever since!

(Here's a couple links to some old leJOS code I wrote and a video of my rover).

My Career

After graduating high school I tested software at Tapestry Solutions for 7 months. In 2016 I started my first semester of college at the University of Missouri - Saint Louis. Later that year I participated in GlobalHack VI where I met a team of software engineers from Maryville Technologies. A couple of months later I joined their team as a software engineering intern and began my career as a professional software engineer!

Since then I've worked at UniGroup for 3 years and GitHub for 2 years. I lead teams building large scale distributed systems, web apps, and mobile apps.

Projects

I enjoy tinkering and writing code in my free time. Open source is important to me, so I share my projects on GitHub and make it a point to publish them so others can benefit from and build on my work. A few projects of which I am particularly proud are:

  • pdf-lib is a widely used library for manipulating PDF documents in any JavaScript environment. It is the crown jewel of my portfolio and is without question my most successful and impactful project. pdf-lib currently sits at 5,700 stars on GitHub and is downloaded from NPM 550,000 times per week.

    I created pdf-lib about 3 years ago. At that time I was working on a React Native app at UniGroup and needed to modify a PDF client-side. But there were no pure-JS libraries available capable of doing this, so we resorted to a less than ideal server-side workaround. That experience motivated me to create a library to fill this gap.

    Writing and maintaining pdf-lib has been a very rewarding process. I've learned a lot about open source, library design, JavaScript, TypeScript, ISO standards, document formats, and much more.

  • jsv9000.app (JavaScript Visualizer 9000) is an interactive web app that visualizes and explains JavaScript's event loop. It is used by programming instructors and coding schools to help developers learn how async JavaScript works. It currently has 900 stars on GitHub. I created jsv9000 as a companion app for a series of articles I wrote about how JavaScript's event loop works.

  • chip is a CLI tool that streamlines web development by simplifying management of microservices and infrastructure on local machines. I created chip to rectify a pattern of inefficient development habits I noticed on several dev teams. These habits wasted time and made it challenging for new devs to get up to speed and contribute quickly. Chip made a big impact on day-to-day developer productivity for teams that adopted it and knocked days off the time required to onboard new developers.

Some older projects from that I created several years ago are also on GitHub:

Writing

I take pleasure in writing clean, simple, and elegant code. Similarly, I derive satisfaction from producing clear, informative writing. It has been said that one cannot truly understand something until one teaches it to others. Writing articles is a great way to enhance my own understanding while helping others along the way!

The following is a compilation of articles I've written over the past few years:

  • How to Create and Modify PDF Files in Deno With pdf-lib - An explanation of Deno, why most JavaScript PDF libraries are incompatible with it, and examples of using pdf-lib in Deno scripts.

  • The JavaScript Execution Model Part 1 and Part 2 - A careful, in depth explanation of JavaScript's event loop execution model and its implications for developers.

  • Offline App Architectures - An exploration of different ways to build mobile applications that work reliably in low connectivity environments.

  • The SDR Classifier - A detailed explanation of NuPIC's SDR Classifier and the Softmax activation function.

Contact

Please feel free to reach out via email or connect with me on LinkedIn! I'm always happy to talk, answer questions, or discuss new opportunities.