Merry Christmas 2019: New Beginnings

2019 23 Dec

Hope everyone had a great year. Let's take a look at what happened and what's coming.

2019 has been the year of pre-releases with Ranch 2.0 and Gun 2.0 getting close to completion. I hope both of them will be out in the first half of 2020. They were supposed to be released in 2019, but I guess that was a bit optimistic. Ranch 2.0 is a big performance improvement if you need to quickly open a large amount of connections (but you probably don't), while Gun 2.0 is a few small breaking changes in the lower level interface to make things clearer, plus a ton of new features.

Cowboy 2.7 has been released and 2.8 is just around the corner. 2.8 will improve the performance and include a section in the guide to get the most performance for HTTP/1.1 applications, since it is currently not obvious. There might be further experiments around asynchronous interfaces in order to squeeze the most performance out of Cowboy 2.

At the start of 2019 I submitted a patch to Erlang/OTP that added support for active,N to the ssl application. This is available since OTP 21.3 and is the basis behind the biggest performance improvement in upcoming Cowboy 2.8.

Last year I was hoping to keep the number of tickets open across all my projects to below 100. I did not quite accomplish this but have managed to keep them at around 120. Not too bad considering many of those are just ideas or personal reminders.

I've recently resumed work on my Farwest project. This is a complete reboot following the initial experiments and a few years of research. The goal is to provide a framework for building fully RESTful applications, including both server and client components. An early demo is already available. The project itself is also available, though that is a very early version. I will be giving a demo of the project at FOSDEM 2020 in the BEAM Fosdem Devroom in just about one month. It's free, you should come!

The demo will take around 20 minutes and I will do some live coding, creating an API for manipulating (d)ets tables. 20 minutes is a short time so we'll see how far I'll manage to get. I can promise that discovery will be working, at the very least.

Related to Farwest, I've recently submitted a patch to Erlang/OTP adding the functions uri_string:resolve/2,3 to perform reference resolution. This was necessary in order to implement the Link header in Cowlib. I have also implemented Structured Headers, Variants and URI Templates. The combination of these enable efficient resource discovery in Farwest.

In the context of my work with the team at RabbitMQ I have submitted patches to Erlang/OTP to add the functions crypto:cipher_info/1 and crypto:hash_info/1. We have also submitted smaller patches to expose more metrics related to the Erlang distribution, helped fix a few issues around the interface for custom distribution drivers, and submitted a number of improvements to prometheus.erl including some new collectors and dashboards.

You can forward Santa Claus to GitHub Sponsors for sending presents. I use these funds mainly for improving the testing environments for my projects.

Have great holidays, Merry Christmas, Happy New Year, and see you next year!