• Wrapping GObjects in C++

    GObject is the foundational dynamic type system implemented on top of the C language that is used by many other libraries like GLib, GTK and many other components, most of them part of the GNOME desktop environment stack.

    I’ve been lately wrapping a C library that uses GObject for C++ and I learned about some of the challenges.

    Read on →

  • Bisecting flaky tests with rspec and GitHub Actions

    Ah, those good, old flaky test suites! Sooner or later you’ll encounter one of them. They are test suites that sometimes pass, sometimes fail, depending on certain environmental conditions. A lot has been written about flaky tests and what causes them, but in this post I’d like to discuss a specific type of flaky test –order dependant test failures–, and how to help debug them using GitHub Actions as part of your CI/CD pipelines.

    Read on →

  • OpenSSH as a SOCKS server

    Sometimes we are given access via ssh to nodes that do not have, for policy or technical reasons, access to the internet (i.e. they cannot make outbound connections). Depending on the policies, we may be able to open reverse SSH tunnels, so things are not so bad.

    Recently I discovered that OpenSSH comes with a SOCKS proxy server integrated. This is probably a well known feature of OpenSSH but I thought it was interesting to share how it can be used.

    Read on →

  • Distributed compilation in a cluster

    In software development there is an unavoidable trend in which applications become larger and more complex. For compiled programming languages one of the consequences is that their compilation takes longer.

    Today I want to talk about using distcc to speed C/C++ compilation using different nodes in a scientific cluster.

    Read on →

  • Fun with vectors in the Raspberry Pi 1 - Part 9

    I think we have enough pieces of machinery working already that we can start with the most exciting part of this journey: autovectorisation!

    Read on →