My Crust of Rust episode on subtyping and variance in is now up at Even though it's a thorny topic that I'm fairly new to myself, I _think_ we managed to explain the concepts and their practical implications without too many 🍿 moments.

My segment on New Relic's "The Relians" 24h stream is now up on! My stream partner, Aisha Blake, started out with no experience, yet we got all the way to a CSV-to-JSON converter 🎉 Good stream for anyone curious about this "Rust thing" coming from the world of JavaScript 🍿

I was interviewed on The Virtual World Podcast this weekend! It was an interesting conversation, and hopefully not just to me 😅

First episode of The Unsafe Chronicles is now up on YouTube! We talk through some particularly funky unsoundness around aliasing a Box, and how to deal with it the context of the left-right concurrency primitive.

I'm going to try out a new type of stream on Saturday @ 6pm UTC ( "The Unsafe Chronicles". The idea is to go through an interesting experience with unsafe Rust code and how to fix it. It'll be more "explainer" than "coding" like my usual streams — but will hopefully be interesting nonetheless!

@schrieveslaach Hmm, I think that probably still won't do what you want. If I'm reading this right, it creates a new `ReadHandle` for every request, which is basically the same as taking a `Mutex` for each request (that's what `ReadHandleFactory::handle` does internally).

@schrieveslaach Hmm, I'm not sure if `State: Clone` will be sufficient, since you'll still then need exclusive access to the `State` in order to use `ReadHandle`. And it particularly won't help if it still requires that the inner type is `Sync` (which `ReadHandle` is not)... I think this may just not fit Rocket's idea of `State`, which seems to be "something shared among all requests".

@schrieveslaach Hmm, yeah, evmap is very opinionated in that the `ReadHandle` types can't be used concurrently from multiple threads at the same time. You need each future/task/thread to have its own `ReadHandle`. I feel like there should be a way to get that with Rocket, but don't know. With HTTP/2 you'd probably want something like a `ReadHandle` per request. Or you could try to go the route of thread-locals to hack around it, but pain lies that way. Maybe dashmap/flurry is a better fit?

Thanks! Always cool to hear about my things being used. If you had to stick it in a Mutex anyway though, why use evmap?

Recording of today's stream on making the concurrency primitive behind evmap's fast concurrent reads generic is now up! I think it turned out pretty great, and am excited to see what people might do with it!

The PR (which still needs some cleanup before it'll land) is here for anyone who just wants to see where we ended up:

Recording of yesterday's Crust of Rust stream is now up! We made our way through implementations of bubble-, insertion-, selection-, and quicksort, and also benchmarked them all. And, crucially, we covered a bunch of Rust topics along the way!

I'll be doing another Crust of Rust stream on sorting implementations this weekend. I'm thinking that since the algorithms are well-known, we can focus specifically on various -isms! The stream will be Saturday at 6pm UTC: As usual I'll stream to both Twitch and YouTube, and upload the recording to YouTube after. This stream should hopefully be ok to follow even if you come from another language, so if you've been on the fence, now's a good time to watch 🍿

Good news everyone! I passed my thesis defense yesterday, and now only have some minor revisions to the thesis itself left before I am completely done 🎉 You can find a recording of the thesis presentation here:
Since the thesis isn't _completely_ done, I haven't posted the actual document yet, though I will make it public once it's finalized. You can find the slides at

I'm live-streaming a practice run of my thesis defense in ~18h ( I recommend you watch the "real" talk on Wednesday instead ( — unless you specifically want to see an early draft and give feedback! But you're of course all warmly welcome ❤️

@chiasm I'm glad you found it possible to follow! I developed Noria over the course of my PhD, though the actual research contribution of my thesis are the "upqueries" and the partial state that they enable. The other "stuff" already existed in one form or another in other systems.

As the goal of this chapter is to make the broad strokes of the work approachable to a general audience, I figured I'd get as many eyes on it as possible. If something in there doesn't make sense, please let me know and I'll see what I can do to improve it! No promises though 😅

Show thread

Hey folks! I'm still hacking away at my thesis, but wanted to share one chapter draft ahead of time: "Noria in simpler terms". It is my attempt at explaining my thesis work to those who do not have extensive database or systems experience, like my mom ❤️

Oh, and I was recently interviewed by a new podcast called "Humans of Open Source" ( The episode is up on their website and other podcast apps now. I really like the premise of the podcast — to talk to "big" usernames in open source to highlight that there's a *human* behind each one. With a normal life, ups and downs, successes and failures. I'm hoping it might help reduce that common feeling of "otherness" in OSS!

I'm going to do another Q&A today at 8:30pm UTC (! You can still submit and vote on questions at, and we'll use the same page during the stream if more questions come up. Come ask me things 😅

@janriemer Hehe, yeah, it was a tonne of work, but I also figured that the VOD would basically be useless without it :p

Show older

Fosstodon is an English speaking Mastodon instance that is open to anyone who is interested in technology; particularly free & open source software.