RSSAmplifier

Blog

Sumner Evans

Recent content on Sumner Evans

sumnerevans.comRSS feed ↗286 posts

Latest posts

Plain Text Accounting is Pretty Cool

I like to keep track of my finances pretty religiously. I don’t really budget, I am just very obsessive about tracking every expense, and ensuring that my overall savings rate is high 1 . I started by using Mint (may it rest in peace) and when it got killed, I switched to Rocket Money . Eventually I got annoyed with that due to it not supporting connections to some of my accounts and I ended…

offlinemsmtp v1

I announced offlinemsmtp in 2019. It’s a program that allows queueing email messages to send using msmtp (part of isync ). Today, at long last, I’m releasing a stable v1 version of offlinemsmtp after rewriting the project in Go. The release can be found on GitHub . In general, the functionality of v0.4.0 is preserved, however if you were using some uncommonly-used features, you may…

Stop Using Conventional Commits

You’ve almost certainly encountered Conventional Commits before. It may have reared its ugly head in the changelog of an open source project you’ve used. It may have been the enforced commit format for an open source project you contributed to. A lot of people swear by it. I swear at it. Even though it is used by a large number of popular open source projects , Conventional Commits is…

Three Resume Tips

I have been asked a few times to review student resumes and in my current position I review quite a few resumes of potential candidates. I think a lot of resume advice out there is tied to formatting, presentation, and writing style. While all of that is important, I think that it’s been well-adjudicated. In this article, I would like discuss the content of your resume. I’m going to…

FOSDEM 2026

The purpose of this trip was (ostensibly) to attend the FOSDEM 2026 conference. Since I’m no longer working at Beeper , there is not really any work-related reason for me to attend the conference. But I wanted to do it to give myself an excuse to go to Europe, and as an opportunity to catch up with former Beeper coworkers, and meet up with a few other friends as well.

Prague, Czechia

I woke up very late today (like 14h). I guess I needed some sleep after my crazy train ordeal yesterday. It was kinda sleeting anyway, so I didn’t feel that bad about missing out on the morning. I was hungry, so I started walking to find somewhere to eat. I ran across a restaurant that looked like it served local fare, and I got their beef goulash. I ordered with “dumplings”…

Brno, Czechia

This morning, I left Vienna for Prague, and on the way I went to Brno. Brno is very near the Austerlitz battlefield, Napoleon’s best military masterpiece. After visiting Waterloo (the site of Napoleon’s ultimate defeat) the last two years I figured that it was only fair to go see the site of his greatest victory. I woke up in time to get to the Vienna Main Station in time for the REX 1…

Bratislava, Slovakia

This morning, I met Bodie and Georgia at around 08:30 to head to Bratislava. There were a few others who where planning on coming as well, but they slept in too long. We walked to the Vienna Main Station and took the REX 8 to Bratislava. An hour later, we arrived in Bratislava and started walking towards the old town. The old town seems like it used to be a walled city, and it is now a really nice…

Vienna, Austria

This morning, I woke up in time for the walking tour. There were about ten of us from the hostel in the group. Our guide was a woman named Katerina (not sure about the spelling). She took us from the hostel, through the Naschmarkt (an extensive outdoor market area), and towards the city centre. Along the way, she pointed out a variety of the shops along the market including various restaurants,…

Antwerp, Belgium

My plane from Dulles arrived close to on time, but the immigration queue was very long. The new ETIAS requirements seem to be making the border check process somewhat longer than before. In addition to telling the border agent my business and when I was leaving, I had to provide a fingerprint scan. I really do not know what the purpose is, but hopefully it helps them track and prevent illegal…

Denver to Brussels

I’m once again heading across the pond to attend FOSDEM as I have the last three years . I’m flying to Brussels via Dulles and then I’m going to fly on to Vienna for a lightning tour of Vienna and Prague, with possible day-trips to Bratislava and Brno. I’m writing this about two hours out from Brussels, and already the trip has been quite eventful, but you’re going to…

Forget MCP, Write CLI Apps

Over the last month or so, I’ve been using Claude Code for assisting with development tasks 1 . One of the things that has confused me the most about the LLM-assisted programming ecosystem is the Model Context Protocol (MCP) landscape. In theory, MCP is a way to provide the LLM with data from an external system through a structured protocol. However, it sucks . It turns out that it is more…

Learning Typst

A few weeks ago, Typst came back on my radar because Sylvan Franklin ’s videos on the topic came into my YouTube feed. In particular, Rewriting my resume in Typst in which he rewrites his resume from \(\LaTeX\) to Typst piqued my interest. I have maintained my resume in \(\LaTeX\) since I started at Mines in 2016, and so I figured this would be an opportunity for me to learn something new.

Building a Software Career in an LLM World

TL;DR Getting an entry-level software job is harder now than at any time in at least the last decade. Building a career in software is (and always has been) hard, but highly rewarding if you succeed. The key is to take ownership of both your work and your career trajectory. In this article, I am going to discuss how to build a career in the software industry. We will explore career tracks , and…

Vibe Coding Doesn't Require LLMs

I recently read I Know When You’re Vibe Coding by Alex Kondov in which he described certain characteristic “smells” of vibe-coded software. For example, he points to LLMs proclivity to pave their own path and go against established patterns within a project. The article resonated with me, but I realized that it resonated with me at a deeper level than just explaining my…

On Being Gay

Warning This post is personal. If you normally read my blog for my travel updates or my software engineering takes, this is a very different kind of post. If you don’t want to read about my personal life, this is a good post to skip. It’s always awkward to come out, but the lead-up is always the worst part. Once it’s done, it’s done and I move on with my life. I have been…

7 Things I've Learned After 7 Years as a Software Engineer

A few months ago, I was asked to give the keynote address at the BlasterHacks hackathon hosted at Mines by their ACM chapter. I wasn’t quite sure what would be interesting to talk about for the keynote, so I asked some friends. Byron suggested that I either talk about hackathon advice or career advice. Since I was giving a hackathon keynote, I decided to focus my presentation on hackathon…

Trump Has Made Two Perfect VP Picks

Donald Trump has made two vice presidential picks. In 2016 he chose Mike Pence, and in 2024 he chose JD Vance. Each of these picks was brilliant in its own right. 2016: Mike Pence During the 2016 Republican primary, Trump faced significant resistance from within the Republican party for having a morally objectionable character, for not being a principled conservative, and for not having enough…

2025 Matrix Governing Board Endorsements

Disclaimer I would like to make it clear that these endorsements are my opinions only . They do not reflect the opinion of the Matrix Governing Board which I am currently a member of, nor do they reflect the opinions of my current or past employers. I have decided that I will not stand again in this year’s Matrix Governing Board elections . I recently joined Can/Am Technologies as a tech…

I'm Joining Can/Am Technologies

Today I am happy to announce that I have joined Can/Am Technologies as a Senior Implementation Tech Lead. Can/Am makes a point of sale product for local governments called Teller . I worked for Can/Am in the past as a software developer and I am excited to return after nearly a decade in a new capacity. I will be leading the engineering team responsible for building integrations with third-party…

What Happens After You Push?

In this article we are going to be investigating how the code you write gets to your users. This article is intended for consumption by computer science and software engineering students to provide insights into technologies and processes you might encounter in industry. This will be focused specifically on software delivery in web-based SaaS offerings rather than more traditional software…

FOSDEM 2025

For the third year in a row, I attended FOSDEM , a Free and Open Source Software conference. I enjoyed the previous two years , and Automattic paid for me to attend, so I decided to make the hop across the pond to attend again. FOSDEM is one of the main gatherings of the Matrix community every year (probably second only to the Matrix Conference ), and there is also a sizeable Go presence at the…

Waterloo Battlefield

Today I visited the Waterloo battlefield. I’d visited the town of Waterloo and the Wellington Museum last year when I came to FOSDEM, but I didn’t have time to go to the actual battlefield site. I bought a ticket that was valid for a year for both the museum and battlefield site, so I was able to use the same ticket.

London

I once again am making a trip across the pond for FOSDEM. This time, instead of flying to Brussels, I chose to fly to London a few days early and then take the Eurostar to Brussels. The nice thing about this itinerary is that I was able to take a direct flight from Denver to London, Heathrow. The flight was not very full, and I ended up with a whole row to myself!

Sublime Music End-of-Maintenance

Today I’m announcing that Sublime Music has reached end-of-maintenance. This announcement is greatly overdue, as I have not been actively maintaining the project for over a year, and have not been actively developing new features for even longer. Thank You! I would like to start off by thanking everyone who used Sublime Music, reported bugs, interacted in the Matrix room, and wrote code for…

Amsterdam, Netherlands - Work Retreat

This week, Beeper had our second meetup after being acquired by Automattic earlier this year. Unlike the last retreat in Porto which had lots of other Automattic employees in attendance, this was just our team and was focused on work and planning less than team-building. Automattic is a remote-only company , so work retreats are the only time that we can connect with our co-workers in-person and…

Matrix Cryptographic Key Infrastructure

End-to-end encryption is one of the things which brought me to Matrix, and I’m sure that it’s one of the factors that brought many of you to Matrix as well. However, Matrix’s user experience with cryptography is often confusing. I mainly blame the other chat networks for their incompetence. Most other chat networks don’t even provide any cryptographically-guaranteed…

Message Security in Matrix

In Matrix, message security is provided by Megolm. The goal of message security is twofold. We (a) want messages to be encrypted on the sender’s device and (b) only be able to be decrypted on devices of users who are a part of the conversation. As a corollary, we want to prevent other parties (rogue homeservers, man-in-the-middle attackers, etc.) from decrypting the messages.

Matrix Cryptography Prerequisites

Understanding Matrix cryptography requires understanding some basic cryptography primitives. This article intends to explain those prerequisites in simple terms. This article is not a rigorous, mathematical description of the cryptosystems in use. Rather, it is a practical guide to what functionality each of the cryptography primitives provides. I’ve tried to include links to external…

Differential Fuzzing Libolm and Goolm

Background When we at Beeper started working on the new Android app , based on mautrix-go , we initially tried using goolm as the crypto implementation instead of libolm . We almost immediately ran into issues for unknown reasons, and rather than fighting with cryptography, we decided to just put in the work to get libolm working in the Android app.

2024 Matrix Governing Board Endorsements

I’m running for the Matrix Governing Board as an Individual Member (see my Platform ) and I am only eligible to vote as an individual member, but I would like to endorse a few Ecosystem Member candidates who are well qualified to represent the ecosystem. Kim Brose I endorse Kim Brose (HarHarLinks) representing Matrix Community Events as an Ecosystem Member candidate.

Porto, Portugal - Sightseeing

On the Saturday after the retreat I did my own sightseeing and adventuring around Porto. However, as I mentioned in my post about the retreat , a bunch of us went on a walking tour of the city on Wednesday, but since it wasn’t really meetup-related, I decided to combine the info that I got on the tour with this post, as I think it fits better.

Porto, Portugal - Work Retreat

The past few weeks have been exciting for Beeper. We made Beeper available to everyone without a waitlist, launched a new Android app based on our own internally-built Matrix SDK written in Go , and were acquired by Automattic for $125M . As part of the acquisition, the Beeper team is merging with the Texts.com team that was acquired by Automattic last year. We are going to unify the products…

My Matrix Governing Board Platform

Election Results 2024-06-03 : The results of the first Governing Board Election have been posted on the Matrix.org Blog . I am grateful that I was elected as an individual member. Thank you to those who voted for me! I’m running for the Matrix Governing Board as an Individual Member. I work on bridges 1 and backend infrastructure 2 as a software engineer at Beeper . You may have met me at…

Denver to Porto

I’m making my way across the pond once again, this time for a work retreat. I’m attending a team meetup in Porto, Portugal. I ran the 2024 Mines High School Programming Competition on Saturday, and I had to be in Porto by Monday morning. Thus, I had to leave on an evening flight on Saturday in order to arrive in time. Unfortunately, the best flight I was able to get that left late…

Mines High School Programming Competition 2024

For the last seven years, Mines ACM has hosted a High School Programming Competition (HSPC) modelled after the International Collegiate Programming Contest (ICPC) . I wrote about the 2019 , 2020 , 2021 , 2022 , and 2023 competitions on this blog. The problems from every year are new and written by Mines students and some Mines alum specifically for the competition. This year, I wrote two of the…

NixCon + SCaLE 2024

I attended NixCon and SCaLE in Pasadena, California for the first time this year. I went with my friend Addison , and while I was there I also met up with some other friends, and made some new friends as well! I flew out very early on Thursday morning from Denver to LAX. It was raining on the way out of Denver, and the approach into LAX was quite windy. It was the most turbulent flight I’ve…

Is Getting A Master's Degree in Computer Science Worth It?

“Master of Science in Computer Science”, it sounds so grand, doesn’t it? But is it worth it? I’m writing this post to give my perspective on whether getting a master’s degree is worth the effort and money. I’m assuming that you are currently in a computer science undergraduate program and are considering whether to continue on to get a computer science…

Waterloo - The Wellington Museum

Today I went to Waterloo, the town which gave its name to the battle that saw Napoleon’s final defeat at the hands of the Seventh Coalition. Getting there was quite an adventure. To start, I woke up late again. After managing to get out of bed, I tried to take the tram over to a bus that went directly to the Waterloo city centre. I found the bus stop, and waited for a few minutes before the…

Bruges

Today I went to Bruges, a beautiful city near the Belgian Atlantic coast. I woke up a bit late (I still haven’t really adjusted to the CEST timezone), but I managed to get to Bruges by around 11 in the morning. I enjoy trains, and I got to take the train from Bruxeles-Midi through Ghent and on to Bruges. I’d skipped breakfast, so by the time I arrived in the city centre, I was hungry…

FOSDEM 2024

The primary purpose of my trip was to attend FOSDEM, a Free and Open Source Software conference. I attended last year as well and enjoyed it, so I decided to make the trip to attend again. FOSDEM is the biggest meeting of people in the Matrix community every year, and there is also a sizeable Go presence at the conference as well.

Brussels - Day 1

This year, I once again travelled to Brussels for FOSDEM (see my post from last year ). I took the Wednesday 13:30 flight out of Denver through Chicago O’Hare to Brussels, and arrived on Thursday morning. The connection through O’Hare was a bit tight. As scheduled, I only had 50 minutes, and then due to our incoming flight being vectored to the wrong runway on the first approach, we…

Advent of Code 2023

Every year since 2015, Eric Wastl creates a two-part programming problem for each of the 25 days of Advent. He publishes a new problem every day at adventofcode.com at exactly midnight EST which is 22:00 the day before for me in MST. The last two years, I decided to do the problems as soon as they came out and streamed my problem solving sessions on my Twitch channel and uploaded them to my…

Toronto, Canada - Work Retreat

This week, my company (Beeper) had our fall work retreat in Toronto, Canada. It has been nearly six months since our March retreat in Amsterdam and it was great to see everyone again and meet some of the new team members. I have also written about our four retreats prior to Amsterdam on this blog. One of the main goals of each retreat is to provide opportunities to connect as a team on a personal…

Los Angeles

This weekend I flew out to Los Angeles to see my friend Ethan Cranston . He is a former student of mine at Mines, and we got to know each other well because he was one of the most consistent in-person attendees during the hybrid COVID semesters. He now works at SpaceX and since I have a ton of Southwest points, I decided to visit him somewhat on a whim.

Becoming a Homeowner

I recently became a homeowner. Here are a couple of reflections that I’ve had about this new phase of life: The permanence of owning my own house is nice. The first time this really hit me was when I was putting up some decorations. I realized that it was my walls that I was nailing things in to. I don’t have to answer to anyone about the holes in my wall if I move out.

Mines High School Programming Competition 2023

For the last six years, Mines ACM has hosted a High School Programming Competition (HSPC) modelled after the International Collegiate Programming Contest (ICPC) . I wrote about the 2019 , 2020 , 2021 , and 2022 competitions on this blog. The problems from every year are new and written by Mines students and some Mines alum specifically for the competition. This year, I wrote four of the problems…

Amsterdam - Exploration Day

I woke up late on my last day in Amsterdam, and missed breakfast at the hotel. After saying goodbye to the remaining coworkers at the hotel for the retreat, I went to drop off my bag at the hotel where I am staying for one night before heading back home. I then headed back into Amsterdam city and walked around the streets admiring the beauty of the city. I stopped for lunch at a restaurant and had…

Amsterdam, Netherlands - Work Retreat

This week, my company (Beeper) had our first retreat of the new year in Amsterdam, Netherlands. We aim for about three retreats a year, though due to holidays and a recent push towards our beta exit milestone, it has been a little while since we have all gotten together. The last retreat was in Mexico City in October and before that we had three other retreats . The goal of each retreat is to…

Amsterdam - The Van Gogh Museum

Today I went to visit the Van Gogh Museum in the morning, and the Anne Frank House late in the evening. In between, I walked around the city, and met up with my coworkers for dinner. One of the reasons I chose the hotel that I did was that it was a very short walk over to the Van Gogh Museum. I had tickets for 10:00 at the museum with an audio tour. I recommend getting the audio tour as it gave…