Source Code Tales Tamás Szelei's coding blog

Benchmark and comparison of RPC solutions - part 1

rpclib 1.0.0 is finally here. For this release, I’ve also completed a benchmark suite which measures the performance of Google’s gRPC, Apache Thrift, Cap’n’Proto RPC and rpclib in certain situations. To highlight the pure overhead of calls via RPC, the performance of equivalent code through direct function calls is also included.

I also meant to include a comparison of APIs, but I realized halfway that analysing both the results and the APIs is going to be extremely lenghty, so I decided to split the post into two parts, the first part being the results, and the second part being comparison of the APIs. I’ll put the link here once that post is published.

Note that apart from rpclib, these RPC solutions are not strictly just “libraries”, rather they are complete packages with code generators and library implementations for various languages. For the sake of simplicity, I’m going to refer to them as libraries anyway.

Continue Reading...

Conan is not a barbarian

After reporting an issue on the siplasplas issue tracker, I came accross conan again there, because siplasplas is actively moving it dependency handling to it.

I was well aware of conan’s existence, but I haven’t used it and I was a bit sceptical after biicode died. Nevertheless, I decided to take look again and now I’m convinced that there is subtantial value in using conan. In this post I’m going to summarize my experiences with it.

Continue Reading...

Introducing rpclib

The 361st commit in the rpclib repository marks the first public release of rpclib, the project I’ve been working for the last ~11 months (294 days, to be exact). What started off as “throw this together in a month and then move on to the next thing” became a crazy journey of perfectionism and “I’ll add this tiny feature before release because what would people think if it’s not there”. Breaking and reworking things just for the sake of it. That’s a great way to have a side project to work on, but not a great way to finish it.

I realized this about a month and a half ago and since then, I’ve been working towards a complete state that I can release. Right now I’m minutes away from pushing the button to upload the 1.0.0-preview1 release. I decided to create a preview before the actual release, because at this point feedback is pretty important.

Continue Reading...

Back to the lab again

After unexpectedly losing the contents of my VPS, I recovered the scraps of my blog from the Wayback machine. I deleted one post, which had a larger amount of screenshots that I had no desire to recreate (and the post wasn’t so good anyway).

Anyway, the blog is here again, hopefully Google forgives the downtime. I made sure to use the old links and put extra effort into having the old comments in place.

The blog now runs on Github pages and is based on Jekyll. You can find the source here.

Regarding my VPS service provider: let’s just say, I won’t be recommending that company to anyone, anytime soon.

Continue Reading...

cmake is not great, but it doesn’t matter

CMake, the language is not great. It is just not a pleasant tool to work with. Not at all; it feels like it was not designed as a language, but a mere configuration file that sets build options in a compiler-agnostic way. But, it hits many important bullet points for building software and most importantly: “just works”. As a result, it has gained popularity over the years because cmake, the software is quite good.

As it happens often, control structures began to creep into the configuration file. This little if won’t hurt anyone, and look, I can do conditional steps during the build file generation with it! How about a for loop? We don’t even have to add an array type, we can just treat strings as arrays! Regex? Sure, add some Cthulhu curse while you are at it. And so on.

Continue Reading...