Hi there! I'm mei, or Maja Kądziołka if you're all formal and uptight. I'm a queer weirdo who's into computers; currently an undergraduate student at the University of Warsaw. Also, I guess I get to call myself a researcher now? Feels weird.

Figure 1: me irl (artist's rendition)
While I find vast swathes of computer science interesting, lately my focus is mainly on things that involve symbolic manipulation in one way or another: compiler engineering, proof assistants, automatic theorem provers, static program analysis, and so on.
I've been known to have a soft spot in my heart for e-graphs — legend has it I'm always on the look out for reasons to use one.
Between classes at the university, I tend to either contribute to various open-source projects, such as the Rust compiler, or spend my time formalizing stuff in a proof assistant, mostly to learn mathematics better.
In the long term, I have two main goals:
- help push forwards the correctness guarantees we can make at the bedrock layers of computing, by building formally verified compilers, proof assistant kernels, operating systems, hypervisors, language runtimes, and hardware;
- improve the usability of proof assistants, to allow for their adoption by a wider group of professionals, make existing users more productive, as well as to allow creating particularly accessible learning materials for mathematics and computer science.
Publications
- bbchallange Collaboration et al. Determination of the fifth Busy Beaver value, to appear in STOC '26: Proceedings of the 58th Annual ACM Symposium on Theory of Computing
Contact
- email: literally anything @ this domain.
- Matrix: @meithecatte:badat.dev
- fedi: @mei@donotsta.re
- Signal: mei.1312
Blog
Bruteforcing the Bitwarden master password I forgor 💀
The human mind is a fascinating thing. It's a miracle it works at all, let alone how well it does. The corollary is that sometimes it doesn't, I suppose.…
Read moreTerminating the terminal case of Linux
A response of sorts to Amos's "A terminal case of Linux", in which I explain why a short async Rust program would fail to terminate sometimes. Read moreBootstrapping
What if all software suddenly disappeared? What's the minimum you'd need to bootstrap a practical system? I decided to start with a 512-byte seed that fits in the boot sector, and find out how far I can get.
Go to series overviewCompiling Rust is NP-hard
...though it's not the flagship borrow checking that's at fault. What I
noticed, and would like to share with you today, is that the exhaustiveness
checking performed by the Rust compiler on match patterns is a superset of the
SAT problem.…


