Older blog entries for bernhard (starting at number 7)

On wednesday, I announced the new Sketch user documentation that Yves Ceccone and Frédéric Toussaint are working on. What they have so far is already better than what Sketch currently has to offer in some places. It also includes some beautiful cliparts in an objects and a typography section.

The documentation is in French because it's going to be used with young students in France. One of the reasons for the announcement was that we need to translate this into English and it seems we have found someone for this job.

Yesterday, I made another preview release for Sketch 0.6.6. There were more last minute changes than I expected, otherwise I might have released 0.6.6 immediately. On the other hand, the Spanish translations aren't updated yet.

Today, I made a new development release, 0.7.6. One 'new' feature is the reenabled support for PseudoColor visuals. François will like this.

Found and fixed a glaring bug in Sketch today. AAAARRRGGGHHH! If anybody wants to reproduce it: Assign an axial gradient to two objects at the same time and then transform one of the objects. The other object's gradient will also be transformed. You may have to force a redraw.

Yesterday, I learned about a newly introduced bug of the "brown paperbag" variety in the prerelease that would break loading of raster images on a lot of installations. I'm glad I did make a prerelease.

Google finally seems to have found Sketch's new home and "feeling lucky" again takes you directly to Sketch's homepage. Interestingly enough, it only works in the normal search engine, not in linux one, which takes you to the LinuxFocus article.

A busy week in Sketch development. The amount of email I get on the Sketch email address is increasing, but unfortunately the amount of spam also.

I'm preparing a new stable release and on Friday I finally managed to get a prerelease out. I wanted to do that a week ago, but somehow several users started sending bug reports and suggestions just then and I postponed it to get those in. I hope to release 0.6.6 in a week.

The current issue of c't, perhaps the world's best computer magazine and IMO certainly the best in German, has been out for a week now and the next is due in another and I've only a few of all those interesting articles so far. How am I supposed to keep up with that? ;-)

About two and a half years ago c't switched from a monthly schedule to a fortnightly one, partly to make the issues of "Germany's thickest Men's Magazine" thinner again. Well, nice try. The current issue is just as thick as the slimmer issues in those days, but it's still a few millimeters short compared to the December or CeBIT (April) issues.

One of the articles I did read is the followup article about the quality of MP3s. The gist is that MP3s with a sufficiently high data rate, which means 256kbit/s or better, and created with a good encoder are indistinguishable from audio CDs, even to the ears of music professionals.

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!