Older blog entries for movement (starting at number 35)

12 Sep 2002 (updated 12 Sep 2002 at 12:31 UTC) »
janschrage: Your attitude reminds me of those musicians using the hackneyed old line "We just make music for ourselves, if anyone else likes it, that's a bonus" :)

Garbage collection

The first thing you learn about garbage collection is that is fiendishly difficult to derive any useful analyses. Every system ends up being so workload-dependent that it becomes practically impossible to round out any design guidelines ("it's the cache, stupid" is still pretty much as far as the field has got). Every system has a worst case, and these worst cases have a nasty tendency to actually occur in real systems.

Richard Jones' book is an excellent introduction, although perhaps a little dated now. For example, there is little discussion of latency issues in threaded systems, which is where the "stop the world" approach has its major failing. Whilst the problem shares some characteristics with the distributed GC, discussed in a chapter by Lins in the book, it is also a distinct scenario.

Unfortunately the general awareness of GC issues is drastically poor. People associate garbage collection with poor performance and focus on just one aspect of its runtime performance, brushing over the fact that the issues are nowhere near that clear-cut (Linus is certainly correct that cache misses due to lazy allocation can be a problem; however it is not the single defining characteristic of garbage collection's runtime behaviour - there are a lot more factors, both negative and positive, on how a runtime GC system behaves).

Worse, this sort of attitude is still prevalent, which misses the point so badly I don't know where to start refuting it. This sounds like the same reasoning that led somebody to ask how to write a KDE application in assembly to me. jwz says it rather succinctly I think : " Most of the time, throwing memory and CPU at the problem is still cheaper than throwing programmer time at the problem, even when you multiply the CPUs/memory by the number of users". It bears thinking about.

I think inevitably we will see a part-hardware solution to the GC problem; what form it might take, I don't know ;)

Addendum: I wish Advogato wouldn't replace diary entries in recent log. Its notion of when a day begins and ends does not tally with mine ...

Finally got sick of the old mess and re-wrote the Qt autoconfiscation I use in LyX and oprofile. Now I dumped all the KDE-1 derived "second guess the user" crap, it's much simpler and hopefully far more robust, even when dealing with bogosities like systems where the library is -lqt2 (derr). The LyX Qt port is picking up its pace a little bit now.

Bram, I must confess to being a little bemused by your tirade against link(2). Your suggested improvement smacks of policy to me. I can think of numerous scenarios where losing the ability to recover the information EEXIST gives you would be a major PITA. In contrast, if you want the idempotency you suggest, it's a 3-second job to make a wrapper. link(2) may not be that great (lying on NFS) but what you describe is definitely not a flaw.

Working some more on the oprofile 2.5 patch. Slow going but hopefully I'll be able to come up with something worthy, and eventually drop all the horrible dreck in the module.

Speaking of which, Red Hat have decided that it is vital for them to remove the export of sys_call_table. Which means the ia64 users are going to have to compile up their own kernels since apparently oprofile is only going to be in the Red Hat kernel on x86. Ah well.

chakie: QSocketNotifier is working fine on UNIX, but I have to keep an eye on our nascent Windows port too (oh, and the behaviour you mention is entirely undocumented, and thus, cannot be relied upon even on UNIX).

And the mailing list has been worse than useless; most of my reports/questions are simply ignored. The list is filled with people learning how to build shared libraries, learning C++, etc :

Subject: Conversion Tool .ui -> .bmp ?
Subject: does QFileDialog work ???

Eventually I will take the time to make simple test cases for each of these problems, but it requires me to build latest Qt version to double check they still exist (and I do not have the diskspace), and it's very time-consuming. In the meantime, I'm having to fire-fight these problems, instead of doing some real hacking :(

Been spending far too long dealing with Qt problems and weirdness in the LyX Qt port. Here's a random selection of some of the bugs I've been dealing with :

  • WType_Modal is being ignored for QListBox (and you have to derive - setWFlags() is protected)
  • For some reason Qt is adding lots of blank entries to the QListBox for no reason
  • There is no simple way to handle single-click QListBox style widgets
  • QWidgetStack is not performing geometry management vertically at all
  • QListBox geometry management is broken
  • QDialogs cannot be WDestructiveClose (fixed in 3.0.5)
  • QTextViews in tabs do not manage their natural geometry properly.
  • QMenuBar::activated() isn't working in Qt 3
  • There is no way to get server DPI without having a widget/QPaintDevice
  • The menu stuff uses an undocumented internal class in its API
  • Qt's keyboard handling is seriously awkward
  • QAction cannot handle sequences (fixed in 3.1beta)
  • You cannot distinguish between Qt::Key_A and Qt::Key_a (but can with Agrave vs. agrave)
  • image rotation clips wrongly and fills with white instead of transparent pixels
  • image handling makes dealing with b/w vs. colour etc. very awkward
  • Qt provides no way to integrate select() handling
  • Removing all items from a menubar incurs updates even with setUpdatesEnabled(false)

I could go on. It's starting to prove a serious hindrance. My hope that moving away from xforms would reduce the time spent dealing with toolkit b0rkenness is looking a bit silly now. Add onto this all the annoying but ultimately not too painful bogosities of moc and it's making me weep.

I really need somebody with real Qt battle scars to help out with this. Kalle, come back ! All is forgiven (or forsaken).

-lilo- [Global Notice] Hi all. On behalf of PDPC and freenode, I wanted to let you know that, after these messages, we are discontinuing the global fundraising notices and wallops. As you may know, freenode (formerly OPN) is now a service of Peer-Directed Projects Center.
-lilo- [Global Notice] As a new nonprofit, PDPC is in need of funding, but with the unhappiness expressed at these fundraising notices, we've decided it's best to retire them in favor of less intrusive fundraising methods.
-lilo- [Global Notice] On behalf of the board of PDPC and the staff of freenode, we apologize sincerely to anyone who has been offended by the notices, and refer you to our website (http://freenode.info/) if you should wish to contribute. Thanks for your attention and have a good day.

That's good to hear. Hopefully everybody can forget all about this now and we can get back to swapping MP3's, er, I mean hacking.

Seems to be all the rage to be modest about your certification. Alas the descriptions are a little vague. Do I earn a journeyer certification ? I'm the primary author of a project I consider useful, and I hack on another, and then I have lots of bits and pieces. Am I a competent programmer ? I don't know.

The fact is rather a large number of certifications on Advogato are phony. I'm not sure it really matters though.

Got a dressing-down from wli about my thoroughly absent knowledge of basic maths (in particular algorthmic analysis of generative functions, apparently). Well deserved, but I don't really know what I can do about it: I'm rather long in the tooth (as is my TODO list).

What books should I be reading ?

So raph is working on a diary metric. Interesting, although I can't say I need it personally (yet). I wonder what he's planning to do about the ability to edit diary entries retrospectively. Either the edits have to be made public, or some fine line needs to be drawn between the ability to correct errors, and the potential for abuse.

I'm beginning to see why this stuff is so interesting :)

14 Jun 2002 (updated 14 Jun 2002 at 19:23 UTC) »

Mozilla, standards, standards, standards

Netscape, Well, um, uhh ...

Update: Hixie - "I am frankly ashamed ..."

GOBBLES is pioneering a new form of communication - content trolling. Good on "them".

Then again, maybe it's not that new an idea.

26 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!