Category C

Dude, where's my code?

From time to time, I have experienced what seems like vanishing code. I write out the source code, I think it is right, but then strange things start to happen...

Measurement fallacies

One of the most important texts on creating performant software remains Michael Abrash’s Graphics Programming Black Book. Around 30 years after publishing, it still speaks clearly and accurately to the...

Perfect hashing

Perfect hashing is often overlooked as a way to organize data in a hard real-time, embedded system. This might be because its application is quite limited. Nevertheless, it is an...

Tail-call optimization (1)

Tail-call optimization has some features that make it particularly interesting to discuss. Most software developers have heard of tail-call optimization, do not really understand the benefits of tail-call optimization, and...

Why hard real-time is hard

Hard real-time means software running in a system that only functions correctly if results are delivered before hard deadlines. This system is a combination of hardware and software. If we...

Why hard real-time is easy

Hard real-time means software running in a system that only functions correctly if results are delivered before hard deadlines. In a hard real-time system, every action has a specified timing...

Single-Path Code (3)

Single-path code, or branchless code, has been an important development in performance computing. It turns out to be even more interesting in the domain of hard real-time, embedded systems. In...

Single-Path Code (2)

Single-path code, or branchless code, has been an important development in performance computing. It turns out to be even more interesting in the domain of hard real-time, embedded systems. In...

Single-Path Code (1)

Single-path code, or branchless code, has been an important development in performance computing. The hardware acceleration features of modern processors are optimized for code without branches. The smooth flow of...

Constant Joy (4)

The const keyword in C is a useful tool with different meanings in different contexts. In my first three articles, I explained these different meanings and illustrated their application. This...

Constant Joy (3)

The const keyword in C is a useful tool with different meanings in different contexts. In my first two articles, I looked at const applied to global variables and local...

Constant Joy (2)

The const keyword in C is a useful tool with different meanings in different contexts. In my first article, I looked at const applied to global variables and now I...

Constant Joy (1)

The const keyword in C is a useful tool with special relevance to embedded software. It has different meanings in different contexts. Even experienced C programmers are often unclear about...

Category tutorial

Dude, where's my code?

From time to time, I have experienced what seems like vanishing code. I write out the source code, I think it is right, but then strange things start to happen...

Measurement fallacies

One of the most important texts on creating performant software remains Michael Abrash’s Graphics Programming Black Book. Around 30 years after publishing, it still speaks clearly and accurately to the...

Perfect hashing

Perfect hashing is often overlooked as a way to organize data in a hard real-time, embedded system. This might be because its application is quite limited. Nevertheless, it is an...

Tail-call optimization (1)

Tail-call optimization has some features that make it particularly interesting to discuss. Most software developers have heard of tail-call optimization, do not really understand the benefits of tail-call optimization, and...

Why hard real-time is hard

Hard real-time means software running in a system that only functions correctly if results are delivered before hard deadlines. This system is a combination of hardware and software. If we...

Why hard real-time is easy

Hard real-time means software running in a system that only functions correctly if results are delivered before hard deadlines. In a hard real-time system, every action has a specified timing...

Single-Path Code (3)

Single-path code, or branchless code, has been an important development in performance computing. It turns out to be even more interesting in the domain of hard real-time, embedded systems. In...

Single-Path Code (2)

Single-path code, or branchless code, has been an important development in performance computing. It turns out to be even more interesting in the domain of hard real-time, embedded systems. In...

Single-Path Code (1)

Single-path code, or branchless code, has been an important development in performance computing. The hardware acceleration features of modern processors are optimized for code without branches. The smooth flow of...

Constant Joy (4)

The const keyword in C is a useful tool with different meanings in different contexts. In my first three articles, I explained these different meanings and illustrated their application. This...

Constant Joy (3)

The const keyword in C is a useful tool with different meanings in different contexts. In my first two articles, I looked at const applied to global variables and local...

Constant Joy (2)

The const keyword in C is a useful tool with different meanings in different contexts. In my first article, I looked at const applied to global variables and now I...

Constant Joy (1)

The const keyword in C is a useful tool with special relevance to embedded software. It has different meanings in different contexts. Even experienced C programmers are often unclear about...