dæl seofontene
furdat monðas Ianuarius, 2000ad
dates in hex unless otherwise stated...times are in decimal UTC/GMT
Internet connection has been down for the past hour or so...I'm fairly bored.
Hm. You know. As soon as I wrote that, it came back up again.
Anyway, the last few days have not been terribly interesting.
Friday was spent sleeping. Coming and going from school being the exception. Played around with ISA madge code in the evening and went to bed (relatively) early. Got up at 0745 on Saturday, quite a bit later than planned. Quickly readied and went down to Gilbert. Erg. My regional orch/band audition, which was scheduled for precisely 0942, didn't happen til quite a bit later. I'm not sure when exactly, but I left the school's front door at exactly 1042, and that was shortly after I was done. So. Anyway, I came home and slept the rest of the day.
Attempted more ISA madge work Saturday evening. Ended up just watching crazy movies on AMC instead. It was the Zulu killing Brits that got me there. And then a lovely murderous movie with a crossdressing twist. Very bizare. That was followed by a Bondalike. [Lalala, it died again.] I went to bed around 0400.
Slept nearly all of today again. Didn't get any homework done. Blah. I'm going to fail school. (And aparently I care. Just not enough to do anything about it...) [Yay, its back up.] [Boo hiss, it died again. Josh is making bad puns, but I can't mock them because my transmitter is dead....] Ermf. I really didn't get anything done today. Really. I'm going to bed soon, because I'm certainly not in the mood to be productive, or to do anything besides sleep. I'll do the compandlit homework during calc.
Speedchoice will rot in hell.
Yay for Monday Number Four. Not really.
I think I slept through most of school. Including calc and compandlit, where we spend many hours doing absolutly nothing. Except for the last part of compandlit. Somehow at that point Tara was willing Elena into poking me randomly to keep me awake. While they were drawing obscene stick people. Anyway, sleeping all day made it all the more surprising that I still came home and slept some more. Went to watch the senior one-acts in the evening. Splendidly amusing. Came home to sit around and do not much of anything but sit here and try not to do much of anything. I have yet to decide if I've succeeded yet, as I'm still trying to figure out how it is that if I'm not doing much of anything that I'm somehow writing this. Life has too many problems.
2.3.41-4 got put out today, over twice the size of 2.3.41-3. Alan has been busy merging it appears. Happily, he merged all four of the patches I sent him: the AHA-1640 MCA detection, the Intel EtherExpress 16 MCA support, the IP Autoconfig fix for token ring, and the big tms380 merge. 2.3.41 should include the supernifty modular tms380 driver. That means less work to integrate my personal development tree with Linus. I love it when things actually work out. I need to get the madgetrisa and madgetr_cs drivers written so I can be done with these Madge cards and significatly reduce the size of my TODO list in the process.
The RS/6000 book came today. Its only about 300pages but its mostly flat 10point text. Lots of info; hopefully enough to do what I want. It's a cloth-bound hardback too. Oh so professional looking. For 8$. The actual RS/6k machine shipped today as well. Its currently sitting in the CACH. Porbably middle to the end of next week for an ETA.
Anyway, I'm going to bed now. Short day tomorrow, however, I have to go to some family function in the afternoon for the families of PUSD employees or somesuch. No one has really informed me what exactly is going on, however. They've merely told me that I'm going to it. Shrug.
Grmph. I think today was Monday number three.
An admin sat in and watched the physics teacher mentioned yesterday. Hah. I won't talk about that. [You'd think I'd learn my lesson about mentioning teachers at all...but oh well.] I'd really wish someone would teach physics decently around there. Sigh. If I complain enough, anything is possible. Hah. Came home early and slept.
Tried to get that userspace bridger working all evening. Quite unsuccessful. It's having major header translation problems. I am not in a calm enough mood at this point to figure it out. I need to setup a test environment with a hub instead of my main switch. Not being able to see everything because of the learning switch is causing me major difficulties.
I should've done homework today. Hah. I just stroll along everyday. Nothing much to look forward to. Just more work to do. The more I do the more I end up having to do. Its terrible. I hate school. Really. Blah.
I told my dad that I will move to Boulder (because I want to be away from here), but I can't guarentee I'll get a degree in four years. If I find a Decent job (which there are a lot of there), then I'm not going to continue school full-time. Its not that I lack motivation to learn. Its that I lack motivation to be told what and how to learn.
[Did you have a lovely Monday Number Two?]
Erm. Uhm, interesting day I suppose.
I take that back. It wasn't. Had a lets-get-mad-at-the-physics-teacher time in the morning. Grr. And then slept through the finding-derivatives-with-limits lesson in calc. Too easy. Attempted to sleep through the majority of compandlit, except for 10min or so , where I stood at the front of the room and attempted to sleep. While discussing the 'frightening chapter' of invisible man. Wee...that was entertaining. (Have I mentioned those people are twisted? Not me though...I'm not twisted...of course not me...) Came home and slept. Did nothing all evening.
Boring evening...sheesh...no one's around to complain to...
[This log entry has been omitted for the fact that today didn't really happen. Many of you probably thought it did, but that's your own naivity showing through. In fact, what you are calling "today" was a major conspiracy brought about by the members of the WorldDomination consortium, who, in our evil ways, contrived that this week we should have two Monday's for the sake of the Elephant Man. That last sentence may seem as though it started out good and then ended badly, but I assure you, it was bad all the way through. You're an idiot for thinking anything else. Ideally, I would have left out the Elephant Man part, however, he was on the tele and I just had to mention him because anything on the tele has to be mentioned here. The real reason we contrived the extra day this week was just to generally screw with you dolts who continue to believe that time is always linear and that in fact reality exists at all. Again, you're an idiot for thinking that.
Now normally I wouldn't bother to insult the readership, however, I'm feeling expecially destructive at the moment, and my room is already inherently destroyed, hence I need something to destroy. You're here, so I'm guessing you enjoy such things. And its not my place to keep you from the things you enjoy.
Enough about you. Lets get back to me. Its amusing that I should bring up the Elephant Man above, because I just spent all evening thinking about the Invisible Man while doing homework. And even further amusement can be gained from pondering the theme of this non-entry. As today, I decided to point out the illusionary, the nonexistant, the invisible...
I do not thank you for not reading this non-existant log entry. That is not all.]
Bah.
Got up around 1230, and did homework all afternoon. Or at least avoided it.
I never mentioned that shortly after I finished writing yesterday, token ring crashed. Well, not the machine you'd expect. The dell with the PCI cards crashed, not the PS/2 with my supernifty MCA driver (soon to have more performance hacks added in). Its quite reproducable. Just start an outgoing flood ping across token ring with 2048b ICMP packets. Takes about 30sec, then an oops appens, followed by an Aieee. The call trace fills the entire screen, which is quite suspicious. The actual Oops is actually a BUG() in slab.c. Which would tell me its SEP, but I'm not sure. Evidence today shows that its only in the token ring code -- it doesn't crash using the same method over ethernet (3c509b ISA). So, I don't know. The PS/2 did eventually do it late this afternoon, after about 24 hours of 5 outgoing 2kb flood pings. I have no idea what to think. I do know that doing it on mediocris on TR doesn't trigger it, but thats not very useful information, as its a) not running the same kernel and b) using an older version of the driver. Shrug.
Watched Simpsons and things.
Gave up on some other homework. I'll do it tomorrow.
Started thinking about that Novell EISA card with the 186 on it. After exhaustive searching, I found out that its marketing name is NE3200. This made searching for info a lot easier. I came upon a hit from microsoft's developer website that talked about driver source samples, and the NE3200 was listed, but there was no link. I remember that I had an old (93/94) WinNT DDK CD set laying around somewhere and spent the next hour looking for that. After tearing my room completely apart, I remembered that I put it in one of my nicely organized drawers of CDs-that-I-only-touch-once-every-five-years. Found the source. (I've put a copy here. I doubt Microsoft is going to send lawyers after me for code thats nearly a decade old.) Was disappointed to find that the firmware image it loaded into the 186 was only 2kb. And further looking at the driver source shows they didn't really even use the 186, but just accessed the 82586 directly. Boo hiss. Leave it to microsoft to leave a perfectly good microprocessor unused and waste cycles transfering needless amounts of data. Then I remembered that I'd yet to search novell.com (which has always been extremely helpful in the past) since I'd found the real model number. The reputation of that site remains. Its great. They have the entire source code to their ODI/NetWare386 driver for the card available, in two versions: C and assembly. The assembly version is huge. The C version looks nice. The best part is however that 1) they use the 186 and 2) they provide the assembly source for the 186 firmware code. It even looks like their license would let me include it in linux. Yay. (I've put the novell code up here just in case it magically disappears from their site sometime near in the future.) Perhaps I'll write a driver for it someday. I just hope the card I have works. It'd be incredibly difficult to find another one. Too bad I have to go to school for the next week, else I'd sit here and write the driver....
Not a peep out of Alan concerning those patchs.
Oh well. Time for bed I guess.
Weeeee....
Yesterday (Friday) was nothing eventful. Got a lecture from the physics teacher about doing homework and coming to class. I don't like her. Have I mentioned that? I don't like her. Took a calc test on limits, which seemed far easier than it should've. Compandlit included probably some of the most disturbing discussion yet. I won't get into it.
Spent all evening doing lots of things. I can't even remember most of them. Basically just lots of PS/2 stuff. Figured out that one of those MCA RAM cards I have does work for linux after all. mod80 is now running with 12mb of RAM (I cant find any more of those funky PS/2 SIMMs). Much faster. Also added support to the EtherExpress 16 driver for the MCA version of the card (it uses the i82586 controller btw, the same that that big EISA card I have uses). Made this lovely page-long list of notes on the patches that I have pending for Alan. Most of them ar crossed off now. There's a couple left that I'm reconsidering. mod80 is also running slackware-current locally, btw. Its interesting. Also added the indirect read/writes to abyss and tmspci so they'll work again. I'll try using MMIO later. (I think its possible. Both the Madge and the Thomas-Conrad list a memory region under /proc/pci.)
Went to bed around 0800 this morning. Got up around 1400.
Got a dell test machine running so I could test the new PCI code. That worked fine (minus a few oddities). Read through some of the ISA Madge code. I should be able to support the Intel ISA card with the same code as the Madge ISA support. They both use the HC46 SEEPROM and a very similar glue chip. I think I'll do PCMCIA support before I try ISA support (in other words, "while I still have a bit of sanity").
Spent this evening integrating my 2.3.34 tree with my 2.3.40-4 tree, in addition to moving the latter up to 2.3.41-2. After the diff's were clean enough, I split it up and sent the pieces to Alan. The pieces and the full patch for 2.3.41-2-mid1 are available here. The token ring patch turned out huge. The mid1 patch is roughly 125kb. Huge. Now I know why I've been dreading syncing to mainstream...
Been doing tests on the current tms380 driver as well. The IRQ parsing bug in madgemc (which I conisdered minor yesterday) turned major today. It was thinking all five cards were on IRQ 3. MCA has the interesting feature of using whatever IRQ its set to, and not the one you tell it to. So, only two cards were actually working because only two of them were actually set to IRQ 3. This didn't show up before because opening onto the ring is a purely DIO process requiring no interrupts. After I fixed the POS IRQ parsing problem and the IRQs were getting assigned correctly, it started crashing. Eventually I linked this back to setting it to IRQ 2. Which is wrong. If you want IRQ 2, you have to request IRQ 9. If you request IRQ 2, all you get is an Oops when you get an interrupt. Fixed that. Now I have five cards that can send/receive just fine. And I decided to stress test. I've only got four of the mod80 cards open (ran out of cat5), plus two PCI cards on the dell test box. All the interfaces are ping -f'ing each other happily. Its sucking a lot of CPU time on the mod80. The dell (amd 586-133) doesn't seem to care. I'll probably leave this running overnight just for the sake of random torture testing.
I also rewrote the Madge MCA IRQ handler. Just read the comments in the patch. I don't feel like discussing it anymore. Just think performance optimization. I think I'm the only one that understands what I'm talking about anyway. (As if thats out of the ordinary.)
Anyway, all the major patches are off to Alan (four of them -- 180kb mail -- he's going to love me for that I'm sure...). I guess I can go to bed now. And do homework all day tomorrow that I should've done today. (Can I bitch about having to do school work some more? I enjoy that. People will die for this.)
My feet hurt from standing in the garage for the past 30hrs. (If you won't let me complain about school, I have to find something else to complain about...)
Hrmph. Bit late tonight.
Fairly boring morning. Had an entertaining 'guest speaker' in physics. It was this guy (the first one). Rather amusing things, however I think I was the only one entertained. (I'm the only science-oriented person in that class, so...) We'll not get into that. Anyway, then did nothing in calc (for once). And I came home and slept.
Spent this evening figuring out the microchannel Madge card. Its the first card I've seen that uses the SRSX pin seperate from the other register select pins. This means that SIFACL through DMALEN are mapped down 8 bytes, and a bit must be twiddled on the Madge ASIC. Bleh. This required (uhg!) cluttering up the fast-path of the main tms380tr interrupt handler. But overall I think its a win. It seems like a hit to PCI cards, however, if you think about it, I was still using port accesses (inw/outw) on those cards, which is not the fastest way for PCI. With the new modifications, I can use purely MMIO access to those cards, which should actually be faster overall than before.
Currently the MCA driver is the only one to support the current revision of the tms380tr backend. I'll have to update all the other drivers to use this now (or else they'll all dereference NULL on insmod).
The reason I am still up is because I wanted to get the MCA driver just right. I very much like the condition its in now. Its inserting into the ring at the proper speed using the proper connector and everything. I can't test rx/tx yet because its out in the garage and I don't have any TR drops out there (yet). I'll do that this weekend. From the docs I have it looks like TX may work slightly differently (something about needing contiguous transmit buffers). Anyway, I wanted to comment the MCA driver well, as it will be the only public documetnation on the hardware. It should be quite clear now how it works. Its not that complicated. Not as bad as I thought. It's actually quite well thoughtout in design, however theres still some things I just don't understand why they did (such as the register paging). I'll probably never know.
I want to update and test all the other drivers before I release another snapshot. I'd like to finish up the PCMCIA driver by then too, but that may or may not happen. I want to start merging with Linus ASAP, so I will probably not wait for the PCMCIA and ISA drivers -- just push in the tmspci, abyss, and madgemc drivers and submit the others later. Linus is well over a month out of sync with me, which is bad. And of course, I want to get as many modules as I can into 2.4.0 for maximum testing (2.4.0, not just 2.4...).
That's enough rambling for now. Long day tomorrow. Ugh.
My hand is falling apart. A big deep-blister (too deep to even raise) from the hole-digging in December just dried out and fell off. You can now see about four or five layers into the palm of my hand. Quite neat.
You really wanted to hear that, I know.
Blah day. Had to go to school. Nothing interesting happened, as you can imagine.
Nothing when I got home either. Spent the majority of the evening doing calc homework (three nights worth blah). Spent about 30min adding ROM reading to the madge MCA driver based on the info I was presented with yesterday. Very nice. Haven't tested it yet though. Should have time to do that tomorrow.
There's been a lot of linux-kernel traffic from me lately...odd. David didn't like my aha1542 change, complaining that the ISA probe shouldn't be preserved on MCA systems, since theres no reason for it, and it can possibly cause trouble. He can rewrite all that probe code to work that way. I avoided it, and I'll continue to avoid it. ISA autoprobing is evil.
The other thread is about IBM, and how they need to be nicer about releasing hardware docs. As if I havent said THAT before. Someone pointed out some good books on RS/6k that mkp.com has. Unfortunatly, they're all 60$+. Too expensive. I'm hoping to try and get IBM involved more with the RS/6k stuff. MCA and PCI both.
Anyone want any MCA drivers written while I'm in the mood?
And I don't make porn movies. Really. Why don't you all believe me?
Okay, just tested my ROM reading code, and then the detection code. Everything works. Successfully detected all five cards AND read their MAC addresses and board revisions, etc properly. Yay. I think there's a bug in my parsing of the IRQ POS information, however. I somehow doubt the reference disk was stupid enough to put five cards all on IRQ 3. The cable type and speed does work, as I set each card to a different combination and they all got read properly (one of them even triggered my warning about not setting the ring speed in the config!). Now I just need to make them do something besides read their ROMs.
I'm going back to submitting token ring patches through Alan. Linus doesn't seem to care. Pout. I'd rather have alan take a look at everything anyway, just to make sure I didn't do anything majorly wrong. (And the great care I've taken with these MCA cards should go on the same list as his stunning work on the driver for the decade+ old 3c501 (of which is quite SMP optimized now).) Hopefully this slackware-current download will finish soon. I'd like to get a real root running on the ps2 tomorrow (off the Adaptec controller of course), and reassign the current ps2 nfsroot to the PS/2 55SX (this one is even slower than the mod 80, and its not even as beautiful...just a little old desktop box with crazy screws -- but its ESDI based -- yeek!).
Off to bed. Shortish day. And I don't have to work this week after all (I did it via email and still get paid; lovely).
Sigh.
Rather odd weekend plus a few weekdays. Friday was obviously not the best day in my life, but oh well. After some rather bad incidents Friday night, it was also obvious that I wasn't going to rehersal/concert on Saturday. Slept all day instead. Sunday and Monday were so-so. Did a few things every once in a while. Not much.
Spent a fair amount of time mucking with that PS/2 Model 80. It amuses me to no end, be assured. For some reason got it into my head that I could write a driver for the MicroChannel Madge cards. That of course didn't work. But I did get the parsing of the POS registers done, and my driver detects it just fine. It just dies while trying to probe for the TMS380 SIF. I'm guessing the access to the SIF needs to be enabled via the two Madge chips. I have no idea what to do with them really. According to the bits I could find in the Madge source (udt/smart.h), there's only three real registers (plus mirrors of the POS registers). Besides the values listed in the Madge header, I found two others. TESTINTERRUPT causes the board to trigger a system interrupt (this pointed out some 'interesting' inadequacies of tms380tr); and BITOFDEATH, which is fairly self explanatory: setting it hangs the machine. Fiddling with that was giving me a headache. Setting all the config registers to 0xff did nothing for me (except let me discover the above two bits).
Also started on a skeleton driver for the PCMCIA (non-Cardbus) Madge cards. Haven't actually gotten to any card-specific spots yet, as I'm still battling with getting the driver to cooperate with card services without hanging my laptop. I may end up putting an ISA/PCMCIA host in one of my spare boxes so I can play with it on an NFS root, or at least a box without a 10gb drive to fsck through.
I suppose I should get down to patches. I started the madgemc and madgetr_cs modules, but they're not far enough along to release code for. However, in order to test the madgemc driver on the PS/2, I wanted to boot it over the network so I didn't have to dd a floppy everything (I Hate Floopies). Burned a bootrom for that. Used etherboot, which has native drivers and not that packet driver mess that netboot has. However, etherboot's 3c509 driver didn't have 3c529 (MicroChannel) support. Added that. Patch against etherboot 4.1.1 available here; this has been sent to Ken Yapp and should be in 4.1.2. Once I got that booting, I discovered a rather bad assumption that the kernel 3c509 driver makes about the state of the board on bootup. A patch to fix that is here; this has been posted to linux-kernel. (Note that it doesn't handle any cases other than the MCA case. I didn't want to be overpresumptuous.)
The third and final patch of the breaktime came about because the original SCSI card that came in the PS/2 was faulty (clearly hardware failure -- made the reference disk hang!). Got another one today, which was not an IBM but an Adaptec AHA-1640, which as I found out is the MCA equivelent of the ISA AHA-1540. The 1542 driver in the kernel works just fine with this board, as long as its at 0x330. Otherwise no. A patch to detect all six possible addresses is available here.
This just in: I just recieved the required info for the Madge MC16/32 card. Yay.
Anyway, back to patches. The AHA1640 patch doesn't do much for getting rid of autoprobing, because doing probing right in aha1542 would require a hefty redesign of aha1542.c_detect(). (Anyone looking to be amazed should take a look at how SCSI card probing is done (in drivers/scsi/hosts.c), btw. Its quite nifty/funky.) The ISA PnP code appears to have been patched in later, and its not as integrated as it should be. And hence, neither is the MCA code. But I held off on doing said reimplementation because I don't want to setup an ISA machine to test the code on. And I don't like implementing probe routines. Blah.
Hrmph. I lost track of what was going on again (sorry, reading Madge info).
Also on my list of weird hackery this weekend was some modifications to bochs to get it to emulate MCA, in a rather unsuccessful attempt at getting some of the Madge config apps to run in it and therefore I would be sitting there watching it while madly laughing at my own inginuity. Sadly, I was laughing, but not because it was actually working. It was doing all but working, and I still have no idea how one goes about faking the presence of the MCA bus. If you force Linux to assume the MCA bus is present, my emulated POS registers work nicely. Now that I have the info, I hopefully won't need to do any reverse engineering. If you want the source to my MCA mods to bochs let me know...they'really ugly though. (I Hate C++.)
You're probably wondering why I didn't just use dosemu. And to answer that, I refer you to the specs of an IBM PS/2 Model 80-161: i386DX running at a painful 20mhz, complete with 4MB of RAM. Now stop asking questions with obvious answers. (Actually, I upgraded mine with a Cyrix chip to a 486dx-40. But with only 4mb of RAM its still painful. And its only 40mhz _internal_. Still only 20mhz going to the planar.)
What appears is going to be my next venture is...you'll never guess... Linux/PPC support for the MCA-based IBM RS/6000 family. Haha. That's what you're thinking. The frightening part is that you know I'm serious. I hopefully will be getting one of these soon to play with. Its a 66mhz PowerPC 601. With MicroChannel. Linux/PPC does not currently support these. But I've put out a few feelers and we're starting to form a fairly large developement community basically overnight. And here I am, not even being able to get a machine to work on for at least a week. (Most RS/6k's are PCI-based, btw. Those are supported by Linux. We're focussing on the MCA based models. There should be a website up soon.) If anyone has docs on the MCA RS/6ks please let me know. In fact, if you have free hardware that uses the pre-PowerPC POWER or POWER2 CPUs, and documentation, let me know. Those sound intriguing as well.
I wrote up some more info this weekend on all the things I have to keep me busy. Its here. Fun read.
Weee...lots of words. I guess I should probably go back to school tomorrow. Haven't been there in a while. (I finished Invisible Man! The ending is hilarious!)
Bah. I don't feel like writing. If anything exciting happens between now and tomorrow, I'll tell you at school or when I get home. If I go. Bah. I said that already.
This has been open for over an hour already. I suppose I should write something.
I feel dreadful. (You'd better be dreading it, damnit. Because when I feel this bad, you're going to hear about it, and thats what you're going to dread.) Sat all day in that godawful rehersal listening to that idiot make his stupid jokes and everything else his annoying existantance creates. Combined with sitting under those hot lights for that many hours, and starting off quite nauseous to begin with, I was not, and continue to not be, delighted with today. Agh!
I have slept most of the rest of today. Because sleeping and feeling like this feels better than being awake and feeling like this. I think I will continue that now. And if I don't wake up by 0900 when I'm suppose to be back at rehersal and do that concert, its not my fault. Its Bryan Thacker's. Why? Because he's an idiot who won't get out of my chat room.
Hrmph.
Woke up to find a not-very-pleasing message from Madge. Aparently their view is now "We do not want to support our older adapters." Grr. I don't know what I'm going to do with them. I'l trying to attack through a few more angles. If those fail, I guess its back to using my hacked dosemu and lots of patience. They can't be too complicated. I never did finish the Intel support. I'll start over again and try again with the modular driver. (You'll remember I stopped last time after getting rather frustrated following my "doh" erasal of the EEPROM. I do not wish to repeat that.) We'll see. I'm not sure how I'm going to do MCA. AFAIK, a 386-20 is a bit too sluggish to run dosemu on, let alone get any serious developement done on. But I'm sure you've all heard my ranting about getting MCA support. I want to work with Madge on getting them to let me distribute their superior microcode, as well as figuring out the best way to get Knossos (100/16/4) support into the mainstream kernels. Its going to take a lot of convincing. The new guy that replaced the old linux contact is not as receptive to my plans. My last ditch effort (not there yet) will be contacting the head Adapter Developement Manager and seeing what I can convince him of.
Dealing with these companies is incredibly frustrating. They don't understand that its not them thats going to do the work, its me, the developer. All they have to do is provide information. Nothing more. For some damn reason its very difficult to convince these people to let me do their work for them, for free. They just dont' get it. (On obsolete products no less!) I think I caught Madge at a bit of a bad time, however, so I'm not going to condemn them. Given a few weeks to get settled, I may have a better chance at dealing with them rationally. They're right in the middle of the reorganizations relating to the Olicom merger, and aparently things are fairly messy. (And I can certainly see why the other guy just up and left the company altogether.) I'll leave further judgement until later. I don't want to be unnecessarily harsh. Yet.
Anyway, today was the first day with my new schedule. I dropped honors government in favor of an independant study version, where there's loads less homework and I don't have to actually go to class. So now every-other-day (or, every-day-thats-not-a-compandlit-day), I get to escape hell at noon. Yay.
After a trivially boring morning, I came home and fumed over some email for a while (see above), started to go take a nap, and ended up back over here waching CNBC. Microsoft had a lovely Big Unnamed Unannounced Press Conference that I just had to entertain myself with. Unfortunatly, its topic was not as interesting as I'd hoped. It was merely Gates realigning himself again. Sigh. Maybe someday.
Did nothing this evening except try to not do homework. I got the physics "lab" done in any case. Entirely too long. I just started jumping into calculus things at random times isntead of using their stupid little algebra. I'll probably get points taken off for that (too much information is bad, you know). Oh well.
Loong day tomorrow. But, no class. District honor band rehersal all day. And all Saturday. (Why the hell did they have to schedule it for a long weekend? Bah.) Hopefully there'll be some interesting people to laugh at so it won't seem like I'm sitting there for so long... Probably not. Especially with the current trend of my life the past week.
Am I the only one who remembers when all domain names were free? Reading the announcement from the NSI made me cringe. I remember that. But it was many many years ago. Sigh. The world is going to hell.
Lalala. Hi.
I still haven't watched the 2001 parts I need. I need them. I need to watch the interpretation of the dawn of mankind. Need.
In case you're all wondering why the hell I'm actually reading a book for apcompandlit, its because the cliffs for Invisible Man are the absolute worst cliffs I've ever read. (Thats a credible review too. I've read lots of them.) They don't have any summaries, and the commentaries sound like they were written by a fourth grader (of course, when you get down to it, whats the difference between a fourth grader and the combined work of two English PhDs?). So yeah, I actually am reading this. I didn't get it done today like I'd planned. But I have til next Wednesday. Yay. And Mondays a holiday. Yay. I get to do a presentation on my favorite chapter. Yay. I didn't even have to fight for it. Yay. I'm going to say yay again. Yay.
Boring day indeed. Sectionalfun in band. That was more strange conversation than sectionals. Not that that's out of the ordinary. Wacky people. Read more invisible man in physics (whats the point of that class again? i think its starting to make me stupider). Redefined basic arithmetic in calc while taking a test that was easier than i thought it was (7+5 is now 11. oops.). Sat around doing nothing in compandlit (looked through those new C++ books that Denton uses for prog 3-4. learning programming from a book is a very demented concept). Ran into bdraovcikd while taking my usual wander through the south 600 hallway. Got a ride home. Grabbed the PS/2 out of the suburban, hauled it in (all 25+kg of it...yeak), and went to sleep. Played around with PS/2 stuff in the evening, ending up doing homework later. Now I'm tired again. I hate this.
I went to bed around 0500 yesterday. Perhaps I'll get more than two hours sleep today.
Today most likely would've turned out to be utter disaster if I'd actually gone to school. But I didnt, as my sickness (and general affliction) from yesterday grew worse, and I decided school would be a bit much to tolerate. [I did inadvertantly miss a calc test however. Oops.]
Read Invisible Man most of the time that I wasn't distracted or sleeping. At my rate of parsing English, I was lucky to get the 250 pages read today that I did. Unfortunatly, I still have well over 200 more to go, and I was suppose to have had it read by last hour tomorrow. [Don't bother making bets on it, its not going to happen.] Oh well. I should be able to finish tomorrow afternoon, however, as its a shorter day than usual. Kinda.
Unfortunatly it took that due date to get me to read what is turning out to be a rather good book. Particularly Chapter 11: The Glass Coffin ("yes, you think I'm comatose, and you're trying to get me to talk, and I hear you too, but I don't like you, so I'll just sit here and mock you silently to myself; feel free to electrocute me a few more times for the pleasure you seem to be getting from it..."). Anyway, its a generally good book. If nothing else, read the prologue.
Bleh!
Felt terrible all day long. Boring day. Frustrating day. Entirely too many people to deal with. Not enough sleep. The only mildly amusing part of the day was compandlit. How sad is that.
Madge says they can't tell me anything. This goes under the 'too many people to deal with' above. They got a nice long reply.
I did calc homework. I hate trig.
I need a vacation. I'm going to bed.
Lalala. I hate days like today.
Slept in again. Got up and started doing random things. Looked at bridging lightly. Took a shower. Thought of a grand idea while doing that: forget kernel bridging, just do a simple userspace implementation. Spent the next several hours figuring out just how to do that. libpcap wasn't quite up to the level of completness that I had hoped. I had to manually hack a non-blocking read so that I could support multiple interfaces. And then writing issue. It all came to a complete mess around 1500, when I simultaneoulsy flooded both the attached ethernet and attached token ring with roughly 3000 frames in the span of a few seconds. That's not a good thing. But it does show that it was mostly working.
The hard part, if I continue the user space approach, is to write code that does Real Bridging (ie, at least enough to get rid of the how-do-we-know-if-weve-already-repeated-that-frame problem that causes the flooding). But, in order to put in that much effort, I need to see some validation that user space bridging is a good idea. ...
Real bridging can take a LOT of CPU. A lot more CPU than I like to see in use by the kernel. IMO, things like comparing MAC addresses and filling in large data structures with them just isnt a kernelish thing to do. I'd like it in userspace. Granted, pulling and pushing raw datalink-layer frames is not pretty in userspace.... but still. In any case, me continuing on my user space bridging code would require a reimplementation of everything thats in the kernel bridging code (Real IEEE802.2 bridging, including spanning-tree).
Shortly thereafter, I found a mail in l-k that contained a patch to bring 2.3.x up to the 2.2.14 bridging code. So now that option is back as well. But the kernel code is a bit hairy. And its really hard to debug. (Again, these are things that point back to the user space solution being superior.)
So since I'm not going to have this done by dadiv's deadline of Wed anyway, I might as well push for the Right Way and implement a good user space implementation to impress all those losers using kernel-based bridging right?
I was just impressed with my tokenring/ethernet header translation. That was the only useful thing to get coded today.
Had a grand chat in worlddomination. It works out nicely. This way, I only have to pay attention to one window to listen to everybody, and I only have to type things once. Its great.
I'm just wasting time now. I should go to bed.
MacOS finder is entertaining enough. But I still think there should be an Exit/Quit in the File menu that is equivelent to Special->Shut down. After all, if you kill init, you might as well not be on at all. MacOS X better have that. Or I'm yelling.
Forgetting the part of the day that I was awake, it was quite a good day. Unfortunatly, I can't forget that part. Fortunatly, it didn't start until 1400. That was where the pleasant part ended. I then attempted to avoid doing things for a few hours, finally deciding to actually do what I planned on doing: that is, writing that essay. Which I did get done. Couple hours later I was working on invisible design possibilities.
Of course, thats the way I'd planned it. What I actually spent the next many hours doing was finding item after item that failed in very unwelcomed fire. I'm using zaphod as the test box, because its faster than the real invisible, and I like my test machines as fast as possible. [Its worth noting that the whole reason I need a test machine at all is that the bridging code is not modular, meaning I have to revert to The Old Ways of kernel hacking. That is, using a seperate machine with a floppy boot and nfsroot, etc. Painful, really.]
First was getting tms380tr/tmspci to get autoprobed at boottime. That was easy compared to what was to follow. You just add the probe function to drivers/net/net_init.c (thats where PCI ones go, Space.c seems to be growing a bit deprecated). Got that working just good. Then on to autoipconfig/bootp.
That code works all well and good for ethernet I'm sure. However, when I tried to boot a token ring host using it, it literally crashed the server bootpd. After mucking with the bootpd code and learning entirely too much about BOOTP, I found that the hardware type was getting set incorrectly in the bootp request. It took me way to long to figure this out. The problem gets traced back to how the autoconfig uses the dev->type field to set the BOOTP hardware type field. The value in the BOOTP field should map up to the 20 or so items listed as valid in RFC1700. For ethernet this works fine: dev->type gets set to ARPHRD_ETHER in device init, which ipconfig then uses for the BOOTP field. For token ring, however, linux uses an internal (fake, non-RFC-listed) number for dev->type. (I assume this was done because the RFC only has a generic "IEEE 802.2" type, and not a specific token ring type, and there needs to be differentiation in the kernel between token ring and other 802.2 implementations.) When the ipconfig code puts that in the BOOTP field, its putting in a completely fake number. When the bootpd gets it, it uses a very non-robust lookup table, using that number directly as an index into an array. The fake number is bigger than the array. Segfault. Putting a check in the ipconfig code to use the 802.2 type instead of the fake number fixed the problem completly. I have a message pending on l-k on what the proper action should be. I am assuming it will be the manual check for token ring in the ipconfig code, despite the inelegence of that.
Getting briding into a recognizable state was what would prove to be the final project of the evening. (My plan was to get it all into working order tonight so I could spend tomorrow hacking token ring support into it. My plans have changed.) Way back when I used the bridging code the last time (that really was a long time ago....before my LAN had any switches, but after I added the second hub), the kernel bridging code was still fairly new, and there hadn't been time for it to get runover with kernel interface changes. Now, the situation is different. The code thats in 2.3.34 doesn't work with any copy of brcfg that is floating around. The code in 2.2.14 seems to be newer and more interesting, but I can't find any brcfg code that works with it either. There's some cirical changes in the structs used in the ioctls that I forsee as being a Major Problem to the current brcfgs' actually working. I'd rather not deal with updating any of this briding code past my planned token ring additions, but it appears its going to need work. If I can find a copy of brcfg that will work with the 2.2.14 code, I will port that into 2.3.3x, and go from there. If not, I guess I'm going to have to fix the newest copy of brcfg I have into working with 2.3.34.
So thats setting me back big time. Tomorrow was my last big chance this week to reserve any decently sized block of time to do the token ring extensions. Its unlikely I will get enough time on a weekday to do it. Next free day: next Sunday.
It seems like every piece of kernel code I want to play with is either unmaintained or badly maintained and hasn't been updated in over a year. Its quite frustrating. I either spend all my time updating it to working (or even compiling) order and run out of time to do any of the nifty hacks I'd planned, or I give up because its too badly broken. I don't want either of those to happen with this, as it would really solve a problem for bdraovcikd, as well as a generally cool thing to pull off.
Oh well. At this point I have a box thats bootp'ing via token ring and can mount a quite usable mini-root across NFS (hand-build miniroot, I might add). I'm all ready to go with hacking bridging code I guess, except for the brcfg versioning conflict.
In any case, I got one essay done, and a lot of other stuff. I have an IBM PS/2 Model 80 Server waiting in the garage for when I ever get a chance to work with antiques again (and hopefully Madge/Olicom will fill my request for a copy of the source for the Windows drivers that support the MCA version of the Ringnode, so that I can write a madgemca module for tms380 just to say I have one....).
Calc and physics homework tomorrow. Then back to kernel stuff. That is, after I sleep.
I don't particularly feel like writing this. But here I am. Not that there's much to say about today anyway. Besides the fact that its friday. And I'm tired. I'm tired of most of everything.
More library fun in physics, followed by trig hell in calc. And then a cursed assembly (who is the idiot who thought of those things?). Read Othello+Cliffs this evening, followed by those questions (which were admitidly much easier to answer now that I've actually read it). Still need to do a short essay on that. Hope to do that tomorrow/today. I am oh so incredibly behind. Its scary. I'm not even a quarter of the way through of Invisible Man, and its due Wednesday. Haven't even started Darkness really. And I need to do that rather lengthy paper for Foster as well. And honor band is going to take up half of next weekend. And then regional auditions is going to kill the Saturday after that. Did I mention I am behind? Did I also mention I don't have time to catch up? Yes. Those are the two important points. (Not that you're listening anyway.) Sigh.
How ironic it is that on the day I actually don't have to get up early, I'm going to bed early.... Well, not so much ironic as it is just sad...
Gah.
Excrusiatingly boring day. The only thing even slightly entertaining was some of the conversation in compandlit... but everything else was just drudgery. Got nothing done this evening. Except...
Cleaning up after the Grand Idiot of the Day. Today's GIofD is the wonderfully dumb someone who tried to crack deepthought. All they succeeded in doing was breaking my ls and ps, and freaking me out thinking I had filesystem damage (and therefore ruining dt's 66day uptime). They just might have succeeded, too, if they would've just checked what libc I was using. They used a libc5-based root-kit, dt is running glibc2.1. Duh. I'm guessing they bailed out right after they broke ls. (Anyone clueless enough to do that is obviously not intelligent enough to know how to get directory listings without using ls.) Oh well. I noticed the damage within 15minutes. Good job in doing nothing, there, fellow.
I'm tired. Off to bed.
People on television are frightening. In case I haven't mentioned that yet. (Here it is, December 37th, and I haven't given any new VFPs yet. I'm behind.)
An average day of average days. Took the first and second steps to getting myself out of that-certain-government-class, and into an independent study situation (with someone who I actually like...). Yay. That's all thats mentionable (besides the antisocial uprising at lunch against that one someone...but thats a secret...).
Came home to find a couple actual interesting mails. The first from my new Madge contact. Since it looks like Madge will be less and less involved with Linux (particularly the older drivers) now that they open-sourced it, I may end up with more and more opprotunities to do driver work on their cards. Yay again. Those cards are neat. I'd like to see Madge drivers for all the cards (including the new Knossoss cards) in the Linus kernels, so that probably means a basic rewrite of what Madge has, into something more compact and contained (as I've mentioned before, the current driverset is nearly 2.5mb of source). This applies to Olicom cards as well (and hopefully that nice upper-mid-end 100/16/4 card they sent me).
The other was from Teralogic. I'm not sure if I've mentioned them in the past. They're a maker of High-Definition / Digital Television hardware. They're looking for someone to write linux drivers for their HDTV/DTV decoder/tuner card. It looks like I may have that opprotunity. Will be interesting to say the least.
Spent an hour or so reading through the ATSC specs. Suprisingly simple, complete, free, and for the most part, well-designed. Very nice. Should be fun to work with. (The Teralogic card is basically a high-speed MPEG2 decoder with lots of different outputs and transformation functions.)
Anyway, that's all.
"wacky? hah. that doesn't begin to cover it."
I'm reading my AIM logs from 202.631 days ago. They're entertaining.
Is there really a difference between pondering the extent of the universe and pondering the taste of finnish chocolates?
Lalala. Today was worthless. (Like I'd ever say any day was anything better than worthless...) Predictable, I am. Mocked the mathematical inability of the physics teacher. (I was on the virge of just yelling out random calculus things to prove her wrong, but... I contained myself. Somewhat.) Had a sub in calculus already. No homework is the good part (unless you're stacy and get distracted easily...). Compandlit was just annoying. I basically just sat there and stared at the ceiling. (But most entertainingly, I moved to a seat with a wall. Yay. Lose it in one class, gain it in the other...) [Someone moved the Othellos from where I put them in the workroom. And to think, I took all that effort to arrange all those thousands of books in nice agreeable order, and they just go off and steal them. I bet when they bring them back they'll put them in the wrong spot. Grr.] Oh well.
Hum. I started building invisible. But I got stuck and found something else to distract me from not doing the government work that took me five minutes when I finally did it at midnight... I think I'm going to need to tweak the kernel briding code to work with token ring. But I really want that to work. It would be neat.
You know, I have no idea what the hells going on these days. I suppose I should read stuff for compandlit. But even this seems more entertaining than that. Lalala...
"you're just a delusional dictator from the dark side who can't even reach tyrant status." Harsh, harsh...
Amazing. Within 27 seconds of yesterday.
A box of very bizarre box of finnish chocolate(?) magically appeared on the counter. They look and taste weird. Not that that's stopping me from eating them. They taste quite good. I just thought you should know, in case I end up dying and not coming to school tomorrow...cough...
I think we should all start writing dates in time_t format. For now, it only takes 27bits. Is that too much to ask? You can even round to the nearest midnight if you want. (I need this. If more people start being non-y2.038k compliant, I can get more easy power when the time comes. Think of it has your contribution to the mid for future world dictator foundation. [There's currently a debate going on about whether I should advertise my future tyrany over the universe as a dictatorship for PR purposes, or if I should just go right to tyrany. And aparently I "don't deserve the title". That's debatable.])
Font changes are evil. What provoked the use of that badly-renamed-by-that-one-company font Helvetica?
According to this wacky brit on discoveryhealth, in India, people wobble their head from side to side instead of nodding. He goes on to comment on the undecidiness of the Bulgarians, who randomly switch between the nod and the wobble. I'm full of useful information right now.
Oh, I guess I did go to school yesterday. Post-traumatic stress problems were blocking it there for a while. Band was uneventful (if I was awake, which is obviously questionable). That physics class is going to drive me insane I believe. The teacher has never taught the class before, and to add to that, she losses her mind every ten seconds or so. And add onto that, it being a 6th-grade level curriculum. Fun. Bleh. (Chapter one of the textbook explains how to drive a car.)
The spy gagetry the government put in my brain is squeaking again. I guess I should stop talking about world domination. Hah.
Calculus (round two) is just the same as (round one). With the hopeful assumption that I'll pass this time. And well, govt is just inherintly hellish. (I had to move to a front seat...without a wall to lean on...which is slightly prohibitive to actually sleeping...pout.)
I didn't do anything today. Except school and homework. Gah.
How odd. Josh is using archaeic spellings. And a job is no excuse to be using the damn phone.
Not a very interesting day indeed. Slept til 1600 or so again. (Sleeping through school shall be entertaining.) jgo helped me track down some show-stoppers in the latest libfaim. All but one should be fixed, but that one causes some funky stack corruption which is both nontrackable and nonreproducible locally.
Other than that, I just watched Simpsons all evening, trying to avoid thinking about how earlier I have to get up today. Gah. I should be in bed. Bdraovcikd came over during the last simpsons. Not sure why really. Oh, thats right...to pick up his laptop... They just left. I think I'll probably go to bed here soon.
Normally here I'd say how unproductive the vacation was. But, well, I can't really say that this year. It was actually quite productive, far more than I expected. I still didn't get everything done I wanted to, but thats more of a problem of me setting my goals too high than actually not doing enough. Well, I could've, and probably should've, done that reading I was suppose to do for compandlit. But, well, thats not important. I got more done on libfaim in the past few weeks than I did all last year. I made tremendous progress on the token ring front. I wish I'd've done more video stuff, but I will get to that eventually. Anyway, its been nice. And I wish it was summer. Because if I could be this productive in two weeks...I could do a lot with three months in the mood I'm in now. But if it were summer it would also mean that I graduated already...and then I could care less.
Enough rambling. I'm going to bed. Eventually.
Weee.
Welcome to December 33rd. We should just get rid of years. And days. And hours. And minutes. Everything. Let's just get rid of everything.
Decided to get out of bed 'round 1600. Even that was bad. Slept for 13hours. Long time. Never long enough.
Spent then til now doing any random variation of the following: eating cold chinese (food, not the people), working on AIM chat, fiddling with mfaim, writing a quicky OSS-based sound recorder (couldn't find a decent command line one laying around, so I wrote one), playing with AIM Chat, feeling giddy about AIM Chat, complaining. Guess which one I'm doing now.
Brock, do I get to keep this laptop?
I'll talk about the AIM stuff. As for the recorder, you'll probably see a tarball pop up somewhere soon. I use it to record off the radio. Anyway, yes, I pretty much finished everything needed for AIM Chat. Including 'Request Chat Rights' on ChatNav (which should prevent the need-windows-first problem of yesterday). I then spent time trying to get mfaim to cooperate. Ugh. Its messy. But thats not my problem. I did the AIM stuff. Josh gets to do the mfaim stuff, and clean up my crap in there. I just wanted it basically working for me. And it does (as everyone in the WorldDomination room on exchange 4 can atest to). Everything is commited to CVS. It should work just lovely. Use "/joinroom roomname" to join an already-created room on exchange 4 (to get other exchanges needs UI changes, which are josh's ordeal). The roomname must be in AIM internal format (all lowercase, underscores replacing spaces). No way to create rooms yet. The libfaim part is there (and faimtest can do it) but putting it into mfaim will take some thought. There's no Good Way to do it. Again, a josh problem (well, I may fix that one for him). The other function is "/invite screenname". You must do that while you're in a chat window, otherwise it will probably do funny things. If you are, it will invite screenname to the current room. This has proven to be dangerous already, but I think my fix is okay (the 'invitation accepted' ICBM that some clients send seems to be malformed). Since AIM Chat rooms are onesocketperroom, you close the socket by closing the chat window just like a normal buddy window. (Josh will hate the way I implemented that I'm sure.) Anyway, it works. It doesn't crash (not yet). I've tested it in rooms up to five occupants with no problems. Only private channels, however -- remember, only exchange four.
So, when you see that exchange list with the prettynames next time you start up mfaim, you'll know what they are...
Life goes on in the greenandbluestripedsubmarinewithyellowspots...
Well, thats fairly weird to see. I'm so used to seeing "2000" in marketting material and media hype that its quite unbelievable to know that I'm going to have to look at it (and use it) in all its incrementations for the rest of my life. No more 1's in the MSB. Sigh. I'll learn to love it. Really.
Anyway, I haven't written in what is a relatively large bit of time. Its not really that I haven't had anything particularly interesting to talk about, but more like a situation similar to what usually happens during vacation... I get busy doing stuff until I'm tired and by the time I'm tired I'd rather go to bed than write about why I'm tired. Oh. Did I say that's what usually happens? Well, I lied. That's probably the first time that's ever happened during these two short weeks we get off school every year. But frankly, I had lots to work on. And an unusually large (and particularly disturbingly large) amount of motivation this time. Shrug. Whowouldhavethought.
Last Friday you heard about I guess. Saturday was yet-another-thatguyssupposedbirthday. And as usual, we all went up to Prescott, and finished "the festivities" (aka, the humoring of these religious psychotics). Terribly boring indeed. Sunday was even more boring. Though I'd talked to temas right before I left on Saturday and gotten patches for libfaim against his jabber customized version. I spent Sunday taking a gander at those, and eventually deciding that I could probably use them as an excuse to change some major libfaim interfaces that I had been avoiding before. So I spent the rest of the day integrating that, and then customizing mfaim to work with the new interfaces. Then testing mfaim with a copy of aimd 0.1 that I had on there. It still logs in. Surprisingly.
But anyway, Monday added a bit of difference. Our older dog (14+ years ancient) had been getting especially dabilitated the last few weeks. After her three year bit with various cancers and infections, the decision was made for euthanisation. It was to be done specifically in Prescott because despite the fact that its perfectly legal to bury animals here where we live (we're county, its only illegal in the city), the vets will not allow it. Anyway, so I dug another hole (I Hate Digging Holes). This being the single most difficult hole to dig. Anyone who's dug a hole in that part of Arizona most assuringly knows what I mean. Its all rock. Solid granite, til at least three feet down. Then its some other kind of rock. A much harder variety. Luckily I wasn't digging too much into that. Anyway, that got all done with, and we came home mid-afternoon. With one dog.
From Monday night to 2300 Thursday, I will cover in a nonspecific (and most likely nonlinear) way...
The majority of the time was spent on doing two things: sleep(3) and AIM/libfaim. I have no real idea why I've been so motivated in regards to the latter. Its frightening. The libfaim CHANGES file has grown from 120 lines to 176 over the past week. And that doesn't count the stuff I've done in the past 24hours (which I haven't listed yet). I integrated temas' session changes to remove all global variables. That was...interesting. Creates lots of stupidly long patches just to add paramters and name changes. Also started looking at the new way AIM 3.5 does login, using all SNACs instead of several Special Exceptions. Its generally nicer overall, including unfortunatly, password encryption. They finally use halfway decent encryption aparently. At least decent enough for me not to recognize. Sigh. And I'd just finished fully implementing it in libfaim. Until I figure that out, the new login code is #ifdef'd out as SNACLOGIN. Someone should look into that. Using SNACs for login makes some parts of my code a lot simpler. While I was doing that, I went back and reimplemented the old login routines, using the new supernifty tlvlist stuff where applicable. The only real visible change besides cutting the code size in half is that the regstatus parameter is now read correctly, something which was pertetually broken under the old non-intelligent scheme. I'm not real sure what that value means anyway. Did other various cleanups as well. Added channel 2 ICBM (chat/voice invites) parsing. Oh, I suppose I should mention that I solved two mysteries in one prior to that (mystery number one being why-cant-libfaim-get-chat-invites, and mystery number two being what-the-hell-are-those-extra-tlvs-in-oncoming-buddies). Well, those extra TLVs contain capability information thats advertised to everyone who has you on their buddylist. Isn't that fun. I couldn't figure that out of course until I knew how to send it myself, so I could see what changed. Turns out its sent in the same command as the profile. Started advertising, and now I can get chat invites. And voice invites for added surprise. libfaim can parse both. Back to the capability block: the data seems to repeat in 0x20byte stripes. Aparently each stripe represents a different capability. If you have two of them (0x40bytes -- ie, AIM3.0), you can support chat. If you have three (0x60bytes -- AIM3.5), you can also do voice chat. libfaim now optimistically advertises 0x60bytes, just in case it gets done some day. Oh, and I also learned how to detect (a bit in the class value in userinfo) and advertise (send a message with your profile) awayness. So now libfaim users can flag those windows users with that little yellow note icon too. How exciting.
Right here, I'll break to talk about non-AIM projects. Well, only one of them. The TMS380 driver. I'd been avoiding this, because I wanted time to think about what I was about to do. That is, modularize the driver into tms380-generic parts and then probe-and-init card modules. I finally did that this week. An initial release for 2.3.35 is here somewhere. After some initial minor problems, and then some tough design decisions to come up with, it come together quite well. I still crashed my machine because of stupid things, but overal it worked well. The first module I wrote was the abyss (Madge PCI Mk2) driver, as it was the one where the most non-generic stuff would need to be done (the AT24 SEEPROM code cluttered the tms380tr code badly, its nice to see it gone). After that was working adequately, I pulled all the PCI cards from mediocris and filled it up with TR cards. That let me test multicard for the abyss. Works great. I had two cards open onto the ring just nicely. Then quickly wrote the tmspci generic driver. It's probing scheme is close to that of the original tms380tr driver, supporting multiple cards. But those cards are all identical save the PCI ID information. That worked too. Released that tarball.
And then I went back to AIM. Sigh. I don't know why I'm working on this. I don't need to be. I don't need these features. Nor does anyone else. Oh well. Chat has been pestering me. And just getting and parsing chat invites was just not enough to satisfy me. So, after getting up around noon on Thursday, I started in on it. I had it joining channels within a few hours. I was amazed. Everything relating to chat is quite nicely designed, except for one part (there's no non-hackish way to connect a join-response with the original join-request...its a fairly major problem...and I don't like my solution). Other than that, everything is in nice compact TLVs, no discontinuity issues or odd things in general. Quite easy to implement. So libfaim+faimtest can join a channel and echo everything thats said in it. (As brock and I found out, its quite entertaining to put a couple of these libfaims into a channel and then say something from the windows room owner...it recurses about eight times...amusing.) It can also parse all the important snacs in the chat (0x000e) family. But now I must go back and do chatnav, as theres still some problems (like the problem I spent three hours working on late thursday night where a join-request would never generate a response of any kind, sucess or error. How I fixed it? Logged that account in with a winaim client and then in again with libfaim...it then worked just fine...for a while...then it needs a recharge). Anyway, Chat as it is in WinAIM isn't exciting. But I think it will have some interesting possiblities once we have full support for it in libfaim/mfaim.
I mentioned brock already. He picked my house as his Residence of the Day yesterday. Various random conversations, eventually leading all up to spend the next twelve+ hours centering around time changes. Yes, I did watch CNN for the first rollover. And yes, we couldn't help but make fun of the Tongans and the Keribatchis. It was just too amusing. But that was nothing compared to Sydney. That smiley was just asking to be mocked for hours on end. As is the "Millenium Dome" (aka the electrocutioner, aka the Vortex-for-the-Dumb-Earthlings) from those ever-elegent Brits. Anyway, I was awake to count down all the zones up til Beijing or so. I fell asleep for a few hours. But then I got up and watched the rest of them (up til now...we have two left as I write this). I think I missed one while I was out eating Chinese too (it was going to be my last meal of mortal living, I figured it should be something good). The GMT/UTC rollover in late afternoon was not exciting AT ALL. I was really really unimpressed. I was at least hoping for a minor brawl or SOMETHING. What did I get? NOTHING. Gah. Damn humans. Just when you think they'll do something to entertain you, they go off and try to be 'noble' and fix their stupid irrelevent problems. Oh well.
The domestic rollovers were just as unimpressive, including the local MST rollover. Other than the IRS being shut down in Gambia, the non-y2k-related water scarcity in Nicaragua, or the slow airline business in Sri Lanka, this has been a completely perfect rollover. I mean, the 1999 rollover was more interesting than this! Oh well.
I don't think I've ever heard Copeland's Fanfare for the Common Man [an ironically named piece] so many times in one day. Until today. I didn't count, but it ranges in the upper twenties I'm sure.
"Welcome to Y2K-Not." -- Hewlett-Packard. Oh. I'm so entirely disappointed. It was all planned out. Then some smartass decided to point it out to someone. Ahg. The plan would've worked. Really.
Hawaii rolls over in just over six minutes from now. Somoa/Apia then follow an hour later. They're last.
I'll never forget the video of those disoriented doves. That was one of the more entertaining sights of the whole event.
I think I'll stay up for Somoa. I've seen all but a few of the 36 (accountable) time zones. I might as well wait another hour for the very last one...
|
|
||
| Adam Fritzler (midendian) |
Last modified: Tue Feb 1 04:48:06 UTC 2000
(...lets all clap for the complete and utter lack of anything relating to year rollover problems...pout...and I was hoping for the world to annihilate itself for me...just wait til y2.038k...you'll see...I WILL RULE THE WORLD...) |
Introduction and Index |