Older blog entries for pphaneuf (starting at number 61)

Ottawa Linux Symposium

Things have been going well at the OLS. I went and saw that PILS talk, but then, I still can't figure out how to get more information on the net about it. I'll ask Alan Robertson tomorrow. It doesn't seem to do much, is rather limited and doesn't seem to be that way in order to reach some anti-bloat goals or anything, just because it doesn't have much. You could probably take XPCOM and do everything it does now and almost everything on that project future directions, and even more (it doesn't support loading modules from multiple directories, for example). XPLC will soon be also on par with it.

Hugh Daniels always makes interesting talks, or at least, is an interesting speaker! :-)

The asynchronous I/O talk was excellent, but I was a bit disappointed by a few things though.

Adding a flag for having real non-blocking I/O on disk-based file descriptors was deemed pointless and that we should rather use AIO. I see things differently, as for example Squid (I think) behaves like if disk I/O did not block, like network I/O, and having it open files with a flag that would make it really non-blocking would improve performance on platforms supporting such a feature, and would be very easy to just skip on other platforms, keeping the current architecture. Some platforms would just go faster if they have the feature, which you could check with a single autoconf test.

Ben LaHaise's AIO is actually the implementation of the really good interface for event notification that Linus talked about a few years ago. Apparently that it even has the callback interface and all, but people don't want to use that callback interface and just want to call the syscalls directly, all by themselves (or closely). Fools! I talked this over with apenwarr, and while he thought that if users of this stuff would be well-mannered and followed some conventions (give any fd you might want to wait on, like ConnectionNumber in Xlib can give you), it would be okay, but my point of view is that with callbacks, you can enforce good manners. You register your interest in a file descriptor, and when an event occurs, you get notified, no matter what, even if someone else called the get_event method (or whatever it is named). Whoever is out there using Ben's AIO, use the callback interface, please!

Also, there is a hole I didn't worry much about at the time, and it is support for timers. Either you need a way to add a timer to the AIO stuff (and get notified/called back when it's ready), or a way to make a timer out of a file descriptor. Just one idea: a /dev/timer that you open, write a timeout into, and it becomes readable after the timeout expired.

I'm writing this while sitting beside the FreeS/WAN people, and I find it interesting how sometimes, some key people are just missing some part of the picture, and talking with some other people fixes their view of the world. They are obviously slightly confused (ask dcoombs!), but thankfully, some people are clued in. Unfortunately, one (Hugh Daniels, again) is shut up by his stupid government (guess which one).

XPLC

I'm hacking on XPLC here at the OLS, turning the multi-binaries testing suite into a single binary, and I hit a bug. Go unit testing! I have found a problem where the single instance of the service manager dies off, and the pointer that XPLC::getServiceManager goes bad, and everything goes to hell.

I could use weak references here. The service manager currently doesn't have anything in it to enforce it being a singleton, and that is good, I like it, but now, I'll have to turn it into an enforced singleton just so that this doesn't die.

RFC: So, are weak references should go in or not?

An alternatively implementation of the X stream protocol

Well, thanks again to raph for the link to XCB. This is pretty similar to XPLC, in the sense that in order to achieve goals of lightness and performance, they sacrified some other features that might be some other people's sacred cows, but that (if only those people would just open their eyes) aren't really needed.

raph: Thanks for your last diary entry, it was really interesting and full of good links to other interesting things full of good links.

This is in fact of the things I want to use XPLC for, building small, high performance servers, mostly event-driven, using message passing (similar to what David McCusker describes here) between processes for scaling on SMP systems. XPLC comes in when I want to make things even smaller and faster by putting multiple servers in the same single-threaded event-driven process, sharing as much stuff as possible. For example, you could build a server with HTTP, SMTP, IMAP and POP3, all sharing common information, including HTTP giving you a webmail interface.

I still can't believe that we can't publish a medium-low traffic interactive website on an inexpensive single process box. All you see is dual this and cluster that, with RAM going around in gigabyte slices, and still getting a slow site in the end. Try this little experiment with your web server: open up a thousand connections, but don't do anything with them, just keep a thousand idle connections open to your web server, then access one page (one thousand completely inactive users and a single active user). Watch your server crawl to deliver a single 8K file to the lone active user. Something is wrong.

I'm taking goingware's advice and testing this high-performance single-process component-based server stuff on my 486DX4/120 with 80 megs of RAM.

11 Jun 2002 (updated 11 Jun 2002 at 15:42 UTC) »
raph : I have found that it is hard to interest people in simpler technology. For example, my XPLC project, a component system, frequently get negative impressions because it doesn't support distributed (out of process) objects, method interceptions or a slew of other features that systems like COM/DCOM/.NET or CORBA have.

The funny thing is that the point of XPLC is that it doesn't have that ("XPLC" stands for "Cross-Platform Lightweight Components"), on the account that simpler is better, and that we'd see more component-based software if the overhead of turning a library into a component wouldn't be orders of magnitude worse than a regular library. XPLC doesn't do out-of-process objects or method interception so that it has bounded method invocation overhead (C++ virtual call level of performance), it doesn't have many other features so that it is really easy to make an application that uses components or to make new components.

There is also a similar phenomenon with multithreading, where making an application (often a network I/O-bound one) multithreaded instantly makes it "better". As alan said: "A computer is a state machine. Threads are for people who can't program state machines."

It seems that people want technology that has sex appeal, a simple technology that do what they want easily and quickly just isn't enough.

But nobody can tell me of a really popular distributed application beside the Sun NFS/NIS family.

XPLC

A new release, on a converging path toward a generic dynamic loader...

Life

The OLS starts on the 26th, which is the day right after my significant other's birthday, for which I absolutely want to be there. And there is this PILS talk about pluggable components right at the very beginning. I'll have to race to Ottawa on that morning it seems!

28 May 2002 (updated 28 May 2002 at 22:26 UTC) »
XPLC

I really wonder what this PILS thingy that will be talked about at the OLS is. From what I can tell, it's pretty close to XPLC (save for the fact that automake is crazy). We'll see.

Star Wars

I went to see Attack of the Clones with some friends the other day.

When I saw the scene where they have they giant sheeps and Padmé is walking down the hill, I started singing "the hills are alive with the sound of music", not so quietly. Pretty much everyone within earshot of me in the theater laughed.

Ottawa Linux Symposium

I have been going more and more to work on bike, and I just noticed that the OLS is going to have a "Hacker Bike Ride" at the end. This is nice!

Modern C++ Design

Pretty good book. This guy is going to go crazy soon, doing template magics the way he's doing so.

Please reply by e-mail, thanks!

I played the Atari 2600 Space War this weekend on an Intellivision with the Atari 2600 attachment. This is such a good game!

I tried finding a good one for Linux, but the only one I found, KSpaceDuel, is way too complicated and it got a few gameplay issues compared to the original one (the energy and damages are displayed as numbers rather than some visual widget, please!).

If you know of a good Space War for Linux, write me at pp@ludusdesign.com.

XPLC

Got a new release prepared, with monikers and other things coming together. I'm actually getting paid to work on this now, which I find really cool (thanks apenwarr!).

XPLC

This is really weird. In my last diary entry, I was wondering where all of the people that wanted a lightweight component system went when I gave them XPLC. Maybe they went to Korelib, which is so close to XPLC (and also seemed to appear 8 month after XPLC came out) that I wonder if they didn't read my article and went their way? I just fired off an e-mail to the project lead.

It's pretty nice, from what I can see, doing things slightly differently: very Qt/KDE oriented (but still independent), more complicated to use (but is more featureful than the current XPLC release) and uses strings instead of UUIDs for identifying components (potential for collisions, but easier to use), etc...

11 Feb 2002 (updated 11 Feb 2002 at 17:51 UTC) »
Life

Undergoing massive psychological review of myself. Fear not, I'm still very much a hacker at heart, but I feel some parts of myself are very much broken, and I wish to heal them.

XPLC

I have set a goal for XPLC. I should have a usable release and deliver a paper or a talk about it sometime in the coming year and a half. I would have aimed at this year's Ottawa Linux Symposium, but this is pretty short and I'd like to see it in some actual use before going and making a fool of myself. The "and a half" part is to keep in mind next year's OLS.

But I might still try for this year. ;-)

My big question nowadays is this: where did all those people that kept asking for an "XPCOM Lite" go when I came and gave them XPLC? Oh well.

I might write another Advogato article on XPLC soon, if I get the time.

Makefiles Wizardry

Anyone knows the Right Thing to do so you can get automatic dependencies that work with an IDL compiler generating headers?

E-mail me if you got the faintest idea.

Work

I work for Net Integration Technologies now, which is apenwarr's company. I'm hacking WvPrint at the moment.

Looking into an SLR film camera? Check out my Canon EOS-300 (Rebel 2000) review on photo.net!

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