Latest

  • Event Loops and NCurses

    Event Loops and NCurses

    Yesterday I wrote a blog post talking about Event Loops, this was a pre-cursor to discussing where I am using them in an application I’m currently developing which uses NCurses at its core. Unfortunately the application is an R&D project and is not public yet (still very early in development), but it is written in… Read more

  • Event Loop Programming: A Different Way of Thinking

    Event Loop Programming: A Different Way of Thinking

    The concept of event loops is not new in programming, but I think it is still a really important technique to learn. They allow a program to send a request for something and carry on doing things rather than waiting on things to happen. It is a great way of multi-tasking in a single thread… Read more

  • Socket SO_REUSEPORT and Kernel Implementations

    Socket SO_REUSEPORT and Kernel Implementations

    Way back when I was at NGINX I worked with several people on integrating a kernel patch for SO_REUSEPORT in Linux to work with NGINX for something I termed “socket sharding“. In hindsight I should have maybe called it “socket load balancing” but the term “sharding” has stuck with that option across the industry now.… Read more

  • Sanitizers, The Alternative To Valgrind

    Sanitizers, The Alternative To Valgrind

    Valgrind is an incredibly powerful tool which helps find leaks, buffer overflows and many other things. Whilst being extremely powerful it can also be very slow. As an alternative there are little known tools that are available for Clang and GCC which can fulfil similar functions for your C / C++ applications but with much… Read more

  • My Journey Learning The Go Programming Language

    My Journey Learning The Go Programming Language

    The key to learning anything new is finding a way to engage with the material. Some people learn by reading and some learn by doing. I typically fall into the latter half and I’ve typically been more successful in mentoring people who learn in a more hands-on way. A recent Tweet I made led to… Read more

  • POSIX File Handling and Undefined Behaviour

    POSIX File Handling and Undefined Behaviour

    Whilst porting code between Linux and macOS I have come across two issues which make assumptions about how something works but in reality different implementations of libc handle them differently. In this post I’ll talk about recent issues I faced with fopen() and fclose() in codebases. Read more