Interwoven Alignment Preambles

Thomas, that is a fine rant, but I look in vain for the answer to the question of whether you could get work done after spending 15 minutes learning git instead of cursing it for not having the same command line arguments as cvs. I am sure that with counseling you could get over typing “–help” instead of “-h”.

One of my favourite error messages in from TeX. Stuff this into TeX and look in the log:

\halign{#\global\futurelet\foo\relax\cr\cr}
\halign{#\cr\foo}

It will tell you that “Interwoven alignment preambles are not allowed”. A bit cryptic, you might say, but TeX comes with a manual, i.e., The TeXbook which helpfully explains

If you have been so devious as to get this message, you will understand it, and you deserve no sympathy.

It’s a Python Bug

I am not perfect. Therefore the code I write is not perfect. Every once in a (rare!) while I have been known to write code that people of evil mind could use. I deserve blame for that. I do not deserve this kind of blame.

What we have here is a Python bug: when embedding Python, we (and half a dozen other applications) use PySys_SetArgv according to spec. Python, in its wisdom, uses that as a clue to start loading python files in unexpected places. The right thing to do would be to fix Python as well as any code that might depend on the bug. That was not done.

Somehow it was chosen instead to file this against Gnumeric and half a dozen other applications. As a design error no less. That is simply offensive! Let us hope no problem is found in libc’s malloc, because dealing with bug reports for all users of that would take some effort.

Why does Python get this kind of reputation protection? They screwed up, so let them take the blame and have them fix the bug. If that breaks other applications, well so be it – the Python people will eloquently explain that to their community.

The Gtk+ File Chooser Dialog

Whenever I update my OpenSuSE installation, the Gtk+ File Chooser Dialog get worse. This is how it looks for me on OpenSuSE 11.1 when used from Gnumeric. It looks more or less the same from Gedit and Mozilla.

Gtk+ File Chooser Dialog
Gtk+ File Chooser Dialog

I hope I am not breaking new ground when I claim that the purpose of the file chooser is to help the user choose a file. How is that going to happen when the area used for files is less than the size of one button?

I really hope other people are seeing something sane, but this is with a vanilla install, I think. (Note: I mention OpenSuSE 11.1 for reference, not as an assignment of blame.)

OpenSuSE 11.1 First Impressions

I have been running OpenSuSE 11.1 for about a week now. My first impression is that it feels nicer, but that there are severe setbacks that slipped through QA.

  • It seems to boot faster than 11.0. I was never really bothered by the boot time, so I do not have concrete measurements.
  • The 30000-wakeups-per-second bug is gone! Yeah!
  • It’s still Beagle-infested, so everything is dog slow out of the box. I am having a hard time thinking anyone with a laptop really likes to have Beagle on it. Oh well, I simply use rpm to erase anything related to beagle and install Gnu’s locate.
  • Printing on my hplj-3330 works, but I had to force it to use a non-default driver. That’s not a big deal for me, but it fails the Grandma-test.
  • I plug in my camera. I am asked if I want to import photos to f-spot. I do. f-spot then starts but tells me “Could not lock device”. A bit of poking around reveals that gvfsd-gphoto2 needs to be killed for f-spot to work.
  • The Cairo shipped, 1.8.0, is old and has a badly-broken pdf backend. This evidently is known in Cairo land. I wouldn’t expect anything that prints using gtk+ to work right. Also, since Gnumeric’s tests fail, I need to work around that before I can do releases again.

Licensed to Drive

Right now I seem to be licensed to drive. So much so, in fact, that I have six driver’s licenses:

  • my expiring license
  • an interim license I got when I renewed
  • a new license with a mistake in the address
  • a new interim license
  • a new and correct license
  • my trusty old Danish license, good for another three decades

Time to send most of those through the shredder…

Nationalization

It is a wild ride on Wall Street these days.  In case you missed it, the United States have taken over control of certain large financial institutions: Bear Stearns and Co., Freddie Mac, Fannie Mae, and now AIG.  These institutions have been nationalized.

Now go look at news for the word “nationalized”. You will find it for AFP [France] and The Globe and Mail [Canada], for example. You will not find it for Barrons [USA] or Reuters [USA].

It is clearly a hard word for USA based media to use when discussing things that happen the United States. The same media would use that same word in a jiffy if they were describing events in, say, France. (If you go a little further down the list of Google hits, you will find the word, of course. Seeking Alpha has it, for example, although it seems more like a provocation of its readership.)

The take-home message is that US news is heavily censored — not Government censored, but self-censored. Another notable subject that gets this treatment is news from the Middle East.

Suggestion: make sure you do not get all your news from US sources.

Beijing, August 2008

Security at this year’s Olympic Games in Beijing was impressive, at least to my five-year old son, _L_: one of the first things he built with his limited supply of Lego was a security checkpoint. I am less impressed.

It started in the airport. They wanted to scan all carry-on luggage upon arrival. I have no idea what they were looking for, but the scanning took place after people collected their checked luggage and had had a long time to move things back and forth thus making the scan effectively optional and thus pointless.

All subway entrances and all sporting venues had checks too, so authorities must have hired and trained thousands of new security people. All these people have no real experience and are constrained by having to maintain the flow of people uninterrupted. Just like when TSA was created, that makes for lousy security.

For example, when entering the venue for the US-China basketball game — where the US President was expected to attend — I arrive with my bag and camera. The bag goes into a scanner and gets hand-checked afterwards. Apart from a lot of fuss over an epipen, nothing happens. My camera comes with me through the metal detector which, of course, beeps. I get hand scanned. In other words, I just walked through with three pounds of unscanned equipment that looks like a camera! (It happens to be a camera, but how could they know?) That same equipment I later pointed at George and got a few pictures of him looking rather silly. Using the same tickets I could have walked through several times, so the size of a camera is not a limitation.

At another venue I accidentally brought a bottle of water with me. As you may know, water is a substance that is dangerous at sporting events, but not in subways. When found at a security checkpoint for a sporting venue it will be confiscated, but as a side effect, the security officer who found it will be so happy with himself that nothing else you carry will be checked. That is humanly understandable and shows that checking for liquids in the first place probably lowers the level of security. There are simply too many false positives, i.e., cases where harmless liquids are detected. Think of that the next time you wait in line at the airport.

Also, I have noticed — both in Beijing and in airports around the world — that when I put my camera equipment into my backpack, the backpack gets hand searched. I am fairly certain that it is because the operator of the scanner just sees a pile of stuff that he cannot identify, so a hand check is in order. The backpack I use is nothing special, but happens to have a lot of compartments. Generally, when the backpack is searched they miss half the compartments unless I feel like telling them.

This is all from passive observation while minding my own business. I am not trying to probe, let alone evade, security anywhere.

Conclusion: since stuff is not blowing up left and right, either the bad guys (a) are not trying; (b) are not thinking like I do; or (c) get caught or scared off by less visible parts of the security apparatus.

Applications

I my optics, computers are here to get certain jobs done. That means it is all about applications, not eye candy: bouncing icons, themes, semi-transparent windows. My real-life work desk is not transparent, and I do not use semi-transparent paper.

Producing large applications is a lot of work, so when I write a piece of (hopefully) well-designed code, I want that code to stay written. I do not want next week’s GTK+ deprecation to come along and, effectively, cause my code to bitrot. (and I really do not want to write two different pieces of code for the job: one for “old” GTK+ and one for “new” GTK+.)

Moving from GTK+ 1.x to GTK+ 2.x was painful. I do not need anything like that again. Talks about breaking API every 3-4 years and advice like “Stay up to date, adapt your application code early” (and, by implication, often) is a clear indication that keeping applications running is likely to mean spending much time cleaning up after someone with an attention span of a few years.

Maintaining code like GTK+ is not hard. Calling it hard because you want to play with some new toy is deceiving.  Maintaining can be tedious, but if you do not want to maintain, please do not start writing new GTK+ code. You will surely abandon that prematurely too, so you have no business writing library code. Instead, go write a useful application: if you abandon that, I probably do not have to care.

tab = lose

The best thing about tabs that I can think of is that it will keep certain people from doing more harmful things like changing the gtk+ api for no good reason.

(The header line is a translation from Danish into English.)