Friday, 27 March 2009

Tuesday, 24 March 2009

Crash Test

Automated testcase reduction is way cool. Lithium is a very nice python tool for that, easy enough to modify (to for example, attempt to not reduce only in chunks that are powers of two in size)

Hand in hand with automated testcase reduction is automated testcase generation. There is a little GNU tool (named spu) hiding away in the GDB sources to do just that.

EA have a custom STL replacement. (EASTL). WxCocoaDialog, and CocoaDialog.

High precision timers for Cell Linux.

Monday, 16 March 2009

Look for the Truth

Terry Pratchett defines why I read SF & Fantasy.

Just when C++ seems understandable, some new examples of what can be done show up, and present interesting bafflement.

How to program securely in C/C++, avoiding integer overflow via templated operator overloads and allowing testing of objects in boolean contexts without unintended integral promotions.

Test case reduction - using Delta and a book on Why Programs Fail.
Delta debugging.

Monday, 2 March 2009

Welcome Home (Sanitarium)

The shape of code. Interesting. A book giving a cultural commentary on the C language. The C language is relatively small - the commentary comes to 1600 pages - if he wrote it for C++, then would it ever end?

Microsoft have, as expected, a
proprietary name mangling scheme for symbols output from their C++ compiler. It is irritating that they cannot find it in themselves to fully and publically document the naming scheme, resulting in a series of more or less incomplete or obsolete 3rd party attempts scattered across the internet. Even if they promise to, and do, completely revise the scheme each version of the MS tools, it would still be preferable to the current unknown, unknowable, and murkily mutable world of trying to interoperate.

Not that purveyors of open source are much better off - you can point fingers at the quality of the code, you can cry at the state of the documentation - or rather, the lack of (good) documentation about the internals - not just the user manual. Fear of infringing on license terms leads to a reverse engineering process, just like proprietary software, even with open source. Still, some other people do occasionally write docs - leading to the question, are those correct for any or all versions in the range from obsolete, current and bleeding edge.

The impact of economics on compiler optimisation.

Computer chess. Fast, and pretty. The grep command takes a -v argument to invert the meaning of the match - e.g. to drop matching limes, rather than non matching. Random numbers in batch files via %random%