Recent blog entries for shaver

I'm still sick, but we did have a nice dinner with Chris and Shona, so that was nice. More rest today, though I have to do some more work in preparation for Deb's start at work in May.

OK, mathieu, I'll confess that I don't understand why you need to have the IDL info in the application. What if multiple applications use the same interfaces (like GNOME::Panel, or whatever)? Why should you tie interface to implementation like that? Multiple copies? What about implementations in Perl or JavaScript or Java or Python, which don't have the same _init hacks? I guess I don't see why you can't keep ``typelibs'' (meaning: files that describe interfaces) separate, which would also seem to reduce the likelihood of having someone ``update'' the interface when they update their implementation (``I'm the only applet in GNOME CVS that uses GNOME::MagicThing::1.0, so I'll just update it in place. What? Someone else has a Perl applet that uses it?'').

My experiences with Mozilla autoregistration also tells me that you probably don't want to grovel over $gnome_prefix/lib/IDL/*.so at every GNOME startup.

In more detail, here's what I propose:

  • A typelib compiler (similar to xpidl -m typelib) that generates typelibs from interfaces, and probably a linker like xpt_link. The typelib compiler and linker are run on IDL files to product typelib files, which are stored in $gnome_prefix/share/typelib.
  • The IR implementation reads in the typelib files at startup, and constructs whatever internal structures it needs to serve things according to the IR interface, etc. (You'd probably want to do incremental loading, by only loading the file header and interface directory entries (names from Mozilla's implementation) at for each file, and then ``faulting in'' the complete entries as required.
  • You'd might want to distribute sets of typelibs independently from implementations, actually: gnome-core, gnome-code-devel and gnome-core-typelibs. People might actually want to use the Power Of CORBA to manipulate GNOME pieces from other machines, or provide alternate implementations of gnome-foobar in another (non-C) language. Or maybe you don't care; I'm not religious about the packaging, and will just install whatever Helix tells me.

mathieu: in the XPCOM case, at least, we can enumerate all known interfaces (and implementations) -- from an interpreted language, no less! -- regardless of which ones are currently instantiated.

js> for (i in Components.interfaces) print (i);             
nsISupports
nsILocalFile
nsIForwardIterator
nsIRDFXMLSinkObserver
...
js> for (i in Components.classes) print(i);
mimecth:application/x-pkcs7-mime
component://netscape/messenger/stringservice?type=pop3
component://netscape/messenger/stringservice?type=smtp
component://netscape/intl/charsetdetect?type=ruprob
component://netscape/intl/charsetdetect?type=ukprob
...
(Don't mind the silly implementation naming; it's going to change.)

So yeah, an object browser in XUL and JS is quite possible, though you probably want some runtime hooks as well to get handles to pre-existing instances.

18 Apr 2000 (updated 6 May 2002 at 23:45 UTC) »

Conversation with ramiro reminded me of this, which still makes me laugh.

Ramiro is truly awesome. I feel the need to share these gems with the world as well, lest they be lost to the Netscape Document Retention Policy, or something:

Linux is like Christianity. The leaders are cool people, but the followers can be deadly.
THE LAW OF LINUX SUPPORT: THE MOST IMPORTANT THING YOU CAN DO IS LEARN WHICH 99% OF THE "COMMUNITY" TO IGNORE.

Have to go get ready for dinner now, I think.

Back from Montreal, and I brought a cold with me. Damn.

We found a gorgeous apartment near the Georges-Vanier métro station, and apparently all the paperwork is now in order, so yay. We'll probably move in early June. It's enormous, and beautiful, and I can't wait to move in. I will miss Toronto dearly, but commuting like this sucks in no small way.

My ISP kicks ass. They're going to solve my MTU-DSL problems for me, at some cost to themselves. I am supremely pleased that I can get DSL service from them in Montreal, as well.

I'm glad mathieu enjoyed our XPCOM/xptcall/Bonobo/CORBA discussion as much as I did. Some points of clarification, though:

  • typelibs and the IR are not suitable for comparison. typelibs are an on-disk storage format for interface information, and the IR is a service that permits applications to query for such information. I dimly recall, from our conversation, that mathieu really objects to IDispatch, which is the primary (only?) consumer of COM typelib info in the Microsoft COM world. I agree with his stance: IDispatch is abhorrent, if only because it's stub-based. =)
  • It then follows that you can build an IR service, which uses typelibs to store interface data. We do that, basically, in XPCOM, and we call it nsIInterfaceInfoManager. In fact, the implementation of nsIInterfaceInfoManager doesn't even grovel in typelibs directly: it's isolated from the typelib files by the libxpt layer.

A little while back, graydon and I discussed wedging an xptcall-like-thing into ORBit, and blizzard thinks that it wouldn't be too hard to write a CORBA-connecting analogue to XPConnect. We already use the xptcall stuff for proxying between threads, so there's some non-JS marshalling stuff in there to work from. How hard can IIOP be?

Also: Go Leafs.

Back in Montreal. Tyla arrives shortly.

I sent the document out today, and it was well received. We're starting down our open source path, though I can't really say more until we get our plans sorted out in detail. It's going to be a heck of a lot of fun. We're going to need great people to help manage it, of course, so I get to go play recruiter for another few weeks.

Hey, Tyla has arrived.

Sent my O'Reilly thing in yesterday, too. Or did I? It's not in my sent folder, and there's a core file in my home directory that claims to have been ``netscape'' -- not the panel or gmc, yay! -- so I'm not so sure it got out. I was in a bit of a rush on the way out last night, so I don't clearly recall shutting down. I'll be pissed if I have to rewrite it, mainly because I should have just engaged my brain and done it in emacs first. First, though, I'll pray and mail marcia.

Off to dinner and merriment with zab and Tyla and Jenn and willy. More work later, possibly.

I cannot be trusted with the simplest of tasks. Like, say, laundry.

Today is, so far, a writeoff. Still apparently on PDT, I slept through my alarm and then only got up when the Bell guy showed up at 11. Bell guy's visit didn't go well, and I'm still too utterly pissed off to want to recount the tale. It's really not his fault, but at times I had difficulty keeping that clear in my head.

Apparently I have a conference call at 15h00, so I'll have to take that before I go to Montreal. Which puts me on the 17h00 plane, which puts me in Montreal at 18h30, which should, hopefully, please, please, please put me at Globe by 19h30. (Note clever use of Québec-style time syntax. I'm so bicultural it hurts.)

Then back to the office after dinner, to get some work done. I've had this document sitting on my disk in jot form for 5 days now, and it's not doing anyone any good there.

I still need a hotel, but how hard can that be? As long as Bell's not involved, it should be right groovy.

Have to submit my talk description for the 2000 O'Reilly Open Source Software Convention today too, or Mitchell will (rightly) kick my ass. July is shaping up to be a busy month, what with two weddings and two conference gigs in the space of the last 15 days.

CFP was fun, at least the parts I saw of it. Got my business cards at the party, and they're pretty. Mildly inaccurate, but nothing fatal -- should only foil the casual caller, since while the direct number listed is fictional, calling the main number will eventually get you to me. And do I really want to talk to a casual caller?

Back from the party and the Developer Meeting, both of which were lots of fun. People are doing cooler stuff with Mozilla than I had imagined. (And I'm a pretty good imaginer.) I was unpleasantly surprised to discover that I couldn't use my upgrade certs on the wacky L-class fare that I had SFO<->YYZ. Even more unpleasantly surprised than when I realized I needed 2 certs each way. Coach sucks for long trips, but I got a bulkhead seat on the way out, and an exit row seat on the way back. My back has just about stopped aching.

The Hyatt Regency is a pretty nice hotel, but their ``any airline'' bonus-miles thing apparently doesn't include my program of choice, affiliated with United or not. The Hyatt just down the road was pretty nice too, according to blizzard, and a little cheaper to boot.

zab moved to Montreal the other week. I guess I'll see him tonight, unless I put off my trip to tomorrow. I'm still on PDT, it seems, which got me off to a late start today. Having trouble getting to my mail right now, though, so maybe I should just hop on a plane and get onto the network ASAP. Decisions, decisions.

Hope we find an apartment as nice as dria's or zab's. I have hope: Ron is really good.

Came back to discover that I've been getting a fair bit of fax spam. I should really find out if it's as illegal here as I think it is. Some of it is coming to the office voice line, which is just absurd. Are they war dialing? How do they know that there's a fax machine on that? Does Bell let them see that it shares a line with the ident-a-call for my fax? Mysteries abound.

Bell is still doing a miserable job of installing the home<->DSLAM part of my DSL service. My ISP has been supportive, but their hands are largely tied: when Bell wants to fuck you, fuck you they will. I should write more about the saga at some point.

I have not been involved in any ``gender debates'' of late, but I've been away from home for a while.

More later, I guess.

It's been a while, hasn't it? What can I say, I'm a slacker.

Went to Ottawa for the weekend, and that was lots of fun. he and she and he have good accounts of it, so I won't bore you.

Started to feel ill at dinner yesterday, so I went home and lay down. Decided not to go to the Matrix-on-IMAX-screen thing, even though justin and ajh came all the way from Ottawa to see it. Then I decided to go anyway, because it's just sitting still for two hours, right? Right.

Didn't feel much better after I got back, and felt decidedly worse this morning. Cancelled my hotel reservation, because I'm not going to Montreal today, no way, no how.

I'm going to go lie down.

Back in Toronto, and I Must Do Laundry. Apparently, my body really missed my bed, because it took to the idea of back-home sleep like a sonofabitch. 10.5 hours, whee.

Chris and Shona came by to watch X-Files last night. Not a bad episode, as they go, though Scully's cleavage made more frequent and vivid appearance than was perhaps strictly necessary.

I want to buy a Handspring Visor, but the nasty people at Handspring aren't shipping to Canada yet. Spring 2000, they say, and I am naive enough to believe them. I will resist the urge to ring them up and inform them that today is, in fact, the first day of spring.

So far, not getting a whole lot done today. Not quite sure where the time has gone -- some of it to laptop+VPN+network travails -- but it looks like it'll be a late night tonight. Or maybe I should just stall until the nice people at Velocet set up my DSL on Thursday. (Yay!)

Steph appears to have chosen a dandy time to go do her modelling thing in Taipei, what with the spirited rioting and threats from The Least Balanced Nuclear Power and all. We're obviously keeping a close eye on that little hotspot.

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