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

dæl siextyne
furdat monðas Decembre, 1999ad

dates in hex unless otherwise stated...times are in decimal UTC/GMT


1999/ cx19+090350.21 {Sat 25 dec 1999, 02:03:50.21 MST} [8F21, 1F07]

Well then. Very inactive day. Unless you count sleeping as activity. Which I often enjoy doing. So in which case, today was a nicely active day.

Got up around 1300 again. Split up my INBOX (which had grown to well over 100 messages containing everything from new messages to things I'd left in there months ago to remind me to do but then never did) into four pieces: Pending_AIM, Pending_TR, Pending_Video, and whatevers left stays in the INBOX. But while I was doing that, I found some stuff from Orb and a few other people sitting there from months ago that I saw no reason why it shouldn't be put into libfaim, so I shoved several in. Everything I had that I liked. Should all be in CVS now. Including a new mfaim to support the changes. I really didnt plan on libfaim work today. Really. The random cleanups and things weren't really planned either. (And yes, its still ugly, badly designed code...) Methinks I'm serious about being done with libfaim for now. It's messing with me.

I still didn't get anything done with TR today as I'd planned. But oh well. From the looks of today, it would appear that my maniacal coding spree of the past few weeks has drawn to a close. Which is a bit sad. But its just another turn in my endlessly sinusoidal life...though the past couple of weeks are going to make it look somewhat more tangetal...

Humored my family and went to church with them. Got wax all over my hands again. (No, they still have yet to take my recommendation and get new candles (or even waxcatchers). Sigh. No one listens to me.) Came back. I've been sitting around here talking to people all the rest of the evening. Decided to try out AIM Chat (by opening a WorldDomination room...). Bleh. IRC is much better. I don't see why anyone would want to use it.

Oh well. Its thatguyssupposedbirthday today. The way I discovered this was that there were only about twenty messages on linux-kernel today. Sigh. What am I suppose to do with no l-k to read? The situation has never come up before...

No new computer this year (you'll remember that I got mediocris last year). But I'm not typing this on a Wyse dumb terminal this year. So yeah, I already got my new computer this year (pileus).

Merry Christmas / Happy Hanukka / Jolly Kwanzaa to all...


1999/ cx18+113324.20 {Fri 24 dec 1999, 04:33:24.20 MST} [8F20, 1F06]

Yes. Indeed it is past 4am. Thank you for pointing that out to me.

I didn't do anything token ring today, except to find out that those PCMCIA cards they sent me are not the Cardbus versions, but the PCMCIA cersions. Pout. And that the Madge driver for them doesn't work. Blah.

When I wasn't wandering around the earth aimlessly today, I was sitting here staring at libfaim. I was more productive with libfaim today than the entire last four months combined. (And it looked so simple in the changlog too...when it was really so spectacular!)

Firstly, I went over and opened up an account on Sourceforge. I like it. A bit slow though. Anyway, libfaim is now in CVS. [Josh, I went ahead and stuck my latest changes to mfaim in there too. Its based on pre2.1, but its got the latest libfaim and all the various changes needed for that. I imported stock pre2.1 and then committed my changes in a seperate step, so you can compare them. Check out the CVSWeb colored-diff feature. It's superb.] So yes, thats all in CVS. After that, I decided I'd need new code to actually make that worth it. So started ripping a few things apart. The first that got hit was the large number of individual variables that were getting passed left and right and up and down all over the place to represent user information. I conglomerated that into a userinfo struct, which is much nicer to pass (pointers to) around. [That was what required significant name replacements in aimio.c.] This made me modularize the "mini TLV parser" too. I've been avoiding doing that for a good eight months now.

My real point in doing that was so that I would have an easy way of adding a call to it in parse the information block thats in the oncoming buddy command as well. That now happens, so you should be able to see when people go idle, away, etc without actively poking them. I'm not sure how to see away yet, but idle should work. After I got that done, and just for sanity's sake adding some debugging stuff to print out unknown TLVs (which I didn't know there were any of at the time...), I actually started the client and found that most AIM users spew out anywhere from 16 to 96bytes of extra data in that oncoming buddy packet. Hell if I know what it is. The only other thing I know is that AOL users don't have it. But they do have another TLV type that they send with a zero-length at roughly the same spot. I at first thought it might be the new avatars or something, but they're entirely too small to be that. Shrug.

Anyway, I decided it definitly wasn't time to go to bed yet. Through my stumblings, I remembered the attrocities in aim_im.c; in both sending and receiving. Dug up an old copy of James Croall's code and took a look. I don't know how his sending code worked at all. Mine doesn't work if I send things that way. So I ended up fixing that one manually. Its still not too pretty, but its better. And its output matches that of MacAIM 3.5. It works.

Then moved onto the parsing code. People who haven't read every bit of my nastiness about IM parsing should know that I've been trying to get this right for the entire eighteen months that I've been working on AIM. I've always gotten close. It'll parse most clients, but crash hard on others (the new one I discovered today that provoked me into starting this was MacAIM 3.5 away messages). But now, after all this time, I think I've finally got it. I had to write some pretty odd TLV autoparsing functions, and still guess a bit, but its working. And it reads output from everything I've tried here: MacAIM 3.5 (normal and away), WinAIM 3.5 (normal and away), and other libfaims (normal and away). It all works. Yay. I still can't believe I really got it.

And David. This means you and your friends can't crash me anymore. Sending it high-ascii merely gets it to detect the encoding flags and kindly ignore you. Yay to that too. (Though perhaps someone should actually write routines to make an attempt at displaying the 16bit wide chars. Thats a client function if you ask me...)

So, I just got done checking in the libfaim changes, and a few more small mfaim changes. Its working nicely so far.

I suppose I should mention what happened after I closed emacs yesterday. I didn't actually get to bed until long after 0400. The guy from Madge did reply, and he took a look at my changes. And while I was waiting for that, I did go ahead and generate patches and sent them off to Linus for 2.3.35 (I still forgot to add myself to CREDITS though). Anyway, the main suggestion the Madge guy had was to move to an 8390/NE2000/WD-like setup. Where they have over a half-dozen cards all using the same backend module (8390). Its been suggested before, and I agree. I guess now is the best time to do it: after I know enough about what needs to be modular, but before I get too far into implementing card-specific stuff in one big driver.

So I spent several hours reading through the 8390 stuff. I was entertained more than I was learning tho. Perhaps it was just my late-night giddiness, but there's some very amusing comments in those old drivers (from Don and Alan, particularly). Oh well. I need to go back to token ring. One "day off" doing libfaim was too much already. Besides, no one is here to leap for joy with me when the IM code works. Sigh. I feel such a lack of validation when everyone is away for the holidays when I do something major... :)

Anyway, aparently today is indeed Christmas Eve. Gah. I've been rather oblivious to reality lately. More than usual. Slightly.


1999/ cx17+075320.19 {Thu 23 dec 1999, 00:53:20.19 MST} [8F19, 1F05]
tms380tr.c: v1.04 22/12/1999 by Christoph Goos, Adam Fritzler
tr0: Madge Smart 16/4 BM PCI Mk2 Ringnode (Abyss)
tr0: IO: 0xe400 IRQ: 11
tr0: SEEPROM: ring speed: 16Mb/sec
tr0: SEEPROM: adapter RAM: 512kb
tr0: Ring Station Address: 00:00:f6:af:8e:23

Seeing the above (and more knowing that it was working right in the code too) made my day. That's the point that I left it for now. I released a new tarball (see here -- its the one marked 2.3.34). And emailed Madge with a couple questions (no, I don't expect a reply anytime soon). I'll come back to this in a bit, hold on.

Got up around 0800 (rather maniacally -- I'm not real sure what was going on in my head then...). Read mail, all that stuff. Wandered around the serial eeprom code for the madge. Waiting for that guy to call. Figured out the proper values for the NSELOUT bits in SIFACL to get it going at 16mb. Did a test transfer. 6.1Mbits/sec with a Cyrix 6x86-120mhz win95 box with a TC4050 card in it. Not bad. I think it can do better. Then retrofitted Madge's AT24 serial bus code into my driver. Got that reading the eeprom, very crudely. Decided I'd not wait for the guy to call. Went back to bed. Got up around 1900. Decided I didn't like their AT24 code at all; scrapped it; and did a clean reimp. Mines much nicer and half the size. Either the guy who wrote it had never written serial bus routines before or he was copying straight out of a data book. They were wordy, saved too much information, and were generally unreadable (it was difficult to track the states of the lines traversing the code because he'd set it one way in one line and then in the next line he'd set the same line another way and turn on the other line...very confusing). Got mine all written. Didn't work. Compared to the originals. I was missing a delay. It needs 20usec to recover after changing the line states. No big deal. Worked fine.

Spent the rest of the evening putting everything into a driver that would actually run on something besides the Madge. I think I got it. I have yet to test it though, so it may not have all the bugs worked out. But it does work on the Madge Smart 16/4 PCI Mk2. Damn nice card too. I'm glad I have them. Next downtime it has, deepthought is getting one. With this many cards, I have no excuse for not having a real ring (other than the test ring I have now). Besides, this driver needs...uhm...stress..testing...yes...thats it...

Also diff'd my trees against each other. I'm still have three trees, but at least they're managebly similar now. The tree I released today is my Madge tree, which sits in my 2.3.34 tree, which I've been compiling and using on 2.3.28 because I haven't got the guts to compile 2.3.34 yet. [Ahg. I forgot to change the SYSKONNECT PCI IDs back to their 2.3.34 versions instead of the 2.3.28 versions. I put up another tarball. Regrab it if you just downloaded it...]Anyway, it should work without problems on 2.3.34. But I havent tested that either. Anyway, so thats my latest tree. But that isn't merged with Linus yet (I should probably send it through Alan here soon so it can get into 2.3.35/36. I need to send him my TEA6320 driver too, now that bttv-0.7.x is integrated. I'm becoming a regular kernel hacker here...). So I've still got the Linus trees, which I should hope are what most people are actually using. And then there's my lonely old Intel/ISA/PseudoDMA tree which hasn't been touched since I found out that I have no idea how to turn interrupts on on the Intel card. I will probably merge more bits in tho as I support the Madge ISA cards...and the Olicom cards.

Yes, I got another box today! This one was from Olicom UK, containing one of each of the following: ISA 16/4 512kb, PCI/II 16/4, and a RapidFire 3540. The first two look a lot like their Madge counterparts. Why I have an OC-3540 is a bit of a mystery however. Its a 100/16/4 card, with WoL support, and all sorts of other nifty features (did I mention it was 100mb?), but its based on a custom ASIC. So... I don't know. I'd be glad to write drivers for it if they give me docs. But it really has nothing to do with tms380tr...

I think I'll talk about some of the things I did to versatilize the driver. Firstly, on the Madge, the actual TMS380 SIF registers are offset by exactly 0x10 from the base address and are in the same order and everything. I'm guessing this will be the case with many of the cards, so I added a registeroffset element to the cardinfo table. All the cards have it set to 0x0000, except the madge which uses 0x0010. That works out incredibly clean. But thats not the least of it. The Madge also has registers that sit before the SIF registers. And I like the way Christoph did all inw/outw as, eg, "inw(ioaddr + SIFACL)". So, to keep being able to do that, I changed the #defines for the Madge config registers to be negative numbers, so that when added to the incremented base address, they would come out right. I was proud. And here I was thinking I was going to need to clutter fast-paths, and my answer was staring at me already. Anyway, that was just the largest problem. A few other things arise. To facilitate variable ways to read EEPROMs, I added a function pointer to the cardinfo (*read_eeprom) that should point to some function that feeds back a MAC address. All use the old tms380tr_read_addr() except the madge which uses the new madge_read_eeprom(). Another thing was the values of the NSELOUT pins. I'm guessing every manufacturer had a different way of hooking those up, so I added a two element array to the cardinfo table to hold the values for 4mb and 16mb settings. That seems to be a decent solution. (Though speed setting doesn't quite work real well yet... Its still locked in at 16mb for now.) The final thing I added to cardinfo was fairly last-minute and I'm still not real sure about it. I may remove it later. Its the privinit function pointer that will get called at the start of tms380tr_chipset_init(). This works okay for the Madge, but I'm not sure if all cards are going to need special stuff called at that same point for every card. As I said, I may find it to be too specific and take it back out again.

The only other thing I wanted to comment on was using ifconfig to set the MAC address. This theoretically should work, though I have yet to convice the kernel to pass ioctl's down to my driver. (I posted to l-k about this, awaiting an answer.) The idea here is to avoid implementing a module parameter to implement LAA (locally assigned addresses) like the ibmtr driver did. I don't like module parameters, particularly for drivers that support multiple cards. Its just too undefined how the parameters will get applied to the specific cards. You certainly don't want the same LAA getting assigned to the seven cards that the driver supports concurrently. That would be a bad thing indeed. The other reason I want this is so that you don't have to hack the driver if you have a card that is supported save EEPROM reading. I know there's probably some out there, I've dealt with a few of them already. (I need to have the guy with the Madge PCI Mk1 try today's driver, btw. The AT24 eeprom code should work on it too.) Anyway, I'd really like to implement the ioctl to do that. And it would've been in tonight's release, if the kernel would've let me.

Anyway, it was another good day. Amazing how they come so often these days.


1999/ cx16+084340.18 {Wed 22 dec 1999, 01:43:40.18 MST} [8F18]

Lalala.

Twas a Good Day, I suppose. Woke up around 1300, to find the honor band audition results waiting in my inbox. Aparently they could actually hear through all the background noise of audio tapes. I got second chair, which is what I expected. First chair I'm sure is Dave, who is more skilled than most college players I've heard. I'm happy enough. Centennial got lots of top chairs again (including all but one of the top six clarinet chairs). Anyway, a mailcheck revealed another Irish Madge box. They sent me two of the Cardbus PCMCIA versions of the PCI Mk2. Very nice. And once again I was quite impressed with Madge's packing material. Its the best I've ever seen. And these cardbus cards are quite nice. They use the IBM-style dongle contachment, which I believe to be the longest lasting, sturdiest connector there is. Probably the most expensive too. But anyway, the only thing that really confused me was that they give you a union to use on the cat5 patch they provide. Thats a bit scary. Adding the union knocks it down to cat3. Not that it matters; its not one of their 100mb cards.

In any case, that got me rather motivated to do token ring work today. I spent several hours just reading through what little and cryptic Madge code I had. Very wacky use of macros, I must say. Some parts had to be run through the preprocessor just so I could make sense of them. Eventually started adding bits to the tms380tr driver. With no modifications other than another line in the card table, it will detect the card and get most of the way through the bring-up diags, with the exception of having a null MAC address. But it fails with an invalid BUD failure. Pretty weird. After reading more Madge source, I found that they'd remapped all the SIF registers up 0x10bytes. After making the appropriate changes in tms380tr.h, it will load and immediatly freeze the box. More reading of source. Figure out how to work the RESET register on the Madge glue chip. That lets me turn interrupts and things on, but it really doesn't help the hanging problem any. Using the best debugging tool around (printks), I traced the freeze down to the routine that is suppose to read the MAC address from the rom attached to the CP. Aparently in Madgeland, this intiates some Really Bad DMA and halts the machine. Commenting out the line gets it through BUD, but fails later when it passes on the OPB. The CP figures out it has no MAC address, screams loudly, and bails out. That was a good sign. Implemented the MAC faking hack, and it gets through BUD and adapter open. But, the light on the MAU doesn't come on. Yet the driver says it enterted the ring as a single station (which is okay, at the time, it was the only thing plugged in). Odd. I was ready to give up for the night, when I remembered that I was using one of those fancy Ungermann MAUs that had ring protection. Aha. It's probably isolating the node because it entered in at the wrong speed. So flipped the speed switch on the MAU down to 4mb and rebooted it. The driver detected a hard error, reset itself, and reentered the ring. And this time the light came on. Yay. I really wish the MAUs would like give a different color light or something to isolated nodes. It would be easier. But oh well, I figured it out. Next step was to get something onto the ring that was pingable. zaphod was nearby. Started him up and turned it down to 4mb (testing the ring speed protection feature for the first time, twice in one night!). Yay. It pinged.

So I got it working in less than a day, thats quite good I think. It just works though. I still need to implement the stuff to read the i2c EEPROM for the MAC address, and figure out how to get the speed up to 16mb again (which no doubt has to do with those quite undocumented NINPUT pins on the CP). But that shouldn't be too much more. I don't think the big problem is going to be supporting these cards; the big problem is going to be supporting them in the same driver as more standard cards while still retaining a decent amount of cleanliness in the fast-paths of the driver. It should be interesting. After that, I'll probably work on the Cardbus card and the simpler (non-PnP) ISA card simultaneously, since I don't need to do card-shuffling for Cardbus (I can just use my laptop! -- that'll be the first time I ever get to do kernel hacking directly on my laptop; it shall be nice -- hacking outside anyone?).

During my multiple crashings of mediocris, I turned on the mac so I could have something to run AIM and amuse myself while I was waiting through fsck's (which no I didnt do everytime -- often I just booted with init=/bin/bash and made the best of it). MacAIM supports MacOS 8.6's voice synthesis features. The best voice available was "Victoria, High Quality" (its much nicer when she says it). Josh was terribly amused by this. I was too, just not as much as he was obviously. And he couldn't even hear it. I also figured out some minor voice recog stuff. (In fact, to shut it off tonight all I had to say was "Computer, Shutdown" followed by "I'm sure". That was entertaining as well.) And Mac Netscape renders things better than any browser I've seen. I like it. The only problem is that its only slightly more stable than windows netscape. Oh well.

I should've been to bed two hours ago. I need to get up early tomorrow. That's the bad news. The good news is that I'm getting paid to get out of bed. Well, At Least Its Not School.

Why in all Hades am I so talkative lately? We might just come close to October 1998 in size this month... halfway there already!


1999/ cx15+081914.17 {Tue 21 dec 1999, 01:19:14.17 MST} [8F17, 1F02]

"I can see you with random facial piercings and a leather jacket."

This one'll be short to make up for all the cruft of the past few days. It was a worthless day anyway. Not a big deal.

Slept in til 1430 or so. Wandered around for a while. Ran out of places to go in my room. Went Out There. Got the mail. Got a tshirt from Network Associates (aka McAffee). That goes with the ESI one I got the other day. Oh, and FedEx came. They brought me a box of Madge cards. From Ireland. Overnight from Ireland. I was entertained.

Not as many cards as I was expecting though. Two each of: Smart 16/4 ISA Ringnode, Smart 16/4 ISA PnP Ringnode, and the Smart 16/4 PCI Mk2. Maybe they'll be more later. In any case, I got the source Madge driver compiling on 2.3 kernels (except for procfs stuff... I don't know what the new routines are for that). After I shut mediocris down read to put in an ISA card, I remember that that driver doesnt support the ISA cards. So I found an ISA ethernet card to put in instead and put the Mk2 PCI card in. Mild problems with that. But it works now. And their driver inserts and brings up the card nicely. I was impressed. It doesnt have that annoying 3sec stall that tms380tr has either. I'll have to look at that. That's the only TR work I did today.

"Batman will get you."

The rest of the evening was spent cleaning up some libfaim stuff, and integrating the changes needed for Win32. Released a snapshot. Didn't get the Win32 #includes just right. Released another one that compiles warningfree on win32. Yay.

And that's where I finished.


1999/ cx14+091729.16 {Mon 20 dec 1999, 02:17:29.16 MST} [1F03, BABF07, 7F02]

"Bah. I hate prose! Bah, I mean verse." Yes, Tara. That's right.

Day with lots of ideas but not much of doing anything. Those are very frustrating kinds of days indeed. Drug myself out of bed around 1100. I think. Showered and all that fun stuff. One of the first things I implemented was something I thoughtabout whilst sleeping: in the jpeg decompression routines I added to mpeg2encode, I had left libjpeg decompressing into an RGB buffer, and then doing a colorspace conversion myself. How dumb is that, is the thought that came to me. JPEGs are stored in YUV, so why am I converting them to RGB and then back to YUV!? Anyway, adding one line to set the output color space let me take out lots of ugliness in the code, and gave me a 2% overall speedup in MPEG encoding. Splendid. Also, I added some simple statistics stuff so I could know when I was getting faster. Oh, and while wandering around the code, I noticed that it was using an iDCT, which is truely an odd thing to see in an ENcoder. I found where that was happening and discovered it was going back and determining error rates. Gah! I guess I should've expected as much from an IEEE reference implementation. Ripped that out obviously. At this point I'm up to 90 frames per minute.

Chatted with Gernot for a bit as well. (Nice to know that if I ever end up in Sweden, I'd have a place to stay!) Most of his current effort is directed towards the GIMP video plugins, and it looks like they're going nicely. Though I have no reason to use GIMP, and I'd personally much rather use command line tools. GIMP would suck an awful lot of cycles that could be being used for encoding. Did decide however that when I'm mostly done "fixing" the mpeg2 tools, and an mpeg audio encoder, that I'll release a package that fits together nicely.

Nathan replied. He says he hasn't really worked with the encoder at all, just with the decoder. And the real-time MPEG1 encoding that he mentioned (though hes never tried) was using mp1e, which I've never tried either. I'm told it does it in real time by only using I frames, which would theoretically be possible to do in real time, since the motion estimation is THE most comprehensive part of encoding. Maybe I'll look at it someday. But I'd rather get mpeg2encode going faster. It can do MPEG1 as well, with P/B frames too. And maybe even real time eventually. You know, on that 1ghz Athlon I have coming.

Taking a suggestion from Gernot, I went and searched Intel's developer site for MMX and MPEG/JPEG stuff. Lots of info and sample asm. They've got both MMX and SIMD implementations of a DCT, iDCT, and a motion estimation algo. [(i)DCT is (inverse) discrete cosine transform, btw. I was quite mystified by that TIA as well. The DCT is used in encoding, iDCT for decoding. And josh said: "so _this_ is what math nerds do when they grow up..." Motion estimation is of course the comparing of blocks between frames. Critical for making P and B frames, though not necessary for I frames obviously. Oh, the DCT stuff is also used in JPEG. Someone up for optimizing libjpeg?] The NIST DVD decoder uses the Intel MMX iDCT, so their code mustn't be too awful. I will probably convert the tasm asm that the DCT code is in into gcc asm code, and use it. The DCT is currently taking 16-19% of the overal encoding process. The big killer though is motion estimation. There's one 110 lines (of C) function that gets called nearly 100 000 times PER FRAME. It's grabbing over 50% of the cycles. Intel's got MMX/SIMD implementations of that too. I just need to figure out how to adapt it. [And josh thinks I'm obseessed with video... hah!]

Anyway, quickly got into that cursed uniform for the next-to-the-last performance for SoH. The bowtiealike broke. After a cursory examination of what used to be the original design, I decided it sucked. So implemented a superior design. We'll see who's tie breaks next. Bwahaha. That was pleasing, so I left and did the whole performance thing and came back home. Sat around for an hour and then went back for the last one. Then came home. Eventually.

I've spent the rest of the evening/morning playing with my powermac. I found a 6gb drive to put in it (I have no idea where it came from...but I found it first!). I want to get debian installed. But it doesn't agree. I've fought past all the errors except the one about not recognizing the filesystem on resc144.bin when mounted on /dev/loop0. Glah. Probably messed up during downloading. I'll try some more tomorrow. I really want to play with ppc kernels. Really. I do. (So I can test token ring drivers on them, right?)

I also tried to set up a dell that had been upgraded with one of those turbochip thingies. Its a 5x86. The slackware-current boot/root (not sure which is causing the problem) gives buserrors while starting the getty. I was lost. I gave up. I started playing with the mac instead.

I've sure been writing a lot lately. A lot about MPEG and video and things. Things that only I could ever possibly enjoy reading about. Because I'm the one entertained so extensively by it. [No, not obsessed...] Oh well. You don't have to read it if you don't want to. Just wait til I do another "prose" one, then you can make yourself look like an idiot again. Yes... [I don't vere into personal statements to other people out of nowhere. Its your imagination. Yes... I've never done it before. Ever... You're getting very sleepy...]

"Its fun to hate Americans."

I'm done.


1999/ cx13+080826.15 {Sun 19 dec 1999, 01:08:26.15 MST}

Bored am I. Neat looking, tongues are. Misalignment of mtndew cans on the mouth, annoying that is.

At 0800, I did awake, and three hour rehersal did occupy. Followed, a nap did, to mine much delight. Gernot and Nathan did get mailed; former for buztools ideas, latter for MPEG encoder quest. Back out again, I did go; for yet another performance. Around 2030, I did reappear. Evidence I did find: successfully, Brock did dial in to deepthought. How good that is. Things to say, I have none left of.

Sound as a Tennysonic Yoda, this does. The fault of the Gophers, it is. Or the fairies. (Happy I am not, but indeed are you. Mentioned them I did! Gah.)


1999/ cx12+065639.14 {Fri 17 dec 1999, 23:56:39.14 MST} [[8F15, 9F22] 8F16, 1F01]

Interesting couple of days, in that uninteresting sort of way.

Exported the final grades for Foster's classes on Friday. And then took that stupid econ final. The teacher was laughing at me. The test was comprised entirely of fill-in-the-blanks, of which there were about 40 of. He gave an option of either just taking it, or to be given a list of possible words. The problem was that if you took the latter option, he took 10% off your grade. I took that option because I had a 94% in there and I didnt really care. As it turned out I got all 90% on the final anyway. And he's probably right...I could've done it without the list of words. Oh well. Only one person in the class of 30 or so took it without the words. They got a 96%. Anyway, after that I went with Sara to go pick up one of my other sisters' friends from the aeroport. Got back around noon, went to sleep. Got up around 1600. Messed around with mpeg stuff for a while. Decided I didn't have anywhere near enough disk space or VM space to do a real more-than-a-minute-or-two stream using my methods of the time (using convert *.jpeg out.mpg).

Slept in nice and late today. After the normal post-wakeup-catchup, I started trying to find ways to optimize the jpeg to mpeg conversion. Imagemagick does it by decompressing all the jpegs into raw yuv files and then feeding them to mpeg2encode. After investigating that, I saw that mpeg2encode could also take PPMs. Converting them to ppms on disk would let me turn all the vm used by convert into equivelent amounts of disk. But thats still a lot of space. After more investigation and figuring out how to write the parameter files for the encoder, I decided the best course of action was to hack jpeg support into mpeg2encode. That would nearly eliminate all the temp space required (if I really wanted to get rid of temp space, I'd hack in movtar support; then I wouldn't even need to untar the jpegs, I could just feed it the data right from buz_rec). After the initial version, I went back and combined a few loops, which gained me a bit more speed and cleaned up the code a bit. I should generate a diff. (If you really want to see my code, see the read_jpeg() function in here. Believe me, I had no idea what I was doing...)

I forgot to mention for yesterday that I figured out how to work with decimation=1 (720x480). It produces two fields per jpeg file, but they're in the same file. If you view the file with xv or anything else, it only renders the first field. There's a small app in the buztools package that reinterlaces the fields into a single image and saves it as a ppm. I added some code in that thing to output jpeg instead of ppm, which is much more useful. So that got me producing full-size (for NTSC) streams at 720x480. Pretty neat.

I'm slowly getting it all working. I'm just not sure what people use their buz for. I woulda thought everyone was using theirs to encode mpeg streams, but if its this ridiculously complicated, I can't imagine it. Most processes that get used often are more streamlined than this, so I can only assume that other people have tried and failed at doing this. Oh well. Talk to me if you want to do it. I'm slowly piecing it all together. Perhaps I can get Gernot to include my hacked mpeg tools in the next buztools release. I think I still need some driver hacks too (in fact, I still have a manual offset on the y start in order to keep it from starting the encode too early in the video block).

Last night I also tried the buz in a win95 box. Oh gode. I thought the linux support was inadequate. I didn't find anything, including the MGI VideoWave that comes with it, that worked quite as expected. It still did strange things. I was hoping to use Adobe Premier, but all it does is GPF when you hit record. And when I did get video in it, it wouldn't let me encode with any decent codec. I wanted to encode with the MPEG4 codec, but it didnt let me. MPEG4 seems to compress really well (over twice as good as MPEG2), I'd like to try it out eventually. Anyway, the buz is far more functional in linux than in win95. But the support is quite fragmented and isn't very coherent. And there's no nice tools for encoding MPEG.

I've still got two diffs to put up: the one for buz_conv (output jpeg instead of ppm for decimation=1 frames) and the one for mpeg2encode (to take jpeg input). On the latter, I'd like to try optimize the encoder. (gprof data here) It currently encodes 74frames/min with 352x240 JPEG input and MPEG1 output. The biggest stream I've done is 5minutes, and it took just over two hours. My eventual goal here is to be able to encode 30min shows off the teli (gues which one ;)). Right now, that would take around 12hrs. That's quite suboptimal. Anyone good with optimizations please talk to me. The function on the top of the gprof list is motion.c::dist1(). It compares two blocks for differences, and that is nearly 52% of mpeg2encode's overall functionality.

Eventually I'd like to do what I mentioned before: add movtar support to mpeg2encode. That would kill the temp space needed half-again. The only things you'd need to store would be the actual movtar mjpeg data you recorded (6gigs/hr) and the final mpeg (600mb/hr). Currently you also need space for the untared jpegs (another 6gig/hr). Could use one of those userspace filesystems and mount the movtar instead, but I think it would be far faster just to add direct support in the encoder. In doing so, I'll probably take Gernot's lead and move movtar into a modular library. Because, you know, after I streamline the whole video reencoding process, I've still got the audio left. Which currently needs some roundabout procedures as well (converstion to 48khz if needed, converstion from wav to aiff, and then the mpeg encode). I'm not sure of the data sizes on audio, but that takes a fair amount of space as well. The needed conversion from wav to aiff doubles the temp space required. So adding movtar and wav support to the audio encoder may be in my future as well.

Sheesh. I didn't think getting the buz to be useful would be this difficult. And I can't help but think over and over that someone must have this stuff done elsewhere already. And its author is sitting there laughing at me as they read this... This is really distracting me from token ring. If my Olicom/Madge cards would hurry up and get here from London, I would be redistracted again.

Oh, brock and david dropped by tonight. Fiddled with his laptop for a bit. Loaned him a PCMCIA token ring card. Nothing exciting. Set up my extra phone line for them to dial into and use my speedchoice while they're away from NAU. Luckily I remembered all the parameters to set up a ppp server from my painful ISDN experience... Even tested it with a win95 client.

Okay, I'm tired of typing. And I don't feel like proofreading, so I guess make what you want of any nonconnected gibberish you find above.


1999/ cx10+053457.13 {Wed 15 dec 1999, 22:34:57.13 MST} [8F14, 9F21]

[Trying to find something to write about...]

Hail the Chickens! (Especially the blue ones!) Do not disrespect them. And definitly do not mention them on Ricki Lake...

How's your sight today?

Not a terribly interesting day. Quick did the audition for band (bleh...stupid etude...). Then went to the choir room and "helped janeal and sara study for bio". Yes. That's it. [Doh. I forgot to put "Uh, yeah." at the end of every bio answer as I'd planned. Oh well.] Then went to take the bio final. Far easier than he led on. This was followed by going back to the band room and standing around for entirely too long waiting to do the district honor band audition. Bleh. Finally just took a blank tape and went home. Slept. Yay. Sleep.

Decided to try and fix the kernel buz driver. A diff (with --ignore-all-space!) between buz-1.0 and the 2.3.28 buz driver was over 3klines. I read it all anyway. Alan basically changed lots of variable names, but really didn't make that many changes. There was one that killed it though. Removing two lines from the code made the kernel one work. And for some reason that got overlay working. So now I have two xawtv's open. Thats just one more of things to add to my list of things-that-are-terribly-amusing-only-if-you-see-them-live. I think the buz has better/richer color than the bt848. But maybe I'm imagining things. {Me? Delusional? Naw.}

I've gotten no real answers for my quest for a bigphysarea patch for 2.3. But since I've yet to find a need for uncompressed image capture from the buz, There's lots of things I want to do with that driver. It's got some problems, yes. I'd also like to try to get the kernel version using alloc_bootmem() when its compiled into the kernel in order to allocate those large physical blocks needed for uncompressed capture (as hinted at by the only halfway informative message I did get, one from Pauline). Right now, there's no way to do it after boottime. Its very much the same difficulty as ISA DMA, just not quite as bad.

Anyway, had a SoH rehersal from 1930 to 2045 or so. And then came home to try and record the honor band audition tape. Cursed audio tapes. Took 30min to 1) find a deck that actually had a functional record feature and 2) figure out how to use it. When I finally got all that worked out, I was rather frustrated and screwed up playing it several times. Gah. Kept the third try. Not perfect. But oh well. I should've done it digitally first so I didn't have to waste time rewinding the tape to the exact right spot everytime. Oh well. I haven't particularly done anything useful since. That includes this.

Noooo! You can't catch me!

Brock, since I found the screwdriver, you can bring your speaker back. I might actually fix it this time.

Tomorrow's the last day of school this year. Yay. All I have to do is help Foster change classrooms and take an econ final (thats laughable; in fact, I think I will: Haha.). Oh, and turn in my bio book (found it!) and give Adams that tape. I think thats it...hope so. Because that's all I'm doing.


1999/ cx0f+054429.12 {Tue 14 dec 1999, 22:44:29.12 MST} [8F13, 9F20]

Bläh. (A superior spelling, pointed out by Gernot.)

The most disturbing show on television is definitly not Roseanne. We've already decided that it was Ricki Lake. Unless we're talking ALL television. Then you must include any of the very disturbing programmes on Telemundo. (VFP!)

Slept through first hour this morning. No reason. I wasn't particularly tired. I just didn't want to get up. Oh well. Went to second hour though. I think I was the only one. Except for the people going crazy over their grades. Which are all nicely fixed. Calm down everyone. Very good. Helped grade course assesments and move more of her stuff out of the office. Nothing terribly interesting. Review day in bio. Final tomorrow. Finished the Othello movie in compandlit. No more grades in that class. So I get to keep my 86.1%. Yay. I didn't fail.

I think they should've gotten rid of the golf channel before they got rid of independent film. For obvious reason. I'm still trying to believe that there actually IS a golf channel. Frankly, its more boring than CSPAN and CSPAN2 combined.

I didn't get anything done tonight, other than to discover that although the buz can play back what it records, the jpegs produced are not valid. So I guess I'm going to have to read the Zoran databooks afterall. Bleh.

Two days left of shool this year. Yay. Throat is sore. Did one of you get me sick again? Oh, josh looks like he's sick. Lets blame it on him.


1999/ cx0e+071649.11 {Tue 14 dec 1999, 00:16:49.11 MST} [8F12, 9F19]

Hohum.

Mind-wrenchingly boring day at school. Arg. Came home and slept, of course. Fiddled with mpeg audio. By diffing the stock Berekely encoder I was using (produced fuz) to the one thats distributed with bttvgrab, I noticed that 1) the bttvgrab one still has the endian bug and 2) that the Berkeley one only takes AIFF, not WAV. Oops. No wonder it was producing garbage. Anyway, after running the sample through sox to convert to aiff, it encoded just fine. And out of the kindness of my heart (ahem), I've written instructions for encoding MPEG movies for the rest of the world. Since no one else aparently cares but me. You'd think I'd start recording random things right after I figured that out, but no. I need to plug in another disk before that happens. [I also want to install RealProducer. Streaming webcam and 24x7 Simpsons channel in RealAudio/Video, anyone?]

Not much else worth mentioning. Relying on the guidence office to get the rest of my CU stuff out before the weeks out (can't have this semester on the transcript...long story). We'll see if they take this opportunity to hurt me again. They're opprotunists you know. Damn Guidance.

I'll mention that I've yet to get cards from Madge or Olicom yet. But Olicom did contact me today. He'd been out of town and just got back (that seems to be a common story...). Anyway, hope it all works out soon, so my holiday break isn't completely wasted on mpeg, intel token ring, and reading compandlit crap. Oh, I'm sure there's lots of other things I Should-Be-Doing too. Gah. I hate life.

Today's suck has got to be one of the funiest things since slashdork. "What? You can't run fortune yourself?"

Guess I'll be going to bed now. Nothing better to do. Except eat. Maybe I shall eat something... but what?


1999/ cx0d+050211.10 {Sun 12 dec 1999, 22:02:11.10 MST} [7F09, AABF20, 7F01]

Lalala.

I didn't really have any time to get anything useful done today. Well, not my kind of useful. Slept til noon again. Looked at mail. Someone wanting to use a Madge Smart 4/16 PCI Ringnode with tms380tr (this actually works just fine...mostly...as long as you're okay with a MAC address of zeroes). Started telling him all the places in the code that needed work and how to do it. Halfway through I realized 1) I should just do it myself and release a patch, as well as, 2) I needed to get ready for a Spirit of Hope rehersal. So I Postponed that message, and went to take a shower. And the rehersal. Got home around 1600. Quickly wrote an essay for the CU application. I talked about Linux. And what the hell I've been doing for the past seven years (its my "principle extracurricular activity during [my] high school years" hehe). I liked the way I wrote it. Long, descriptive sentences, even rhythm. And I made myself sound like some anticapitalist radical. Goody. ["Everyone knows that you Will Take Over the World, so does it really matter how?" -- Mandie] Anyway, I then decided I'd just do the application online. That took another hour. Watched Simpsons. Talked with my dad about stuff for a while. Watched more Simpsons. Finished writing the letter describing the MAC-faking hack for Madge cards. Wrote this. Amazing day, no?

Here's an interesting link that a teacher sent me a few weeks ago. Well, I found it amusing. Oh, and heres a useful site when attempting to figure out the whole religion-cult difference...

There was a request on the v4l list from a manufacturer wanted linux drivers written. But I refrained from replying. I don't have the time, and I've got too many other projects. I really wanted to do it too. It was video stuff, and video digitization stuff is fun. Oh well. I have enough things to do. Yes. Thats my excuse. Bah. Damn rationality.


1999/ cx0c+084119.09 {Sun 12 dec 1999, 01:41:19.09 MST}

I didn't miss as much as it looks like. It was only one night. I swear. You'll be happy to know that I'm not going to write about glass again. Because I know you were rivetted by that discussion.

Yesterday wasn't much. Not like any day is much. Finished up decoding the intel dumps during first hour. Made the final decision that it is indeed Natsemi MICROWIRE protocol, but its got two stray bits prior to the opcode+address. Which helps little. Dunno how it all fits together yet. Terribly amusing second hour, only because being amused by non-amusing things is amusing. Last hour was quite pointless (other than me exchanging more words with the teacher than I have in the past two months combined -- remember, I'm a mute in compandlit). Also included another cursed assembly. Worthless things. I sat there dazed. But I was there. I refused to let myself ditch. Oh, but why? Please do tell me why! Anyway, came home. Wandered around. Went to bed late. Got up and fiddled with intel some more. Got it to the point where it stopped listening to me completely. Gave up shortly thereafter (after even the DOS app stopped seeing it). [But I did get it to write 0x4242 to address 0x02. That's important. The problem is that I accidently erased it again shortly after that.] Went to bed surprisingly early. Slept in nicely late (around noon today).

Pretended I was reading mail, but was mostly deleting it instead (oh, you didn't read that...). Wandered around bank websites for a while. (I'm not saying why. Long, ridiculous, frightening story. Ask me if you really want to.) Then noticed there was a parcel for me. With a buz in it. Yay. And eleven hours later, I have it fully working. Mostly.

Wanted to try windows first. Installed the software, installed the card, and rebooted again. SCSI bios comes up just fine (ugly colors). Win didnt see it. Blah. After twiddling things for several minutes, I gave up. Tried linux. Tried the 2.3.x driver that Alan put it. Broken. Reread some mail from the linux-buz list. Alan's driver is broken. Booted to 2.2.14pre12. Compiled the buz-1.0 driver. Probes and insmods okay. Start X. Instafreeze. Reboot into 2.3.28. Sit through fsck (this is actually happening simultaenously to my wandering around bank's websites). Port buz-1.0 driver to 2.3.28. All good. Video is screwy, but is indeed present, when you do a buz_rec. For one thing, its recording 720x240. Which is just wacky. It also has a pink line across the bottom. The weird width is what would have me boggling up until a few hours ago. When I finally figured out a fix. A fix that is now boggling me instead of the problem. After that, I fixed the pink line (starting the picture too late in the cycle). What I've yet to figure out is how to reencode the mjpeg as mpeg. Actually, I know how to do that. The problem is the sound. I've yet to be able to encode the sound into something I can run through mplex and get an MPEG2 System Stream with. All I can get is fuzz (using Berkeley encode). [And no, don't bother suggesting just using an mp3 encoder. It doesn't like the input format.] Other than that, I have all the facilities to make 320x240x24bit@29.97FrPS MPEG2 movies. Which look quite good. I am very impressed with it. It could stand to be slightly higher quality, but its good enough (less funky artifacts than VHS, and thats a good thing). I had a five minute (18000field) clip of Jerry Springer for a while. It was entertaining. The great thing about the buz is that you can immediatly play back through the hardware whatever you just recorded. Since I have the buz out connected to the composite in of my bttv, its still in a window, and at full frame rate (something xanim cant come close to). [I used Springer because it was the best thing on at the time for testing full frame rate -- lots of idiots bouncing around. I deleted it. Don't worry.]

The only complaint I have about the tools themselves so far is that they always assume that the buz is /dev/video0. But its video1 in my box. I think thats a sign you have too many video interfaces. Oh, I nearly forgot. The patch for buz-1.0 to get it to work under 2.3.x and correctly with NTSC is here. Happy hacking.

Oh, josh's been worked on mfaim (aka naim-0.9.5-recon3-mid3-jbmX) the last few days. Its coming along nicely, I think. The first fix was last night, which does a major job on getting rid of even more errors (adding my one-liner to update the lasttx timestamp on rx as well as tx -- it still needs help, but tat kills most of them). He's working on Major UI improvements now. Should be interesting. (The status of this, straight from the-unabomber-with-rights.)

All I can say is that that patch (that only touches 14lines!) took entirely too long. And kept me from getting anything useful done today (like college stuff, which I've been putting off for too many months now to begin with, and I REALLY need to be done with by Monday). GAH! Erg. GAH.

A random Very Frightening Person from telmundo. I should've gotten an mpeg of that. He was dancing around in a very homer-giddy-dance fashion.


1999/ cx0a+063509.08 {Thu 9 dec 1999, 23:35:09.08 MST} [8F10, 9F17]

I have a really bizzare cramp in the side of my right (left?) knee. Weird. Stop that. Grr...

Brock, very well then; it gave me something to mock on a fairly boresom evening. I have no idea why you're discussing birthdays. They're rather irrelevent. In any case, mine is nothing remarkable. I will say that if written in standard American (non-y2k compliant) shorthand notation, it contains only even numbers. All but the second of which is a power of two (but its a sum of the first and the very last digit of the entire date, so its all good). [And do you symetrically start and end your sentences with 'hm' just for fun or is there some purpose?] {Hm. I suppose I could just talk to brock on AIM. But that wouldn't be anywhere near as entertaining. Besides, the only time I've gotten to talk to him on that was rather too early this morning when by chance he caught me at 0615. I was checking to make sure that the 'no handler available' messages that naim gave out during the night did not stay. Hm.}

I will make one comment on the Glass article. And that is to point out the shear importance of the 'Antique Windowpanes' bit. It has nothing to do with antiquity, it has to do with thickness, materials, and production. There are types of modern glass that do indeed have a real thinkness growth problem; one of the most common being automotive Safety Glass (tm). The material used between the outer two layers of glass in the Safety Glass setup does not stay continuous throughout its lifetime. Gravity is pulling that crud down to the bottom, microfracturing the glass near the bottom. Consequently, Safety Glass has a limited lifetime. [Anyone who lives in hot place knows this for other reasons. When the safety crud in the center expands disproportionatly, the glass goes boom. (Its more poof-like, actually. Either way, it scares the hell out of you if you're sitting next to it.)] As far as real, hard glass that was manufactured perfectly even and over time reshaped, I have heard cases of it. However, in every case I've heard, there are various ways to explain the results, besides saying that the glass reflowed somehow. Though I think it is important to think about the definition of a solid that they reference: "A solid is a rigid material; it does not flow when it is subjected to moderate forces...". Is gravity on a thick, heavily, unsupported piece of glass across a fifty year span considered to be a 'moderate force'? I think not. An important possible case for this is telescope glass. Back early this century, they reached the limit of practical refractor size, induced by the limitations of glass itself. Starting at certain sizes, they noticed firstly that it was tremendously difficult to manufactur a piece of glass of the required diameter, with the correct refractive curve properties. Secondly, once they did do the impossible and get a piece of glass like that, it would quickly 'grow' distortions that didn't appear originally in the glass. The question is whether those can be attributed to mere microfractures, or if it truely was a reflowing of the inside of the glass. (I'm cautiously leaving out the manufacturing problems that could occur and not show up until after a few months of upright positioning.) [The refractor telescope size limitation was really a big problem. Considering the quality of the glass at the time to begin with, they needed all the light they could get. Even though you can get decent image quality these days with a few inch diameter refractor, the best images come from designs that use the least glass surface area as possible, particularly splitting up the surface area across several, seperate sections of material, to avoid discontinuity as much as possible -- the smaller the sections, the less possibility there is for disortion (except it brings up the larger problem of how to combine the images, which you then need another mirror for -- see Schmidt tubes and Schmidt-Cassegrain corrected scopes). Examples of course are Palomar and Keck.] I still have no real answer. But if you're dealing with a several-ton lens, its going to have problems (that is, if you manage to make it to begin with!). That was one hell of a single comment.

I have yet to discuss today. Not that its particularly worth discussing anyhow. I'm sure the paragraph about glass will have been far more interesting than whatever I am about to write (I don't know yet; I'm writing this to stall while I think about what I'm going to write about after I write this; yes.). Listened to Foster and Guidance tell me that the plan we worked out several months ago for killing Humanities isn't going to work out after all. So now I get an I and/or F on my transcript. Yay. I didn't give a damn anyway. High school is a laughable concept. Particularly Guidance. The most inappropriatly named organizatioon of all time (except for perhaps The Government, but thats wholly unrelated). They do far more limiting than guiding. Damn them and their inflexible software (actually, I do believe that its perfectly flexible; its user incompetence that keeps it from being flexible). I digress. As I said, I'm not one into caring right now. Especially about school. Blah. Anyway, did more genetics stuff, and I think that econ guy babbled for an hour or so too. Lalala.

Had a concert to play at in the evening. Nothing remarkable.

Yay. I have good ideas.

This new Channel 74 (discoveryhealth) that Schmidt pointed out is really rather entertaining. Some funky surgeries they have. Neat biotech shows too.

Lalalala. Oh. I said that.


1999/ cx09+061315.07 {Wed 8 dec 1999, 23:13:15.07 MST} [8F09, 9F16]

Not as much school as normal today. Early release or somesuch. Nothing fanstastically exciting in any case. Read mail and slept after that. Went to the strings/intermediateband concert. Interesting. Bagpipes are neat (a statement long overdue...Have I really never mentioned bagpipes here before? wow).

Finally got around to implementing my Intel theories. Worked quite well. Reading the MAC address and everything. That is, until I got too cocky, started to try reading the config data (without assistance from my dumps), and accidently (ahem) rewrote the eeprom. So now that its completely zeroed out, I have no MAC address anymore. Though I seem to be able to rewrite the rest of it just by rerunning tokenset.exe under dosemu. At least its not completely irreparable. I need to figure out how to write to it anyway, so I can fix my tokenset (a new version here -- this is read only...should read your MAC address and quit; it also should not zero out your eeprom; but I can't guarentee that...; pay special attention to the new functions: setlines, readbit, readword, write_10bit, etc...its interesting). Sigh. Something to do tomorrow.

Aparently there was some mixup at Madge. Cards should be coming soon now (again).

One short school day. One short concert. One erased rom. And one short log. That's all I've gotten done today. How about you? [Grumble...erasing that rom is probably one of the supidest things I've done in at least two months...]


1999/ cx08+061349.06 {Tue 7 dec 1999, 23:13:49.06 MST} [8F08, 9F15]

Poor Cox...I beat up on them so much yesterday that they decided to take away my channel 79. Pout.

Nothing remarkable today (except above). Went the choir concert / drama one-act. The first was impressive (best Gregorian timbre I've ever heard in a non-professional group -- including Jeff. Yay Jeff. Haha. And Tara. Lets all laugh at Tara.). The second was entertaining; very entertaining.

Came home and did various small tediums that are definitly not worth mentioning. Unfortunatly, I still have more to do...

Quickly read the prologue to Invisible Man in second hour. Its good. Very amusing. I hope it stays that way. Here:

...I am neither dead nor in a state of suspended animation...I am in a state of hibernation. My hole is warm and full of light. Yes, full of light. I doubt if there is a brighter spot in all New York than this hole of mine, and I do not exclude Broadway. Or the Empire State Building on a photographer's dream night. But that is taking advantage of you. Those two spots are among the darkest of our whole civilization--pardon me, our whole culture (an important distinction, I've heard)--which might sound like a hoax, or a contradiction, but that (by contradiction, I mean) is how the world moves: Not like an arrow, but a boomerang. (Beward of those who speak of a the spiral of history; they are preparing a boomerang. Keep a steel helmet handy.) I know; I have been boomeranged across my head so much that I now can see the darkness of lightness.

Irresponsibility is part of my invisibility... Responsibility rests upon recognition, and recognition is a form of agreement. Take the man whom I almost killed: Who was responsible for that near murder--I? I don't think so, and I refuse it. I won't buy it. You can't give it to me. He bumped into me, he insulted me. Shouldn't he, for his own personal safety, have recognized my hysteria...?

That last line is most amusing. Okay, I'm done.


1999/ cx07+061223.05 {Mon 6 dec 1999, 23:12:23.05 MST} [8F07, 9F14]

Heh heh..mules...

Bitterly dreadful day. [Without any corn. I don't like corn. Stop asking me advice on the Underworld, damnit.] Went to second hour again today. (I've got to stop doing that.) Interesting, though quite useless, discussion in bio (see first paragraph). Compandlit was surprisingly worthless as well. She passed out Heart of Darkness (Conrad) and Invisible Man (Ellison). [Book numbers 43 and 42, respectively. I thought that was neat.] Started reading the first few pages of Darkness. About ten minutes for four pages. Slow, but incredible imagery. Too bad I have to read Invisible first. Bah. Anyway, slept all afternoon.

I have to admit to not doing anything all evening. Except for an hour or so that I spent adding a few long-needed features to my TV/radio (remember that mediocris is my TV...written in C...no microcontroller firmware involved...though that would be far more amusing...wonder what chip my Samsung uses...). Anyway, I added on-screen feedback for radio as well as adding a PCM mixer module to control MP3 playback volume with the remote. Which means I quickly learned how to use the OSS ioctl's. Quite easy since it has a static capabilities model (as opposed to ALSA, which takes a lot of code to implement the same thing you can do in OSS in five lines). I was only adjusting one channel too. The only majorly odd thing I saw was that the values read back from the driver are really messed up and are not in the 0-100 range that the API says. No matter what they are, you must write values only between 0 and 100, or you'll get wacky modulus artifacts and a very nonlinear channel.

Hey Cox. Did you think no would notice the extra channel? Why they plugged a spectrum analyser into their cable system only to reroute it across the entire west valley is beyond me. But, they're Cox. They're allowed to be idiots. Cough. Ooo! Its doing a recalibration. Thats neat looking. I should get up and take another snapshot. But I'm lazy. Use your imagination.

Brock! It seems someone has been trained by too many science teachers and not enough English ones! Or even French ones! Kilo- has nothing to do with your SI "metric" measures (always found "metric measure" to be a bit reduntant...). Its a thousand. Its always been a thousand. Long before someone decided to formalize measure. I digress. Besides, it has nothing to do with measure. It has to do with expansion and accent. Perhaps I confuse the issue by not seperating ordinals from units like The Rest of The World. "2kft", for example, can be "two-kay Feet" or "two Kay-Feet". One attaches the kilo abbreviation to the ordinal ("2000 feet"), the other to the measure ("2 thousand-feet"). Both are technically right, though one alludes to what you were thinking more than the other.

In any case, I still have bio stuff to do. Only nine days left of school til vacation. Yay.

I have to admit to Cox that this new Channel 79 is probably the most entertaining new channel yet. It's certainly less predictable than any of the others! Come on 25tick line! You can do it! There ya go... almost there... awww...maybe next sweep.


1999/ cx06+051636.04 {Sun 5 dec 1999, 22:16:36.04 MST} [9F22, 1F01, AABF14, 7G13]

I'm back. No government agency snatched me (though they probably have due cause). No mountains got me either (though one tried).

Got up usual time on Friday. Well, I lie. Actually, I got up at 0650, took ten minutes to pack, and I left. Well, sat in the van. Everyone else decided they'd join me twenty minutes past. But we left at 0721, just after the crowds dispursed on 79th (for school). Took the long drive across Peoria, Phoenix, and part of Mesa/Scotsdale to get on US60. That took an hour. Another hour to Payson. Gas and Wal-mart (don't ask) there. Nother few hours to Show Low, ate a Subway (gah!), turned off to US260 to Eager, turned south on US191. Eventually ended up here (a place called Hannagan Meadow, aka As Close To New Mexico as You Can Get Without Actually Being Near New Mexico). We were about the only ones there. No phones (including cell!), no tele, barely electricity, and complete with little furry creatures running about. Oh, perhaps its mentionable that the exact location where we were staying is roughly 9.15kft off the water. Its just off the east ledge of the Mogollon Rim (the Rim peaks in this area at around 9.4kft, which we came very close to on Saturday). When we arrived, it was 27degF and snowing (well, trying somewhat futily to snow). By the time we went to bed, it was clear, with temps just under 9degF. It was very nice. I'm not kidding.

Up sometime before 0900 on Saturday. Drove up to Bear Creek (on FR567 then FR24). Thats quite a ride. It goes all the way up to just about the top of the Rim, to come right down into this quite tight valley with the spledid river (is a bit large for a creek) situated right at the bottom of the west side of the valley. Very secluded. Very quiet. Very nice. Wandered around a bit down there for a while, eventually drove back up closer to what civilization there is in the Meadow, hunted out a random tree in the forest to kill, strapped it on the van (very intersting process, that is), and went back to the cabin. Went for dinner at the restraunt nearby (the only thing nearby, and the only people nearby). Went back to the cabin and I went to bed (too much mtn climbing for me). A few of the other people in the room had a different idea. In fact one of them woke me up for the sole purpose of asking me how to find the zeros of a fifth degree polynomial (do you get asked stupid questions while you're trying to sleep?). Decided the rational zero test would be the easiest to explain. Quickly did that. Proved myself on a ti83 that was laying around (though I did have my 89 closeby, which would have made it much easier had I rememberd it was there). Eventually got to sleep.

Woke up today, loaded up the van, and left. Went through Springerville this time, since that's the way we were suppose to come up (which we were suppose to know without even being told). 191 to 60 to Show Low (lunch) to 87 to Shea to Cactus to home. That takes the entirety of seven and a half hours (whats terrible is that the Meadow is nearly horizontally in line with Phoenix on the map, yet it takes so ever long to get there because of the immensity of the mountains in the way -- of course, its also several thousand feet higher than Phx). Anyway, I wasn't able to make it to the Sprit of Hope rehersal today. We didn't get home to long after that was over; around 1730, plus unloading time, etc. Ugh. Enjoyable weekend, I'd say.

From Payson to Shea, I was working on the Intel protocol. I had a dozen pages of 6point type containing inb/outb dumps that my hacked dosemu generated from running the Intel app. I figured it out, I think. I haven't gotten to test my theories yet, but everything looks plausible. It's a two-wire bus protocol, the rightmost two bits of anything access to 0xa23 representing a clock (bit 2) and a data (first bit). The upper nibble also means something (0xb vs 0xa vs 0x8), but I'm not sure. The important parts of the dump is the double-reads. It reads it twice for slow machines where the data line doesn't get asserted by the eeprom right away. For fast machines, it looks dumb because it reads the same value. But for me, it was a big help. If you interpret all the double-read 0xb0's as zeros and the double-read 0xb1's as ones, you can get the MAC address and configuration data out of it. (And you may be thinking...that's just i2c! Well, no. Hardware-wise yes, but it uses 10bit MADs instead of just 4bit ones (or 6bit extended). Not quite i2c. But close.)

Spent all evening catching up on the world. Also started The Guide. Its nowhere near complete yet, but its got some basic rudimentary words down. So, any words and acronyms you want definitions for that I've used in past logs, do ask and I'll add them in.

It's now 0100, and I'm still not in bed. And I haven't slept well in several nights....


1999/ cx03+060635.03 {Thu 2 dec 1999, 23:06:35.03 MST}

Hum.

First hour boring, second hour boring. I don't even remember third hour. Last hour was mostly trivial (except for the 'pie-stabbing' fun towards the end...that was just odd).

Did work with tms380tr some more again (I usually only average a half-hour a night...how sad). Turns out that DMA isn't the only thing that isn't working. I got PDMA all coded, compiling cleanly, and then I ran it. Doesn't work. Why? Because the PDMA interrupt is never generated. It still fails at the same point. Now, however, SIFACL has SWHDL (the PDMA interrupt-pending flag) set when it dies. Which means its timing out waiting for the PDMA, which hasn't even been told that its suppose to be doing anything. I'm guessing IRQs aren't working for the same reason DMA isn't working: that cursed glue chip. So, I've had to resume my studies of that damn thing again. Sigh. But now josh is interested. Hah. [I was soo hoping to have PDMA done and working tonight too. Oh well.]

It's actually rather cool in here. I suppose I could shut one of the fans off now. That'll be a first this season. Hmm... I still find it rather disturbing that our weather is listed as "N/A". Does that mean we don't exist? That's just what I need. Another existance complex. [I think the term "N/R" would have been more appropriate. But I'm not The Weather Channel.]

Okay, a few stupid links and I'm out of here. Firstly, the idiot of the week. Secondly, an amusing penguin construction. There. Thats it.

I changed my mind. Cows kill salmon.


1999/ cx02+063946.02 {Wed 1 dec 1999, 23:39:46.02 MST} [8F04, 9F11]

I think I'll add myself to CREDITS in my next Linus-bound patch. I think I deserve it. I've certainly done more than many of the people who are in ther. And if I put my shipping address in there, maybe people will send me stuff... yes...

Those two Simpsons are both fairly good ones. The first one is the better of the two, though I missed it. Though 9F11 has one of the best all time Lisa quotes: "I AM the LIZARD QUEEN!".

Brock now has a couch. But I suppose I'll let him talk about that.

Anyway, yet another boring day (this week has been most disappointing...not sure why...). Had to do Foster work all second hour. Adams kicked me out of the band room (they could have just taken me with them...). I didn't fall asleep in bio today. That was amazing. Ran an electrophoresis gel instead (with DNA that was over a year old and aparently degraded quite badly...). That was...entertaining. Did fall asleep in econ though. Bore. Slept for a rather extended time after school. No one woke me up like they usually do. That's why I missed the 1830 Simpsons. Its never my fault. I have no issues. I am perfect.

Everyone hates this color. Except one person. Though she's still waiting on the pink flying things. Hah. Like I'd ever put graphics in my log!

"'the rest of the world' stands for the voices in my head. yes. that's it." -- For once, a quote about voices that isn't mine.

I suppose I should talk about the other half of the day. Found some MAJOR tms380tr stuff. Firstly, that the only kmalloc() in the entire driver was not getting called in correct order. Or rather, the ISA probe routine (which checks to make sure that what kmalloc allocated is under 16mb) was getting called BEFORE the kmalloc its suppose to be checking on! Moving the check out of the probe routine and into the scope above it, where the kmalloc is done fixed my entire problem (for that part anyway). That also explains why it started giving me bad page faults last night -- I was tinkering with dev->priv BEFORE dev->priv was allocated! The only reason the earlier sub-16mb check wasnt failing was because it never dereferenced dev->priv. My "dev->priv->usepdma = 1" line did derefence it and crashed me. So now all thats fixed. I then encountered several more problems. Firstly, a bug I've known about for a while but never got around to fixing is now fixed. On failed probes, I/O addresses, IRQs, and DMAs would never be free'd although they were request_region'd, request_irq'd, etc in the probe routines. That makes /proc/{ioports,interrupts,dma} all segfault cat when you try to look at them. It also makes the next time you insert the driver unable to properly probe again, meaning you have to reboot. I've fixed that now, any it can happily fail as many times as you want it to. Also took out some of my debugging #if 0's that were causing problems. This pushes my Intel cards all the way to tms380tr_init_adapter(), where it dies on a DMA timeout. I'm guessing I need to do some tricks with that MB620228 chip again. (Oh, I also had to comment out the POSREG stuff, as that seems rather specific to the SysKonnect ISA card.) init_adapter() is the first place where it does DMA, so that's a fitting place to fail I suppose (though rather annoying). I don't know what I'm going to do about it. I was hoping to run the diag utility for dos under dosemu, though since it requires DMA and dosemu doesn't emulate DMA (yet), that's out of the picture. It may be that the only practical support for the Intel cards is in PDMA mode. Slow, but functional. And quite taxing on the CPU. But functional. Maybe someone cares enough to dig through the dos code? I don't. I'd be happy with PDMA support for the things. They're becoming a bit of a pain, I do say.

Oh, I did a bio study guide too. Be proud. I did homework.

Besides saying that its unseasonably warm in this corner, I'm done.


1999/ cx01+070510.01 {Wed 1 dec 1999, 00:05:10.01 MST} [8F03, 9F10]

It seems like only four weeks ago that it was Octobre...oh, wait...

Yesterday was much less exciting than I described it as. Yes, I did indeed find the screwdriver, however, the entire reason I was looking for it departed over a day before. It was a boring day. Trust me on that one. (If you complain, you're going to get the Vortex!)

Today was equalling in monotony I suppose. Had band pictures first hour and they splurged into second hour rather rapidly. Not that it matters. Finished up the bio study guide after that and had to go work with Foster for a bit. (Figured out why nothing was sorting properly. When I put the new mobo in, I set the date, but not the year. All new grades got entered as 1998. Oops.) Slept again in bio. I think he's starting to repeat himself. I swear that when I woke up, he was at the same spot in the lecture as he was yesterday when I woke up. But possibly I was just delirious. Managed to avoid feeling completely unprepared in compandlit. Nothing much there. Surprisingly little arguing to listen to, however (ie, there was little amusement for the likes of myself).

Came home to find that the modem stayed up all day today. Lets hope it continues doing that. All that manual resetting was really bothersome.

Was getting bored and ready to fall back asleep when I decided to tinker with tms380tr some. There's lots of massively broken stuff in the ISA code. The module options (io=, irq=, etc) are completely unfunctional, the kmalloc(GFP_DMA) is not working correctly. Boggle. It started breaking, I had to reboot. I started implementing pdma. Something went wrong. Its now producing bad page faults at init time. I'm not sure whats going on there. On a slightly interesting note; it appears that the config chip on the Intel cards must have the initialization run on them after every reboot. So, part of tokenset will end up in tms380tr, and we'll have to have a special probe for it. But at least it will be supported.

I then decided to boot up my laptop (pileus) under linux, something I havent done in probably a month (I really need a wireless system thats supported by linux). [Oh, while I was at a computer store in Prescott last week (don't ask), I found a rather knowledgable Apple guy. Those AirPort(?) adapters for iBooks are NOT PCMCIA like I hoped they were. They're proprietary interface. Shame too. They're only a 100$/card (compared to 300-350$/card for IEEE802.11 PCMCIA cards). There's no getting around the price. If I want them, I'm just going to have to pay for them. Sigh.]

Anyway, back on pileus. Updated enlightenment and Eterm to cvs. Doesn't crash as often now, much more usable. The theme I was using crashes E 0.16.3. So I had to get a new one. Oh well.

Well, I'm done. No more screwdrivers to find.


Comments always welcome.
Adam Fritzler (midendian)
Last modified: Sat Dec 25 10:03:12 UTC 1999
(for once, you can count on that time being more than mostly accurate. yes...i finally figured out how to work ntp... be proud...)
Introduction and Index