Did you know stuff happened today while you weren't watching?

volume two: jul 1998


31 Jul 0140

Two words: "TOO HOT".

Started off the morning by placing the thoroughly soaked keys from my keyboard back onto the keyboard (after it got a nice manual cleaning with a handful-worth of Q-Tips). The keys are actually white now.

Moved a bunch out of zeta's /usr/src into ihpled's /usr/src. This was in order to have enough disk space to continue with the nights activities...

I finally decided that I wasn't going anywhere while standing still. So, I made the confusing decision to "upgrade" to glibc2. And of course, just like any other time you upgrade a critical piece of software like that, it caused a chain reaction of upgrades. In no particular order: gcc 2.7.2.3, binutils 2.9.1.0.7, ld.so 1.9.9, bash 2.02.1. I think that's it. I did it all from source just because I could (yes, this whole open source thing IS a power trip). glibc 2.0.6 (+crypt+linuxthreads+localedata) is STILL compiling, and I'm getting too bored to stay awake for tonight. I'll install it tomorrow. Everything seems to be compiling ok. Nothing major has killed itself yet. (Though the way that ld.so installs itself scared me a bit.) Hopefully, glibc won't mess up my system too badly, and at least allow me to start participating in the "bleeding-edge" linux world again like I used to (that was many, many years ago, though -- you must remember that I'm retrofiting glibc2 ontop of Slackware 2.2, which is what...3? 4 years old now?). Also, I'm hoping using glibc will help me compile gnome a little easier than when I tryed the last time.

Also, I've been thinking about releasing a modified Slackware 3.4/3.5 for SPARC and Alpha. I'm tired of having only RedHat available on those two, and I think a BSD-style distribution would be a nice competitor. Even if it was nothing more than a plea for me to regain my long-gone sanity, I would be happy. I hate RH. I hate Solaris. I hate SysV. I like BSD. But, I prefer Linux. That's a messy set of criteria...

Besides the obvious modifications to the installation scripts, I think there'd be other more major changes that would need to happen. For one thing, I think there'd really be no option but to move Slackware to glibc. There's really no non-glibc libc for either SPARC or Alpha, so glibc2 is the best (and only) choice.

Anyway, back to reality... I got 5 more PS/2s prepared for insertion into CUMULUS. The largest problem at this point is space (as in, I've nearly run out). Also: 1) not enough emmision filters for DB9-to-UTP token ring conversion; 2) space; 3) not enough cabling; 4) space. The current layout has 3 of the current 8 nodes on one side of the garage (on Stack1), and the other 5 on completely the other side of the garage (in their own, newly created stack). I've also got the temporary problem of not enough MCA TR cards, but thats really short lived, as I can probably get somemore as soon as next Monday (they seem to populate using a method quite similar to fury rabbits down at PUSD). But, then I'll need MORE filters and MORE cabling. We should also decided whether we actually NEED all 16 nodes or not. From the speed, 8 may be all my temper can handle...

School registration is next Friday (the 7 Aug). That unfortunatly means that the days of getting up at 1200 and going to "sleep" at 0400 are nearly over. The painful period resumes on the 17 Aug 1998, at a rediculous 0720...you know, just berily after the Big Yellow Flaming Thing pops up... We leave this paragraph and hopefully allow ourselves to stay away from this topic until we just can't any longer...


30 Jul 0202

Since I have no keys on my keyboard, I'm probably going to attempt to keep this short. (I decided at about 0100 that my keyboard needed something done to it. So, I'm cleaning it. Not really, just soaking the keys for a while. There's still the little white triggers (that happen to be covered in sticky petroleum oil) left to type on. The keys are in the sink.)

Compaq decided to be cute today and added to the collection I have of their useless marketing items (t-shirts, books, etc.). Today's addition was Scott Adam's The Dilbert Principle. This has got to be one of the more hilarious books ever written, especially about the subject of business management!

Thanks to aArdvark, a bunch of "people" got a laugh about some of my comments here yesterday. Sorry, nothing that funny tonight (unless you find the irony of typing on a keyless keyboard as amusing as I do).

AOL work is at a standstill. The ACKs for each command are usually put into the next command so that bandwidth can be conserved. But, since I can't make the checksums on the packets, I can't properly acknowledge comands and the server there just drops me. I or someone needs to figure out that checksum.


29 Jul 0232

Elena is now on here way back to Finland, with an "interesting" stop in Gatwick. Anyway, that means most of the evening was spent staring at the walls of ye ol' Sky Harbor Intl (despite the misguided attempts to rename it to Barry M. Goldwater Intl., it's still SKI).

Ok, I know I say everyday that it's boring as hell, but you've got to believe me this time. Because of endless amounts of distraction, absoultely nothing got done today. I woke up incredibly late (1300 sound good?) and just couldn't stay focused on much of anything (well, I was for some reason subconsiously focussing on not focussing, but that's "getting technical").

About two hourse ago I just decided I should probably figure out this AOL checksum. No real luck. I've tried all the standard algos and have nothing. (Actually, my cute little CRC-cracker is still working on an estimated 1.57 million CRC generations. It's wasting CPU cycles quite efficiently, I might add.) I really don't know enough about this at all. Someone like to help me out a little?

I think the only reason I can't get AOL to react like the logs show is because I'm not generating the checksums on the ACK frames properly. Which is why I started on the CRCs.

I really have to say that that's it. The world spun around a few times, I guess. But that's nothing new (to most of us, anyway, but I'm sure you geocentrics out there will make an idiotic attempt to prove me wrong on that one).

Oh, the power fluttered a lot today. And the air had an abnormally large amount of electronic potential against the ground today, causing this unbelievably annoying flashing in the clouds. Someone should have a look at that. Anyway, Primenet did eventually recover themselves. Though, they still won't admit to a routing loop (they're merely admiting to the subsequent router overflow outage on the frings of the Phoenix POP). Primenet, Primenet, Primenet... oh, by the way...42.


28 Jul 0054

Primenet is quite sick tonight. I'm getting about 45% packet loss. And I pay for this... AIM refuses to stay connected for more than 30seconds, ping is reporting between 40% and 60% losses, and has latencies in the hundreds just going to mail.iname.com. Also, the routes to the Primenet shell/usr servers are dead, as are the routes to mail and web servers. Looks to me like half their internal L3 switching mesh fell off the planet, but that's personal opinion, I suppose.... Ooo...it just dropped over a hundred ICMP ECHOs all in a row... Bad news, especially for an unnounced outage (but considering they only announce about 1% of their outages, and only admit to 10% post-procae, the term "announce" gets a new meaning).

We for some reason took a short day trip up to the Grand Canyon. And guess what? IT'S STILL THERE. It's still a big hole in the ground, there's still thousands of tourists scrambling to have their OWN chance to fall off the edge, and it certainly doesn't appear that it's going to change anytime soon. That's it. That was my day. (Well, that was my day between 0730 and about 1900 anyway.)

The rest of the day is barely worth mentioning. I did about 15min work on AOL. Then it started giving segfaults for no apparent reason (as if the reason is EVER aparent), which is usually the beginning of the end for me, especially when I'm tired. I've gotten less than 6hrs sleep in the past 48hrs, and I'm not exactly jumping in joy over here. I did decided that I really do like the AOL protocol. It's much nicer than the AIM one, and a lot more technical thought (as apposed to abstract distributed thought) was put into it. It's like a REAL protocol (unlike AIM which is just a bunch of lame typecodes). It's got ACKs and real SeqNums, and all that groovy stuff. It will be fun.... but at this point it sounds much more fun just to go to bed...

Ich... This is worse than I thought. There's a routing loop over on the Burbank GlobalCenter bone! It makes it to the first HSSI connection in Burbank, then loops between fe5-0.cr1.BUR.globalcenter.net and fe1-0.cr2.BUR.globalcenter.net. I would have thought it would have cured itself by now (it's been almost 20minutes). Unless there's more than a two-router loop...that would be neat...think about the recursive properties of something like a 10 router loop or so... Anyway, it looks like the SoCal GlobalCenter network got itself partitioned off from the Inet because of this, and this is where the mail server (mail.primenet.com) happens to reside. (a traceroute to the mail server makes it to the first router in SoCal and stops -- no loop like the others, just stops) Oh, well...I just I could be using AOL or something where this happens weekly...


26 Jul 2322

Did some extremely prelminary work on the AOL protocol this afternoon (rather, most of the day on-and-off). I kept getting distracted. I hacked up an old version of protoFAIM to work with my early knowledge of the AOL protocol. At this point, it sends up the "service request" command and gets back the acknowledgement, then sits in a select() loop. Really quite amusing considering how long it took me to get to that stage with AIM (this time it actually took less than 15minutes work on the code). I'm amused enough for now... BTW, James did send me some of his notes on the AOL protocol, which, once again, helped me a great deal.

Quite the boring of days... Really, a lot of nothing happened today. I'm going to sleep early for reason's I'll mention tomorrow (yes, it's a secret). Oh ya, most of the rest of my room fell over today. This truely proves that gravity does still exist.... I guess I could stop experimenting now, but it's just become habit. I'd assume that the experimentation won't stop until either 1) companies stop sending me so much paper mail, or 2) my trashcan becomes either 1) much larger, or 2) self emptying. None of those three things is probably going to happen anytime soon, so, for the time being, we'll always have visible proof that gravity works....I'll put some pictures up sometime, then you can laugh too...


26 Jul 0217

Oh, let's see.... Let's go backwards...

James suggested I use my laptop for AOL packet generation. (Of course, he also recommended making a custom SOCKS server that automatically captures the packets instead....but I prefer tcpdump better, and it's easier!) So, I dug out that "boot DOS with no harddrive" disk image I made a few years ago. Luckily, I still had eagle set up the same way I had before (this disk uses Microsoft's own network client for DOS to start off a floppy, start a TCP/IP stack, and then connect C: to \\eagle\diskless and start Windows 3.10 off the eagle). This all makes it very easy to mess around with Windows and not ruin your hard drive (it's kind of like using NFSroot for testing new disk controller drivers in Linux, but I'd suggest using this method for Windows at all times). So, I copied an AOL install upto eagle and booted Windows off of it from the floppy. That was a bad idea. (BTW, I was going to install a fresh copy of AOL client onto eagle, but no matter how much disk space I freed up, AOL still complained it didn't have enough to install (it said it wanted 10mb, I gave it 35mb...go figure...). So, I just copied up my old AOL client from zeta.) It took about five minutes for the AOL login screen to decide to show up (that was five minutes of very heavy network transfers, btw). I finally just decided that was TOO slow, and...

I decided I'd finally found a use for ORL's VNC! I quick downloaded the VNCViewer for X and the VNC server for Win32 and installed it on my dad's machine (he'll never notice...until the cursor suddenly starts moving itself like magic...). I then came back in from the heat and installed AOL on his machine via VNC. It's a neat app, but it's a LOT slower than I'd imagined. I like that beta copy of Remotely Possible/32 I had a few years ago: it was very fast (of course that was back when I was still using Win95pink way back yonder in early 1995, so I've probably just forgotten how slow it was). It works, though.

I got libpcap and tcpdump compiled and installed on ihpled. Since we're all running on a switched ethernet mesh, we can't just stared at each other's packets anymore, and therefore I have to sniff at the router (ihled). Not exactly convenient, but it works. Which led me to...

Finally got a clean dump of a failing login process (it failed because David was still on). Anyway, it doesn't look like it will be TOO hard. James says he's got the checksums figured out, and that appears it will be the hardest part anyway. Oh, I'm guessing (read: hoping) the password encryption algorithm is a little more sophisticated than AIMs. That'll give Brock another project... It also doesn't appear to use TLVs like I was hoping. I really wish it did, since they're really neat and really make the commands simpler to analyse. I told David probably a month before the first alpha version comes out, and maybe another few weeks after that, a TCP/IP-emulation daemon for it so it can be a real network interface. Most people who really know what I'm imagining probably already know what I'm imagining. (For those who don't, I'm talking about a daemon that has a kernel-piece that's got a device (eg) /dev/aol, which can be configured (or rather just looked at) using ifconfig. Just like ethernet, and even more like PPP. In fact, it'll probably be based on the same type of interface as pppd has with the ppp kernel driver. In fact, it may even use the ppp kernel driver. We'll see. But, in any case, it makes for an interesting project.

Stepping back a little while farther back in time... Downloaded and compiled kernel 2.1.111-linus. It seems a little slower sometimes, but feels mostly the same (I was running 2.1.105). While that was compiling, I went over and grabbed a new version of RealAudio player, and listened to some clips from NPR, namely, last Friday's that had a few people on talking about PC OS alternatives (eg, Linux). There was some mildly interesting comments, but nothing really earthshaking. I am still wondering why Bill Joy decided to crawl out of his hole in Aspen just to do an interview like that one.... Oh, and while I was listening to that (who said life wasn't recursive), I was attempting to keep my sanity and drawing a diagram of how I want the CUMULUS integrated into our (new) IP addressing scheme... (more on that later)

Anyway, backing up again. I messed around a little with the fbcon/abscon (whichever they want to call it these days) in the new kernel. Interesting, though I couldn't get it to go to any of the hi-res text (graphics) modes it said it would. vga=ask just kept saying "invalid mode id" when I'd enter a hi-res VESA mode number (hex or decimal). I don't know... guess I configured something wrong...

Ok, I finally did a little more work on CUMULUS today. But, as usual, it was mostly hardware work. I decided after doing some ttcp measurements (oh, that's right, I found and downloaded ttcp today too), that one ring was just not going to be enough. fogbow-to-node speed ran about 140kb/sec no matter how many nodes were transmitting at a time (yes, that is one of the reasons I like token ring), which is admitidy kind of pokey. I tossed around the idea of adding a secondary 4mb ring (16mb was out of the picture because I only have the one 16mb-capable ISA card for fogbow), but then decided... I don't need fogbow on the second ring if all that's done is message passing anyway... So, now there's two rings, both 16mb, but only one is logically connected to fogbow (it's used for booting). This kind of arranges on paper to be a spoked-wheel like drawing: the fogbow-connected ring on the outside and the message-passing ring on the inside, with spokes between the two representing the actual machines. (BTW, even though it may seem at quick glance that one of the nodes needs to act as a router between the two rings, that doesn't happen: since every node is connected to both rings, they can each send the packets where they need to go with zero metric required.)

I would comment about what I hope to do with regard to addressing, but I really shouldn't. I need to get to sleep. Ok, a little. I'd like to get the whole house into a unified address scheme, and that includes CUMULUS. Since we needs so many nodes in so many different classes, I decided many, many months ago that we should eventually move to the 10.x.x.x block, for obvious reasons (as Jon Postel says, "if you're going to pick one, you might as well pick the largest"). I've already put CUMULUS into the 10.1.0.0/16 block, but I'd like to move that up a ways, possibly to 10.10.0.0/16. That would give me some room for experimenting down below. I suppose 10.0.0.0/24 would be the logical choice for our current crop of hosts. I might put the classics into their own subnet (ie, 10.0.10.0/24 or something). But, that means changing a LOT of DNS entries and dependencies. I guess there must be sacrifices made in the name of flexibility, and time in this case is what gets cut. Time, though, is there very thing I'm fighting at this very moment: you see, Sol's going to put up here in not too distant future and I'm going to not had any sleep at all. So here now, I rest....zzzz....


25 Jul 0247

I figured it was late enough now that I should start another block...although, I just finished writing the last sentance of the previous one mere minutes ago.

Anyway, this is to remind me. Yes, that's right: to remind me. To remind me to look into the Extenders/Expanders for the TI-92 calcs. They might be what we need to get Linux onto them...if they're RAM and not just mere ROM, that is. Interesting. Even that IDE-I2C interface they speak of may be crucial...esp if it's true I2C.

Ok, that's it. I promise (even though thats an utterly useless cause).


25 Jul 0109

Got fed up with the complaints about bad-looking FAIM pages. So, I wasted a hour-hour this afternoon attempting to bring up the only Win98/IEx (4 <= x <= 5) based box we have around here: gw2k. It's slow, it's intolerable, it's an SX (you thought I was going to way Win98, did you!). It's very slow, all around. And the video is terrible. But, I did find out where I put that set of 8mb SIMMs I'd been looking for.... Anyway, I looked and I said, "well, it's not THAT bad". You must consider that Win98 is the only browser known to man that can get away with being non-standards compliant. And that applies to moral standards and explicit industry standards. Every browser I've ever seen rendered the width of table cell to the width of the widest static object (this includes ALL versions of netcape and IE's <= 3.0x). But, no, they had to go off and make everything worse. Well, so yes, I did find an alternate method of doing fixed table widths, but I liked the old one better. It took alot of the variables out and was just more logical. Everyone, please sue Microsoft.

Most of the rest of the day was spent on the AIM/OSCAR spec. Although, I really didn't get very far at all. I kept getting distracted by things. Mainly, my dreams of an AIM server. And my dreams of actually getting everything done in a single day that I WANT to get done in a single day.

Fixed (or rather just turned on) SSI in Apache for Brock, so he could redo his "home page" using SSI.

Spent of few hours in the wee morning chatting with Brock. Also, reading fortunes and laughing my ass off. After that, I decided I was tired and should probably use the next few hours least-efficiently by lying horizontally on a way-too-hard flat object called, strangely enough, a "bed". Ahh, when I understand the American English language, I shall be amazed.... (And it will probably the day after I memorized every line of the Linux kernel, then forget what an __initfunc() is, because of course, the Law Of Conservatin of Human Brain Cells always for some reason holds true....)

Ok, open questionaire: what domain name should I order? It's got to be preferably under the .com or .net TLDs, but I suppose I could think about a .org as well. Please, give me some ideas that haven't already been taken yet! It needs to be short and not sound TOOOO stupid.

"Have an adequate day."


24 Jul 0130

I've begun updating the AIM/OSCAR protocol spec to reflect my newfound insights given to me by James. I've also split it up so netscape doesn't waste a half-hour sitting there and rendering all 30kb of tables. This thing's going to need a major revamp. Sections 1.0 and 2.0 have been updated. Section 1.0, was of course, easy because it's all administrative information anyway. I did add a few sections, though, including a disclaimer, and a mention of James as a major contributor (actually, I listed him as a co-author). Section 2.0 got some heavy amounts of information added to it. This includes a real definition of what a SNAC is and a table of all the currently known SNAC families and subtypes. Very neat stuff.

James got a new copy of his code out to me, and I finally sat down and learned what the hell a TLV was and how it is used. TLVs are now my friends. They're really, really nifty. They're a method of sending dynamic-length data over the wire in a modular format. TLV in itself, as I found out, stands for "Type, Length, Value". And that's exactly what it is. It's a 16bit type code, a 16bit length, and a variable length data section. It doesn't sound all that earthshaking, but it is. Just go through a protocol dump of any AIM command and start tupling up things into TLVs. It's amazing how cleanly it all looks afterwards. Very groovy.

Well, thats mostly it. Kim kept trying to start a decent discussion, but that failed wholely. She doesn't seem to understand that I can't just discuss something that we're planning to discuss. Discussions happen naturaly. If you have to think about having a discussion, it's not a discussion, except for maybe the meta-discussion you're having discusing the discussion, which is probably a real discussion. Let's stop using that word now. Moving on. I was up until literally 0500 this morning having a theological discussion with Brock. I think I've mentioned that in yesterday's log, so I won't talk about it again. I didn't get much sleep, needless to say. Aparently he got even less. David (who was with Brock, staying up all night for no apparent reason) went to bed at 1930 tonight, and I haven't talked to Brock since 0500. I don't know... I'm going to get more sleep tonight...hopefully...that is, if I don't find anything too exciting to read before then...well, ok, so I'll probably read Stevens' UNIX Network Programming a little...that's extremely exciting material...I think I've typed enough period-triples tonight/this morning to safely say the sentence I've just said. Good Day.


23 Jul 0314

Well, interesting day. I was browsing around Slashdot.org shortly after I awoke and guess what I see down in the corner... In the freshmeat box: "Oscar (formerly known as Aim-C"!!! Arg...someone else has been doing all this work too! So I immediatly mailed the guy. We decided that collaboration between ourselves would be the best way to continue. And after I mentioned that my next major project was going to be the AOL protocol, he countered with: "Too ironic: I've just started on that!" Eeek! Is this guy reading my mind or something! It was really getting scary there for quite a while.... Anyway, he's already started on the AOL stuff, and he's mostly done with the AIM stuff. He says we're both at the same stages, but IMHO, he's definitly farther. He's got it all down to individual TLVs inside the SNACs! I didn't even know what a TLV was until I asked him! Well, anyway, he's going to help me fix my protocol spec to get it up to date with his concepts of the protocol's design. That should be a good thing for us all.

I also got a message from a real ass this morning telling me 1) the AIM work I'm doing is illegal and 2) I can't write HTML. On both counts, I really don't give a damn. I'm not doing this for other people -- that's a side benefit. If you have a problem with me doing this illegally, let AOL know your opinions. I've let them know at least four times now what I'm doing. I haven't gotten so much as a response. Please don't waste my time telling me about it. As for HTML...use netscape and forget about it. It's an open source project: USE AN OPEN SOURCE BROWSER! Using a microsoft browser to look at the pages of an open source project is quite idiosyncratic.

Ok, ok. I keep preaching that I'm not here to talk legal babble, yet I still end up doing so...here I go a again. STOP. I attempted to run AOL 3.0 under WINE. That was mildly successful under wine-113097. I tried getting the latest wine to compile with no luck. It didn't compile at all. Very bad. So I decided to try Willows' TWIN. Bad idea. It works worse than any version of WINE I've used in probably two years.

Anyway, I got three nodes of CUMULUS booting off the master node (fogbow). They work quite nicely. The good part is that it's all done in a short tidy script and can create a new node in less than a minute.

It's now an hour later, about 0430. My "sleep" has been defered for a while in order to continue this great conversation. Which, amusingly enough, began with the definition of sleep. And has now ended up as a discussion of individualist vs socialist religions and polytheist vs monotheist religions. Interesting, and long. It doesn't appear it's going to be over soon...


22 Jul 0138

This month is departing too fast. I really don't want Aug to happen. The school year is too antiproductive, not to mention inredibly, no insanely, boresome.

gtkFAIM is now in a state where I'd WANT to use it over AIM Java. It's still got a few bugs (three biggies). But, I made a stable binary copy for me to use instead of AOL AIM. The executable is a wopping 54kb. Yes, that's right, I've replaced an 8mb Java client with a 54kb GTK+ client. And people said Java was a good thing.... (The 8mb is not including the memory footprint of the Java VM, which normally adds about 45mb!)

Both of today's two main features were also two main learning experiences. I learned how to make color function properly. That took way too long. Also, I learned how to make accelerator tables work. That was just too confusing, since my only documentation was the GTK library source itself. Seems no one thought it important. I finally gleaned the accelerator table process from the karpski source (a very well written and useful application, by the way). Also, the color stuff was learned from the GIMP source (another very useful (and extremely cool) application, though well written, maybe not).

The color knowledge allowed me to add the beginnings of HTML. Basically, the font tag is the only working one, and even then, it's only the "back" and "fgcolor" properies. I need to learn about fonts in GTK/GDK so I can do the "size" property. Oh, the "br" tag works too, but that's kind of trivial. Essentially, there's enough interpretation there to let only the gtkfaim_html_insert() function do direct inserts into a text box. Everything else should be using that function to do it. This allowed for adding the "srcsn" and "destsn" colors in the "conversation" box of an IM window very simply. Also, colors must always be specifyed in the "pound notation" (ie, a pound followed by 6 hex digits (#rrggbb")).

All those colors, of course, need to be configurable from the config file. That's to be added at a later time (probably right after I start caring about it). I also need to make the "send IM" hotkey an option. (At this point it's Ctrl-S because I can't get Ctrl-Enter/Return to work.)

The four major bugs (yes, I did say three, but I remembered another): no autoscrolling in the conversation box, idiotic focus jumps in the IM window, closing an IM window who's destination SN has already been removed from the buddy list crashes in an infinite loop, and finally, incoming IMs don't get parsed in accordance with the latest spec (some messages get badly interpreted and usually lost in the current situation). The last is simple to fix, the one prior just needs to have it's cause found, and the other two just need to get fixed. Now that I'm using it instead of AIM in my daily use, I'm sure I'll find more bugs.

I'm attempting to decide whether to spend probaby $15 on an EISA 486 motherboard or $5+$15shipping on a Sun3/50. I want both. I don't need either. Since the motherboard closes at auction before the Sun3, I can delay my descision on it. I think I'll get the motherboard. (Since it uses 72pin SIMMs, I'll be able to have more than 8mb in fogbow.) I really want the 3/50 just so I can have another Sun in my collection (that machine would make a total of four machines: a 3/50, a 3/60, a 4/110, and a 4c/75 (SPARCstation 2). That's to add to the three DECs, and the....

I guess it was a productive day...though, it could have easily fooled me... Glad I'm not in Papua...(for more than the reason of tsunamis)...


21 Jul 0157

It's been quite a long day. I've been up straight since 0600 on the morning of the 20 Jul. Please don't ask me why I was up that early. I really don't know. I just woke up and wasn't tired, so I stayed up, and here we are, 20hrs later.

Took ihpled down for about 20minutes this afternoon. I couldn't get zeta to accept mail for it, so I just winged-it. It doesn't look like too bad of damage was done. Why zeta wouldn't work, I don't know. As for ihpled, the only things I did were remove the 3Com token ring card and replace the BusLogic BT-747S SCSI card with a BT-742A. That was a very quick change as it required changing nothing but the hardware itself. The EISA config file is the same for both cards, so no floppy-shuffling. I decided I didn't need the 747's performance for merely spinning tapes, so I put in the older, but basically the same 742A, which came from a nice guy up in Canada. (Along with it came a really groovy Novell full-length EISA ethernet card complete with an i80186!)

gtkFAIM made some improvements today. It now knows enough about HTML to strip it off before showing incoming messages. Thank goodness. One more step to a usable replacement for AIMJava. Oh, and I merged my two AIM protocol routine trees. Also did some other cleanup. Fixed a few of the things mentioned at the top of gtkfaim.c. (Of course, only I can see that file at this point. I really should put up a fresh public copy.)

I actually read the AIM service agreement today. According to it, everything I've been doing for the past three weeks has been illegal. Though this is not a first (and definitly not the last) time this has happened, it's still suprising that I never noticed that part of it before. Considering, though, that in the paragraph above that one, it says that all AIM users must be 18years or older, I'm guessing no one gives a damn. And if they do, I'm going to speed up my FAIM Reflector and FAIM Server projects just out of spite. Also, in the heat of my rage, I'm going to begin decoding the full AOL protocol. Yes, that's right: the whole thing! No more lame AOL clients! (Though, since I'm not an AOL user, I will be borrowing someone elses account to do the work.) Ain't this fun stuff??? And since I didn't agree to the service contract of AOL, it really isn't illegal for me to do it. Though, the person who let me borrow their account will probably no longer have that account. I just really don't care. AOL is too big and too worried about competing with Portal companies to be chasing after people the likes of me. They're not that stupid (at least I don't think they are). Then maybe I'll setup a new service that looks and acts just like AOL service and even uses the same client! Wouldn't that be cruel to ol' AOL...

Ok, calming down... The FAIM stuff is going quite well. It's quickly becoming a usable client. Though, I need to rethink the way the queue flushings get scheduled, unless I go multi-threaded, which is more work than I want. Maybe I'll check out some of the gtk-based IRC clients and see how they did it without lagging in GUI response times My first thoughts were moving the socket read for the rx_queue from a gtk-based select to a gtk-based idle-time function. That way it'd be guarenteed not to disrupt while you're typing a message, which is oh so annoying. Also, some scrolling things and the normal focus oddities need to be fixed in the IM window, as well as adding a hot-key for the "send" button (using the mouse just to send a message gets annoying after a while).

I've renamed the Cluster from Echidna to CUMULUS. Yes, go there, there's an acronym expansion and everything. I was getting tired of Echdina.

I think that's it for today. Not much else occured besides the normals: eating, drinking, breathing, and doing a lot of sweating. I hate this state. People weren't meant to live like this. At least my people weren't. Caucasion people were meant to live in the northlands, not the deserts.


20 Jul 0155

Some interesting additions to gtkFAIM today. It now has a buddy list similar to AIM's. It also has a configuration file (though, the buddy list that gets sent up is not yet the one read of the config file). In making a format for the config file, I came up with an idea: aliases. Since many people (ie, me) can't get the SN they want, it would be helpful to have aliases (such as their real name or some more understandable nick). I haven't actually implemented this very far yet, but I probably will later. Anyway, the config file format is line-level atomic, unlike AIM's AIM.cfg. Any other way would have given me a headache. I thought about being able to use the AIM config file directly, then I realized that would be just too difficult and probably not worth the effort to begin with. Back to the buddy list. It reads the config file, puts all the group definitions and buddy definitions into a list and then a few functions later, the tree gets made (a heirarchial tree made with GtkTree class). (I've found several things I dislike about that widget, but even with all it's faults, it's still easier than doing it myself.) I added a pseudo-"TODO" list to the beginning of gtkfaim.c to remind me what I need to do next. It's a very long list. Most screenshots will be out soon (probably tomorrow, if I remember and/or can get some of these uglies out of the GUI).

The basic functionalities of the buddy list are there. It's a list a screen names that are logged on at the moment. Names are removed or added when notifications of such events are received. Actually, they're just hidden or shown. This is what leads to one of the strange things I've seen so far: the tree branches still form just like a hidden node was still being shown! It makes the last entry of the branch quite hokey looking. There's alot to be done, but the basic functionality is there. There's also quite a sophisticated lot of low-level linking in order to stick with all complex types and avoid using strings directly. You can't just have a mere "char *sn" anymore: it's got to be encapsulated inside of a "struct gtkfaim_buddy_struct", which also holds alot of other crucial data. For implementing the buddy list, I got away with only adding one more linked list (singly linked, thank goodness). The group definitions and the buddy definitions are in the same list, and can be differentiated by the "type" member of the struct. There should also be some unions in there (though I think I forgot to put them in). There's things in the struct that are only for groups and some that are only for buddies, so unions were in order to save memory. Also, groups are encapsulated into a struct as well. That's enough implmentation notes for one night/morning (whatever, Kim).

Other than that stuff, I mostly learned more of GTK+ semantics. Also slept for quite some time earlier in the morning. Brock wasn't on much today, so no discussions there. Kim, on the other hand, well, I had a very interesting discussion with her, but aren't they all with her... She's got some "different" ideas... My attempts to explain to her why I think the original Star Trek series was the best of them all failed miserably. Seems no one enjoys good, meaningful plots and the certain type of humor that only that series had. I guess no one my age enjoys the 60's and 70's as much as I do... This has generally been one of those "anti-human" days, so you're probably glad you didn't talk to me today (Kim wasn't quite so lucky)...


19 Jul 0047

Some major progress on the AIM documentation front. No real code done today, but a lot of words got formed and mushed together. I made an announcement to aim-protocol that I had completed version 0.1 of the spec. Hopefully, I won't regret that. I'm quoted as saying 70% of what I want in there is there, so I guess I'll stand by that. There's enough there to make a simplistic client anyway. If they want more info, for now, they'll have to look at the code.

Other than that, not much done today (I'm getting a little to repetitive). Talked with brock a bunch (still am right now, in fact). Also talked with kim a bit. That's a scary effort indeed. I finally got here to give in, though. She decided it wasn't worth arguing with me about whether it's truely possible to babble or not. Of course, I said it wasn't because even when you're babbling, you still have a common stream of thought, and therefore aren't babbling at all! Just like this, I'm babbling, but I still have a common thought base: whether babbling is possible or not! Anyway...

I found a SPARCstation 2 case on Ebay for $20. Looks like I'm going to get it. Will be nice to have an SS2 around, if for nothing more than another machine in the collection. Herbert gave me that Opus SS2 clone motherboard, now i just need a video adapter (actually, that's not required, I'm sure the serial port works just dandy). There's also a case+mobo SS1+ on there going for $20...I'm trying hard to resist...

An unbelievably boring day. And, it was just too damn hot to keep any level of concentration at all...


18 Jul 0227

As is normally the case after a very innovative day, the day after is useless. This is what today was. Nothing done.

I started to fix up the AIM Protocol Specification, but my RAM troubles made that effort turn sour.

So, I fixed that problem by pulling the machine back off the floor and moving a bunch of jumpers around to set the RAM to 5v. (I had left it at the default 3.3v because it seemed to be working properly.) Sure enough, that fixed the problem just fine... I should have known better than to try that... BTW, installing and removing jumpers is quite the interesting thing to do when you have no depth perception (I'm still being told not to put my contact in the eye with the swollen eyelid).

Ok, I just wanted to make a note here. Yes, I do where contact lenses. But, I don't wear them for the reason most people wear them. I wear them because of convience, not because of some hyperactive sense of vanity. Glasses are annoying, and contacts are at least a little less annoying. Ok, that's all, back on track...

BTW, the eyelid is still swollen a tad, though not as much as it has been. I can clearly see a sty now. There's a very visible bump on the exterior of my eyelid because of it protruding from beneath. It's gross, yes. But, it doesn't really bother me. It's not painfull, nor does it impare vision. This whole thing is really just a big overblown mess, if you ask me.

So, my RAM is now running at 5v. But, after I changed that, it was getting late, so I wasn't real motivated to start anything. So I didn't. I've basically been doing nothing for about the past 6 hours.

Oh, I did chat with Pete Demoreuille a little. He's heavily interested in working on an AIM clone as well. But, he's trying to get RH5.1 onto his home computer before he starts coding. The problem with that is that he's got an adaptec 2940uw (sickening), which does wierd things with RH5.1's startup procedure. It will install OK, but onces its all installed and boots up for the first time off the installed partition, it dies, because the aic7xxx driver fails for some reason. I got a copy of my bzImage-2.1.105-4-newtulip kernel over to him, with the root fs set to his. I guess that got him booted a little farther, but he's still having problems. He mentioned something about parity errors and such. He could have a badly terminated bus, or RAM parity errors, or... I can't tell... I didn't get to chat with him after that -- I was out of the room and he left before I got back. Anyway, he's very interested in making an AIM clone, esp one that combines the services of AIM and ICQ so that he doesn't need two clients. I agree with him there. Using two clients to provide similar services is kindof pointless. Maybe we can build an ICQ/AIM bridge? Send a message to an AIM account containing a message and a destuin, and an automated process sends it across ICQ? Maybe? Maybe there's no point to that, but it would have a relativly high hack value. :)

I unofficially decided to have a day off from anything related to gtkFAIM. That's all. That's today. Oh, I chatted with awwaiid and TGaArdvark some. Nothing terribly interesting progressed. Had a discussion with awwaiid about the true possibility of cross-platform languages (or the lack thereof), but nothing new there. Oh, awwaiid's sister, karisma made her official decision that I was wierd. Thank you, karisma. I treasure your opinion. (She also made the statement that she was "42". I just had to get her to take THAT back... I told her I was 42.1. that messed with her a little....

One thing about gtkFAIM today: I used it almost exclusivly for my discussions!


16 Jul 2356

Well, gtkFAIM made a giant leap forward today. For one thing, it's usable. You can send and receive IMs in the IMWindows just like you can in the AOL AIM. Ctrl-Enter doesn't work, so you have to manually click "Send". Which, btw, is the only one of the four buttons in the IMwindow that actually works. The others just sit there. But, "Send" works as promised. It sends an IM with the message you typed to the destination associated with the window you typed it in, clears the input box, and copies it up into the top pane (the "conversation box") just like AOL AIM. Not even the "close" button works yet. Also, gtkFAIM can't initiate a conversation, since buddy lists are not quite working yet (or anything else in the main window). Speaking of the main window, it now has a menu bar! The menus are similar to the AIM menus, including the fact that they don't do anything. There's still a LOT to be done... Oh, and the "buddy list window" or the main window doesn't get created/displayed until FAIM gets the final packet of the login process. This will allow for a "login splash screen" ala...guess what? AOL AIM...

A screenshot of the very preliminary, but functional, gtkFAIM v0.01 can be found here.

This evening, I also made the official announcement of v0.01 of the AIM API routines (that is, everything that isn't specific to a certain client). This announcment was made to aim-clone and the icq-dev mailing lists. I hope everyone else is as excited as I am.

Also took ANOTHER trip to a doctor today. There were four doctors/nurses standing around me this morning trying to determine what the hell was wrong with my eyelid. After some rather large amounts of pain, they finally DID find a sty up way under the lid. Very odd place for a sty. I'm take 875mg (!) of Augmentan every 12 hours for now, along with rubbing the eyelib with Polysporin. So, now at least they have a reason for the swelling. Now if it would only goaway and leave me alone, I'd be happy....

Seeing as how I've been up since 0600 this morning, and still haven't had a nap, I'm quite tired. .Thgin Doog


16 Jul 0007

Worked on FAIM-related things most of the day. It's coming along nicely. I got outgoing IMs to work again. It turns out I was sending the wrong family type (sending incorrect 0x04 instead of correct 0x02). Also, I found that I can just leave about 16bytes of that packet as zeros, where AIM normally sends aparent gibberish. Also finally implemented aim_tx_purgequeue() for purging the transmit queue of sent commands. Currently, this is done immediatly after aim_tx_flushqueue(). I think I'll remove it from there and put purging on a timer. It's a waste to do it immediatly after every command is sent. Stupid, and defeats the Number Two purpose of the tx queue to begin with. Alot of renaming also got done, along with a cleanup of the passing of file descriptors, which are not needed now that it's global.

But, nothing overshadows the largest of todays innovations: overridable callbacks for the receive handlers. This allows "client applications" using the API to set their own command handlers. This allows for proper integration into a UI without modifying the API code itself. The client app builds an array of either NULLs or function pointers that correspond to the handlers. Then the client calls aim_register_callbacks() and all is done right. Now, faimtest.c (protoFAIM) is now just a bare-rudiments example of a "client application", instead of a critical point of the whole API like it was before. This all allowed me to begin todays number two innovation...

The beginnings of gtkFAIM. That's the FAIM that's based on the GTK+ GUI toolkit for X. At this point (right before I'm off to bed), it's basically the same as protoFAIM, but it opens up a main window, which has a single button ("signoff") and creates and displays a new window when it gets an IM from a person it hasn't yet gotten an IM from yet (with the source SN in the title bar, of course). There's currently nothing in the boxes for the IMs, but I'm working on that. I must figure out how the "packing" thing is suppose to work and then add two text boxes and a "send" button. Then we'll have a usable app. After that, we'll return to the main window, adding the buddy list stuff, then we can continue widget-by-widget cloning AIM. At this point, the IM window pointers are stored in a list (gtkfaim_imwindow_list), and are created and enlisted when an IM from a new person arrives (no duplicate windows allowed), but they're never delisted. No very high on my priorities yet. It's coming along quite well for being both the first AIM clone and my first GTK app...

I have a doctors appointment (this time with a GP instead of an optomitrist) tomorrow morning at 0815. Early morning, again. Still, no one has any idea what the hell is wrong with my eyelid...


14 Jul 22:19

I've been out of the state since last Fri morning, got home about 1800 yesterday (Mon). I was on "vacation" to SoCal. You know, Disneyland and all that mess... A note to everyone who gets stuck reading maps: when you get to San Diego, just give up. It's a sticky mess full of circular and neverending streets that just prove to drive you insane. God help me if I ever see Nimitz Blvd again...

Anyway, back to the present, or at least the near past. Yesterday, when I woke up, my right eye was swollen nearly shut. This is not a good sign. The eye was fine, but the eyelid seemed to be having a problem with itself. It persists to this minute (although does get better at times). I went to the optomistrist this morn, only to discover he had no idea what the problem was either. It didn't appear to him to be a sty or anything like that. He mentioned it could be alergies or I could've been bitten by some sort of bug. No infection is aparent, so I'm not to worry. It "should" just go away in a few days. In the mean time, I continue to put steroids on the lid and hope the pain goes away soon...

As I said, we got home around 1800 last night, after the oh, 7.5hr drive home from Los Angeles. I didn't do too much last night, other than check to make sure all the servers were still running, and talked to Brock a little. Departed the world of the waking relativly early, about 2300.

This morning was filled with the normal (though dreaded) procedure of waking up (including try to get my right eye open again, as it had swelled a bit more overnight), followed by the visit to the doctor. I came back home to work on the AIM/FAIM stuff a bit more.

I implemented the beginnings of transmit queuing. Interesting. It wasn't exactly the quick bit of work that receive queuing was. But, it's at least there nonetheless. The problem is, it doesn't work. Or rather, it works, but the data it's sending is wrong. Or something. I don't know. protoFAIM has stopped sending IMs in any form whatsoever: hardcoded, dynamic w/ txqueue, or dynamic w/o txqueue. Nothing works now, except receive. The rxqueue works great. For some reason, though, everytime I send something, I get back a trippy random response and the server closes the connection, and FAIM dies. I don't understand. It worked before. I'll have to check on it again. Anyway, the txqueue does work, it's just the data that aim_send_im() is generating is wrong, I guess.

Also, all the FAIM source so far has been split into many, many source files. So, faimtest.c (know to the world as faim.c), is now only the bare rudiments of what's needed in a generic client. The rest of the functions are provided by the library routines. It's neat. Also, I've moved three things to become global variables: aim_connection (a struct connection_info_struct -- the first connection is now compelelty localized in aim_login(), this is the second connection only), aim_queue_incoming, and aim_queue_outgoing. The two latter are, of course, the queue pointers. I've implemented simple locking for when signals happen (ie, to prevent a txflush signal from sending a locked (in progress) packet, etc).

Well, anyway... since I have a few extra dollars these days that I don't have anything to use for, I've been thinking about setting up an account with one of the big online-trading (low commision) companies to try my hand at making some money that way. The online one I've found so far is mydiscountbroker.com (you know, the one's with the nifty jingle with the bouncing ball commercials CNBC, Soverign Securities is their real name). That is, so far that doesn't require at least USD$1000 in initial balance and/or at least USD$2000 in provable assets, neither of which I have. Sovereign requires NO inital deposit and no proof of assets. Good. Now I just need to figure out the paper work for joint signees (I'm still a minor, after all). They offer US$12 trades up to 5000 shares. That's about average. Unless you go to an even larger firm, in which case you get back to the problem I mentioned above. I've seen online trading commisions as low as US$8.00. Cheap. US$12.00 is cheap, too, compared to the percentage-based commisions most human brokers get.

I've also just added a new user to our network. This one for someone by the nick of White_Lightning (now wlfs98@delphid.ml.org). Have fun.


9 Jul 23:59

Got a little more done with generalizing the AIM packets in protoFAIM. All of them should be dynamically created at run time. They all work too, sans the profile packet. I haven't figured it out yet. I don't feel like working any more on it tonight anyway, so I'm not. It's generated, but the server sends back an error code and your profile doesn't show up when you do an "info" from the normal AIM.

Other than that problem, everything is still working great. Brock's password encoding algo get implemented and is working spledidly. The login process only needs two parameters to begin: screen name and password. Just the way it was meant to be. I still haven't implemented the authentication server disconect the way I want to yet (mainly, I removing the connections[] array and replace it with a single connection_info_struct). Transmit queuing would also be a nice feature right now.

Bye.


9 Jul 17:05

New motherboard installed. Everything working good. It turns out that the i430TX chipset only caches the first 64MB of RAM. I can't tell the difference (I'm using 128MB). Haven't had the courage to boot Win95 on it yet, though I haven't had the courage to boot Win95 at all in the past two months.

I put the Kingston (tulip) ethernet card back in instead of the boomerang, since I now know it was the switch making it go wacky and not the card. The CPU fan mounting assembly is now personalized. I had to modify it "slightly" to make the bracket fit this board (Tyan S1571). The guy who layed out this board should be shot, or at least fired. They put a large capacitor right in from the of the little notch where the fan bracket clips onto the ZIF socket, making it impossible for a standard bracket to fit properly. So, I let it fight with the Dremel for a while, and eventually, the bracket decided to be a little more passifistic. And, the garage now stinks because of the burning metal from when it was being cut. The capacitor, on the other hand, still stands, sans a small lean away from the CPU socket. The other idiotic problem, also having to do with capacitors, was two of them being mounted next one of the PCI sockets. That little gap between the metal mounting bracket on the PCI card and the actual PCI PCB is assumed to be a fixed length. Well, at least for me, it's not. I eventually found an arrangment that fit properly, though. Also, the Bt848 card doesn't slip all the way down into the socket. It works, but I don't like it. Oh, and I had to move the GUS (a near full length ISA card) had to be moved up a slot because of the way the keylock connector sits on the motherboard. Oh, and there's only one screw holding the motherboard in place. (!)

Anyhow, zeta is now back up. It took less than 2.5hrs to do the change. Good time for such an extensive change. zeta is now back up to 200MHz. If it continues to work this well, I might start to think about overclocking it to 233MHz. Doubt it would gain much, though. Oh, and I also rearranged the hard drives so they have at least 5cm of clearance on top and bottom. Should make for a little cooler operation (compared to the former arrangement, where they sat mere millimeters apart).

From the looks of the new abscon kernel stuff, paired with the kgicon KGI/fbcon bridge, using that old ZXlp-3 8mb frame buffer that came with the AlphaStation in zeta might be possible. (The abscon is suppose to now be able to support video cards that don't have a native text mode nor BIOS, like the ZXlp-3.) Might be interesting...

protoFAIM (as of when I went to bed last night) ran for about 12.5hrs without crashing itself. I guess I got most of the robustness bugs out of it. It still crashes if you flood it with IMs too fast. I think that's because packets get sent to the server (when it sends the message back) out-of-order according to their sequence numbers. This should get fixed when I get transmit queuing implemented, since it will assign seqnums immediatly before it goes to the wire, not necessarily in the order they were queued. This is an abstraction, and IMHO, a good one. No other progress on that front today. Though, Brock did come back, and got to interact with AFritzler a little. He didn't find it anywhere near as amusing as David and I did, but oh well.

Probably more later.... The day's not done yet...


9 Jul 00:15

Some major progress on the AIM API today. I got receive command queuing implemented right and proper. That generally cleans up a lot of things, and fixes a few others. The major advantage is that it makes the login process a lot more dynamic and flexible. No longer does the login process (past phase2 anyway) have to occur in a set and defined order. Only transmits are done rigidly, but even then only after the prequisite receive has been dequeued from the receive buffer. Everything past phase1, except for one transmit in phase2, is done live. Everything happens in response to something else. Login packets past that point are processed by the same functions as any other live packet, and have specific packet handlers where needed. Very clean, IMHO. Now, if only we had transmit queuing, it would clean up the other half of the login process...maybe tomorrow.

A side benefit of that new paradigm, is that it made reducing the login process down to a single function far simpler, since it elminated a half-dozen functions (almost all of the get_* functions have been killed). Now, aim_login() has just three parameters: a connection_info_struct ptr (for the socket array), a char * for the screen name, and a char * for the password. That's still all firm-coded, but that should be very simple to change, and really only needs to have Brock's password routine coded and put in place. Very simple. It looks like my statement yesterday saying that single function login is "a while off" can now be declared a bad prediction.

Oh, and I found that you can close the connection to the authentication server (login.oscar.aol.com) immediatly after you get the response packet from it containing the authentication garbage that you send to the new server. Works good, and may end up cleaning up aim_login() even more!

While I was waiting for Oscar's "reservation limit" to wear off, I did a little reading about GTK. I picked that toolkit because 1) it's the "wave of the future" for GNU GUI apps, 2) it's used by Gnome, 3) it looks neat. And, it's got the most future. Most of the other major toolkits are dead. After seeing that GTK handles it's event loop in a very closed manner (ie, you just call "gtk_main()" and your done), I was quite scared. How could you possibly do anything usefull if all you did was listen to toolkit events??? Then I looked further. It's got some neat things to get around that closed function. The one I like is kind of the GTK-compatible implementation of select(). You give it a socket to watch, and it does a callback when there's something to be seen there. Very nice. Probably better than select(), actually. We'll see. I haven't written a GUI in...hmmm...three years? Should be interesting...

On a little more personal note, this has definitly been the most enjoyable span of programming for me ever. For some reason, everything just fell into place, which doesn't usually happen -- especially when doing complicated things like queues (which usually frustrate me so much with segfaults that I give up and find a different, less effective way to do it). Actually, the linked list of the queue was probably the simplest thing I did today. For some reason, the sockaddr_in struct started going haywire once I moved them to aim_login() (from main()). Whenever I'd memcpy() data into it, it would segfault! I'd never had this trouble before. My quick-and-dirty fix was to allocate the sockaddr_in structs dynamically using a pointer and malloc instead. I still don't understand why it didn't work. It works now, and it does what I want, so I don't care. Anyway, I'm really beginning to like programming again, esp after today. The speed problem is going away too (as I figured it would once I starting doing it more).

On a completely unrelated note, the Tyan mobo for zeta should be here tomorrow. It arrived at the Phoenix central UPS office, and should find it's way onto a truck and to the house by the afternoon. I've backed up zeta again just in case! :)

Actually, I had to redo the backup I did yesterday because I used the wrong device name (st0 instead of nst0), and accidently wrote an EOF over the tar headers of the tape. That was no good, so I just redid it again today. I'll backup ihpled while I'm sleeping.

That's it for today. I talked to Kari this afternoon, so it appears Brock' phone service has resumed (someone finally decided to pay the bill). Brock has not resumed his presense, though -- he's still in Floridia. At least that's what I can tell. Something about FBLA. I don't know. Bye.


8 Jul 02:16

All this coding and decoding leaves little time to write in here...

Fixed bunches of minor buglets in protoFAIM routines, particularly in the IM send/recv. Made the discovery that the "string length" parameters used everywhere are words, not just bytes, so that enabled sending IMs where the total packet size is greater than 0xFF (now the limits at 0xFFFF, which is certainly not a problem). This also allowed fixing a few other packets, and reduced the amount of confusion for the specification of protocol. Which, btw, now covers packets through Phase 3B. It also took a major rearrangement of the pages. There's still some minor errors, but I'm sure they'll get fixed over time.

Another quite important tidbit, is that protoFAIM now dynamically generates the initial login packet (well, mostly). The password is still hardcoded, but that's simple enough to change, because of the new routines put around it. I'd like to get that function down to: send_login(int socket, char *sn, char *password) (ie, total atomicity). Of course, I'd like the entire login process to be started by just calling one function, but that's a while off.

David (TGaArdvark)'s testing of the "return-to-sender" behavior has allowed me to fix the incoming IM parsing routine. It was for some reason broke when the length of the srcSN changed. I fixed it in a way I don't really like, but it works, it's just not 100% reliable. It relies on the first 0x3c of the packet being the first byte of the message. Needless to say, this is stupid. Again, I don't like. But, since I don't understand why it wasn't working to begin with, I'm going to keep this. David has continued testing extensively, and it's yet to break (with messages from me or him). Brock would love this...

Other than this stuff, not much else happened. My chair fell apart, so I had to actually stand up to fix that. The weather was just a general gloominess most of the early evening. A lot of thunder and lightning, a few power grid sags (the inverter alarm on the UPS has been keeping me awake). I love this weather! (and that's not sarcasm) I just wish it would rain a little more...something should justify this humidity, which is getting pretty dreadful...but it's ok if you stay in an air-conditioned place... Rain is much nicer than high humidity...

Oh, and I backed up all (ie, all 5.4gigs) of zeta, including the FAT partitions. This was all done over 10Mb half-duplex ethernet, since the other 100Mb on the switch has yet to resume life. It took roughly 12 hours. I'm assuming it finished properly....I'm just assuming it was done when the lights on the hub in my room stopped flashing...


7 Jul 01:57

Before I leave for the evening, I must post my leaps of progress on FAIM...

Not only does it login, sit there, and logout, but it also processes live events! Currently handled event packets: buddy oncoming, incoming IM, outgoing IM. "Buddy oncoming" packets occur when a member of your buddy list comes online, but also occurs right after you login if one of the buddies is already logged on. Currently, only the first SN in the packet is printed, even if there's more. Incoming IMs are handled by making them outgoing IMs (ie, all incoming messages get sent back to the sender). But, there's a generic routine for sending messages, which generates the packets needing just the dest SN and the message (nice and clean). Incoming messages pass through the beginnings of a generic packet handler, getting type-detected, then handed off to a subhandler.

The most annoying part of this whole process is Oscar's stupid limit on the number of times you can login during a certain period. So, I can test a few times, then I have to do something else for 10min or so, then come back and start over again. Not exactly productive. They call it "reservation limit". I call it "stupid limit". The only good side is that we now have another packet definition.

I've sent a couple messages to the aim-protocol list, since it appears there's a few subscribers there now. The first was right after I wrote the entry below, which followed the initial success of login. The second I wrote just before I wrote this, noting the continued ease of success. Nobody responed yet, if they ever will. It's not exactly discussable stuff...

I'm hoping the current version of protoFAIM works as I described above -- Oscar won't let me on to test it. Stupid reservation thing. Grr...

Probably should spend tomorrow documenting everything I've got so far. Then maybe work on dynamicizing more of the packets (esp the first).


6 Jul 19:39

Yipee! I couldn't contain my excitement any longer! As of 1936 today (just minutes ago), I have the basics of the login code done. AND IT'S FUNCTIONAL! It shows up on the buddy lists! It's neat! It's really really neat! (Sorry for the giddyness, but after two weeks of staring at this stuff, it's exciting!)

Also, thanks to TGaArdvark for pointing it out to me that I was on the list. If not for his questioning, I probably would have assumed my acts broken, since I was not aware that AFritzler was not on my list anymore! Thanks David! Now, for management of live events! This should be fun... After we do a little there, we'll go back and make all the above procedures dynamic.

Another tidbit of great news: the commercial advertisments are not required for login! That means I only have to manage two sockets! You can just safely ignore all that stuff about the ad server AND YOU DON'T WASTE ALL THAT BANDWIDTH! No more commercialization! Just pure open source! This is great news. It's not only simpler for me, but it saves bandwidth, and just makes everything a little cleaner (it means I don't have to have a GIF89a handler hehe).


6 Jul 15:15

Gee... Not much usefull stuff hapening today. Dad ordered a motherboard for zeta. A Tyan S1571. Yes, a single processor board. We decided it would be best just to fix the problem, not create more. That, and Tomcat's were beginning to scare me. It appeared to me that they were using a single-processor chipset for two processors. Scary. That means no interleaved RAM. That's bad. That's slow. Even that ancient Orion-based Everex EV18228 dual board in ihpled has interleaved RAM. The S1571 does everything I need, and has 5 PCI slots instead of the current 4. And has no AGP (which is of course, a plus -- the less Winhell-inspired proprietariness the better). Since I'm already maxed out on PCIs on zeta (digital video + analog video + ether + aic7xxx), this will give me an extra. I've currently got three options to fill that one with: another video (probably a cheap S3ViRGE/DX -- the multiheaded capabilities of the new abscon code sounds neat), a PCI HSTR card (a house-wide 100Mb token ring sounds interesting), or a PCI sound card (that is, if I can bear to give up my beloved GUS MAX -- I've yet to find a comperable card for ANY bus). Actually, I do have a fourth option: leave it empty. This one will probably pravail for a few days at least (until something on EBay sounds exciting!).

Shessh....I've really got to get echidna going before it becomes popular to have a Beowulf at home. Slashdot's got an article today...which means every geek in the world will have one by tomorrow... Oh well, echidna will still probably be quite unique because 1) it's really slow, lacks FPUs, and is 386es, and 2) it's token ring!


5 Jul 22:15

Yesterday was somewhat interesting. We walked up to the "Peoria Sports Complex" (aka, "The Reason Peoria's Sales Taxes Were Increased"...aka, "The Big Ugly Pile of Square Buildings Sitting not more than 25m from my back yard"...aka, "The Place Full of The Idiots Who think Shining Bright Multi-Segmented Stadium Lights in My Bedroom Window Is Somehow Amusing") for the fire works show. It was suppose to start at 2115, after the color guard at 2100. Well, at 2059, the wind came up and they delayed the start. Then again. Then again. They did the colour guard thing about 2145. Then sat everyone that hadn't left yet back down and delayed it again. They finally did start the show at about 2220. This was only after everyone stood up and watched the display over at GCC instead -- it's close enough that you can see their fireworks from here.

After all these years, I've yet to grasp the reason for the excitement that most Americans have over blowing things up. What is the point? Aren't we suppose to be proud that we're NOT at war any more? Why celebrate war if you advocate peace?!?! America...America...America...

Anyway, we walked home, arriving at about 2245. You must be reminded that at this time of night, it was still about 95degF, and lastnight, anyway, about 85% rel humidity. Not nice weather in any way. It was one of those premonsoonal buggers. A little early. I guess now we can blame everything on La Niña instead of her brother. Because of course, nothings is EVER the fault of the human race...

After we got home, we did most nothing. I decided not to stress zeta anymore at that point, and so I just layed around and watched TV. I found an 80s-ish movie entitled "The Principal". Basically, its what that movie a few years ago was a remake of. You know, a teacher from a hi-class school gets "promoted" to principal of a extreme-low-class school and then becomes superprincipal, fighting crime and eventually enthralling the entire neighborhood into his wrath. It wasted a few hours of my time, anyway...

As for today...not much. Messed with ethernet emulation packet drivers for token ring cards a little, in hopes of finding one I could pair with netboot to burn into an EPROM. No luck there. I can't remember much of the rest of the day. I setup SmartList+procmail on ihpled, and created mailing lists (aim-clone and aim-protocol) for discussion of the FAIM-related projects. Also, I got a message back from the ICQ protocol guy, saying he'd added a link to the FAIM protocol pages on delphid.ml.org. I then posted another message to icq-dev giving the links again, along with the mailing list subscription instructions. No subscribers to either yet, but I did get one response from someone saying he'd started looking at the protocol as well. He seemed interested in the password stuff, so I forwarded a copy of Brock's original message to me about it. (I also xx'ed out the password field on the packet dumps on the protocol page!)

I also rewrote the ISA probe code in the SysKonnect token ring driver to get it to dynamically scan for the TMS380c16 on this Intel card. No luck there. It just hangs the kernel...badly -- no SysRq or anything. Maybe tomorrow. The code appears to work by writing then reading the memory on the card. It looks like the SysKonnect card has 64kb (the loop is suppose to iterate 128 times). I know the Intel card I'm trying to use doesn't have anywhere near that much.

Since I got bored on that, I think I'll continue my work on the AIM protocol from yesterday. Oh, did I forget to mention that? Yesterday, I printed about 40pages worth of protocol dumps. I sat down with my cool mechanical pencil and started marking on them. I've come up with a few oddities I didn't see before, but none that make drastic difference. My goal here is to get an overall view of the protocol before I sit back down and try and implement it again. BTW, I still think the problem with the current version of protoFAIM is that it needs a complete set of static packet data, instead of the hodgepodge that somehow got created. I need to finish the handwritten work first, though.

Grr... There's only three wine gums left! Hurry! Someone in northern Europe: send me some more!!!


4 Jul 12:40

Well, 42+42=42. Now you know.

Today, I woke up. Yes, that's right, I woke up. Muddled around with BonusMail for a while. My attempt is to get free stuff automatically through the use of procmail. See, for BonusMail, they send you a mail once a week or so, then you send it back with that message's "MAGICWORD" in the subject header, and you get Bonus points, which can be redeemed for bunches of free stuff. So, procmail should be able to handle that. I can certainly handle getting free money.

/. seems to be quite dead, just as it's been since I got home yesterday. I don't know what's going on. I missed the latter half of Thu's news, so they probably announced the downage then. I can't get on slashdot to read it though, so.... oh, well.

It looks like I might have a chance to get back to work on echidna today. Yes, I'm that bored. Bascially, I just need to create the client links directories, which is not that hard. In fact, I shouldn't even have to leave this chair to do it... We'll run the cluster ring at 4Mb till I can save up enough strength to lift ihpled from the hole it currently dwells in. That is, to pull the 3Com TokenLink.


4 Jul 00:16

Well, Herbert says he's got his DNS going. That means he can offer me secondary DNS for the InterNIC paperwork. Now, I just need a domain. Aparently, pst.com is taken. I waited too long. I've got two options: pick an archane spelling (of "Pyxis Systems Technologies") or change the company name. The latter really wouldn't be that difficult, but it does involve a little work. Suggestions???

Well, I guess it's the 4 Jul now. It's been 222 years since the foundation of this government was laid. Aren't we glad? 222 is kind of an scary number for some of those more Christian than I, since it is a precise multiple of that one triplet that is linked to ultimate damnation...or saviority... I guess Revelations is going to become reality in 2000 too, right?

The End. For now. See ya at...hmm...1000 or so...


3 Jul 19:19

Got back from the nice-and-cool town of Prescott about 1500. Counted checks and unpacked token ring cards till 1530 or so. Layed around and watched CNN till now, when I decided to get up and read mail and write about some more useless machinations.

On my way in the door, I couldn't help but notice the very large box UPS left me. I couldn't get it in the house before my parents came up... not good... pretty soon they're going to start wondering when I'll stop collecting things...pretty soon I'm going to get yelled at... Anyway, it was from Sun Shore Sales or something like that. I open it up to find two more boxes... So, I have two lots of five MicroChannel Madge token ring cards. Well, I'm assuming the other box is complete. I only opened up the first five. They're all in retail packaging, still sealed. I opened up one of the cards. Oh, btw, the retail packaging is really nifty looking...it's all black with streaks of lighting pummeling towards one sight, with a single simple line of text at the top: "TOKEN RING" (with the appropriate Madge emblem in the corner, of course). Neat box.

I suppose I'm required to note at this point that my ethernet card died right before finishing that paragraph. I'm now on a search for a new motherboard, as that is the only component that I can see that would be causing all these stupid problems... My dad tells me just to get a Tyan Tomcat IV dual Pent...but I'd really like a dual PPro...we'll see... He probably ultimatly wants the Tomcat anyway, so...

Anyway, I'm staring at two boxes full of 10 token ring cards. I open one up...take it out of the bag...and guess what I find soldered to a full-length MCA board? A Texas Inst TMS380 chipset! Although this is the newer set (third generation). Also, it's got two Madge chips on the board too. Along with what looks like 16k of RAM. It may be quite interesting to figure out how those two seamingly seperate sets are glued together... Guess Madge will be getting a mail from me on Mon...

BTW, zeta just crashed on me once again, and once again, just before the end of the last paragraph. This time I slipped in a 3c509b (that's 5 before 9, not 9 before 5 -- it's the ISA board). I let it detect the 3c905 (PCI), but then immediatly (well, as soon as I could) loaded a module for the 509 and replaced the default route with one through the 509. It's been running for several minutes (a record for tonight!) without problems...without using the 905, only the 509. This is making me insane. There's no way it can't be the motherboard. It happens with any PCI ethernet card I put in there. I figure there must be something messed up with the PCI bus in general, because I can't see a reason for those wierd video special effects I sometimes get on boot (usually they come at the same time the ethernet card doesn't get detected). I've got to get a new board...

Okay, now about the checks. Yes, I now have several hundred (well, more than just several) dollars in checks that just need to get cashed and divided out. Some of it goes to my parents (they loaned me a fair amount for the AlphaStation), some goes to the InterNIC (for pst.com), and a few other assorted places. Oh, btw, it appears I won't be getting the DECstation 5000/200 I was promised for $10+shipping. Oh, well... Just US$60 more for me... Although I really would have liked another DECstation. They're neat boxes. Much better than the Sun stuff of the same epoch.

I guess I should mention yesterday a little. Not much happened. I don't remember much happening anyway. Got up midmorning, watched CNN (see a trend?) for a few hours, packed, then left for Prescott. Oh, I guess I did turn on zeta long enough to read some mail and the beginnings of the day's news on /.. That's about it. Once in Prescott, we made some ice cream, dehusked some corn, ate, then went to the rodeo. Didn't depart there until sometime about 2230. Long rodeo. Went home, celebrated my dad's birthday (though it's not really till 4 Jul -- and yes, it was 2300 at night!), then went to bed (well, ok, I did manage to kill a half-dozen insects before I went to bed -- they've got a severe cricket and arachnid problem up there). Got up, had the usual breakfast of waffles, went down the courthouse, wandered and wondered around, then wandered around looking for the rest of the family, then wondered back to the car. Went out to lunch somewhere. Went back to my grandparents house, then left again. That brings us back to the beginning of todays entry. You may now continue above and hopefully you will be drawn into the set of inescapable interations I intended. Have fun!


1 Jul 21:03

Well, I did it. It's gone. Not really. You should know better than to think I would actually permanantly destroy something. For your reading convience, volume one is now available forever frozen in the vast linearly dated speck of existantance that we for some strange reason call "the moderne age". Go figure...

The color for this month (0x987789) is merely a slight permutation from last month's color (0x56789A). Ok, so they don't look much alike. Take last months: 0x56789A. Flip it: 0xA98765. Delete last three digits...0xA98. Reverse first three, append to last...0xA9889A...too bright...0xA9889A - 0x111111 = 0x987789 = the color for the month of July 1998.

Now that we're done with base16 math fun, let's move on...

Got up waaaaaaay to early...0740. Left a little before 1000. I started driving (yes, I got to drive first again today) shortly thereafter. We went over to GCC to do some parallel parking. Fun stuff. I then had the great pleasure of driving over to Central and all the way down to (and up) South Mountain. What a mess of windy roads that is... After standing up in that heat for quarter-an-hour or so (all the time of which Lanée and I listened to some kid attempting to count to 50...he made it to 49 and then started back at 30 or so...his mother aparently didn't know any english, so she was of no assistance in his troubles -- in fact, she sat there blurting out arbitrary numbers in an attempt to aid her son), Lanée drove us back down South Mtn, and back all the way over to 67th and Sweetwater, to get gas at PUSD's Cholla Annex. She then took us all the way out to Surprise via Grand Avenida (US60), at which point we switched drivers and I continued our great journey to the lively hole-in-the-ground known as Wickenberg. Went through there, turned around, came back, switched drivers at the Burger King just this side of Wickenberg. Lanée got us all the way down to the exit to Carefree Hwy, at which point we exited and switched drivers once again. I was told to drive up I-17 (Black Canyon Fwy) to "some place up there" and turn around and come back. I complied. Of course, his recommendation to stay below 65mph I didn't comply with so well...when everyone else is going the speed limit of 75mph, and most going at least 80mph, it's kind of hard to resist, and I gave up. Needless to say, driving at 75mph is quite amusing, esp in that dinky Lumina that can barely make a small hill when going at any more than 60mph... I got back off at Carefree and continued to east to Cave Creek. Stopped at a Safeway somewhere out in the desert, I picked up a MtnDew (The Drink Of Choice), Lanée grabbed an ice tea, and the instructor was pleased enough by his trip to the restroom. My day was done. I just had to sit in back until Lanée was done, which she was, after she just drove and drove and drove to waste time until 1800. Made it to Ironwood HS a little before 1800, but we just sat there until our rides came. Oh, and he gave us these pieces of paper that we're suppose to give to the DMV to get out of taking the normal driver's test. That's done. All 12hrs done in two days. Not the best way, but efficient nonetheless.

After arriving home just after 1800, I quickly checked my mail, and attempted to take a quick nap before dinner. That was a stupid idea. You know, five minute naps just can't be healthy... Add a few hours of wasting time, and we arring here, at about 2130 or so. Fun day, right? yeesh...

Oh, and I fixed up my .procmailrc a little, and it looks like I've caught all cases. This file has grown to almost 3kb of just matching rules for all the mailing lists. But, it's brought my inbox down from just under 7000 messages to about 60. The rest of the messages are of the type just between spam and normal mail. They're those things they send out once you ask for information, and they put your address on thier mass-lists without asking.


Adam Fritzler
Last modified: Fri Jul 31 02:13:50 MST 1998