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 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?

Olivier Coudert on July 7th, 2010

CodeProject When developing in C++, an impeccable API is a must have: it has to be as simple as possible, abstract, generic, and extensible. One important generic concept that STL made C++ developers familiar with is the concept of iterator. An iterator is used to visit the elements of a container without exposing how the […]

Continue reading about How to write abstract iterators in C++

Olivier Coudert on November 24th, 2009

The last 10 days have been pretty interesting to follow in the fast moving world of Twitter. They showed a contrasting (or seemingly so) picture of where the super-hyped company is heading. Let us rewind the last few events […] Continue reading Twitter sure is a rollercoaster, but going up or down?

Continue reading about Twitter sure is a rollercoaster, but going up or down?

Olivier Coudert on October 19th, 2009

Functional verification is a major bottleneck in the chip design cycle. Any misstep in closing the functional correctness of a digital system costs millions of dollars in redesign, additional testing, and silicon respins. One can argue at length about its actual cost, but people in the industry usually agree that functional verification takes between 40 […]

Continue reading about The formal verification market is still untapped