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 a decade of experience as a software professional and a background in science.

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

CIS: Unexpected Coupling

One of the most common problems with synchronization occurs when things need each other that you didn’t expect to need each other.

Posted in Common Issues with Synchronization | Comments Off on CIS: Unexpected Coupling

Git demystification

There are a few misconceptions I hear about Git that I find should be cleared up a bit, so here goes:

Posted in Opinions | Tagged | Comments Off on Git demystification

Three ideas you should steal from Continuous Integration

I like Continuous Integration — a lot. Small incremental changes, continuous testing, continuous builds: these are Good Things. They provide statistics, things you can measure your progress with. But Continuous Integration requires an investment on the part of the development … Continue reading

Posted in Quality, Software Development, Software Engineering, Software Testing | Tagged | Comments Off on Three ideas you should steal from Continuous Integration

Eliminating waste as a way to optimize

I recently had a chance to work on an implementation of an Arachnida-based web server that had started using a lot of memory as new features were being added. Arachnida itself is pretty lean and comes with a number of … Continue reading

Posted in Anecdotes, Software Design | Tagged , , , | Comments Off on Eliminating waste as a way to optimize

Technical documentation

Developers tend to have a very low opinion of technical documentation: it is often wrong, partial, unclear and not worth the trouble of reading. This is, in part, a self-fulfilling prophecy: such low opinions of technical documentation results in them … Continue reading

Posted in Opinions, Quality, Software Engineering | Tagged | Comments Off on Technical documentation