Celebrating 10 years – my top 10 blog articles

It’s difficult to believe we’ve been writing articles for 10 years.  In that time I’ve written over 90 technical articles on C, C++ and embedded system design.

To celebrate I’ve picked my ‘Top 10’ articles, with a little background into why I enjoyed writing them so much, or the story behind them.

So, sit back, cue up At the Sign of the Swinging Cymbal“* and enjoy.


(* This really dates me!)

#10 – Your handy cut-out-and-keep guide to std::forward and std::move

Anyone can take a complex topic and make it completely impenetrable.  It takes a lot more effort to find a simple way to explain a potentially complex idea.  That’s really our goal with these articles:  If you come away from reading them thinking “well, that’s was obvious!” then we’ve done our jobs properly.


#9 – Seeing stars.  And dots.  And arrows

Sometimes you start with an idea for a short, simple article and it kind-of runs away from you.  Who thought you could write (or even want to write) more than 2000 words on the dot operator?


#8 – Casting – what could possibly go wrong?

Coding standards are very commonly written in a dry, formal, “thou-shalt-not” style.  Occasionally, it’s good to explore the consequences of disregarding coding guidelines.


#7 – The Swiss Cheese model

The Swiss Cheese model is an idea for effective testing we’ve been extolling for years.  The principle is that any verification or validation technique has its strengths and its weaknesses.  Applying multiple techniques exploits their strengths and helps alleviate the weaknesses.


#6 – Debunking priority

Priority, in concurrent systems, is a term where people seem to be able to explain the ‘what’ and even the ‘how’; but very rarely the ‘why’.

I wrote this article to give engineers a more concrete understanding of what priority actually means for a system.


#5 – The Baker’s dozen of use cases

Over the years I’ve developed a bit of a love-hate relationship with use cases.  The problem with such a semi-formal technique is that it can go off in all sorts of ‘interesting’ directions; not all of which are necessarily very helpful.  Over the years I’ve made all the mistakes and reaped the consequences.  I developed a framework of rules (13 of them, hence the title) to make use cases more coherent and more usable.  This series of a articles explores these rules.


#4 – Bitesize Modern C++

The idea for this series of articles came from Niall – could I explain the core new features of Modern C++ in articles of 600 words or fewer?

Modern C++ can be described as being “whatever is considered good practice in C++, today”.  That not only means new features, but also new ways to do things you could already do.  The Bitesize articles predominantly focus on these new ways to do old things.  They are the changes you can make to your existing code base to make it more ‘modern’.


#3 – Making things do stuff

Feabhas focuses on the embedded market.  Hardware manipulation is our bread-and-butter.

Traditionally, low-level I/O code is the preserve of C programming.  This series of articles focuses on hardware manipulation using Modern C++.  The aim was to use some of the more sophisticated features of the C++ to produce rich, powerful and flexible interfaces without sacrificing anything in efficiency to C code.


#2 – Demystifying C++ Lambdas

This article changed the way I write technical articles; and teach, too.  The review of the first draft came back with the comment: “I understand what you’ve written about lambdas; but why would I use them?”

This is the problem with so much technical content on the Internet: many people can explain – in ferocious detail – the mechanics of software features, but not the value of them.  Without knowing why something is important, understanding how it works is pretty much irrelevant.


#1 – A convenient untruth

If you’re an experienced C programmer you’ll know there’s a somewhat complicated – some might say ‘unholy’! – relationship between arrays and pointers.  This article came as a result of how I’d been teaching arrays for a number of years.

This is probably the most tongue-in-cheek article I’ve ever written (for example, it explicitly encourages you to name arrays “arr” so you can talk like a pirate!).  It was written in an Edward-Snowden-whistleblower-style to give a bit more humour to what is a fairly complex topic.

…and then it got picked up by HackerNews…

Glennan Carnie
Dislike (0)

About Glennan Carnie

Glennan is an embedded systems and software engineer with over 20 years experience, mostly in high-integrity systems for the defence and aerospace industry. He specialises in C++, UML, software modelling, Systems Engineering and process development.
This entry was posted in C/C++ Programming, Design Issues, Testing, UML and tagged , , , , , , , . Bookmark the permalink.

Leave a Reply