Older blog entries for bernhard (starting at number 4)

This afternoon, I went to the meeting of the Hamburg Linux User's Group. Since it didn't rain for a change, I went by bike. This was the first time I attended any of their meetings, so I had no idea what to expect, but it turned out to be interesting.

It did rain, of course, when I left, but with appropriate rain gear this wasn't much of a problem. As they say here in northern Germany, there's no such thing as bad weather, only inappropriate clothing.

Work on Sketch's documentation seems to be progressing quite nicely. It already covers much more than my own rather sparse documents.

The docs are written by two French teachers who need it for their students, so they're written in French, but they're going to be translated into English when they're finished. Those two years of French as a third foreign language in school were not wasted after all...

Finally, Sketch was mentioned in an Slashdot article.

The bug in the CMX filter I found a few days ago turns out to be a bug in the file itself, as far as I can tell. CorelDraw behaves just like Sketch in this particular case.

Worked a little more on the Sketch FAQ list. To play around a little more with XML, I converted what I had written so far to XML and also wrote a little python script that converts this into a more suitable format for inclusion on the webpage and also takes care of numbering the faqs and keeping cross references between them straight.

Sketch's tree view is actually usable now, although there's still quite bit of work to do. It now reflects the current selection in the current document and can be used to select and unselect objects. This makes it much easier to select objects contained in groups, for instance. Unfortunately, it also means that it's easy to create selections that impossible with the normal interface in the canvas window and that may of course trigger some sleeping bugs.

The german keyboard layout sucks. At least when it comes to programming. I was reminded of this yesterday night when I booted into windows and couldn't use the left windows key as a second AltGr key as I can under X thanks to an xmodmap hack.

On a German keyboard, {, [, ], } and \ are only reachable by holding AltGr, which replaces the right Alt key of the American layout, and pressing 7, 8, 9, 0 and ß (right next to 0) respectively. You either have to twist your right hand to reach both keys at the same time with one hand or hold AltGr with the right and press the other key, which is normally pressed with the right hand as well, with the left. Urgh!

This makes me wonder whether any of the regulations for an ergonomic workplace has something to say about keyboard layouts. The Bildschirmarbeitsverordnung[1], for instance, which is relevant for most computer work places here in Germany doesn't make any statements about the positions of the keys on the keyboard at all, although it talks about e.g. their form and the legibility of their labels.

[1] Mark Twain would have loved this word, although he probably would have liked Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz even more.

It's been raining, but what would you expect in Hamburg at his time of the year. Not that it's really better in other seasons, although it tends to rain a bit less often in the summer.

This is the right weather to sit indoors with a nice cup of tea and look out of the window and watch the people hasten by hunched up under their umbrellas. ;-)

Finally started work on more detailed change messages in Sketch's document and object classes. The goal is to make updating views like the tree view more efficient by letting them know which object's actually changed and therefore which branches of their tree structure have to be updated.

To test this I also began to implement the tree view in earnest. It seems to work quite well so far, but it's not finished yet.

Found a buglet in the CMX import Filter. I'm not sure whether it's really a bug in the filter; it could just be that the CMX file is incorrect. Unfortunately, Corel's documentation mostly talks about 32bit CMX and this is a 16bit file (not to mention that the docs are incomplete and sometimes wrong and that CMX sucks) and my filter does the right thing here according to the docs. I guess I'll have to boot windows if I really want to investigate this.

More importantly, I spent some time thinking a bit again about gradient geometry representations in Sketch. Currently, positions of e.g. the center points of radial gradients are stored relative to the bounding box of the object. This has the great advantage that the same values can be used to describe the 'same' gradient geometry for several different objects at once, which is important for styles, i.e. properties shared by several objects. The disadvantage of this representation is that transformations become a bit awkward because one has to effectively convert the relative coordinates to absolute coordinates, apply the transformation and convert to the new bounding box again.

There are several approaches that at least solve some of the problems, but I haven't found the right solution yet.

I also did some more cleanup in Sketch's code. If you read the ChangeLog for the last few days, it seems that I remove more code than I add, but getting rid of old cruft and kludges is a good thing.

Interesting link of the day: A parable by Edsger W. Dijkstra (found on comp.lang.python)

Skimmed through the new SVG WD that came out a few days ago (SVG, Scalable Vector Graphics, is the w3c's XML-based vector graphics format for the web). An interesting new development is that there are now two variants of SVG, Stylable SVG and Exchange SVG.

Stylable SVG is intended for the web environment and uses style sheets for the rendering properties like e.g. fill colors. For stand-alone programs like Sketch this is quite unfortunate because you need essentially the entire stylesheet engine to be able to import an SVG file properly.

Exchange SVG is targeted at interoperability and addresses exactly this problem by specifying the rendering properties as normal XML attributes so it's a lot easier to import.

I haven't looked at this closely yet, but it sounds like a good idea.

Interesting link of the day: Wir übernehmen SuSE ("We take over SuSE"; the page is in German).

Apparently someone is unsatisfied with SuSE's distribution and wants create an organization that aquires 51% of the shares after SuSE's IPO to make them abandon their own distribution and support debian instead.

This sounds like a joke but it doesn't look like it, although it seems highly unlikely to that they have a chance to succeed.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!