Jonathan Sumner Evans
Sumner Evans
Software Engineer at Beeper

Portfolio

Note

This page is my extended Curriculum Vitae containing all my professional achievements. For a more concise overview, please view my resume.

I'm a software engineer and educator. I have six years of industry experience as a software engineer, and I have taught classes at a university level for eight semesters including one graduate level course and six senior level courses.

Experience

Software Engineer

July 2021 - Present

Beeper

Key Technologies: Matrix, Python, Go

I am building the infrastructure necessary to connect people on every chat network through Matrix. I work mainly on bridges and other backend projects to enable Beeper to grow and add new users.

Notable projects include...
  • Reverse engineered and implemented many core features for Beeper Mini including sending media, tapbacks, typing indicators, read receipts, edits, unsends, link previews, adding and removing group members, and changing group names and avatars.
  • Started a project called Hungryserv (Matrix-compatible homeserver written in Go) which enabled us to scale from hundreds to tens of thousands of users. I created the initial proof of concept and then was a core member of the team that productionized the project, implementing many core features along the way.
  • Streamlined our support team's ability to chat directly with users by building a Chatwoot bot in Go.
  • Reverse-engineered the LinkedIn Messaging API and implemented a LinkedIn bridge in Python.
  • Measured message send latency and reliability by instrumenting bridge metrics. Built a service to process those metrics and send them to BigQuery.
  • Defined a framework for importing users' chat history, and implemented it in the WhatsApp, Facebook, Instagram, and (in progress) iMessage bridges.

Adjunct Professor

August 2018 - December 2023

Colorado School of Mines

I have had the opportunity to teach courses in mulitple areas of computer science at my alma mater, Colorado School of Mines.

Courses I've taught:

Algorithms (CSCI 406) in Fall 2018, Spring 2022, and Fall 2023.

I taught Algorithms once while I was a graduate student in 2018 under Dr. Dinesh Mehta. I also taught two sections in Spring 2022 using Dr. Mehta's materials. I co-taught the class with Dr. Mehta in Fall 2023.

Topics that the class covers include: analysis of algorithms, evaluation of data structures, sorting algorithms, dynamic programming, graph algorithms, and NP-completeness.

Computer Organization (CSCI 341) in Spring 2023.

I taught Copmuter Organization with Dr. Qi Han in 2023. Topics that the class covers include: RISC-V assembly, pipelining, and memory hierarchy.

Principles of Programming Languages (CSCI 400) in Spring 2019, Fall 2020, Fall 2021, and Fall 2022.

I taught Principles of Programming Languages once as a graduate student in 2019. Topics that the class covered at that time include: programming language concepts, evaluation, and implementation; object-oriented programming; Lambda Calculus; and Racket (a LISP dialect).

I have since taught the course twice under Dr. Jedidiah McClurg in 2020 and 2021, and once under Amelia Read in Fall 2022. Topics that the course covers include: functional programming concepts, type inference, OCaml, programming language implementation, and formal semantics.

Advanced Computer Architecture (CSCI 564) in Spring 2021.

I taught CSCI 564 Advanced Computer Architecture in Spring of 2021. Topics that the class covered included: performance analysis, cache, virtual memory, pipelining, branch prediction, out-of-order execution, and multiprocessors.

I based the course off of the curriculum provided by Dr. Bo Wu and adapted it for hybrid COVID learning. The main additions/changes were adding lecture worksheets to improve student engagement in lectures, modernizing the slides, and reworking the projects starter code to better focus on the core concepts.

Software Engineer

June 2019 - July 2021

The Trade Desk

Key Technologies: React JS, C#, SQL

I was a member of the Connected TV engineering team. I worked on all parts of the stack including the C# backend, the React frontend, and the SQL Server backend database.

Notable projects included...
  • Implementing ingestion of the ifa_type field in OpenRTB requests across our fleet of high performance bidders. (C#)
  • Building many of the features for the Connected TV incremental reach planning tool. (React, NodeJS, C#)
  • Designing and implementing major portions of an AI-powered ad campaign strategy recommendation system. (C#, SQL)

Software Engineering Intern

May 2018 - August 2018

Pivotal

I worked on the Infra pod on the Tracker team, the team responsible for developing Pivotal Tracker. I anchored the development of a new system for imaging workstations for consistent workflows on all machines used by the Tracker team. I also participated in a LEAN Product process to determine the needs of the Tracker team.

CS@Mines on Tour Presenter

January 2017 - May 2018

CS@Mines Unplugged

I gave presentations to high school students about the Computer Science Department at Mines. I also led computer science related workshops for middle school students.

Teachers Assistant (Data Structures)

August 2017 - May 2018

Colorado School of Mines

I assisted students during TA office hours and during the in-class lab sessions. I was nominated for the Student Employee of the Year by CPW, the faculty member responsible for the course.

Software Development Intern

June 2017 - August 2017

Kenzan

I contributed to OSS projects including React and Node.js on behalf of Kenzan. I also worked to improve the Kenzan.com website by implementing a CI/CD Jenkins pipeline with a WebPack build.

Software Developer

February 2013 - August 2016

Can/Am Technologies

Key Technologies: C#, ExtJS, SQL

I worked on the Teller Development Team designing and building new features for Teller, an enterprise point-of-sale system geared towards municipal governments.

I primarily worked on the web-based application which uses a technology stack consisting of ExtJS (a JavaScript framework), C#, and Oracle PL/SQL, but I also worked on the native Windows application. Additionally, I designed and built plugins that integrate external systems into Teller. One of the more notable plugins I developed was an integration with Bank of America for electronic deposit of checks.

Education

MS Computer Science

August 2018 - May 2019

Colorado School of Mines, 4.0 GPA

I worked with Dr. Dinesh Mehta on a project to automate group selection for projects in CSCI 406 Algorithms.

I served as the Chair of the Mines Association for Computing Machinery (ACM) Student Chapter, the Linux Help Guru of the Linux Users Group, and the Service Chair of the Mines chapter of the Tau Beta Pi Honor Society.

Notable classes I took include...
  • Advanced High Performance Computing
  • Parallel Computing
  • Advanced Computer Architecture
  • Abstract Algebra
  • Theory of Computation
  • Theory of Cryptography

BS Computer Science

August 2016 - May 2018

Colorado School of Mines, 3.9 GPA

I graduated with a degree in Computer Science from Colorado School of Mines. I was awarded the Outstanding Graduating Senior award for Computer Science.

As a student I served one year as the Vice President of the Mines ACM Student Chapter and one and a half years as Secretary of the Mines Linux Users Group (LUG). I made Dean's List every semester of my undergraduate studies.

Notable classes I took include...
  • Operating Systems
  • Algorithms
  • Computer Graphics
  • Computer Simulations
  • Virtual Reality
  • Principles of Programming Languages
  • Artificial Intelligence
  • Software Engineering and Advanced Software Engineering (Field Session)
  • Computer Organization
  • Linear Algebra
  • Data Structures

Mines Transfer Program

August 2012 - May 2016

Red Rocks Community College, 4.0 GPA

Through high school, I took classes at Red Rocks Community College via the transfer program between Colorado School of Mines and Red Rocks. I was a member of the Phi Theta Kappa Honor Society for three years.

I was selected to be published in CLARO an interdisciplinary scholarly journal. I then presented my work at the CLARO academic conference.

Notable classes I took include...
  • Spanish Language I and II
  • Calculus I, II, III, and Differential Equations
  • Chemistry I and II
  • Calculus-Based Physics I and II

Projects

Sublime Music

November 2018 - Present

 GitHub |  Website | GPLv3+

Sublime Music is a native, GTK3 Subsonic, Airsonic, Revel, Gonic, Navidrome, client for the Linux Desktop that is written in Python. Sublime Music allows users to connect to multiple Subsonic API-compliant servers, and browse and play music from those servers.

Other features include being able to play music through Chromecast devices on the same LAN; Offline Mode and the ability to cache songs for offline listening; a DBus MPRIS interface integration for controlling Sublime Music via playerctl, i3status-rust, KDE Connect, and other DBus MPRIS clients; a sophisticated play queue; playlist management; and more.

I began this project after migrating to Airsonic for music hosting because I was dissatisfied with the existing Airsonic clients on Linux.

Sublime Music is developed on GitHub and is available via the AUR, NixOS 20.09, Debian Testing, and PyPi.

Mines HSPC Website

August 2021 - Present

 GitHub |  Live Website | AGPLv3+

The Mines HSPC website handles registration for the annual CS@Mines High School Programming Competition. It allows teachers to register teams and manages all of the necessary paperwork for students to be able to participate in the event.

The website uses passwordless authentication and also uses email to verify student emails and send parents the forms they need to sign.

The Mines HSPC website is developed on GitHub and deployed on infrastructure provided by Nevarro LLC.

Nix Home Manager

April 2021 - Present

 GitHub | MIT | Maintainer

Nix Home Manager is a project that provides a system for declaratively managing a user environment using the functional Nix package manager together with the Nix libraries found in Nixpkgs.

I am a maintainer of the Nix Home Manager project with write access to the repository. I review and merge contributions to the Home Manager project.

Tracktime

June 2018 - Present

 GitHub | GPLv3+

Tracktime is a filesystem-backed time tracking solution with a command line interface. It uses a sane directory structure to organize CSV files that store time tracking data for each day.

Tracktime allows you to start, stop, resume, and list time entries for a given day. You can also generate reports for a given month in the reStructuredText, PDF, or HTML formats (optionally restricted to a particular customer). Tracktime also allows you to synchronise the time spent on each issue/merge request to GitLab using the GitLab Time Tracking API.

Tracktime is written in Python, and is available via PyPi and on the AUR.

offlinemsmtp

May 2018 - Present

 GitHub | GPLv3+

Read my blog post announcing offlinemsmtp v0.3.5: Introducing offlinemsmtp.

offlinemsmtp allows you to use the msmtp SMTP email sending program offline. While offline, it enqueues emails to be sent once an internet connection is established. While online, it sends the emails immediately.

offlinemsmtp is written in Python, and is available via PyPi and on the AUR.

Visplay

February 2018 - May 2020

 GitLab | GPLv3+

Visplay is a Mines ACM project. It's goal is to create a digital signage system with a dynamic, hierarchical configuration system which can be used in a wide variety of hardware and infrastructure configurations.

I worked on the initial design of the overall architecture of the project. I have also contributed in a project management role. I worked on the Python components of the project which consume the configuration files and generate playlists. I also led development of the web configuration frontend.

Currently, I am working in an advisory role as an industry project mentor.

MLocate

February 2019

 Second Place |  GitLab | AGPLv3+

This project won  Second Place at HackCU V.

Read my blog post about this hackathon: HackCU V.

MLocate is a comprehensive system for tracking and locating devices within an indoor space just using Wi-Fi ping signals. Using three specially configured Wi-Fi access points, we were able to capture signal strength from every device in the room by MAC address. Then, applying Radio Signal Strength Indication (RSSI) models, we were able to derive distance from signal strength which allowed us to use standard triangulation algorithms for determining the location of all of every device in the room.

I worked on the triangulation logic for pinpointing device locations given distances calculated from signal strength. I also built the web frontend for displaying device locations.

MLocate was a hackathon project by Ben Perkins, Jesus Nuñez, Nick Jarmusz, (all freshmen) and myself. We developed it during a 24 hour period at the HackCU hackathon.

HypAR Map

November 2018

 First Place |  Demo |  GitLab | AGPLv3+

This project won  First Place at the Facebook Global Hackathon Finals at Facebook HQ.

Read my blog post about this hackathon: Facebook Global Hackathon Finals - The Competition.

HypAR Map helps users navigate around unfamiliar locations by overlaying a map of the area using augmented reality. The map can come from any photo (for example, a fire escape plan) and is calibrated using an intuitive user interface. HypAR Map then uses simultaneous location and mapping to find and display the location of the user in the map in real-time.

I worked on the image import functionality and worked with all of the members of the team to ensure that everything connected properly.

HypAR Map was a hackathon project by Sam Sartor, Jack Garner, Fisher Darling, and myself. We developed it during a 24 hour period at the Facebook Global Hackathon Finals at Facebook HQ in Menlo Park, CA.

 CS@Mines Demo at Facebook Global Hackathon Finals

Datanium

October 2018

 Facebook Best Social Good Hack + 1 more |  GitLab | GPLv3

This project won  Best Use of GCP and the  Facebook Best Social Good Hack award at MHacks.

Datanium is a large-scale network of Raspberry Pis which allow for human-powered transfer of data between places with internet access and places which do not. In the Datanium ecosystem, there are two different types of users: consumers and couriers. Consumers request data, and Datanium ensures that couriers move the requested data to the Datanium Node closest to the consuming user. Datanium does this coordination using only SMS.

I worked on the web frontend for requesting and uploading data to the Datanium nodes.

Datanium was a hackathon project by Sam Sartor, Robby Zampino, Fisher Darling, and myself. We developed it during a 36 hour period at the MHacks 2018 hackathon.

Wii-Track

February 2018

 Judges Favorite + 2 more |  GitHub | GPLv3

This project won  Judges Favorite,  Best Use of AWS, and the  Dish Network sponsor challenge at HackCU.

Wii-Track is a distributed inventory tracking system. It utilizes a WiiFit, Rasberry Pi, and Arduino to gather information about packages. All heavy computation is done on AWS Lambda and it uses the DynamoDB NoSQL database as a backend.

I worked on setting up the DynamoDB database and implemented a AWS Lambda function to identify packages by weight.

Wii-Track was a hackathon project by David Florness, Jack Garner, Robby Zampino, and myself. We developed it during a 24 hour period at the HackCU hackathon.

BlockMRS

January 2018

 GitHub | GPLv3

BlockMRS is a privacy concious, decentralized, blockchain-backed, medical record system for the 21st Century. It stores patient records in IPFS using asymmetric encryption giving patients control over their health data.

I led the development of the protocol specification for this decentralized system. I also built the system for storing encrypted medical records in IPFS.

BlockMRS was a hackathon project by David Florness, Jack Rosenthal, Robby Zampino, and myself. We developed it during a 24 hour period at the MinneHack 2018 hackathon.

Virtual Reality Final Project

August 2017 - December 2017

 GitHub | GPLv3

Read our final report on GitHub.

This was the final project from my independent study in Virtual Reality under the supervision of Dr. Paone. Our team consisted of Sam Sartor, Robbie Merillat, and myself.

We created our own library called flight for developing VR applications which implemented a new type of program architecture called Deferred Immediate Mode.

Parqyng

October 2017

 Grand Prize |  Demo |  GitHub | MIT

This project won the  Grand Prize at the 2017 Xilinx PYNQ Hackathon.

Parqyng Lots tracks the number of cars in an arbitrary number of parking lots with an arbitrary number of entrances to create an up-to-date picture of the parking situation.

I built the web frontend which provided a view of the parking lots' status.

Our team consisted of Sam Sartor, Jack Rosenthal, Daichi Jameson, and myself. I worked on the web interface and also helped implement the tracking system using the sensors provided by Xilinx.

 Parqyng: Never Look for a Parking Spot Again

Wireless Debugging

May 2017 - June 2017

 GitHub | Apache 2.0

Wireless Debugging is a mobile SDK and sample web server for streaming mobile app logs to a web UI console. I worked on this project on a team of five CS students during Mines Computer Science Field Session. This project was done under supervision of Google.

We designed and built a mobile API, log parsing library, datastore interface, user management interface, and web app. I was the primary writer of the API Specification for communicating between each component. I also built the log parsing library and the mobile API implementation for iOS. I was involved in the development of the other components as well.

Snowflakes

November 2016

 GitHub | Demo | MIT

An interactive "screensaver" built for the Mines ACM JavaScript Hackathon.

I built Snowflakes with bungle.js, a team consisting of Sam Sartor, Jack Rosenthal, and myself. We used EaselJS to manipulate a fullscreen canvas to render the interactive elements.

Chess++

August 2016

 GitHub | MIT

Chess++ was my final project for CSCI 261 at Colorado School of Mines during the Summer II Semester of 2016.

Chess++ allows two players to play a standard Chess game against one another on the computer.

Quadratic Solver

September 2016

 GitHub | Demo | MIT

A quadratic equation which shows the steps required to get an answer.

Quadratic Solver uses MathJax to display beautifully formatted solutions to quadratic equations.

Publications

Dreams of Flight

September 2016

Journal |  PDF

I wrote this creative writing piece about Orville and Wilbur Wright and the first flight at Kitty Hawk for my Twentieth Century World History class in Fall 2013. I had written this piece for an assignment called A Picture is Worth a Thousand Words. We were tasked with writing an approximately 1000 word narrative from the perspective of a person in a significant photo from the 20th Century. Later in 2013 I was published in the 2013 edition of CLARO, Red Rock Community College's Interdisciplinary Scholarly Journal. In May 2014, I presented at the CLARO academic conference.

Presentations

Git Good

February, September 2023

 GitHub |  PDF

I gave this presentation at the Mines ACM student chapter as a guest speaker in their tech workshop series. The talk was designed to provide students with a mental model of Git so that they understand how it works, rather than just knowing a bunch of commands.

Architecting for Scale

September 2022

 GitHub |  PDF

I gave this presentation at the Mines ACM student chapter as a guest speaker in their tech talk series. The talk was designed to help students understand the architectural challenges that software engineers/architects have to think about. I also presented a case-study in how we are scaling the architecture of Beeper via sharding.

Creating a Matrix Bot in 30 minutes using simplematrixbotlib or maubot

August 2022

 GitHub |  PDF

I presented this workshop at the 2022 Berlin Matrix Community Summit with Kim Brose. We covered two Python libraries for writing Matrix bots: maubot and simplematrixbotlib. We presented the libraries and then helped participants create bots using the libraries.

What is Beeper Working on?

August 2022

 GitHub |  PDF

I gave this presentation at the 2022 Berlin Matrix Community Summit. I described Beeper's vision, what we have built so far, what our current challenges are and how we are solving them, and what it's like working at Beeper.

Hungryserv: A Homeserver Optimized for Unfederated Use-Cases

August 2022

 GitHub |  PDF

I gave this presentation at the 2022 Berlin Matrix Community Summit. I discussed Hungryserv, a homeserver that Beeper is building to optimize unfederated bridge traffic. I also discussed our current architecture and why we decided to start building Hungryserv.

GUI Toolkits

November 2020

 GitLab |  PDF

I gave this presentation at the Mines Linux Users Group with Robby Zampino and Dorian Cauwe. We discussed the different types of GUI toolkits available and we presented the pros and cons of three specific GUI toolkits: Flutter, GTK, and Qt.

Open Standards

November 2019

 GitLab |  PDF

I gave this presentation at the Mines Linux Users Group with Robby Zampino. We discussed what standards exist, and why open standards are better than closed ones. We also gave a few examples of different open standards in many different industries.

Makefiles

March 2019

 GitLab |  PDF

I gave this presentation at the Mines Linux Users Group. I covered the basics of GNU make as well as how to make a Makefile.

Mutt

February 2019

 GitLab |  PDF

I gave this presentation at the Mines Linux Users Group. I covered the basics of the Mutt CLI email client. I discussed the basics of using Mutt and some of the most useful configurations including how to configure it to be used with GPG encryption and signatures.

PGP

February 2019

 GitLab |  PDF

I gave this presentation at the Mines Cybersecurity Club (OreSec) with David Florness. We discussed the cryptographic theory behind PGP/GPG such as symmetric vs. asymmetric encryption and the PGP protocol. Then we had an interactive time where we showed how to use GPG.

ZSH

January 2019

 GitLab |  PDF

I gave this presentation at the Mines Linux Users Group with Jordan Newport. We covered ZSH, an alternative shell to BASH. We discussed everything from the basics, to some really cool quality-of-life improvements which make using the shell enjoyable.

LaTeX

January 2019

 GitLab |  PDF

I gave this presentation at the Mines Linux Users Group with Joseph McKinsey. We gave an extensive introduction to the LaTeX typesetting language. We covered everything from the very basics of using LaTeX all the way up to advanced LaTeX topics such as using it for presentations!

i3wm

March 2017, October 2018

 GitHub |  PDF

I gave this presentation at the Mines Linux Users Group. I discussed the traditional motif for window management and then presented a better alternative: tiling window managers. I presented i3wm, my personal favourite tiling window manager. I talked about the pros of using it as well as how to use it and customize it.

Idris

March, June 2018

 GitHub |  PDF

I first gave this presentation at the Mines Linux Users Group with Sam Sartor. We also gave the presentation for the Wednesday tech talk while interning at Pivotal. In both talks, we covered Idris, dependent types, and using Idris as a proof assistant.

Universal Package Formats

January 2018

 GitHub |  PDF

I gave this presentation at the Mines Linux Users Group with Robby Zampino. We covered the background and history of packages and package formats, and some of the new universal package formats: AppImage, Snaps, and Flatpak.

Filesystems

November 2017

 GitHub |  PDF

I gave this presentation at the Mines Linux Users Group with Sam Sartor. We covered the background and history of filesystems and some current filesystems used in Linux, Windows, and macOS. We also covered some more fringe filesystems like Btrfs and ZFS and network filesystems such as Samba and sshfs as well as virtual filesystems such as /proc.

SSH

February 2017

 GitHub |  PDF

I gave this presentation at the Mines Linux Users Group. I discussed what SSH is and its applications and then demonstrated how to configure it for easier login and management. Then I briefly talked about how to set up SSH on your own server.

JavaScript Crash Course

November 2016

 GitHub |  PDF

I gave this presentation at the Mines Linux Users Group with Sam Sartor. We covered the history of JavaScript, gave an overview of the language constructs, and discussed many of the possible pitfalls along the way. We also talked about the DOM and HTML5 Canvas manipulation.

Dreams of Flight

May 2014

 YouTube Recording |  Slides

I presented my creative writing piece about Orville and Wilbur Wright at the 2014 CLARO academic conference. I had written this piece for an assignment called A Picture is Worth a Thousand Words. We were tasked with writing an approximately 1000 word narrative from the perspective of a person in a significant photo from the 20th Century.

 Sumner Evans Zac Champion