Archive for August, 2009

Binary Compatibility

When writing library code, one of the snares to watch out for is binary compatibility. I have already talked about the dangers of breaking binary – and API – compatibility but I had neither defined what binary compatibility is, now how to prevent breaking it. In this post, I will do both – and I [...]

Read the rest of this entry »

The Danger of Breaking Changes

Xerces-C is without a doubt one of the most popular DOM implementations in C++ (and its Java sibling undoubtedly the most popular implementation for Java). As with any project that lives under the banner of the Apache Foundation the project is managed using a meritocracy-style project management scheme and has been, quite successfully, for the [...]

Read the rest of this entry »

The Importance of Patterns

When explaining the design of some application to some-one, I find the use of analogies is one of the best tools available to me – better than diagrams and much better than technical terms: when using technical terms, the listener often starts “glazing over” after only a few seconds – maybe a minute. It really [...]

Read the rest of this entry »

Naming conventions and name mangling

In C++, any name that starts with and underscore followed by an uppercase letter and any name that contains two consecutive underscores is reserved for any use [lib.global.names] and any name that begins with an underscore is reserved in the global namespace. The intent for this, as explained by several people on comp.std.c++ is to [...]

Read the rest of this entry »

Using Four-Letter Words In Code

When writing firmware and device drivers, it is useful, sometimes, to have human-readable integer values – i.e. integer values that, when you read them in a debugger, mean something distinctive. This is different from using integers that have a distinctive bit pattern so you can read them on a scope (ex. 0xABABABAB, which is 10101011 [...]

Read the rest of this entry »

Mail down – and back up again

I changed my hosting provider a few days ago, which implied changing the DNS provider as well. As a result of this – and my forgetting to set the MX entry correctly, the mail service for landheer-cieslak.com was down. Michel was kind enough to notify me of this, so it’s been fixed this morning.

Read the rest of this entry »

Name For Functionality, Not Type

I just read a blog by Michel Fortin, where he quotes Joel On Software regarding Hungarian notation, or rather, Hungarian WartHogs. Naming a variable for its type, or a type for its location or namespace, is a mistake. I agree with Joel on his introduction: there are different levels of programmers and, at some point, [...]

Read the rest of this entry »

Hiding Complexity in C++

C++ is a programming language that, aside from staying as close to the machine as possible (but no closer) and as close to C as possible (but no closer), allows the programmer to express abstraction if a few very elegant constructs. That is probably the one thing I like best about C++. This morning, while [...]

Read the rest of this entry »

Crime, Debugging and the Broken Window Rule

In the late 1980s New York City was cleaned up from under the ground up: from 1984 to 1990, the New York subway was cleaned of its grafiti, then of its non-paying passengers. After that, when the chief of tge New York transit police became the chief of the New York city police, the city [...]

Read the rest of this entry »

How Data Transport Should Work IMNSHO

One of the most ubiquitous problems in software design is to get data from one place to another. When some-one starts coding code that does that, you seem to inevitably end up with spaghetti code that mixes the higher-level code, the content and the transport together in an awful mix that looks like a cheap [...]

Read the rest of this entry »
 
This blog is monetized using Are-PayPal WP Plugin