Older blog entries for Erbo (starting at number 20)

Well, today was our day to do our civic duty and vote in Colorado's presidential primary election. Too bad the race lost all pretense of competition two days ago...

At least I got to vote in a Colorado election for the first time. Arapahoe County has some advanced technology, with these computerized voting booths where you punch buttons next to the options you're voting for (which light up), then press a big button to record your vote. Cool. Back in Santa Barbara, they're still using marking pens to fill in bubbles on Scantron-like cards. I'll have to wait until November, though, to see how this equipment really gets used in a general election.

Added some bugfix code to icq-transport, and some enhancement code to JECI, today. I really need to think about how we're going to redo the Webb Java applet client for the new protocol. A lot more support is needed on the client side. Not to mention that every single one of the customers we have want different graphics for the UI.

At first, I thought maybe I could try completely specifying the UI in XML, ala Glade. (After all, we've got an XML parser on hand, we might as well use it.) Then I thought, "Wait a minute...this is an applet. Having to download and interpret an XML file for each dialog, as well as download multiple images, will suck BIG time." I'm trying to think how I could do it halfway, though...what I need is some sort of "skins" support similar to that used with WinAmp or XMMS. I'm researching how that might be accomplished in Java.

Meanwhile, Pamela points out that our home page hasn't been updated in eons, so I'm engaged in a crash program to redesign and update it. Thankfully, I have a copy of Apache running on Delenn, so Pamela can test it from Lavender (her box) to make sure it looks OK under Windows. Previous versions of our home page have used Micro$oft software and techniques (ech!); this time, I'm going back to first principles and editing all the HTML in Emacs. And editing the graphics with The GIMP of course :-).

Interesting mods to icq-transport today. It needed to have the following done to it:

  • Standardize the names in the <show> tags for <presence> and their mapping to ICQ status values.
  • Make the transport respond to IQ get on jabber:iq:register with your present registration information (plus a <registered/> tag) if you're already registered.
  • Allow an IQ set on jabber:iq:register with a <remove/> tag to remove your existing registration.
  • Allow an IQ set on jabber:iq:register to update your existing registration information.
That last is the most interesting because of all the coordination that needs to be done between two threads and libicq-erbo. Here's what the update function (conn_modify_reginfo) does:
  1. Make sure that, if you're changing your UIN, you don't change it to one that's already in use elsewhere in the transport.
  2. If you're not changing your ICQ information at all (just the JID you want ICQ messages delivered to), change that and bail.
  3. Send back a <presence type="unsubscribe"> for the JID with your old connection information, so you forget about it.
  4. Set a flag in the connection structure called "safemode". When the ICQ thread for that connection sees that the flag's been set, it sets another flag in response ("safeack") and then waits indefinitely for "safemode" to be cleared. We wait for "safeack" so we know when the ICQ thread has made it into safe mode, and it's OK to party with the connection information.
  5. Send out <presence type="unavailable"> for the transport and all your ICQ contacts, exactly as if you were going offline.
  6. Save your current ICQ status value and disconnect the ICQ connection.
  7. Clear out a bunch of the dynamic UIN lists, as the connection's gone now.
  8. Poke the new connection information into the appropriate fields.
  9. If your UIN changed, make sure the UIN-to-connection hash table is updated.
  10. Reset the ICQ identity information on the ICQ handle.
  11. Reset your old status into ICQ. This causes ICQ to start connecting again.
  12. Set another flag on the connection, and then clear the "safemode" flag. The ICQ thread then wakes up, forces the ICQ fd_set info to be rebuilt (just like when we receive an ICQ event), and goes back to its normal event loop.
  13. Send out the <presence type="subscribe"> for the JID with your new connection information, just like when you registered initially.
Whew! Besides that, I added digest authentication support to JECI. Thank you, Sun, for supplying the java.security.MessageDigest class with an implementation of SHA-1...

I also got the signed papers to the big clearing house brokerage. It's in the BankOne building near 17th and Arapahoe; just as I thought, I could take the shuttle for most of the trip. Oddly enough, this building has two sets of elevators, one of which only goes as high as the eleventh floor, and one which skips floors 2-11 entirely and just stops at the ground floor and floors 12-25. Strange. The actual drop-off process was uneventful; on my way back, I stopped off at the Mickey D's at Champa Street for lunch.

Afterwards, I called the investment banker (I guess I'd better get used to thinking of him as "my broker") back, having run the numbers (with Gnumeric, yet!) last night and figured out how many options to sell at what price. Now the wheels are really turning!

It snowed fairly heavily for a little while this afternoon, but none of it appeared to stick. Just as well; there's a point at which driving home through the snow becomes "no longer fun," and I think I've reached it. Pamela won't be happy though; she was looking forward to more of the white stuff.

Well, icq-t works with the new single-data-structure configuration. I also added code to close out connections properly by sending <presence type="unavailable"> for all ICQ users when a connection dies (I think this threw pgmillard for a second) and to close all ICQ connections when the transport exits.

Aside from that, I spent some time with Robert down on the 8th floor, pounding a new Jabber server installation into place. He needed a complete MySQL reinstall from SRPMs, too...While that was going, I showed him this site, and told him about some of the stuff that's going on with Jabber. He seemed quite interested.

Yay! I now have 12 faxed pages from the investment company, four of which need to be signed and returned to a different company downtown, since the investment company I'm dealing with is a small one, and outsources most of its paperwork, business fiddlework, and other crapola to the big company downtown. Fortunately, the other company is so close, I can walk there from here...or, at worst, hop on the 16th Street shuttle for part of the trip. (Now watch, the stuff's gonna be in my mailbox when I get home :-).)

It's about time to go home now, but I need to fiddle a bit with JECI...oh well, maybe I can do it when I get home.

Big news today...US West finally hooked up our second phone line. No more fighting over phone lines for the modem! I've got the new phone line plugged into Janelane (my workstation) for the time being, but I plan on seeing if I can set up a masquerade server on Delenn (the converted P2/233 server that right now is our central MP3 storage system), maybe this weekend. I only have a 33.6 external modem though; if Webb's dialups will support 56K, that would be a good investment. (Of course, what I really wish for is high-speed access, but US West says our lines aren't good enough for DSL--I think we're too far away from the switch--and Optel Cable doesn't offer cable modems. Botheration.)

I tore apart the guts of icq-transport today, to eliminate the separate "user" and "session" data structures and create a single "connection" data structure representing an active connection. It took me most of the afternoon, and I didn't have time to test it. Particularly not with Pamela ICQ'ing me to tell me about the thunderstorms out by our home....

In other respects, the transport is functioning quite well; TSBandit's nasty race condition (where the transport would try to start subscribing to an ICQ user before it had finished logging in) has been squashed, and pgmillard reports that it's working better, too.

I called up the broker today, as the papers that were supposed to be in the mail still haven't arrived. And, this evening, I open up the mailbox and find the usual Tuesday ad flyers and a bill from Public Service...but still no brokerage papers. I think he's just gonna have to fax them to the office; I'll have to stand hovering over the 9th floor fax while he puts 'em through. At the same time, maybe he can figure out why the [REDACTED] I didn't get them in the mail; I hope it's nothing serious. It might be wise to wait for the stock price to recover a bit, too.

Later: Wow! A logo! I don't know what the mouse is supposed to mean, but somehow, it appeals to me...both Pamela and I have Boyds mice perched on our monitors, peeking down as if they're looking at what's on the screen. (She has Gouda and Cheddar atop hers, I got the two newer ones, Colby and Port.)

If somebody wanted to zap Monday right out of the calendar, it wouldn't bother me a bit. Especially not today.

The follies started early this morning, when Pamela cut her finger with a paring knife while working on a Martha Stewart-esque art project at 2 AM. I literally had to get out of the bath to take her to the emergency room for two stitches. (She was working on this to try and take her mind off an impending migraine. Doesn't the list of "things not to do when a migraine is impending" include, basically, anything involving sharp objects? :-) ) So I wound up not getting into the office until noon; it was either that, or get in looking like a zombie...

Now, pgmillard calls in with some icq-t issues; seems he can't receive messages. And trying to ftp a debug log off that box was especially sluggish today...but I managed it. Now I have to grovel through the debug logs to see if I can figure out what's going on.

Not only that, my hair needs cutting in the worst way. I want to go downstairs to try out the salon in this building (Pamela tried them and she liked one particular stylist), but I can't find their phone number. Neither can Pamela, even though she has their business card somewhere...

And I still don't have the documents from the investment banker. The situation is getting critical; the window is now open, and it closes at the end of March, so if we don't hurry up here, we're screwed for the moment. I hope they're waiting in my mailbox at home right about now...

I've been wiped out most of the evening. Pamela and I spent the day traipsing around Park Meadows, which is a large mall in Douglas County, at I-25 and County Line Road. In some respects, it reminds me of North County Fair (a mall in Escondido, CA, north of San Diego), but more elaborately decorated. And it does have the only Nordstrom in Denver, or in all of Colorado for all I know.

We did stop to eat at the Red Robin there. IMHO, a good hamburger not only feeds the body, but feeds the soul, and these guys do pretty well, considering.

I had to leave the #jabber meeting early yesterday to go to the company meeting, as I mentioned in yesterday's note. Perry (that's Perry Evans, President and CEO of Webb) knows how to run a good meeting, especially since there was free food, drink, and pool afterwards. Andre (that's Andre Durand, General Manager of Jabber for Webb and probably slated to be head of the new Jabber Inc.) wasn't there; he was still in the Bay Area. I can't say everything that went on in that meeting, of course. Great things are afoot; more I cannot say.

But I got to talk with a number of people afterwards that I don't see too often, including Perry, as well as Eiko (who I rarely see now that she's moved to the 7th floor with her project team) and Bryan (who just moved out from Santa Barbara, same as I did, and bought a house in Boulder). I also got to put names and faces together for some of the people from the Boulder office (formerly Update Systems). There was one woman from there (I think; didn't get her name), I could swear was speaking with an Irish accent. Funny coincidence; Pamela's cousin is marrying an Irishman in June, and then they're going over there for a couple of years to let him finish his degree while she finishes hers at the American University in Dublin.

And, on the way back, I stopped off at The Tattered Cover, and bought the new Haldeman book, Forever Free. It's good; I liked The Forever War when I read it in college, and this book picks up the story well while introducing some bizarre and surprising new plotlines. Recommended. My other purchases included the latest LJ, Linux Magazine, and QST (no, I'm not licensed yet, but I may just get off my keister and take the exams one of these days), as well as Billboard and Lapidary Journal for Pamela. Then I cruised by Virgin Megastore, where I found Pamela the new Santana disc and the 24-bit remaster of Marillion's Brave with the bonus disc. (She wants all the remasters; I would have bought her Clutching at Straws, but I couldn't find it.) I also picked up Def Leppard's Vault greatest hits disc so I could rip all the good songs. Ah, memories of my high school days...

The stuff from the investment banker didn't hit my mailbox today as expected. Bogus. Oh well, since I haven't had time to talk to our HR woman yet about the 401(k) plan, it may be just as well. But time's creeping up on us fast...and my "trading window" will probably only be a couple of weeks before another blackout hits us (for 1st quarter results). Meanwhile, I dunno what's up with our stock price...can we maybe get it a little higher before the window opens? Please? Pretty please? :-)

The whole Amazon.com patent business is getting muddied, in light of the Tim O'Reilly/Jeff Bezos conversation I saw mention of on Slashdot today. Unfortunately, I don't see many solutions that don't either (a) leave the Amazon.com patents handing like a Sword of Damocles over every e-commerce site on the Net, or (b) make Amazon.com basically hand its weapons to its own assassins. (Remember, Barnes & Noble isn't exactly spotless either; it was well known for being a bully in the brick-and-mortar world before Amazon came along to kick over all those applecarts. Ask anyone who works for an independent bookstore, like The Tattered Cover in Denver or Chaucer's in Santa Barbara, if you don't believe me.) The one solution that might work would be to set up something like a "Web Patent Trust"which would work like this:

  1. Companies would join the Trust by paying a fee, or by assigning the rights of any Web-related patents they hold to the Trust.
  2. Any member of the Trust could use any patent for which rights had been assigned to the Trust, without royalty.
  3. Members of the Trust would agree not to sue each other for patent infringement.
  4. If an outside entity sued one of the Trust members for patent infringement, all members of the Trust would contribute to the defense of that lawsuit.
  5. Anyone developing Free software (that which conforms to the OSD and/or the DFSG) would be able to freely license these patents. (They might have to agree not to sue for patent infringement though.) This way, Free software can become a sort of "reference implementation" for these patents.
Those are just rough ideas...if anyone wants to comment on them, email me (my Web page should contain a link to my email address somewhere; sorry for the runaround, but I don't want to make it too easy for spammers).
(Erbo looks up at the top of the page) Cool! I've made Journeyer! Thanks, nwv, I am now well satisfied in the "ranking" department :-). Also, I'd like to give a shout out to DizzyD, who enjoys reading these diary entries (search for "[03:18:53]" in the text of that page to find his comment).

It's going to be "meeting day" today. First there's a #jabber channel meeting as soon as Jer puts together his list of issues, then, at 3:30, there's a Webb company meeting down in LoDo, meaning I have to leave something like 30 minutes in advance. I used to really hate meetings, though I may be mellowing out as I get older.

Today's payday, too, so I'll need to stop off at Wells Fargo along the way to deposit my check. (I don't believe in direct deposit. I don't even use Quicken or some program like that, though I have been peeking at GnuCash's feature set recently. I still use a TI-74 calculator to balance my checkbook, although, admittedly, using a BASIC-programmable scientific calculator/pocket computer with 16K of RAM is kind of "overkill" for that job. The closest I get to computerized money management is using Gnumeric spreadsheets to plan the budget and keep track of how much my options are worth.)

On my way back to my car from the meeting, I'll probably stop off at The Tattered Cover for some new reading material, and the Virgin Megastore in the Denver Pavilions to get Pamela that new Santana CD, and maybe something else for myself. (More MP3 raw material!)

Oh, I was thinking, I should include a boilerplate disKlaimer for this diary information:

Opinions expressed in these diary entries are solely those of Eric J. Bowersox aka "Erbo", and, unless otherwise noted, are not to be construed as being the official opinions of Webb Interactive Services Inc., Jabber Inc., the Jabber Project, Pamela Boulais, or any other entity. (Especially not Pamela. :-) ) If you use any information I give here for anything critical, you do so at your own risk. If your life revolves around everything I say here...you're insane.

Today was, on the whole, nonproductive. Mostly because I had to take Pamela to the doctor today, and it was a LONG appointment. Ah well...

pgmillard did report a few more issues with the ICQ transport. I swear, sometimes I'm so proud of that thing, and sometimes I just want to run screaming from it in horror. Today was one of the latter days :-). It may not be too bad though. I do think that looking at some code for version 5 of the ICQ protocol would be a Really Good Idea. Hopefully, if it works out, I can fix libicq-erbo and slide it in under the transport with nary a blink.

I've also been trying to study the docs for autoconf and automake. At first, they looked so incomprehensible they might as well have been written in Minbari; now, I'm starting to understand them a teensy bit. It's something I really ought to understand; only temas in the Jabber organization understands it all that well, and it might be useful to have an emergency backup for him...

T minus ten...nine...eight...we have gone for main engine start...five...four...three...two...one...booster ignition...and LIFT OFF!

Jabber, Inc. is now off the ground. It's run by the guy I worked for for many years until Durand Communications was bought by OSS (now Webb), I'm in on it, other Jabber developers are in on it, the advisory board has ESR and Doc Searls on it...it's almost too good to be true.

Pamela has been very spooked by this announcement; she thinks it's somehow not going to be as stable as my present job. I told her, "Honey, you will never see a deal like this, with so great a potential upside, and so little potential downside (that is, zero), anywhere else, even if you live to be a hundred!" Certainly, it's the closest thing to a sure thing I've ever seen. Think about it:

  • I get to keep doing what I've been doing, so my job doesn't change.
  • I'm working on hot, cutting edge technology.
  • It's Free Software, so I'm being socially responsible.
  • If things work out well enough, Pamela and I may never have to worry about anything ever again.
  • Absolute worst case scenario, if it tanks, I can still go back and be a Webb employee. Not that I think that's going to happen, of course...I trusted Andre once and it turned out pretty well; it's worth it to trust him again.

On other fronts, icq-transport is working better now that I've removed some crashes and weird loops, and Jabber 0.9pre3 has been released. And Webb has announced a 2-for-1 stock split. Let's just say that makes me very happy :-).

This was a red-letter day in my history. Pity Advogado doesn't let you use <FONT COLOR="red"> to mark it :-)

11:50 PM on the 29th. I seem to have become part of the "late night crew" on #jabber...

Jer loves the ICQ transport, but he had a suggestion regarding being able to bypass ICQ authorization and "force" a subscription to an ICQ user, which I promptly implemented. There's a couple of niggling things I want to see about in it as well...but I need to test out mod_mysql as well. Hopefully I'll be able to set up for that tomorrow...altough I've got the teeniest suspicion I've forgotten something.

Pamela's been doing some hot-and-heavy flirting with this Australian rock musician via ICQ. It's kind of amusing really, and I know it'll never amount to anything (she's not really going to go all the way to Australia for this guy, seriously), though I did tell her one thing:

If I catch him in the back seat
Trying to pick your locks
I'm gonna send him back to Mother
In a cardboard box
He better run!...

(insert David Gilmour guitar solo here)

I wonder when the first act of flirtation via Jabber will take place :-).

Something in me keeps telling me to look at GNOME's libxml, see if I can't build it into some kind of a "microJabber" component that people could include in applications as a sort of DDE/clipboard/IPC mechanism. Would aid in making Jabber ubiquitous, I think...what is in libxml anyway? Could be worth a look, at any rate.

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