Big shout out to the team that makes the crate for .

Had some big compile time issues with the latest Rust 1.56 release. Mostly problem in the rust compiler and sadly the project hit that but causing huge compile times.

Nonetheless, they did a great support in trying to get around that compiler bug and circumvent it from their side. Latest Axum 0.3 fixes all these issues and it was a lot of fun helping out with testing and finding new corner cases.

Tokio released a new web framework. Looks in some regards similar to (which was made by one of the Tokio group) but seems more flexible and extensible.

I'm really having fun with in recently.

It's so satisfying if you have so tricky C construct and you find a way to map it to idiomatic Rust.

I made a new that allows you to remote control via the obs-websocket plugin.

With that you can switch scenes, adjust scenes items and all kinda sorts of stuff directly from (all the heavy lifting done by obs-websocket though, this is a client library for it).

You can listen for events (created by user interactions) as well.

Thanks to using markdown and allowing raw HTML in the doc comments, I now have the nice ASCII art from the website directly in the docs of my coding challenge solutions.

So I finally made my log file based ip blocker, called Veto, available on GitHub. It's similar to fail2ban but more focused on web server logs and performance.

I built it as fail2ban took about 60% CPU when doing load tests. Therefore, I went ahead and built my own solution written in .

Sorry @musicmatze for waiting so long, hope you like it and maybe even give it a try.

So I installed the other day on my small vps and during a load test I found out that it takes up more than 60% of the CPU during high load. I use(d) it to block annoying attempts to open random php admin pages (I don't even use PHP).

Figured out it's written in python and actually expected such a popular basic tool to be written in C for best performance...

So I started writing a mini clone in and it can handle 300,000 lines/sec on 1 cpu core in first tests.

Rewrote my day 6 challenge in from building an object tree with Rc + RefCell to a much simpler version that only uses a string to string mapping for the tree traversal.
Also threw in FNV as HashMap hasher for an extra speed bump. The difference is huge.

Part 1 is 61% faster (598 ΞΌs down to 233 ΞΌs).
Part 2 is 97% faster (40 ms down to 1 ms).

Finished challenge 6 today and had to fight with the borrow checker a lot.

Everything worked in the end, but sharing mutable references in rust is quite a messy thing. Now my type definition looks like


And my code is full of


I wonder if there is a cleaner way πŸ€”...

Great tool if you build your own procedural macros in and want to verify the output. Also interesting when using 3rd party derives or macros.

Was doing my first work with 's procedural macros last week. Awesome AST manipulation techniques and actually quite easy to use.
Despite its high learning curve, it's a breeze to work with, unlike in other languages (looking at you Java and your annotation processors).

Mastodon for Tech Folks

This Mastodon instance is for people interested in technology. Discussions aren't limited to technology, because tech folks shouldn't be limited to technology either!