Older blog entries for Erbo (starting at number 10)

Leap Day, heh...

Spent most of the morning helping Dave Scott out with his Jabber server. The poor guy's still using 0.6...I'll get him updated eventually. Probably about the same time I update the coreljabber server as well...

I've got the Jabber CVS server running, including the ICQ transport, on one of Webb's dev servers. The gang from #jabber is trying it out right now. Jer would sure like to include it in pre3...

Finally got through to the investment banker. Around about Saturday I should be seeing a big chunk of paperwork hit my mailbox at home. One step closer to being able to exercise my options...

Later: I made one addition to icq-transport in the form of properly sending out the "you were added" messages to ICQ users after the Jabber user does a <presence type="subscribe">. Things are looking good at the moment.

Something screwy is going on today. I've been knocked off OpenProjects IRC three times, and, whenever I've tried to FTP to or from one of my test boxes, the connection just seems to drop its engine. Bad net weather? Are we under attack? Hell, I don't know. (And there I went again...)

Fortunately, I have another test box right here on which I am installing the complete CVS Jabber suite. Or trying to, anyway; it couldn't find the MySQL client libraries. I needed to upgrade, anyway, so that box is doing a "rpm -- rebuild" at the moment. After that maybe I can see whether my xdb_mysql stuff even works.

Later: Oh God. This could be a nightmare. libmysqlclient.so has a dependency on libpthread.so, and I strongly suspect that's conflicting with the libpth.so that's used by Jabber. Symptoms: the executable is segfaulting down inside the pth scheduler before it even manages to start up.

Eliot has pointed out that libc6 depends on libpthread, so "there better not be a conflict there..." I'm wondering if the problem is that the machine I'm building on is using glibc 2.0 (it's a Red Hat 5.2 box). Unfortunately, it's a little late to upgrade today...

An early night again: only 10:42 PM.

Well, xdb_mysql is in the jabber-transport CVS tree now, along with config data containing the dynamic XML queries and a sample MySQL database template. It compiles clean, but I haven't linked it into the XDB init sequence yet. temas will probably have to do some fancy hacks on the build system to give the option for MySQL. Whew!

I had to go find a new watchband today for my trusty Casio DBC-62; the old one was about ready to break. I found one of those Speidel expanding bands at Wal-Mart, so hopefully I won't be experiencing that particular failure mode again. And it's better than spending $90 on a new Databank wristwatch.

Al Gore is in town tomorrow. I'd go see him speak (at the Denver Perfoming Arts Center), but it's likely to be too much of a hassle getting in there...too many crowds. Saw him give an interview on Channel 9 tonight, from DIA...nothing special here, he sounded just like an ordinary politician. (I oughta know, I was raised on that kinda stuff...)

temas has SSL support hacked into jabber-transport now, but I can't help but think that we could do with some security/crypto support in Jabber itself. Hmm...could I salvage any of the code from the old Durand CommunityWare "secure file transfer" ActiveX control? Or at least the concepts? Might be worth a look.

1:55 AM. Any surprises here?

About half of xdb_mysql is there now. Some parts are going in smoothly. Others...well, not quite. At least I fixed that build problem with etherx...temas' build macros were seriously h0sed. But Jer was able to steer me in the right direction.

I haven't been able to work as much on things today as I wanted, as Pamela has wanted me to be with her. She said, "I'm gonna call Andre and ask him if I can have my husband back for the weekend." Well, that's all well and good, but Jer wants this in by Tuesday...and, honestly, if she really needs me, I'm only in the next room.

Of course, I needed some more programmer fuel (Coke) today. So I picked up 3 cases at Costco. While I was there, I saw a new purple Subaru Outback parked in front of the place, to advertise Costco's auto-buying program. Pity the car had a stick-shift, or Pamela would've wanted it right then and there.

1:23 AM here. Pamela's asleep so maybe I can do some work.

Jer and I hashed around the design for xdb_mysql, which will have to be statically linked into jserver for now (until temas works his sorcery on the build system to get DSO's working again). It may not be as difficult as I thought. Maybe I can do it this weekend after all. I do have the old code I already wrote (for 0.8), including a nifty XML-based parameterized query system that should keep me from having to recode the module every time the canary-yellow crowd (Marketing) sells Jabber to another customer :-).

Jer liked my hash table routines; they sped up some key parts of jserver by a huge amount. Now he's trying to apply the concept to xmlnodes. Meanwhile, now I've got to move to building from CVS, instead of from the 0.9pre2 tarballs. I have this strange sense of deja vu...actually, it won't be all that bad, but I do have to add OpenSSL to my system so temas' SSL hacks will compile. Details...

Even later: Something isn't linking right in the etherx code. I think I'd better quit before my contacts start bugging out on me, and ask Jer about it tomorrow when he's conscious.

The unthinkable has happened. I'm switching to 0.9pre2.

"But Erbo," you might say, "you made such a fuss about missing deadlines two days ago, why flipflop on this issue now?" Well, if I don't, presence management for icq-transport just ain't-a-gonna work right :-)

Seriously, 0.8 had some really convoluted presence logic, which was partially the reason for the major rewrite Jer did for 0.9. And he says he'll help me get mod_mysql (or maybe it's now gonna be called xdb_mysql) ready, partly because he wants to package it for 0.9pre3 on Monday. Well, I think that goal is a bit optimistic, but I'll look at it this weekend. Assuming I get any time to work...

I tried to call that investment company in Englewood, so I can open an account with them. Unfortunately, the guy I need to talk to had taken off for the day...at 11:30. And he won't be back until Tuesday. (This after I spent four days trying to find both the time to call him and a private phone to call him from, because I don't exactly want to broadcast this financial information through the 9th-floor cubes.) Boy, if that's the kind of schedule these broker guys keep, it's a miracle the whole [REDACTED] American financial system doesn't fall to pieces. I sure hope I can get hold of him before the company's blackout period lifts...

Oh, and speaking of finances, I'm glad to see that Webb is continuing a nice recovery from that big dip 2 days ago. That was a little scary. But now we're back at 64 5/8...go baby go... (God, that sounds like the horse racing commercials, doesn't it?)

At least it's not as late this time. It's still the 24th, Mountain Standard Time, just after 11:00.

The Jabber presence system is really difficult to understand sometimes. I was really getting a bit frustrated with it, but I may have found the right way to slot code into the ICQ transport so that the presence will work properly.

The issue is, for the Jabber user to receive presence info from an ICQ user, the ICQ user has to be on the contact list. Unfortunately, since the transport has no way to read the Jabber user's roster (boy, what a security hole that'd make), we have to populate the ICQ contact list indirectly, by watching for presence updates that the Jabber user sends to the ICQ user. And, in order for those messages to be passed when the user logs on, the ICQ user (or, rather, their "proxy" within the Jabber transport) has to be subscribed to the presence of the Jabber user.

So, the ICQ user has to send <presence type="subscribe"> to the Jabber user once the Jabber user has subscribed to the ICQ user. Of course, handling a Jabber user's subscription request is pretty gnarly in and of itself:

  1. Send a "get info" for the ICQ user.
  2. When we get the info result back, check the "authorization requested" flag. If no authorization is required, we're OK to subscribe.
  3. If authorization is required, send back an "authorization request" message.
  4. When we get an "authorized" message back, we're OK to subscribe.
  5. Once we know we're OK to subscribe, we can send back the <presence type="subscribed"> to the Jabber user. Now we can also send the <presence type="subscribe"> to get the ICQ proxy subscribing to the Jabber user's presence.
Sure, it looks uncomplicated on paper. But, since it's spread across multiple network transactions, it can get a little unclear and difficult to follow. And, of course, there's always the possibility that the Jabber user could decline the request of the ICQ user to subscribe to their presence. Of course, if they do, it's their own damn fault :-).

I couldn't test the new transport stuff yet, because it was 6:30 and I was late getting home as it is. Tomorrow, definitely.

I worry about Pamela sometimes. No, scratch that; I worry about Pamela a lot. She hasn't been taking the move to Denver really well, and she feels lonely and frustrated. Maybe things will look up once I'm able to get her a car of her own, so she can get out and do things herself; hopefully, that's something I can do soon, before her next birthday (in 2 months).

Early morning again, 12:45 AM. Seems like this happens a lot...

Just read the article on Slashdot about Carmack nailing that one guy for GPL violations. What a helluva mess. One thing I can say though, and I hope a lot of people would agree with me: John Carmack kicks ass!

The icq-transport sources seem to build OK under GCC 2.95.2. While they were doing that, I mentioned on the #jabber channel that I get signal 11's sometimes when compiling Wine and the kernel. This caused some expressions of concern from others there. Maybe I need a new mojo...

Anyway, must remember for tomorrow:

  • I don't need to recognize Etherx packets other than "normal" and "error." All those TODO's in from_etherx.c can be 86'd.
  • The presence stuff is sticky, and needs some adjustment.
Aside from that, it's looking pretty good.

Got some Suzie V (Suzanne Vega, that is) playing on XMMS. MP3 is just too much fun.

The ICQ transport now appears to be working, after a long day's worth of effort that included many core dumps, a few strange behaviors in the pth library, and miscellaneous general frustrations. Plus I had a bunch of other things that required my attention. It's that feeling of being nibbled to death by ducks...

At least it's not raining tonight. The drive home should be OK.

Jer seems to be exerting the subtle "peer pressure" to get me to move to working with the 0.9pre2 sources instead of 0.8 (that I have been using.) Trouble is, if I switch now, there's no way I'll meet our deadlines for other stuff...

Early morning, 1:40 AM. Looks like at least some of the trust-level issues on this site have been cleared up. And I find that my status has been raised to "Apprentice." OK, I can live with that.

I will just note, for the record, that I am a professional software engineer with a BSCS and ten years of experience, and I have contributed non-trivial amounts of code to the Jabber project. In my mind, that seems to fit the qualifications for "Journeyer"...but I note that one of the criteria seems to be one's perception in the community as a whole. Since the community, largely, doesn't know me from Adam's off ox, I can see why they might label me as an "Apprentice." Oh well.

And, for those of you who question the usefulness and relevance of Jabber (you know who you are), I can only say that Webb, the company I work for, certainly saw that it has potential, or otherwise we wouldn't have hired Jeremie Miller to work on Jabber full time, hired other Jabber developers as contractors, and assigned me to work on Jabber-related tasks full time. (I wrote one of the documents that pointed out the advantages both we and the Jabber project could realize by working together.) Oh, and if you still don't believe me, open up your February 2000 Linux Journal to page 8; Doc Searls gave Jabber a nice writeup there. He called it "The Next Open Source Victory."

It's now even later. I really ought to sleep soon.

1 older entry...

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!