Wait… what?!

08/08/2010

What kind of stupid picture is that for a web site like 3GPP?


Rediscovering The Past

03/08/2010

Progress, as conceived by most people, consists in replacing older objects, techniques, or philosophies by newer, better, ones. Sometimes indeed the change is for the better, but sometimes it is just change for change—ever had an older device of some sort that was perfectly adequate for your usage, yet you still replaced it with a newer version with no net gain? Unfortunately, the same happens with ideas, especially with mathematics and computer science.

But there are lessons to be learnt from the past. I’m not talking about fables and cautionary tales; I’m talking about the huge body of science that was left behind, forgotten, superseded by modern techniques.

Read the rest of this entry »


No more Ads.

31/07/2010

Apprently, my blog have been sucessful enough for WordPress to spam ads here and there. That’s fair, I suppose, as they have to pay for the infrastructure and all, but nevertheless I bought the No Spam Package to get rid of them. When I’m looking for information there’s not much I hate more than those add-ridden sites that have like, one 15 lines paragraph of text surrounded by 10 of those stupid Evony adds (or worse) with a “next>>” link somewhere in the midle of the junk. I hope you’ll keep envoying my (mostly) add-free blog*.

* Except for my occasionnal Amazon-linked suggested readings, which I find quite whorish already.


Suggested Reading: Patterns for Parallel Programming

30/07/2010

Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill — Patterns for Parallel Programming — Addison-Wesley, 2005, 356 pp. ISBN 0-321-22811-1

(Buy at Amazon.com)

If the Gang of Four changed the way we discuss about software design by introducing a catalogue of basic software patterns, this books vies to extend it to parallel patterns. But let us be clear, it’s not a book about parallel algorithms; no, it discusses parallelism in very general terms and present the few prototypical application types and how they can be efficiently broken down by data structure, command flow, and synchronisation, while remaining rather high level.

Read the rest of this entry »


Being Shifty

27/07/2010

Hacks with integer arithmetic are always fun, especially when they’re not too hard to understand (because some are really strange and make you wonder what the author was thinking when he wrote that). One such simple hack is to replace divisions or multiplies by series of shifts and additions.

However, these hacks make a lot of assumptions that aren’t necessarily verified on the target platform. The assumptions are that complex instructions such as mul and div are very slow compared to adds, right shifts or left shifts, that execution time of shifts only depends very loosely on the number of bit shifted, and that the compiler is not smart enough to generate the appropriate code for you.

Read the rest of this entry »


Getting Clip-Art

20/07/2010

Interoperability of software is still a major issue. Not only closed systems do not play well with others, open systems sometimes—often—have the same problems with exchanging information. One that only plays well with others when forced to is, of course, our good friend Microsoft. Sometimes they pretend to play well, and other software developers must reverse-engineer the file formats to read and write data in a compatible format.

One minor annoyance is Microsoft Office’s clip-art bundle file format that is not supported (at the time of writing, anyway) by Open Office. This means that you can download clip-art for your presentation only to discover that they are perfectly useless. Or, you can take 10 minutes and look at what the bundles actually contains!

Read the rest of this entry »


One Does not Simply Rename Into C++

13/07/2010

Programming is in many ways more art than science—I do not want to start that debate in this post—in that you need more than mere functionality and correctness to have great code. For code to be great, it has, amongst other things, to be beautiful in that strange, vague, language-specific way.

As you know, this blog is C and C++-centric. Those are the two main languages I use both for personal and for professional projects. I resisted the transition from Pascal to C a long time, for many reasons. One was that at that time C compilers were flimsy, while we had a couple of really great Pascal compiler, such as Turbo Pascal—quite the upgrade from my Apple II’s USCD Pascal. Another was that I found C just ugly, clunky, and primitive; it was terse and inelegant. But over the years, I learnt to like the way C gives you pretty good control on what code is generated—not that you can predict right down to the assembly instructions what the compiler will generate; but you still have a very good idea if you understand even vaguely the underlying machine.

Read the rest of this entry »


Getting Documents Back From JPEG Scans

06/07/2010

We’re all looking for documentation, books, and papers. Sometimes we’re lucky, we find the pristine PDF, rendered fresh from a text processor or maybe LaTeX. Sometimes we’re not so lucky, the only thing we can find is a collection of JPEG images with high compression ratios.

Scans of text are not always easy to clean up, even when they’re well done to begin with, they may be compressed with JPEG using a (too) high compression ratio, leading to conspicuous artifacts. These artifacts must be cleaned-up before printing or binding together in a PDF.

Read the rest of this entry »


#defines are EVIL (part II)

29/06/2010

In a previous post I discussed some aspects of the C preprocessor (hereafter the CPP) that are evil. Turns out that this week, I had another problem related to a bad usage of the CPP. It didn’t take long to fix, but I can understand why it could be long to figure out.

And while the bug was caused by a careless use of the CPP, I think there’s a couple of simple things we can do to help avoid these.

Read the rest of this entry »


Upgrading to Lucid Lynx

23/06/2010

Every once in a while, if you’re not using a rolling release distro like, say, Arch Linux, you have to dist-upgrade your machines. Dist-upgrading consist in upgrading pretty much everything on your computer to the new version sets that correspond to the next distro. I just upgraded from Koala to Lynx.

And, well, …

Read the rest of this entry »