Author Archives: rlc

About rlc

Software Analyst in embedded systems and C++ programmer. I specialize in systems design and concurrency, and am interested in generic meta-programming and functional programming and their practical applications. I take a pragmatic approach to project management, focusing on the management of risk and scope. I have over two decades of experience as a software professional and a background in science.

Real-time thirsty

Imagine you’re running a coffee shop — not the kind you find in Amsterdam, but one where they actually serve coffee. Your customers are generally in a hurry, so they just want to get a cup of coffee, pay and … Continue reading

Posted in Algorithms, Software Engineering | Comments Off on Real-time thirsty

Setting up Cygwin for X forwarding

Posted in Notes, Technology | Comments Off on Setting up Cygwin for X forwarding

Shutting down servers

I used to have a server with five operating systems, running in VMs, merrily humming away compiling whatever I coded. I say “used to have” because I shut it down a few weeks ago. Now, I have those same operating … Continue reading

Posted in Continuous Integration, Software Development, Software Engineering | Comments Off on Shutting down servers

Checked output iterator

While writing about security — which takes a great deal of my time lately, which is one of the reasons I haven’t updated my blog as often as I usually would — I came to the conclusion that, while I … Continue reading

Posted in Uncategorized | Comments Off on Checked output iterator

Schoenmaker, blijf bij je leest (Cobbler, stick to your last)

This is an old Dutch saying, which probably has its origins in a village with a particularly opinionated cobbler. I am not one to stick to my last — but if I were a cobbler, I don’t think I’d be … Continue reading

Posted in Opinions, Uncategorized | Tagged | Comments Off on Schoenmaker, blijf bij je leest (Cobbler, stick to your last)

Interesting modifications to the Lamport queue, part II

In the previous installment, on this subject, I described a few modifications to the Lamport queue introduced by Nhat Minh Le et al. to relax operations on shared state as much as possible, while maintaining correctness. In this article, I … Continue reading

Posted in Algorithms, C & C++, Interesting stuff | Comments Off on Interesting modifications to the Lamport queue, part II

Interesting modifications to the Lamport queue

While researching lock-free queue algorithms, I came across a few articles that made some interesting modifications to the Lamport queue. One made it more efficient by exploiting C11’s new memory model, while another made it more efficient by using cache … Continue reading

Posted in Algorithms, C & C++, C++ for the self-taught, Interesting stuff | Comments Off on Interesting modifications to the Lamport queue

Progress in DNP3 security

In July last year, I discussed why Adam Crain and Chris Sistrunk fuzzed DNP3 stacks in devices from various vendors, finding many issues along the way (see project Robus). This time, I’ll provide a bit of an overview of what … Continue reading

Posted in DNP3, Smart Grid | Comments Off on Progress in DNP3 security

CIS: “Protecting” code in stead of data

The Windows API contains a synchronization primitive that is a mutual exclusion device, but is also a colossal misnomer. I mean, of course, the CRITICAL_SECTION.

Posted in Common Issues with Synchronization | Tagged , | Comments Off on CIS: “Protecting” code in stead of data

CIS: Lock Leaks

The two most popular threading APIs, the Windows API and pthreads, both have the same basic way of locking and unlocking a mutex — that is, with two separate functions. This leaves the code prone to lock leak: the thread … Continue reading

Posted in Common Issues with Synchronization | Tagged | Comments Off on CIS: Lock Leaks