15 Jun 2002 kai   » (Journeyer)

raph: Your last diary entry made me think: about asynchrony, about thinking in general, about speaking, about beeing drunk, and about other things.


When I printed out the CORBA 1.0 specs (the whole pile, sigh) I was pretty excited at first. Then the roll-back: CORBA makes it significantly easier to use "synchronous" rather then "asynchronous" requests. How stupid! (But it took me some time to realize this) "It pretends that method calls are really local" hits the nail on the head.

Regarding X there are two sources of trouble:

  • Many people don't have a remotely connected X server to test high-latency situations. So they can't test it out or may not even be aware of the problem.
  • Xlib is to blaim, too. It's too opaque. Examples: XDrawRect + XFillRect calls although there is no reason to provide both, no mask for all events when calling XCheckEvents, ... But I don't know why few toolkits decided to support multiple Displays, hmm. (It's actually funny to have your app's windows pop up on different X terminals, mice-handling becomes more difficult, though.)

Whether an operation is asynchronous depends on the user's context a little. (A RT coder may draw the line at a much lower latency then I, as a GUI programmer, would.)
Other cases where fake synchrony (or even fake asynchrony) at work:

  • gethostbyname() (a really ugly one)
  • stat() (the ugly part beeing that it's not obvious)
  • all non-memory i/o read/write ops.
  • some aio implementations are not async? (or only ill-minded rumor ?)
(Then again, I run a PCI+IDE+VIA system, which I couldn't trust in full-duplex, so I alone am to blame)

Some quick thought's: If the underlying operation is asynchronous, the primary interface should expose this asynchrony. If a call may fail, it can provide an error code. Building optional synchronous calls on top allows people to use the library more readily. Providing good documentation educates people (empowerment!), only providing synchronous calls for asynchronous operations dumbs them down. (sorry for the rant)


Maybe allow people to "hide" entries from the "recent log" compiled for them, where they still show up on the main page and for everybody else in the recent log, of course. I'm not sure whether the recent incidents make a stronger move necessary, but it's easy to say as I'm not involved (and I got a mouse with scroll wheel, hehe). There are surely things that could be improved about certification, but I doubt "cert inflation" is the problem. But I'll stop rambling for now :)

Latest blog entries     Older blog 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!