Maintaining rust-libp2p & beyond

The beginnings As part of my previous job, I was fortunate enough to get involved with the Rust community, in particular peer-to-peer networking. We were heavy users of rust-libp2p, a library which was originally developed by Parity to power Polkadot. On some day, more than three years ago now, Max - who had just moved from Parity to Protocol Labs to maintain rust-libp2p - reached out to me to discuss and learn how we were using rust-libp2p in our projects. The discussion was very fruitful and ...
Read post

Using GitHub actions and GitFlow to automate your release process

This blogpost describes an idea of using GitHub actions and GitFlow to automate away most of the steps that are involved in creating a new release. The end goal is to create a release of your software with only two steps: Creating an issue Merging a PR Note that both of these can be done from within GitHub's web interface and without commandline interaction. As a result, this strategy is very accessible and doesn't require deep understanding of the steps necessary to create a release. Prere...
Read post

Generic Newtypes: A way to work around the orphan rule

Rust's orphan rule prevents us from implementing a foreign trait on a foreign type. While this may appear limiting at first, it is actually a good thing and one of the ways how the Rust compiler can prove at compile time that our code works the way we intended. This blog post is a follow-up on one that I already wrote some time ago: https://blog.eizinger.io/5835/rust-s-custom-derives-in-a-hexagonal-architecture-incompatible-ideas In this one, we will go more in-depth into the "local wrapper typ...
Read post

Rust's custom derives in a hexagonal architecture: Incompatible ideas?

This blog post is a manifestation of a problem that has been floating around in my head for quite a while now. It is about the seemingly incompatible idea of fully embracing Rust's custom derive system in an application that puts a strong focus on a hexagonal architecture. To discuss this problem, I am going to first write about both concepts individually. Feel free to skip over those sections if you are already familiar with the topics. The blog post finishes off with some ideas on how Rust co...
Read post

Refactoring is a developer's business

Recently, I read a thread on Twitter about the need for developers to learn the skills of refactoring. In that thread, Ron Jeffries, one of the founders of the Agile Manifesto, claims that without tools like refactoring, agile projects cannot work because they are inherently about being able to change fast, which is hard if your design doesn't allow this. Refactoring in turn makes sure your design incorporates the gained knowledge as you iterate. Or as Kent Beck puts it: First make the change ea...
Read post