Latest blog posts
2024
Optimization adventures: making a parallel Rust workload 10x faster with (or without) Rayon
Making a const version of Rust's array::from_fn - How hard can it be?
Thoughts on the xz backdoor: an lzma-rs perspective
Making my website 10x smaller in 2024, with a dark mode
2023
STV-rs: Single Transferable Vote implementation in Rust
Testing SIMD instructions on ARM with Rust on Android
2022
Detecting SIMD support on ARM with Android (and patching the Rust compiler for it)
Compiling Rust libraries for Android apps: a deep dive
Why my Rust benchmarks were wrong, or how to correctly use std::hint::black_box?
2021
Horcrux: Implementing Shamir's Secret Sharing in Rust (part 2)
Horcrux: Implementing Shamir's Secret Sharing in Rust (part 1)
Asynchronous streams in Rust (part 2) - Cancelling expired requests
Asynchronous streams in Rust (part 1) - Futures, buffering and mysterious compilation error messages
Back online: lessons learned from recovering my website after a data center fire
2020
Reaching the (current) limits of Rust's type system with asynchronous programming
Lessons learned from stracing a password manager in Docker
Five years of Rust - a full-stack programming language for the next decade(s)
Five years of Rust - a cross-platform programming language for the next decade(s)
How I blog about math: an update on KaTeX with Jekyll
2019
Rust 2020
Tutorial: Profiling Rust applications in Docker with perf
Advent of Code in Rust: lessons learned
2018
6 months into Rust: what was good in 2017 and what will be better in 2018?
2017
Rust from a C++ and OCaml programmer's perspective (Part 2)
Rust from a C++ and OCaml programmer's perspective (Part 1)
A Rubik's cube visualization for GoogleCTF 2017
GoogleCTF 2017 - Rubik write-up
Parsing HTTP/2 packets in Python with dpkt
Conferences this semester
PlaidCTF 2017 - FHE write-up
1 of 2
Next