Promise Fru

Promise Fru

I am a backend engineer. I design cryptographic protocols and build the systems that carry them, mostly for communication tools that have to keep working when the network does not: patchy coverage, no data, or a deliberate shutdown.

I have been doing this professionally since 2018. Since 2022 most of my attention has gone to SMSWithoutBorders. I design the RelaySMS transport protocol and build the Python service that publishes messages on a user's behalf, and I co-authored the two papers that document how it works. More recently I architected and built the Go API layer behind ShortMesh, a Matrix based messaging service. I have also worked at Mozilla on bugbug, the machine learning platform that triages Firefox bugs and decides which tests are worth running.

Protocols on bad networks do not degrade gracefully by accident. Whether they hold up is settled early, in how the payload is encoded, how keys are exchanged, and what happens on a failed retry. By the time those choices start to cost you, people already depend on them. Seeing that coming is the part of this I am good at, and it is why I make those decisions deliberately and write down the reasoning. That is also what lets someone else audit the work or take it over later.

Most of what I have built was for people who are not engineers: researchers, field teams, operators running a relay off a volunteer's phone. That has made me a better listener than I would otherwise be. I try to understand how someone actually works before designing for them, and to talk about trade-offs in terms of what they cost the person at the other end rather than in terms of the stack.

Technologies

Tools I work with

PythonGoTypeScriptgRPCREST APIsProtocol BuffersPostgreSQLMySQLRedisRabbitMQMatrixDockerLinuxGitBashDistributed SystemsApplied CryptographyProtocol DesignMachine Learning
Simplicity

I default to the simplest solution that solves the real problem, especially in protocols, where every added feature is new attack surface.

Reliability

Systems that run over unreliable or hostile networks fail by default. I design for that first, not as an afterthought: work that retries safely, somewhere for messages that never got through to wait, and processing that does no harm when the same message arrives twice.

Clarity

Good engineering is mostly communication. A protocol only holds up if the next person can read what I wrote and see why it is the way it is.

Let's work on something together.