Saturday, November 15, 2025

Matrix: Time Zones in User Profiles

Matrix had very limited user profile information, only: display name and an avatar. [1] Users are able to get/set these fields with a simple CRUD REST API. This is pretty limiting and doesn’t match what users expect from a modern chat platform. In particular, I’ve seen …

read more →
Friday, February 23, 2024

Joining the Matrix Spec Core Team

I was recently invited to join the Matrix “Spec Core Team”, the group who steward the Matrix protocol, from their own documentation:

The contents and direction of the Matrix Spec is governed by the Spec Core Team; a set of experts from across the whole Matrix community, representing all aspects …
read more →
Friday, February 23, 2024

Synapse URL Previews

Matrix includes the ability for a client to request that the server generate a “preview” for a URL. The client provides a URL to the server which returns Open Graph data as a JSON response. This leaks any URLs detected in the message content to the server, but protects the …

read more →
Friday, December 15, 2023

Matrix Intentional Mentions explained

Previously I have written about how push rules generate notifications and how read receipts mark notifications as read in the Matrix protocol. This article is about a change that I instigated to improve when a “mention” (or “ping”) notification is created. (This is a “highlight” notification in the Matrix specification …

read more →
Friday, December 15, 2023

Matrix Presence

I put together some notes on presence when implementing multi-device support for presence in Synapse, maybe this is helpful to others! This is a combination of information from the specification, as well as some information about how Synapse works.

Note

These notes are true as of the v1.9 of …

read more →
Friday, October 6, 2023

Handling GitHub Notifications

Note

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]

Note

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 →