Older blog entries for pphaneuf (starting at number 267)

Choo Choo!

Booked some tickets on the TGV for Christmas, to visit some of [info]azrhey's family. I'm looking forward to finally trying this out!

I'm pondering ideas for projects, and I think I've got one or two things that could be promising, so this is rather encouraging. I'm still having more questions than answers, of course, but everything in its time...

Syndicated 2006-11-30 12:39:08 from Pierre Phaneuf

Change is the only constant

Philip Van Hoof (also known as my evil twin, not so long ago, thought his Tinymail API was frozen, but ended up having to change it anyway.

It's been said many times, but there it is again: change is the only constant.

When I tell people about XPLC, they often think that it's about dynamically loading plug-ins, extending applications at runtime. But it's not really that. What it is about is interfaces.

It just so happens that interfaces are a requisite for plug-ins, but really, they are everywhere. An API is an interface, as is an ABI. It's just that the first obvious use for an interface is plug-ins, extensions, or whatever dynamically loaded piece of code.

Some project are very aware of their interfaces, glibc or libpng for example. The former uses all sorts of ELF tricks (like sonames and symbol versioning) so that code linked against an earlier version can still work correctly with a newer version (this is called backward compatibility). The latter is careful to never remove or change the semantic of existing functions, only adding new functions while providing a way of knowing whether the functions are available for your use. Some, like GTK+, have taken different approach, where they made sure that incompatible versions can be installed in parallel (the downside being that a bug fix in the newer, still supported version, will not fix applications still using the older version).

What does XPLC bring to the game? It helps manage all of these things, in a portable way. Those ELF tricks I mentioned, they do not work on platforms that do not use ELF, like Mac OS X or Windows. Also, the technique used for defining interfaces not only allows backward compatibility, but also forward compatibility, where an application that only uses a subset of an interface can easily use an older version of the interface (that is still supported by the library implementing it, of course) on purpose, so that its runtime requirements are lesser. This is not possible at all with the ELF symbol versioning, for example.

A library providing its interfaces using XPLC can even make incompatible changes in its interface in a new version (such as changing the semantics or replacing a function by another), while still maintaining backward compatibility, admittedly at the cost of providing adapter glue. Some people seem to think that you have to provide this glue, but it is left at the discretion of the library's implementers (consider it's also possible to stack adapters, making things work, but likely an extra cost in runtime efficiency). If we think back to the GTK+ approach of parallel installation, this means that fixes to the library will fix the users of the old interface just as much as those of the new one. There is a downside, of course, in that this adapter glue is more code, and that more code brings "opportunity" for more bugs, but still, the glue can also be fixed in a newer version, without breaking the interfaces.

When ones considers the possibility of security bugs in older, unmaintained versions of a library, the only two ways would be to update all the applications to use the new version of the interface (which is impractical, for clear reasons, anyone needing a reminder can only look at XMMS, still widely used, despite many attempts at killing it) or to keep on updating the older version. With XPLC, the adapter glue can be fixed, and since the applications are, in fact, using the new version of the library, they can actually migrate to the newer interface incrementally, so it can be done without major disruption or the heavy burden of conversion work.

There are also sometimes optional modules in a library, that are controlled by compile-time options (to the "configure" script, for example). XPLC interfaces are discoverable, meaning that you get the best out of both strong typing and dynamic typing: you can explore the interfaces an object implements dynamically, and when it tells you that it is indeed supported, it is a strong, binding contract.

So, in summary, with XPLC interfaces, one can get:

  • A stable ABI.
  • Backward compatibility, even through "incompatible" changes.
  • Forward compatibility, allowing application writers to easily target older version.
  • Opportunity for incremental migration from older to newer APIs.
  • Discover optional modules at runtime, without requiring extra shared objects.

All of this is in the simple case of a single implementation of a given interface, but as Philip is demonstrating, it only starts there. He uses interfaces to let users of Tinymail provide their own alternative bits and pieces, mixing and matching as the task at need requires. Not to mention unit testing, language neutrality (including scripting), and so on...

Syndicated 2006-11-29 21:22:14 (Updated 2006-11-29 21:28:05) from Pierre Phaneuf

"Now I have to kill you."

For some reason, I'm often in the position that Dilbert finds himself there. It's not out of sheer genius (HAHAHA! yeah, right) or anything like that, it's just a question that people don't seem to tilt their heads quite enough (except [info]dcoombs, he's got that down to an art!).

Syndicated 2006-11-28 10:59:34 (Updated 2006-11-28 13:12:08) from Pierre Phaneuf

Plotting and Scheming

Ouch, that was a bad week. So, of course, I didn't write.

There was this moment, at some point, where the root causes of my annoyances here were coming together before my eyes, and I could see that they weren't specific to particular companies or individuals, but a product of the whole system, and that, therefore, there was precious little chance of avoiding it. They're not intrinsically negative things, but similarly to apenwarr, I like small and responsive, rather than big and stable.

In France (and most of Europe in general, it would seem), things are optimized for stability, from the top-down. They have a strong, controlling state, unified almost all the way down, with cities having a little control (not much), and the bulk of decisions emanating from the center. Have you ever wondered how such enterprisey things as the WS-Deathstar ever see any use? As far as making money and keeping things the way they were, they are doing a marvelous job, actually, but when it comes to things like "making a difference" or "doing something I could give a flying fuck about", well, it's rather less than stellar. For example, do you know Bull? No? Never heard of them? It's the premier European IT supplier, something a bit like IBM, but for Europe. They have such giant customers such as Dassault Aviation, EDF, Total, Boehringer Ingelheim, La Poste, SNECMA, France Telecom, T-Com and the SNCF. What, you've never heard of most of these either? I can assure you, they're all gigantic, half of them are or have been nationalized at some point, and the system will roll on forward whether you know about them or not! I do think there is change coming, but the timeframe is in the decade, I would say. I'm not that patient!

At first, I didn't know what to do anymore, and that left me very sad. This being a systemic issue means that finding another job wouldn't do it. Starting my own company wouldn't really do it either, as I'd have this system to deal with (and more pressingly, would quickly have serious problems with hiring).

That last thought kind of surprised me, though, in another way. Previously, I didn't want to start a company. I didn't want to do management, didn't want to deal with the business end of things, and I was rather afraid of the risks. I just wanted to program. But in the last few years, I did management (and actually enjoyed it, I reluctantly have to admit), I got interested in business, probably from hanging out with apenwarr, even if it wasn't to his scale. And ironically, this project of moving to Europe had me face my fear of risks, where I didn't know where I'd work, where I'd live, how I'd get to stay in the country and other such things. So, oddly enough, I'm now considering doing something I can't do here, but only because I have come here!

Now, I'm not just packing up just yet! I still want to travel around Europe some, and I can do a good amount of the early work on just about any potential idea for a startup from here. So I'll be doing that.

For the shorter term, there's a trip to see some of [info]azrhey's family for Christmas, and possibly a short trip to Barcelona for the New Year, getting pick-pocketed and all, as the tradition requires. And I've discussed some idea of going to Copenhagen to see [info]skjalm, which would be very nice.

I also met two hot girls on the train, Hungarian and Italian. See, it's not all that bad around here, hehe!

Syndicated 2006-11-27 16:53:42 (Updated 2006-11-27 16:56:49) from Pierre Phaneuf

Finally!

In what's otherwise pretty bleary times, I finally have confirmation that my car has been sold! Only have to cancel the insurance and such...

Syndicated 2006-11-21 15:46:36 from Pierre Phaneuf

24

I'm watching 24 season three with [info]azrhey here, and I have this to say: they have a pretty damned sweet workstation OS and network infrastructure.

Syndicated 2006-11-19 17:34:18 from Pierre Phaneuf

Lose-lose situation.

Sometimes, I'm scared I'm going to forget, but other times, I remember and I'm scared.

This morning, in the train, for some unknown reason, I remembered extremely strongly how I felt at [info]denizsarikaya's service, how I had a beautiful text from a favourite person (who couldn't make it) in my shirt pocket, but I was just stressed out of my mind, and couldn't possibly get up on there and read it.

[info]dcoombs, at least on some levels, you're a better man than I.

Syndicated 2006-11-13 17:29:06 from Pierre Phaneuf

Hacking on Quadra

When run on Quadra, Valgrind tells me the following:

More than 100000 total errors detected. I'm not reporting any more. Final error counts will be inaccurate. Go fix your program!

Sir! Yes! Sir!

Update: Thank goodness, it's now down to a number I can count on my fingers.

Syndicated 2006-11-11 19:49:35 (Updated 2006-11-24 09:25:16) from Pierre Phaneuf

EDF bites

"With great power comes a great power bill." — apenwarr, paraphrasing Spiderman's Uncle Ben.

For those interested in power management, Eric Boyd recently posted some research he did on power consumption of various things in his house, along with cost calculations. Of interest, he looked at what a number of devices consume when in "standby mode" (such as a TV turned "off" or a sleeping laptop).

Google is also looking into reducing their power bill (note that this is for their offices).

Syndicated 2006-11-07 21:39:58 (Updated 2006-11-10 10:03:02) from Pierre Phaneuf

Scared now!

I was hacking on Quadra, generally feeling disgusted about Windows (Microsoft apparently officially decided to tell POSIX to fuck off in the latest version of their development tools), and I finally managed to get things in a decent shape, so I played a little bit. Then I just remembered something.

If I recall correctly, when we made that game, we made sure it could be played without a mouse. 'Cause, you know...

Those were the times. :-)

Also, someone remind me to kill Rémi when I see him.

Syndicated 2006-11-04 01:50:15 from Pierre Phaneuf

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