Friday, October 6, 2023

Handling GitHub Notifications


This was originally written for some coworkers and assumes a mostly GitHub-based workflow. It has been lightly edited to be more readable, but if your organization doesn’t use GitHub like we do then it might not apply great.

GitHub can generate a lot of notifications which can be …

read more →
Wednesday, October 4, 2023

Matrix Live demo on Linearized Matrix

I demoed some of my work at Element on Matrix Live back on August 4th’s This Week in Matrix (and failed to mention it here). I talked a bit about what Linearized Matrix, Element’s effort for the IETF’s “More Instant Messaging Interoperability” (MIMI) working group.

I demoed …

read more →
Friday, September 15, 2023

Celery architecture breakdown

The Celery project, which is often used Python library to run “background tasks” for synchronous web frameworks, describes itself as:

Celery is a simple, flexible, and reliable distributed system to process vast amounts of messages , while providing operations with the tools required to maintain such a system.

It’s a …

read more →
Monday, May 8, 2023

Matrix Push Rules & Notifications

In a previous post about read receipts & notifications in Matrix I briefly mentioned that push rules generate notifications, but with little detail. After completing a rather large project to improve notifications in Matrix I want to fill in some of those blanks. [1]


These notes are true as of …

read more →
Friday, February 24, 2023

Python str Collection Gotchas

We have been slowly adding Python type hints [1] to Synapse and have made great progress (see some of our motivation). Through this process we have learned a lot about Python and type hints. One bit that was unexpected is that many of the abstract base classes representing groups of …

read more →
Thursday, January 12, 2023

Researching for a Matrix Spec Change

The Matrix protocol is modified via Matrix Spec Changes (frequently abbreviated to “MSCs”). These are short documents describing any technical changes and why they are worth making (see an example). I’ve written a bunch and wanted to document my research process. [1]


I treat my research as a …

read more →
Thursday, January 5, 2023

Matrix Read Receipts & Notifications

I recently wrapped up a project on improving notifications in threads for Matrix. This is adapted from my research notes to understand the status quo before adapting the Matrix protocol for threads (in MSC3771 and MSC3773). Hopefully others find the information useful!


These notes are true as of the …

read more →
Friday, June 11, 2021

Converting Twisted’s inlineCallbacks to async

Almost a year ago we had a push at Element to convert the remaining instances of Twisted’s inlineCallbacks to use native async/await syntax from Python [1]. Eventually this work got covered by issue #7988 (which is the original basis for this blogpost).

Note that Twisted itself gained some …

read more →
Monday, May 24, 2021

celery-batches 0.5 released!

A new version (v0.5) of celery-batches is available which adds support for Celery 5.1 and fixes storing of results when using the RPC result backend.

As explored previously, the RPC result backend works by having a results queue per client, unfortunately celery-batches was attempting to store the results …

read more →
Friday, May 7, 2021

A new maintainer for django-allauth-2fa

I’m excited to announce the django-allauth-2fa project has a new maintainer! It can now be found under the valohai organization on GitHub, who have already contributed quite a bit to the package.

This project lets you easily add two-factor authentication to a Django project using django-allauth.

As a bit …

read more →