Software

Olivier Coudert on September 20th, 2014

Writing code is not simply about putting language constructs together. It’s about architecture, complexity analysis, tradeoffs, testing, measuring performances, etc. And it’s about making sure that developers (other people as well as the original author) can later read and understand that code, for bug fixing or enhancement. This is where comments come into play (not […]

Continue reading about How much comment does your code need?

Olivier Coudert on July 30th, 2013

CodeProjectLess is often better. In mathematics, physics, and arts, simplifying and shedding every bit of complexity and redundancy have produced remarkable results. It leads to abstraction, elevates expressiveness, and reveals patterns that are otherwise buried in details. Programming is no different. For a developer that looks for correctness (does my program behave as expected?), efficiency […]

Continue reading about The rules of minimalist programming

Olivier Coudert on July 15th, 2013

I was prompted to write that post after days (weeks) of frustration working with a new company. I thought that would capture the essence of what software development should be. A bit of context first. There are people out there whose motto is “we make money selling hardware, not software”. Because of this, they are […]

Continue reading about Software engineering 101

Olivier Coudert on March 31st, 2013

CodeProject In the late 50’s, when people programmed close to metal (read: with assembly languages) on a daily basis, there were only two so-called high-level programming languages: Fortran and Lisp. Both are still in use, even though they are considered passé (yet, I consider Lisp and its Zen-like syntax as one of the best languages […]

Continue reading about Is C++ passé?

Olivier Coudert on July 9th, 2011

CodeProject In a nutshell, serialization consists of writing data and objects on a support (a file, a buffer, a socket), so that they can be reconstructed later in the memory of the same or another computing host. The reconstruction process is also known as deserialization. Serializing a primitive type like a bool, int, or float, […]

Continue reading about A practical guide to C++ serialization

Olivier Coudert on May 30th, 2011

CodeProject A program is deterministic, or repeatable, if it produces the very same output when given the same input no matter how many times it is run. Refining this definition, we should consider whether a program produces the same result on any platform (32 and 64 bits machines, running Windows, Mac OS, Linux, Solaris, etc). […]

Continue reading about How to make software deterministic

Olivier Coudert on April 9th, 2011

CodeProject The quality of software is assessed by a number of variables. These variables can be divided into external and internal quality criteria. External quality is what a user experiences when running the software in its operational mode. Internal quality refers to aspects that are code-dependent, and that are not visible to the end-user. External […]

Continue reading about What is software quality?