04/09/2009
Frank Mittelbach, Michel Goossens, Johannes Braams, David Carlisle, Chris Rowley — The LATEX Companion — 2nd ed, Addison Wesley, 2006, 1090 pp. ISBN 0-201-36299-6

(Buy at Amazon)
I should have told you about this book a long time ago. The LaTeX Companion is the definitive guide to LaTeX, ideal for anyone using it on a daily basis (or almost, as I do) or anyone wanting to learn LaTex. LaTeX is a complex and sophisticated mark-up language aimed at producing better typography for mathematics and scientific work—in which it totally succeeds. As for Linux, LaTeX (and TeX) comes in many distributions, some more geared toward the humanities, other for science, and still other for exquisite “art” typesetting.
A must read for graduate students.
*
* *
On the web:
Leave a Comment » |
Design, Life in the workplace, Mathematics, Suggested Reading, Zen | Tagged: LaTeX, typesetting, typography |
Permalink
Posted by Steven Pigeon
18/08/2009
Like me, you’re probably dealing with more than a single language at work and on a daily basis. If you’re from the US, it is not unlikely that you are speaking Spanish as well. Here, in Québec, we have English and french coexisting both at work and in our daily lives. Working at a computer, it means that I have two installed locales, one for the US Keyboard Layout and one for the Canada keyboard (formerly known as “Canadian French”) and I cycle between them constantly.

The fact that Gnome and Windows are smart enough to assign a keyboard locale per application or window allows me to chat in French in Xchat while coding using the US keyboard layout in emacs without explicitly switching the keyboard each time I switch windows. I’ve been doing this for so long I don’t even think of it. There are moment, though, where this model breaks a the seams.
Read the rest of this entry »
2 Comments |
hacks, Inoffensive Rant, Life in the workplace | Tagged: accents, ラーメン, Canada, Canada French, Canada French Keyboard, Cosmo, Cosmopolitan, diacritics, English, French, Hepburn romanization, Keyboard, keyboard layout, multilingual, ramen, romaji, romanization, Spanish, US keyboard |
Permalink
Posted by Steven Pigeon
11/08/2009
Not all computer cases are equally well designed. That, I’m sure, you know. The thing you may not know, is just how badly designed certain cases are. Not only are they hard to service, they can be detrimental to your hardware! I recently had to change the hard drive from my backup box and ended up changing the whole kit altogether because the old machine did not recognize the new 500GB hard drive. So I reused my old Compaq Presario 6400nx computer, which does recognize the 500GB hard drive, but makes it run very hot. I mean, very hot.

The new drive, although almost idling except for the nightly backup scripts and whatnots, got to 50°C. Even if 50°C is within the manufacturer’s expected operating parameters (10 to 55°C, or similar), that’s about 20°C more than my main workstation’s hard drive that runs around 30–35°C. That got me worried because it is well known that high drive temperature shortens its life considerably. So I decided to solve the problem using tie-wraps—no, not à la McGyver.
Read the rest of this entry »
2 Comments |
hacks, Life in the workplace, Zen | Tagged: 500GB, 80mm, ACPI, case, casing, compaq, compaq presario, computer, duct tape, fan, hard drive, hot, IDE, McGyver, presario, sensors, temperature, tie-wrap, tie-wraps |
Permalink
Posted by Steven Pigeon
21/07/2009
I once worked in a company specializing in embedded electronics for industrial applications. In one particular project, the device communicated through a RS-422 cable to the computer and seemed to return weird data once in a while, causing unwanted behavior in the control computer whose programming did not provide for this unexpected data. So I took upon myself to test the communication channel as it seemed that the on-board software was operating properly and did not contain serious bugs. I added a check-sum to the data packet and it turned out that some packets came in indeed corrupted despite the supposedly superior electrical characteristics of the RS-422 link.
After a few days’ work, I implemented the communication protocol that could detect and repair certain errors while reverting to a request to retransmit if the data was too damaged. I then started gathering statistics on error rate, number of retransmit, etc, and the spurious behavior on the controller’s side went away. My (metaphorically) pointy-haired boss opposed the modification because “we didn’t have any of these damn transmission errors until you put your fancy code in there“. Of course, this was an epic facepalm moment. I tried to explain that the errors have always been there, except that now they’re caught and repaired. Needless to say, it ended badly.

Notwithstanding this absurd episode, I kept using check-sum to validate data whenever no other layer of the protocol took care of transmission errors. So, this week, let us discuss check-sums and other error detection algorithms.
Read the rest of this entry »
1 Comment |
algorithms, bit twiddling, embedded programming, hacks, Life in the workplace, Mathematics, programming, theoretical computer science | Tagged: check-sum, check-sums, checksum, checksums, CRC, cyclical redundancy check, data packet, divisor polynomial, Don Knuth, error correction, error detection, ethernet, hash, ISBN, ISBN 10, ISBN 13, Knuth, Luhn, md5, mod, modulo, remainder, RS-232, RS-422, salt, searching, secure hashes, sha, SIN, social insurance number, sorting, sorting and sorting, The Art of Computer Programming, zip, zip file |
Permalink
Posted by Steven Pigeon
18/07/2009
The Linux Symposium ended on Friday (yesterday, that is) and I now post our paper. I’ve added it to my publication page but you can get the pdf of the paper as well as the slides in Open Office 3.0 format. The slides are really nothing fancy, but they’re to the point, I think.
I suppose the complete proceedings will appear sometimes soon on the Symposium’s Archive page. I think some of the links are broken.
*
* *
The Symposium is really not what I expected, and it’s all for the better. I thought I would get more “OpenSource or Die!!!1!” talks, but most of the talks were down-to-earth in a very sane way; some were technically deep, other left the real goodies out, but all were interesting in their own way—not all topics interested me, of course. I think I will also attend next year.
2 Comments |
hacks, Life in the workplace, Operating System |
Permalink
Posted by Steven Pigeon
16/07/2009
I wanted to attend to Load Balancing Using Free Software, by Mathieu Trudel, a special, last-minute added talk, but I couldn’t. Unfortunately his paper did not make it into the proceedings, so I’ll have to ask him if he got one or not.
I also got the proceedings and I must say that I am generally pleased with the breadth of subjects as well as the quality of the papers. Makes for good reading. It took me about an hour to read the abstracts and skim over to decide which I will be reading in depth.
*
* *
While we were discussing the symposium over coffee this morning, my friend Christopher ended up calling it the Linux synopsium for some reason known only to himself.
Leave a Comment » |
hacks, Life in the workplace, Operating System | Tagged: Linux, linux symposium, proceedings, symposium, synopsium |
Permalink
Posted by Steven Pigeon
15/07/2009
Did not attend yesterday (Day 2) either. However, this morning François-Denis delivered a most cromulent speech despite being quite nervous. There was a couple of very interesting talks, like the current state of kernel development, but I must say that the talk about GStreamer ported to the DaVinci DSP series was a bit disappointing as all the tasty technical details of using SIMD on the DSP for video processing were left out as proprietary—so much for Open Source!
Another thing that quite surprised me is that they had no coffee! How can hackers do anything without coffee? But to do justice to the organisators, they have been otherwise very concerned with their guests’ comfort: wireless access was very good, there were water pitchers in every room, and they were quite quick to intervene should some technical difficulty arise.
Leave a Comment » |
hacks, Life in the workplace, Operating System |
Permalink
Posted by Steven Pigeon
14/07/2009
Ensuring that one’s costumer base remains loyal, also known as lock-in, is an important part of many software and hardware manufacturers’ business plan. Recently, I came across an especially displeasing example of sneaky and subtle customer lock-in strategy from our friends at Microsoft.

Sneaky Cat is Sneaky
Read the rest of this entry »
3 Comments |
C, C99, Life in the workplace, Operating System, Portable Code, programming | Tagged: best practices, C Standard Library, Costumer Lock-in, legacy software, Lock-in, memcpy, memcpy_s, memmove, memmove_s, memory.h, sneaky, sneaky bastards, Standard libary, string.h, wd4996, Windows, _CRT_SECURE_DEPRECATE_MEMORY |
Permalink
Posted by Steven Pigeon
29/06/2009
I am not sure if you are old enough to remember the 1977 IBM movie Powers of Ten (trippy version, without narration) [also at the IMDB and wikipedia], but that’s a movie that sure put things in perspective. Thinking in terms of powers of ten helps me sort things out when I am considering a design problem. Thinking of the scale of a problem in terms of physical scale is a good way to assess its true importance for a project. Sometimes the problem is the one to solve, sometimes, it is not. It’s not because a problem is fun, enticing, or challenging, that it has to be solved optimally right away because, in the correct context, considering its true scale, it may not be as important as first thought.

Maybe comparing problems’ scales to powers of ten in the physical realm helps understanding where to put your efforts. So here are the different scales and what I think they should contain:
Read the rest of this entry »
1 Comment |
algorithms, assembly language, bit twiddling, CPU Architecture, data structures, Design, hacks, Instruction Sets, Life in the workplace, Object Oriented Programming, Operating System, Portable Code, programming, theoretical computer science, Zen | Tagged: 1977, atomic, bit twiddling, branch prediction, C Standard Library, class, classes, coding, compatibility, CPU, ecosystem, global, graphical user interface, GUI, IBM, instruction, instruction set, interoperability, macroscopic, mesoscopic, methods, micro-code, micro-instruction, micro-optimization, microscopic, molecular, networking, Object Oriented Programming, Operating System, optimization, out of order execution, POD, powers of ten, premature optimization, registers, speculative execution, string, subatomic, system |
Permalink
Posted by Steven Pigeon