Older blog entries for Ankh (starting at number 138)

This week we had the W3C 10th Birthday Party in Boston. The BBC filmed us (amongst many others) so I hear there was a brief glimpse of the back of me on the news. Fame at last. Next to top the music charts! Well, OK, maybe not.

Ten years ago seems a long time now, and the first North American Web conference in that crazy old hotel in Chicago with such frenetic excitement is a world away.

During the day itself I often found myself thinking of my former friend and boss at SoftQuad, Yuri Rubinsky - he would have been so delighted in so much that happened with the Web and with XML, and especially with all the progress on accessibility and internationaliszation, although perhaps sad that so many organizations don't quite seem to understand it all.


raph, I suspect xterm (or libXft) is expecting an outline to convolve or do analytical anti-aliasing with, not a greyscale bitmap. The old X server-side font code only ever worked with 1-bit-deep fonts unfortunately. NeWS used to support colour and greyscale Type 3 PostScript fonts, but if you used them with xterm much weirdness ensued! It'd be nice to see them work, though.

nymia, every now and again I try to post something about writing efficient code, to try and remind people that in fact it matters. In some ways my Linux/Gnome desktop feels slower than a Sunview system from over a decade ago (although in other ways it's a huge amount faster of course). Sun worked hard on speeding up their (kernel-based) window system (SunView, predating X or NeWS), and some of the hacks seemed ugly -- not giving a window a mouse event immediately, in case the mouse was just passing over the window; compiling several unrelated applications together into a single program that looked at argv[0] because people usually ran them all, and it increased the amount of shared code, lots of ugliness :-) But sometimes some ugliness gives a big benefit. And sometimes it's the ugliness that makes the desktop sluggish, when people code poorly.

Sometimes a perl program is faster than a C program, either because it uses a better algorithm or because it's using code built-in to Perl and heavily optimised, instead of one-off C code.

badvogato, I have only lived in Canada for 15 years or so, and I don't know coulianou (should I?). I had no idea there was a homoerotic cult around Osama Ben Laden though.

Speaking of us gays reminds me - although more heterosexual people have AIDS than gays these days - this news could be good news for AIDS and HIV sufferers. It doesn't use an expensive US-developed drug, so maybe that's why it wasn't on all the US news media?? Or maybe it's because it's not yet been reported by a reliable and trusted source? Chicken and egg??

Next week I'm away for the World Wide Web Consortium's tenth birthday. It doesn't feel like ten years ago that I heard the news. Hmm, actually, thinking about it, it also feels a huge age ago. I was surrounded by what Tim Bray called Internet Fairy Dust, the hype around the early Web, at the time, and we were working on HoTMetaL, one of the first commercial products for the Web. At the time it was controversial that we made a working version for free download; it doesn't sound very controversial today!

Oops, Galeon crashed when i was writing this. Interestingly, it recovered about half of the diary entry I had written - up to the point where I first hit preview. The crash recovery in Galeon is one of those features that keeps me using this browser - it doesn't crash often, but memory is finite and so is a laptop's battery life.

If I get a new sound card (e.g. an audigy 2) that supports 6 channel audio (5+1 I think) can I use my Monsoon 4-channel speakers, I wonder? The Monsoon speakers were made by Sonigistix, but they seem to have gone out of business and teh speakers are now sold by Eastech, who have a less helpful Web site - although one that works in browsers other than IE, a definite plus for we who use Linux! I have two stereo jacks to plug in to the sound card, going back to the amplifier and thence to four speakers and a woofer.

badvogato, yes, Nick Mountfort's writing (Twisty little passages [Amazon referrer link]) is a lot of fun, as is The New Media Reader [Amazon referrer link]. Nick is fun too, if you get the chance to meet him or hear him speak. We were both at a conference in Santa Barbara a while ago to speak about and discus the challenges facing those involved in trying to archive interactive fiction. They are significant challenges.

MichaelCrawford You're very welcome :-) and after reading yuor diary I have applied for a google adsense account for my pictures scanned from old books. I get maybe 20,000 HTTP hits per day from 1,700 to 2,000 distinct hosts.

Beware that some print publishers think that anyone published on the Web can't be worth printing. That's more so in art and humanities than techical writing I think, but it certainly seems to apply to fiction.

sdodji, here are pictures of Ankh (me) wearing a hat and speaking (in bare feet) at a former Guadec. I should put up a picture of my orange hat with the flashing lights!

New toy: a USB external hard drive. I didn't get the fastest one because this one had an ethernet port, but it turned out that it needs a special driver. They do provide a kernel for Mandrake Linux (which is what I use) but I've ended up sticking it directly on the USB port, so I might as well have got a slightly cheaper drive with more cache. Ah the benefits of hindsight. I wonder also if they've contributed their source code and if it's GPL'd, but I haven't checked.

Also been playing with Gnome 2.8 now it's in Mandrake Cooker (thanks Fred!). I don't have much time to spend compiling stuff or doing system administration, so I give back a little of my time back by helping beta-test the Mandrake distributions. I'd actually give more if I could post messages to the mailing list, but that seems to be a problem with the dns server for the holoweb computer my brother and I share, and he's working on fixing it.

One of the reasons I got involved in Gnome originally was that it seemed to have a greater focus on graphic design and typography than other desktops at that time. I'm pleased to see Raph thinking about font editing again! Gill was the application that persuaded me, even if it wasn't in a useable state at the time as far as I could tell!

yeupou worries about Inkscape and (as I read the post, after boiling it until there is almost nothing left) whether advertising affects people. It does, which is why there's such a large advertising industry in the world today. Control of the media is something some politicians ennjoy, too, of course, whether through totalitarianism or through shared goals with the owners of Fo... er, television channels. :-)

Uraeus, I recognise those borders on your Web page! :-)

And I at least don't feel violated by it, although I obviously can't speak for our organisation as a whole.

We'd like everyone to use valid markup. It'd be a good start if more people simply used well-formed markup. Some of the earlier Web browsers indicated when the user was looking at a page containing syntax errors, but it was not a popular feature.

MichaelCrawford, I read your essay on Living with Schizoaffective Disorder. I applaud you for writing something that must have been so difficult. I'd like to hope that A Beautiful Mind helped a lot of people to let go of some prejudices, but maybe that's hoping too much.

chrisme - early on using Advogato, I posted an article to the rong site altogether - there were two sites using mod_virgule, combined with a bug in the Web browser I was using whereby window titles didn't always get updated properly or something, and the artcle for advogato went instead to the gender and sexual studies academic site. I've since been more cautious!

On people not reading it to the end: It might help to have a clearer indication of how many more pages there are to go, "page 6 of 9" or something: in printed books we have tactile feedack when e've nearly finished, but in a series of separate HTML documents we don't even get a scrollbar.

This leads me to a note on relationships between and within documents.

An early attempt to let authors give the necessary information to user agents ("this is a chapter of this book, here's the table of contents, here's the next and previous chapters) was implemented by SCO for their online help (back when SCO did technical work, I suppose) and partly in Lynx. But it never really took off.

Relationships between documents are useful and important, but neither the simple typed links of HTML (link and a elements with rel and tt>rev</tt> attributes) nor the more powerful RDF havereally taken off to represent them.

I greatly lament the lack of progress in Web browsers in the past decade. Maybe if Mozilla gets more popular we'll see some competition, although what I fear most is... no, I'll leave that one unsaid. After all, I need some sleep!

I was reminded today by something a deviant art person wrote (and no, I'm not Ankh there, someone else got it) that I haven't posted for a while a link to the Simple Path to Live By. I try to follow it, but it's very very hard to live up to such a difficult standard.

My piano is back in tune. I am thikning of getting a Yamaha electronic keyoard, maybe the DGX505 or maybe the S90, does anyone have recommendations? I want to play with some music software, preferably on Linux of course!

raph, will pictures of money do? (there's a larger version linked from the parent page too).

The scans of Centaur look cool; I did briefly try your code, but then went on a trip to working group meetings and forgot! No surprise that you got a lot of interest from the typophiles. How to make money from type design is a major part of most type designers' lives as far as I can tell. They want things like food, shelter for the Mac, and sometimes even shoes!

A week of all-day technical Working Group meetings can be pretty tiring.

ncm - your article didn't mention which programming language to use, and although it's clear the approach I posted isn't what you were thinking of, it doesn't depend on any external libraries. It doesn't need to: dates and times are first-class native datatypes in XPath 2 and hence XQuery.

Date measurement algorithms, like binary search functions, are things that many (most?) people find difficult, and there's a good reason to encourage people to use libraries.

ncm, choice of programming language makes a big difference.

let $second := xdt:dayTimeDuration("P1S"), $time := xs:dateTime("2004-02-29T23:59:59") return $second + $time

works in XQuery (e.g. try it in Saxon).

Admittedly this doesn't have the lexical form you wanted for input or output, but it shows that some problems become a lot easier when one switches language.

It's also pretty easy in Perl :-)

OK, off to California for yet another business trip. Oracle has two buildings shaped like disk drives (deliberately so) in Redwood Shores. Possibly a trip to Fry's with a friend from Italy who will also be coming to the meeting.

We're working on a review of the latest drafts of XML Query and associated specifications; there were new public drafts just posted. XML Query seems at first to be a huge language, but in fact it's probably comparable to C, with the function library being compared to something like the C/posix libraries. Unlike C, though, it's declarative, and has XML items as fundamental data types. You can include XML fragments as literal constants too, of course.

AlanHorkan, I really liked the Inkscape calligraphy screenshot you posted. I'll have to try it when I get a chance to upgrade Inkscape, although I don't have a tablet and I suspect it's needed. If you like such things you can see some of my own calligraphy using more traditional media. :-)

pipeman yes, MikeLowe has been posting links to a commerce site here for some time, using a number of different usernames. I've marked him as uninteresting "1" and I think if enough people do that, maybe it will help.

Probably I (we) should take the time to complain to the ISP hosting the Web site. I get so much spam in my inbox (it's a pain that my email address at work is very public) that I usually only follow up two or three a week, mostly ebay or paypal scams.

haruspex *laugh*, no, that's not what I meant at all! It's a tiny detail, but what's interesting is to think about whether there comes a point at which tiny details don't matter, or if they all add up. It's rare that I've seen more than a megabyte or so of savings in a program by reordering structs, and usually there are larger gains to be had elsewhere. Those who start out not thinking about architectural details and code without worrying about memory will get bitten, though.

So a minor point, and all I can say is I was bored :-)

In order to declare a C struct sensibly you need to know a little about alignment and machine architecture, at least if you want to avoid objects with holes in them. Does it matter? Programs that use more memory than they need to run slower simply because of the paging overhead. The case where all programs fit into main memory seems increasingly rare on an out-of-the-box Linux system, and even minimalist ubergeek systems like NetBSD run on computers with finite amounts of memory, typically with more disk storage space than memory. So application memory competed with the disk block buffer cache. Every little matters at least a little.

At one time there used to be some commercial software that stripped away duplicate copies of C++ class dispatch tables generated by inefficient C++ compilers, saving (they claimed) about 25% of executable space and boosting startup time.

I mention this for no particular reason except that I think it's all too easy to fall into the trap of thinking that memory is cheap and mempry usage unimportant. Most profilers won't help you detect slowdowns caused by wasted space.

deekayan, yes, Mandrake is a Gnome release behind; it's not so much because of profitability but because the Gnome releases come out just after the Mandrake Linux release freezes. For my part it'd be worth delaying a Mandrake release by a month or so, but there's an obvious hit in revenue if they do that, not just for Mandrake but also for resellers.

anderson, what your diary entry didn't indicate to me was, why would i want to join DotNode? Saying that it's like Orkut isn't a strong incentive: once one has joined, orkut loses interest, or so it seems to me. Mostly becuase you can't link to pages within it. It's not bloggable.

Kerry, good luck! :-) :-)

On cross-platform development, I've always been interested in the idea of control objects (widgets, knobs, etc) that hook up to (conceptually) remote interfaces. I suppose a modern way to say it would be a collection of control/manipulation/display obects that use RPC or Web Services to connect to an interface, and that also are connected to each other by ThingLab-style constraints.

Then you get a very distributed application indeed, where the user is in control -- it's a way to open up a model-view-controller architecture.

In terms of toolkits, of course I always liked The NeWS Toolkit, or did after I'd started to get somewhere with it, and in away it shares some of this design: you could send a method to an object without needing to know where the object lived, at least in principle, whether in the client part of your application or in some display server somewhere. But it wasn't exactly cross-platform :-)

Haruspex, I wonder how many other active Advogatoers are in Toronto?

Someone asked me a question about refactoring code today so I thought I'd share part of my reply.

He was thinking of replacing lots of special-purpose functions (hasCar, hasTractor, hasTruck) with a pair, hasVehicle and getVehicle. This leads to:

if (hasVehicle(Marvin)) {
    theVehicle = getVehicle(Marvin);
    drive(theVehivle); // or whatever

A better idiom, though, might be

theVehicle = getVehicle(Marvin);
if (theVehicle) {

This avoids a number of problems. One is that it can be made thread safe, whereas the first idiom has a race condition. Another is that it's more efficient. Another is that the resulting code is slightly simpler, easier to read and understand, and hence less error-prone.

It does have the down side that tehVehicle has scope outside the test, so you can improve it (in C) with

    sometype theVehicle;

    /* above code goes here */

In C++, Perl and other languages there are other idioms for short-lived local variables, of course.

Although my friend's question wasn't actually about vehicles, I should also note that in choosing a new name for refactored code you need to choose a name whose meaning is obvious from the context in which it's used, so that people don't have to go and read the documentation for your function whenever it's called. Not that documentation is a bad thing, but only that program code that's easier to understand is a good thing.

129 older entries...

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!