Alex Sayers

Originally from North-East England. Studied Physics and Philosophy at Oxford. Became a software engineer and moved to Switzerland. I now live in Tokyo and work for Tsuru Capital. I'm a Haskeller who also writes Rust.





A server which streams files to clients as they're appended to. It's like tail -f in server form. You just start it in some directory, and the contents of that directory become available for streaming. The protocol is extremely simple, clients don't require a special library or anything. It has high throughput, low latency, and scales to lots of clients.


Repay is a simple tool which computes the most efficient way for everyone to repay their debts. You feed it a list of historical transactions, and it spits out a minimal list of transactions which will make everyone square.

Repay implements two algorithms for building a repayment plan: an "exact mode", which is guaranteed to give an optimal plan, but which is O(3^n) in the number of people involved; and an "approximate mode" which scales better but may return a non-optimal plan.


I'm a fan of git-series. I wrote a thing which syncs gitlab MRs with a series in your local repo, allowing me to view the description, comments, and most of the metadata. Crucially, the history of the MR is properly recorded (series are just branches after all); this means that I return to an MR which I reviewed earlier, I can see exactly what has changed since I last looked at it. It also makes merging accepted MRs easier, by pre-filling the series description with trailers such as "Reviewed-by".

I also have a bunch of other stuff for working with git repos.


I have some rust crates:

Historical deeds and affiliations