Archived News -

Increasing vision is increasingly expensive

6/29/2003 - I have updated the known issues for Parrises Squares.

I have changed my pages so that they use Server Side Includes for their headers and footers. This makes maintaining my pages even easier. As always, if no one notices a problem, it's not broken, so let me know if you see any problems.

I have switched to using Apache on my personal computer because Internet Information Services doesn't play nice with my Server Side Includes anymore.

Notice how each page turns off its own link in the Site Directory? I now do that through Server Side Includes instead of Cascading Style Sheets. This means that my website once again looks good in text-based browsers.

6/24/2003 - I got C++ syntax highlighting working in nano. Maybe I'll put up my .nanorc file.

6/15/2003 - Parrises Squares is now available. Enjoy.

6/14/2003 - Finals are over, though my summer research is just beginning. I've added a new page, the Culture page, which contains an essay by Iain M. Banks.

Eleven books are sitting on top of my left monitor, waiting for me to review them. Sigh.

6/11/2003 - Another day, another update. I discovered that when I was compiling patch, it actually wouldn't work at all. I've figured out why, and I've compiled a working patch 2.5.9.

6/10/2003 - I've updated the MinGW Distribution again. I've upgraded patch 2.5 to patch 2.5.4. I've also hacked grep 2.5.1 again; now, --color works, recursive directory traversal works, the color is green, and you can pipe colored output to another program.

6/5/2003 - I've updated my MinGW Distribution. It now includes grep 2.5.1, which I have hacked so that --color=always works in Windows. Whee.

6/2/2003 - Today is my birthday, an Avogadro Day. I'm 20 years old, though I sure don't feel like it. This is the third birthday of mine that has passed since I began work on my "new" website, which is in fact quite old and increasingly crufty despite my attempts at housekeeping. It would be the fourth, but I actually started the Great (First?) Reorganization on June 5, 2000 and not a few days earlier.

I finished a novel a while ago, Altered Carbon by Richard K. Morgan. Today I blasted through Ender's Game by Orson Scott Card. I'll try to review them in a timely manner, but finals week is upon me.

5/31/2003 - I have removed the counters on my pages, since Caltech Information Technology Services no longer hosts my site.

I have added a C++ page.

5/30/2003 - I've finally managed to compile MinGW gcc 3.3. This will allow me to work on a C++ page.

I have updated the Links page, adding several links and giving icons to several more links.

5/26/2003 - I put my nice new stars on the Anime/SF Reviews but haven't had time to revise that page yet.

5/23/2003 - My 404 page now validates as XHTML 1.1 and CSS 2.

5/22/2003 - Added several quotations to the Collection.

5/21/2003 - All of the various downloads I have are now hosted on the same machine as the web site. This simplifies my life considerably.

Blah blah, I really mean to work on stuff, blah blah. Please be patient. MinGW gcc 3.3 is still not out yet either.

5/19/2003 - Big things are happening to the site. Instead of hosting it on the computers of Caltech Information Technology Services, I'm hosting it on my own machine (the old Dell PIII-600 I occasionally mention). Here's what's going on:

I will try to stick with calling my web site "" until I graduate. At that time, it will become "", though I'll probably start referring to them interchangeably. will remain working until I graduate, no matter what I call my web site.

The idea is that this move will create no visible changes. The De Novo pages change themselves depending on how you access them; that's intentional. I need to remember to move my downloads soon.

As usual, contact me if anything has broken.

5/15/2003 - I don't usually review the movies I watch. This is because I watch a lot of movies, and I know that I can't let myself be sucked into reviewing every single one of them. Furthermore, I don't feel that I need to encourage people to watch movies in the same way that I need to encourage them to watch Full Metal Panic or read A Deepness In The Sky. You've probably seen Terminator 2: Judgment Day, or Saving Private Ryan, or Sneakers, or Short Circuit. If you haven't, shame on you. Unfortunately, I don't have the time to make sure that you've seen all of these excellent films. I probably should have mentioned something about The Ring, so I'll take a little time now. The Ring is the scariest movie I've ever seen. It's just that good. I'm not easily scared by movies, so when I say that The Ring is insanely scary, that means something. You should see it. I don't ordinarily go for horror, but The Ring is certainly worth your time.

Anyways, let's get back to the reason that I'm talking about movies in the first place, the question that drives us. The Matrix Reloaded. You will see this movie. It's that simple. This is the day that I will remember as the real beginning of the twenty-first century. It serves as a simple test. If someone properly appreciates The Matrix Reloaded, then they might be worth listening to. If not, you can lump them in with the creationists. This is the best movie that I've ever seen. I used to say that about Terminator 2, and then about The Matrix, but rapid, continual change has overtaken us.

In the first place, The Matrix Reloaded is pretty. It looks better than the first film, which already redefined style. In the second place, its action is spectacular, and that's always nice. Those aren't the reasons why I say that this is the best film ever made. Lesser minds will see the special effects and the action and they won't see any deeper. To them, all the talking in the movie (and there's a lot of it, but not nearly enough) will be just a breather from the action. They will be wrong. The Matrix Reloaded made me think. The ideas in it were moving so fast, I could barely keep up. That happens in occasional flashes with anime, and more frequently with the very best SF. As I mentioned, A Deepness In The Sky pulls this kind of thing off even though Asimov invented that particular genre in Foundation. The Matrix Reloaded didn't take very long to get started, and when it did, I kept getting distracted by what the characters were saying so that I had to force myself to pay more attention to the action. This particular genre of wickedly intelligent SF was invented, or at least revitalized, by The Matrix. Its sequel improves on the approach. I'd love to talk more about the movie, but I will not spoil it for you. You're going to watch it soon, remember.

On another level of cleverness, The Matrix Reloaded is a giant film. As you know, it and The Matrix Revolutions are basically one film that's been chopped in two. Thus, Reloaded sets up a lot of things that will be resolved (I hope) in Revolutions. But it also is linked with The Animatrix. The main plot of Reloaded continues directly from "The Final Flight Of The Osiris". I expected that. What I didn't expect was that Reloaded would be linked with "Kid's Story". Those who see The Matrix Reloaded without having seen The Animatrix first might get the sense that something is being left out, and they would be right. I also sensed gaps in Reloaded that I expect will be filled in by Enter the Matrix, which I will be getting shortly. These gaps are not problems with Reloaded; they are strengths, and this will set a higher standard for movies in the future.

Free your mind.

5/14/2003 - I installed Red Hat 9 Linux on my old Dell PIII-600 yesterday. I've already got SSH, SCP, and HTTP working. I've bought a domain name,, and I'll be pointing it to this machine shortly. At that time I will also move this website there. There should be no reader-visible changes, but this move will greatly ease my life. Currently, my files are spread over two servers: ITS hosts the website, while UGCS hosts my downloads. I've got a distribution of MinGW sitting on my CS account as well. When the site is hosted on my own box with 25 GB of space, I won't have to deal with the hassle of managing three separate accounts.

In addition to getting the domain name set up (and repointed), everything is blocking on the release of gcc 3.3 for MinGW. Then I'll compile a release of my game Parrises Squares, set up a C++ tutorial, and get to work on bwtzip and TranscendForum again.

I have the vision. Oh, how I have the vision. I just need the time. Please be patient with me. Great things are coming.

5/9/2003 - I understand where bwtzip's space usage is going now. Hee.

5/4/2003 - The core engine for my game is complete. I'll be working on it more, and eventually I'll make a page for it here. My current favorite name is Parrises Squares.

I took a look at the Origami Polyhedra page. It looks awful. I spend so much time working on and looking at the newer pages that I forget how stale the older pages have become. Won't be long now before my interest returns to revising this site.

5/3/2003 - I've got basic cursor support running in my game. Both the keyboard and the mouse can control the cursor. I'm currently calling the program InsaneGame, after the TI-85 game which I'm cloning. I may change the name later.

4/30/2003 - Though site updates have been slow, I am far from idle. I've been learning SDL, and I already have a running application:


You see, this site is about things that I've done. When I'm actually doing the things, I have little time to update the site itself.

To be honest, I'm not very enthusiastic about revising the Anime/SF Reviews or the DX Story page right now. I'll get around to it, but maybe in a couple of weeks. What I am interested in is a full-fledged C++ page. We'll see.

4/26/2003 - My Xbox has failed again. Hssk.

I've found McCreight's paper which contains his suffix tree construction algorithm. It looks difficult to understand, but I'll try.

4/24/2003 - The Deus Ex page now validates as XHTML 1.1 and CSS 2. I have not proofread it, though.

4/19/2003 - I have increased the line spacing on all pages of my site; this makes my dense text easier to read.

I have finished revising the Links page. No trace of the original version remains, and it now validates as XHTML 1.1 and CSS 2. I'll be adding more links to the page later, but I wanted to get it out now.

After I finish adding more links to the Links page, I'll work on the Anime/SF Reviews. I've prepared better stars:

1 Star - BLEAH
2 Stars - AWFUL
3 Stars - BAD
4 Stars - DUBIOUS
5 Stars - AVERAGE
6 Stars - GOOD
7 Stars - GREAT
8 Stars - BEST

4/18/2003 - I've changed my .htaccess file so that attempts to access the old .html files get rewritten into attempts to access the new .html files. This caused me minor confusion when my custom 404 page stopped working. Of course, what was happening was that I had given the 404 page a plain .html extension. Attempts to access it would get rewritten, and 404.html simply didn't exist. Uh oh. I've fixed that.

I apologize to anyone who got lost in the last 15 days. However, the .html pages are not going away, so links should still be updated.

Some good housing-related news has finally come my way. I have the highest place in the Early Lottery for Avery House. This means that I get to stay in my current room not only for the summer, but for next year as well. Needless to say, I am infinitely pleased.

I'm still working on the Links page. It's getting closer to being completed. No, really.

4/15/2003 - I've learned that Gigabyte's Canterwood motherboard doesn't really support 6 DIMMs. Therefore, Reason will be using only 2GB of memory.

I'll update the Computer page to reflect this soon. I'm still working on the Links page.

4/12/2003 - Yesterday I received my Xbox in the mail. Microsoft's service was so fast! My Xbox is now in perfect working order, just like on Launch Day. In fact, I got my own Xbox back. I can tell, because they didn't wipe the hard drive. Companies that give a damn about their customers get my undying loyalty.

I'm working on revising the Links page now. It'll be very cool.

Want to help me out? The correct way of writing NVIDIA is in all uppercase. If you see any places around the site - and there are many - where I write it with lowercase letters, please tell me.

4/10/2003 - For the first time since the Great Reorganization of June 5, 2000, I'm revamping every single page on my website. I've started with the GeForce FX page, which is the most recent.

What does this mean?

As each page is reworked, it will appear in the De Novo subsection I have created in the Site Directory.

This will not be a task that is completed quickly. The site currently consists of 1.8MB of HTML, and I will need to look at every byte of it, basically. Archived News is the single largest page, even larger than the Deus Ex page, and that will take me a very long time to work through. However, it can be done! The lesson I've learned from working on this site for almost the past 3 years is that over a sufficiently long timescale, I can accomplish things that would ordinarily be unthinkable.

However, I still don't know what to do with the Book Reviews. I don't have time to review every single book again. We'll see.

4/9/2003 - I've been hit with lots of work these first couple weeks of classes, so I haven't been able to get much done on the site, bwtzip, or even TranscendForum. As if that weren't bad enough, the dark forces of compilers have arrayed themselves against me, wasting whatever time I can put into programming.

I was adding features to TranscendForum, and the server program began mysteriously crashing on Northy, which runs XP. It worked fine on UGCS, which runs Linux. Obviously, my code was doing something bad, but I didn't know what it was. At first, I suspected that XP's Winsock 2 was intolerant of something that UGCS's BSD sockets were permitting. So, I tightened up the socket code, and it still crashed. (Actually, the mistakes I made in closing the sockets could have bit me later, so it's a good thing I tightened up that code, even though it didn't solve this particular problem.)

I worked at it some more and realized that the feature I was adding would transmit zero-length vectors over the sockets. So, I merrily added code to detect when this would happen and simply not try to communicate zero bytes of information. Again, this could have caused problems for me later, but it wasn't the source of my current problems.

I then traced through how the client and server were using the socket classes and realized that they weren't working with vectors directly - they were using strings. I created a small test application and found that range-constructing a string from an empty vector would crash programs on Northy. So now I suspected that there was something stupid about the C++ language itself. Alas, I looked it up in the Standard, and range-constructing a string from an empty vector was quite legal.

By this time I was almost certain of the true cause of the problem, and went to Lo and behold, I was running gcc 3.2, because that was the latest packaged version of MinGW. UGCS's normally incompetent administrators had actually upgraded to gcc 3.2.2. Of course, in gcc 3.2 there was a bug: PR 8347, "Empty vector range used in string construction causes core dump". Argh! I then managed to upgrade my installation of MinGW and things began working perfectly. This is the third time I've encountered a compiler bug and it's equally unpleasant every damn time.

I'm now thinking that this site needs a complete revamp from the ground up. I'll probably do it a page at a time. When I'll be able to find the time is the real question, though.

The GeForce FX page now validates as XHTML 1.1, by the way. :->

4/6/2003 - I have updated the dual-monitor Northwood background on the Downloads page.

I have updated the Computer page with a new spec for Reason. The price for the new components is now $4141.50. Aside from things becoming cheaper and finding some new stores to purchase components from, I've made a few changes. Reason will use the Gigabyte i875P motherboard which has 6 DIMMs, onboard SCSI, and non-PCI-saturating GigE. Thus, I eliminated the Adaptec SCSI card and I increased the RAM to 3GB. I've learned that Swiftech's revised MCX4000-B2 heatsink can accept 92mm fans. So, instead of an 80mm 80CFM Delta, I'm going to use a 92mm 119CFM Vantec Tornado. That will give me basically 50% more airflow than Northwood's heatsink has. Also, I have changed the Pioneer DVD-106S to the updated Pioneer DVD-120S drive.

TranscendForum now has extremely customizable timestamps. It stores times internally in Qeng Ho format. :->

4/4/2003 - I have reviewed Halo: The Flood by William C. Dietz. I gave it a low six stars ("good"). What I wanted was another Halo: The Fall of Reach, but instead I got just a novelization of Halo. Ho hum.

I have reviewed Feersum Endjinn by Iain M. Banks. This novel gets a low five stars ("average") from me because it's so confusing.

I have also revised The Fortunate Fall's rating to a high four stars. I think of four stars as my "Evangelion" rating, and I've decided that that's exactly what The Fortunate Fall is.

Now for some fun:

Alpha Transparent Northy Logo

Ah, alpha transparent goodness. Unfortunately, the DirectX hack this relies on in IE will make it not immediately convenient to save the alpha transparent images. I think it's inherent to the process. I've made it so that my normal PNG images are not affected.

4/3/2003 - Big things are going on! First, I have been learning XHTML, CSS (Cascading Style Sheets), and SSI (Server Side Includes). Yes, I'm still Strictly Conforming Man, champion of CS and eternal enemy of IT, but some of this web stuff is pretty neat. My new project, TranscendForum, is going well. Soon it will be generating fully XHTML 1.1 and CSS 2 compliant code.

Earlier, I began using CSS here to suggest that Verdana be used. I have now gone one step further. Ever since the very, very beginning of my website - about five years ago, before I even came to Caltech - my Site Directory has always been static. Each page had its own Site Directory, different from every other page's Site Directory. Notice how my pages do not link to themselves; I always liked this effect, and didn't want to give it up. I'm now proud to announce that by using CSS and SSI, I generate the Site Directory on every page from a single file. This will make maintaining the site, adding new pages, shuffling pages around, and so forth significantly easier for me. Less time spent on editing 30 pages by hand means more time to work on actual content. Or play Warcraft III, I'm not quite sure yet. Happily, even though I am now using SSI, I can still view my pages locally (using XP IIS), so my work on the site will not be impeded.

However, major changes are usually not painless. ALL LINKS TO PAGES ON MY SITE HAVE BEEN BROKEN. Caltech Info. Tech. Services only turns on SSI for files with extension .shtml. My pages have always been .html, but now they are all .shtml. Going to will still bring you to the Index & Plan, which is now index.shtml. However, if you maintain any links to any subpages of my site, I strongly suggest that you change them to point to the .shtml files. I apologize for the breakage, but it is unavoidable; I can't pass up the benefits of SSI.

My site links extensively to itself. The Site Directory works, but links in the bodies of pages may still point to .html files. I have attempted to fix this; however, I may have missed some broken links. In my search-and-replace frenzy on the Archived News, I may have altered the wrong links. And finally, I may simply forget and try to link to an .html file in the future. Please notify me if you find a link that must be updated.

4/1/2003 - It's the first day of April, which means that now more than ever, this is the Net of a Million Lies. However, this newspost is not a joke. I've gotten Windows sockets working, and in fact the difference between Windows and Unix sockets is entirely encapsulated by my classes. I've also tightened up the code to check for errors and so forth. I'm also now interested in making bwtzip use sockets. Imagine a compressor that is SMP or HT aware and takes full advantage of that; this is entirely possible for bwtzip. In fact, it could be written to run over TCP/IP, allowing different machines to compress the same file. Interesting, eh? I'm now brimming with ideas for the future, so eventually most of them should be reality.

3/30/2003 - Well, I got sucked into learning Unix sockets. I pulled an all-nighter and finally got them working. It's very neat, but I didn't get a chance to work on the site. I'll try to do that this first week of classes.

3/29/2003 - What's going on in STL-land? Either very much or very little, depending on how you look at it. On the one hand, I planned to get a lot done on the site and bwtzip, and that just hasn't happened. Instead, I've been celebrating the end of second term by playing insane amounts of Warcraft III - I want my blasted Knight icon already! I have also been working on a little project I call TranscendForum; more about that later, maybe. Yesterday I went to a small Xbox party, whereupon I learned that my Xbox is a very sick little $300 console. I bought it at launch day, damned depreciation, and now it can't even load my favorite map on Halo, Prisoner. I called 1-800-4MY-XBOX, and the people there were extraordinarily helpful. Microsoft is servicing my Xbox for free, even paying the cost of shipping and handling. From reports online, it appears that this may be a problem with the early consoles in general. And mine is one of the very earliest - constructed October 2001! Has it been that long? I'm not too happy that my Xbox is failing, but Microsoft has more than made up for it with their excellent customer service. As for Unix sockets and named pipes, they can go to hell in their own way.

With Saturday and Sunday left before I go back to classes, I do plan to attack at least the personal page. We'll see if that happens.

I have updated the Computer page to include my GFFX; Northy's price has risen to $6284.99. That doesn't count depreciation, as usual.

3/24/2003 - Today has been a very productive day for me. I divined the secrets of endl, learned HTML forms, wrote a CGI parser, decrypted countless Unix man pages, mastered interprocess communication, and came to a clearer understanding of lvalues and temporaries in C++. However, I didn't get any work done on the site or on bwtzip as I planned to. That will have to wait for tomorrow.

As for the secrets of std::endl: what exactly is it? It's popularly believed to be an object for which operator<<() is overloaded, but this is in fact not the case. It is a template function, of all things. Calling cout << endl; performs endl(cout);, which then dumps a newline on standard output and flushes the buffer.

Suppose you are tired of typing cout << "<BR>" << endl; and want to say cout << htmlendl;. This can be done with two lines of code.

template <typename C, typename T> std::basic_ostream<C, T>& htmlendl(std::basic_ostream<C, T>& os) {
    return os << "<BR>" << std::endl;
This is actually a very neat, extensible trick. You don't need to write throwaway classes, nor do you need to further overload operator<<().

3/22/2003 - I managed to break the GFFX logo on the Computer page. That's fixed now.

3/21/2003 - I have finished the GeForce FX page, and I have removed the GeForce 3 page entirely. I plan to play through some Deus Ex and take a screenshot somewhere in the middle of the game, but otherwise the GFFX page is mostly done.

For my future reference, here are my Advanced Appearance settings: 3/19/2003 - It's here!

CASE No. THX1138

Patient 1138 is at genius level electrical engineering capacity, but demonstrates asocial and psychotic episodes when told to turn off personal computer. 24 hr. watch required.

More IRC fun...

[8:17.27 PM] <STL> Top Ten Signs You've Been In #stl Too Long:
[8:17.31 PM] <STL> 10. "War? What war?"
[8:17.57 PM] <STL> 9. You begin making whole weird typos.
[8:18.08 PM] <STL> 8. "Today I bought a digital scale."
[8:19.19 PM] <STL> 7. You've made a new slogan for bwtzip.
[8:19.52 PM] <Searcher> 6. You just tin-foiled your window.
[8:20.43 PM] <Searcher> 5. You begin abandoning your /online/ life.
[8:22.57 PM] <Searcher> 4. You know your personality type.
[8:23.13 PM] <STL> 3. You need Digital Vibrance Control, air, water, and food to live. In that order.
[8:23.55 PM] <STL> 2. You're +OaARD.
[8:23.58 PM] <STL> 1. IT WILL ALL BURN
[8:23.59 PM] <Searcher> 1. IT WILL ALL BURN.
[8:24.04 PM] <Searcher> Ha!
[8:24.33 PM] <STL> That's just not right. That's just not right.
3/18/2003 - Burninate the countryside!

Lots of good news today. My GFFX is finally, finally In Transit and I should see it tomorrow. And John "Searcher" Saalweachter sent me a small contribution to bwtzip, which I will be integrating shortly. (Joergen Ibsen has also sent me some speed tweaks which I intend to look at soon.)

3/17/2003 - The end of finals week is almost upon me. My GFFX should be arriving on Wednesday or so. Shortly after I finish my finals and create the GFFX page, I plan to seriously revamp parts of the site (including the personal page and several essays). I also plan to work on bwtzip some more.

I have switched Rurouni Kenshin and Love Hina's ratings around on the Anime/SF Reviews. Kenshin (modulo third season) deserves a high 6, while Love Hina deserves a middling 6. I do plan to watch some more anime soon.

3/15/2003 - I have added a fully updated spec for Reason to the Computer page.

3/14/2003 - Good news today.

GeForce FX On Order

3/13/2003 - It has come to my attention that some people are confused by the picture of our esteemed Captain Theresa Testarossa which I put on the Index & Plan a while back. Listen carefully, people. I'm not Theresa. I don't have white hair, for instance. In fact, I don't look anything like her. Theresa just happens to be my favorite anime character, and I have a tradition of using her as my avatar.

It's really quite simple, you know. Don't burn too many cycles over it. :->

I fixed about five nasty instances of "smart quotes" in the Quotation Collection. They appear as question marks when viewed in Verdana, and that's not acceptable.

3/12/2003 - Still waiting for my GeForce FX. I've got a lot of things planned for the site after I finish my finals, including perhaps a dedicated page for my Caltech classes.

3/8/2003 - I have added CSS to all of my pages; Verdana is now used for all of the non-monospace text. I myself already override everything in IE to Verdana, so I've been enjoying this for a while. However, it's only proper for everyone else to see my pages as I do. Unless, of course, you override fonts too, and you don't use Verdana to do it.

3/6/2003 - I have reviewed three new novels. I gave Clear And Present Danger six stars ("good"). I gave Look To Windward five stars ("average"). And I have reviewed Inversions, giving it a high six stars.

I have expanded my review of Halo: The Fall Of Reach. I felt that as my third most favorite novel in the SF category, it deserved more detailed comments.

I have updated the collection of my commandline utilities on the Downloads page. New in this update are bg (similar to appending an & to a commandline in Linux), sum (a commandline addition-only calculator), and the mass renamers elide, increment, and trim.

GeForce FX Backordered

Stephan silently weeps

3/4/2003 - I've finished Inversions by Iain M. Banks and Clear and Present Danger by Tom Clancy. I'll review these soon. I'm still swamped with Caltech work.

Digital "Rights" Management is crap. I've had my first, and hopefully last, experience with it. Vernor Vinge annotated his A Fire Upon The Deep, but the only way to read it now is via the wretched Adobe Acrobat eBook Reader or Microsoft Reader. There's no print edition of it. So, I bought the Adobe version from Amazon, and was oh-so-delighted to discover that it is an extremely difficult program to get working on Windows XP. I eventually managed to get it creaking along, sort of. Here's the problem - this "book" is tied to Northwood. It will never be readable on any other computer. When I upgrade to Reason and stop using Northy, I won't be able to continue reading this thing. It's not really mine, is it? Whereas all of my printed books are mine to keep forever. The conclusion is inescapable: Digital "Rights" Management is evil.

Fortunately, Adobe Acrobat eBook Reader does not prevent screenshots (nor can it really - there's always DVI-I). And PNGs are forever. Still, it infuriates me that I need to do a lot of repetitive work just so I can read a book I paid for.

3/2/2003 - I had created a subpage for Reason, with a fully updated spec and everything, but then I mistakenly downloaded a copy of my site, rather than uploading the changes. Alas, my work has gone to the great bit bucket in the sky. I'll write it again later. The spec will continue to change anyways.

3/1/2003 - Seen on IRC:
<ithil> Ha ha HA!
* ithil brushes tears out of his eyes *
<ithil> You just _have_ to have used up teh funny for a YEAR.
* ithil tries to control his laughter so his roommates don't think he's insane *
* ithil bursts out laughing again *
See the shiny toys rant on the C++ page.

2/28/2003 - I have reorganized the Anime/SF Reviews; the Jump To table is more detailed and the novel ratings have been moved to the top of the page. In addition, I have created a subcategory for space novels.

Today's external link is to Halo: The Flood at, which is scheduled to be released in April.

2/27/2003 - I've updated my graph on the Diet page (the accompanying words are a bit out of date). I've temporarily increased my intake to about 1550 Calories per day, because classes are distracting enough as it is.

2/26/2003 - Today on STL's Stupid Realizations... 16:9 exists because most people have two eyes.

Some good news from The Inquirer:

Those who are in the know said that Nvidia, which had a stand at IDF this year, were taking people round the back and showing them NV35, which works at 256-bit quite fine, and runs at half the heat of the NV30.
Low-k is a wonderful thing!

2/25/2003 -

NASA Solves Half-Century Old Moon Mystery

I have finished Look to Windward by Iain M. Banks. I'll review it shortly.

2/24/2003 - I have reviewed Iain M. Banks' Excession. The verdict? A middling 6 stars ("good"). Could have been better if it didn't have any humans in it.

Sadly, I have also read Robert Zubrin's First Landing. I've taken the time to review this ridiculous novel, which I generously gave a high 3 stars ("bad"). Don't waste your money or time on this one.

2/22/2003 - Hooray; I created a 3200x1200 background for my dual monitors, but thought I couldn't use it until I got my GeForce FX. However, it turns out that you can use a wide background on dual monitors, even with two cards - you simply need to Tile rather than Center or Stretch.

In other happy news, Stargate SG-1 season 7 has been confirmed. Yaaay!

I have a new screenshot of my desktop, and my new wallpaper is on the Downloads page.

Preview of Northwood wallpaper v5.0

2/20/2003 - I have finished K-PAX III: The Worlds Of Prot and have added a rating of it to the Anime/SF Reviews. It wasn't deserving of a full review.

2/19/2003 - Prescott L1 16KB. Thank the Powers!

2/18/2003 - I've finished moving to Avery, but I still have to get a lot of stuff sorted out. I hope that soon I can resume work on bwtzip and start revising some pages here.

2/16/2003 - W00t!

"What're you lookin' at?" one man said when the demo player's gaze lingered on him a bit too long. If the player had continued staring, the AI might have gone aggro.

And, as it turns out, my prediction of June 2003 was correct. Heh.

Anyways, I'm currently moving to Avery. Normal updates will resume later.

In other news, I got a PCI GF4 MX and I'm currently enjoying dual 21" Trinitron goodness. The GF4 MX has vastly higher 2D quality than my GF3. Heh.

2/12/2003 - This page is your god. Kree!

2/9/2003 - Updated the Diet page with a new graph. I've been on The Hacker's Diet for 138 days now, and I've lost 45.5 pounds of measured weight. Today was the first day my measured weight fell below 150 pounds. Whee.

2/8/2003 - What kind of bandwidth does lossless, ultimate-quality video require? Let's imagine we're running a 1600x1200 monitor at 100 Hz. We want to display a new lossless frame every refresh. Our ancestors grew up with 24 and 30 frames per second video, but we can do better! This is 1600 * 1200 = 1.92 million pixels in a frame. As we display 100 frames per second, that's 192 million pixels per second. We're of course running with full 24-bit color, so that takes 3 bytes per pixel. We're left with 549 MB/sec. That's right - we'd need an order of magnitude more hard drive bandwidth (compared to today) just to stream this off of a disk. Half a gigabyte per second is a significant fraction of bandwidth to main memory, even. A state of the art hard drive right now stores 200 GB. That would be enough for roughly 7 minutes of such video (the audio component takes up negligible space in comparison).

Two things can help: compression, and Moore's Law. With lossless compression, we will be able to reduce the storage requirements significantly (after all, frames shouldn't change that much if they're separated by 1/100 of a second). And the relentless march of technology will help too. My 486 DX/33 which I used in elementary and middle school came with a 120 MB HD and I later added a 340 MB HD. Now, every day I manipulate files many times larger without even thinking about it. Lossless, high-quality video will someday be a reality. I hope to create a specification for it: Video Network Graphics.

2/7/2003 - Finally, someone has contributed an algorithm to bwtzip! Joergen Ibsen has contributed an adaptive Huffman pass. It's less efficient (by definition, basically) than the arithmetic coder I've been using, and so will not become part of bwtzip itself. Even so, it presents a useful data point for understanding how different fourth step algorithms affect compression - a data point I was very interested in.

Joergen's code has been put into bwtcompare; for the Jargon File 4.3.3, the following results are obtained:

BWT / MTF / Huff:                  657536
BWT / MTF / Ahuff:                 640704
BWT / MTF / Arith:                 532540
BWT / MTF-2 / Arith:               529438
BWT / MTF-2 / Wheeler ZLE / Huff:  526794
BWT / MTF-2 / Wheeler ZLE / Ahuff: 509377
BWT / MTF-2 / Wheeler ZLE / Arith: 496985
In other news, I've added taglines to the top of each page.

Hover your mouse over this: GFFX. Hee.

The mighty Luke Stebbing is now the eleventh Weasel Commando. Took him long enough. ^_^

Updated the Icon Collection on the Downloads page.

2/6/2003 - Nothing is ever easy, is it?

Hello Stephan,

Your name appears on our waiting list for Avery singles.
We currently have an opening for this type of housing....

Undergraduate Housing
California Institute of Technology
I just finished getting settled into Marks. Lady Luck and I don't get along at all.

On a happier note, my second CPD arrived today. It is yummy.

2/5/2003 - Why bother going into space? There are all the usual reasons, of course. Good reasons. Yet there are even more important reasons why space travel is important. No sessile civilization can persist. If civilization falls on Earth, or all sentient life is extinguished, that's it. Everything that everyone has ever done will be for naught, and we'll either start from scratch or not at all. We now have the power to change our own fates; why don't we use it? Only after we have a tenuous foothold on the Moon, on Mars, on extrasolar planets not yet named, will we finally be safe. And we'll need a network encompassing all of humanity to ensure that we remain one. In the end, the very running down of the Universe will claim us. But we shouldn't go down without a fight. Only after we have used all our abilities to avoid destruction will everything, finally, have had real meaning.

1/31/2003 - My NV30 preorder has finally gone through; I hope it arrives soon. I ended up buying a BFG GFFX.

1/30/2003 - I have updated the efficiency comparison to include WinACE and RAR. They use proprietary (read: bletcherous) algorithms, but their efficiency may as well be analyzed. I take time to explain why RAR is not worth using.

1/29/2003 - I have updated the bwtzip FAQ; there is now a discussion of what chunk size means.

1/28/2003 - Sweet Ethernet.

I've decided to "merely" buy a second CPD rather than going for a GDM. As much as I might like 0.22mm aperture grille pitch, I'll like having another thousand dollars to dump into other things even more.

I have things planned for the website soon; we'll see if I have any time to get them done. Historically, I manage to get a fair amount of things written even while classes are slowly squeezing the life out of me.

Phil Hilton has pointed out a discrepancy on the Deus Ex Story page between Chad Warren's QA document and the final game. I've added an annotation explaining how Walton Simons and Bob Page fit in.

1/21/2003 - I'm moving back to a house with Ethernet. Updates will resume when I'm set up there.

I've updated bwtzip's source code and executables; the code is more cleaned up now.

I've updated Reason's spec.

P4 Prescott - $640
Intel Canterwood Motherboard (with SATA and onboard, non-PCI-saturating GigE) - $200
2GB DDR400 RAM (4x 512MB sticks) - $840 (GoogleGear)
Seagate Cheetah 15K.3 (36GB SCSI) - $359 (HyperMicro)
2x Western Digital WD2000JB (200GB IDE 8MB cache) - $534 (GoogleGear)
Plextor PX-W4824TA (IDE 48/24/48X BURN-Proof Tray-Loading CD-RW Retail) - $112 (HyperMicro)
Pioneer DVR-105 (IDE 4X DVD-R Whitebox) - $259 (HyperMicro)
Nvidia Video Card (NV35?) - $400
Adaptec 29160N SCSI Host Adapter (Bare Card) - $189 (HyperMicro)
Creative Labs Audigy 2 Sound Card - $116 (GoogleGear)
Lian Li PC-68 + USB - $155 (Big008)
Blue, Purple 12" Cold Cathode Lights (Dual Inverter) - $24 (Sidewinder)
Enermax EG651P-VE - $155 (NewEgg)
Swiftech MCX4000 Bare Heatsink - $45 (Sidewinder Computers)
5x Delta 80x38mm FFB0812EHE Fans (80CFM) - $75 (Sidewinder Computers)
8x Gold 80mm Fan Grills - $20 (Sidewinder Computers)
Copper Mesh 5 Position Rounded SCSI Cable - $40 (HyperMicro)
Microsoft Natural Keyboard Pro - $55 (Amazon)

Total Purchased New: $4218

Microsoft Hovermouse Explorer 3.0 - $40
2x Sony CPD-G520P - $1573.02
Klipsch Promedia 5.1 Speakers - $390
Arctic Silver II Thermal Compound - $5
Western Digital WD1000BB (100GB IDE 2MB cache) - $324
Western Digital WD1200JB (120GB IDE 8MB cache) - $221.85
PC-65 Window Side Panel - $45
Five Molex Splitters - $10
4x IDE ATA/100 18" Copper Mesh Rounded Cables - $57.85
Promise Ultra 133 TX2 IDE Controller Card - $53.80

Total From Northwood: $2720.52

Grand Total: $6938.52
1/20/2003 - I've created a logo and a wallpaper for Reason.

This computer is going to rock.

1/19/2003 - I was able to compress the human genome with 15MB chunks; the results are on the bwtzip page. I have also updated the source code and executables.

1/17/2003 - I have updated the Diet page. I've been on the Hacker's Diet for 114 days (heh), and the graph is pretty interesting by now. I expect my burn rate to rise in the next couple of weeks, but even if it doesn't, I can continue to lose weight.

1/14/2003 - I have reviewed A Fire Upon The Deep (low seven stars), The Moon Is A Harsh Mistress (low seven stars), and The Fortunate Fall (low five stars).

I have created a logo for bwtzip which can be seen on that page. I also have results for the three corpuses I compiled, which reveals that bzip2 is trickier than it might otherwise lead you to believe.

I have an antialiased Nvidia logo.

1/10/2003 - What's going on in STL land? Work - lots of work. When I can find the time, I've been gathering up files for three data compression corpuses: the "Large English Text Corpus" (about 80MB), the "Large Source Code Corpus" (273MB), and the "Human Genome Corpus" (big). I'll then compare the usual compressors on these corpuses and see what happens. I'll need to rewrite bwtzip to deal with gigantic files, but that shouldn't be too hard.

Today's external link is to Project Gutenberg.

1/7/2003 - I've played with varying bwtzip's chunking, and I have discovered some interesting results. My test corpus is currently a 57.8MB TAR file of English text.

Bits Used
Per Input Byte
Original: 60,648,4488.000
XP Integrated ZIP: 22,459,7652.963
gzip 1.2.4 --best: 21,844,2032.881
bzip2 1.0.2 (900KB chunks):15,793,1732.083
bwtzip (900KB chunks): 15,573,6882.054
bwtzip (5MB chunks): 14,285,4671.884
bwtzip (15MB chunks): 13,891,0731.832

Chunk size is a variable common to all Burrows-Wheeler compressors such as bzip2 and bwtzip. Larger chunks mean better compression but higher memory usage (and, for bzip2 but not for bwtzip, higher processor usage). bzip2 cannot use chunks larger than 900KB. bwtzip will happily use arbitrarily sized chunks, until you run out of main memory. 15MB is about the largest chunk size I can use on my system, which has 1GB of main memory.

Even at the same chunk size, bwtzip gains some 214KB over bzip2, thanks to the more advanced algorithms I use. As larger chunk sizes are used, bwtzip becomes increasingly efficient. I think that a chunk size of 5MB is very natural right now for the Ukkonen algorithm.

bwtzip's space usage is currently about 53N. The 15MB chunk size version processed input data at 271 KB/sec. For comparison, bzip2 processed input data at 2042 KB/sec. Hence, I'm about 7.5x slower than bzip2 now. Not great, but not too horrible either. With the Ukkonen algorithm, it is absolutely impossible for bwtzip to exhibit pathological performance on any input data, be it English text, a megabyte of identical characters, or random data.

Also, I have added a fourth BWT algorithm to bwtzip; this one is the Bentley-Sedgewick Tripartition Quicksort. It's about as fast as the naive STL sort right now, but there is a lot of potential for optimization in it. The algorithm is highly intuitive and easily modifiable, once you get past the strange style I implemented it in.

I'll update the bwtzip source code later.

1/5/2003 - I have updated the bwtzip page. bwtzip now has chunking support, which means you can compress large files. (You still cannot compress a file larger than will fit in memory; bwtzip is not yet ready for that. This is similar to the difference between the standalone SHA-1 program I have written that will process multigigabyte files rapidly, and sha1test in the bwtzip project which loads files into main memory first.) The bwtzip page has been revamped; while the algorithm descriptions still need a lot of work, things are clearer now. There is a bwtzip FAQ you may enjoy reading, and there is a demonstration of the BWT applied to a long (~370 character) text.

1/4/2003 - I have added a review of Vernor Vinge's A Deepness In The Sky to the Anime/SF Reviews page. I came very close to giving it eight stars ("best") but in the end settled for seven stars ("great"). I may yet change things after I've read A Fire Upon The Deep, which is set later in the same universe. A Deepness In The Sky may be the closest that anyone has come to recapturing the spirit behind the Foundation series.

I have reviewed Michael Crichton's Prey. I gave it a low six stars ("good"). It's worth a read, but nanotech can be so much cooler.

I have also reviewed Isaac Asimov's Robots and Empire. Sorry, Hari Seldon, but I took the eight star ("best") rating away from Forward the Foundation and gave it to Robots and Empire. R. Daneel Olivaw is the greatest SF character ever. Greater than Data, even. Data wanted to be human; Daneel saved all of humanity.

I'm running out of external links, but I'll post them as I find them.

1/2/2003 - Today's external link is to the SHA-512 specification.

I have updated bwtzip; it now has a function to perform SHA-512 hashing. I have also updated the Downloads page. It turns out that MinGW can't display unsigned long longs as easily as DJGPP does, even though my code was strictly conforming. As a result, the SHA-512 executable would crash no matter what you gave it. I have switched to a less elegant (but equally strictly conforming) display method, and now the standalone executable works as before.

Also, I have fixed the standalone SHA-1 and SHA-512 executables so that they work with wildcards properly. If you say sha1 *, DJGPP will only process actual files in the current directory, but MinGW will also try to process subdirectories. The SHA-1 executable would then complain and die. Now it silently ignores files it can't open, which includes any subdirectories, and as a result can process everything. I don't think this is a problem for my other wildcard-enabled programs, as you're not likely to say * or *.* with them.

1/1/2003 - bwtzip has been updated. New in this version:

The suffix tree algorithm now processes 524 KB/sec on the Jargon File.

I added some quotes to the Quotation Collection, including one from The Bear and the Dragon and one from A Deepness In The Sky.

I plan to revise the bwtzip page soon, considering all that I've learned since I last worked on it.

Today's external link is to Voodoo Extreme; they currently have a poll for the most anticipated game of 2003. I think you know what to vote for.

12/30/2002 - I've never played around with scripting before. But this is pretty neat:

12/30/2002 - Sighted on a forum today:

You would have played crippled baby bunny to Teh STL's hungry hawk.
12/29/2002 - I've returned to Caltech, and my Internet connection was up and running when I arrived. At least Caltech ITS and Charter Cable are learning to schedule their blinding incompetency so that it happens when I'm not around.

I have updated bwtzip; this version is the one that I restructured and refined during these last two weeks of winter break. The bwtzip executables are smaller and faster, and the source code is much more pretty. Also, the SHA-1 functions have been split off.

I have updated the signature image I use at the bottom of each of my pages; thanks to my mad antialiasing skills (and a little more effort at good handwriting), it's fairly pleasant now.

12/28/2002 - Regular website updates will resume tomorrow.

Lots of things to talk about. First, I got Robots and Empire for Christmas. It's an awesome book. In fact, I am now convinced that it is the best Foundation novel. I'll be revising the Anime/SF Reviews and the Foundation Essay.

However, it seems that Robots and Empire is now back in print! The Asimov FAQ certainly didn't mention that, so I don't know when this happened. Sigh.

Next, bwtzip. Yes, I remain firmly convinced that it is ridiculously cool, and I'm not going to rest until you agree with me. Thanks to my Week of Rest in Colorado (almost two weeks, actually), bwtzip has gone through significant changes since the last time I updated it. All the source code that came before seems like a bad dream compared to the state it's in now, things are that much cooler now. Let's see if I can think of all the neat things that have happened with the source code: I will update the source code and executables on the bwtzip page tomorrow. Also, I should add more references to the bwtzip page.

Now, Star Trek: Nemesis. I went to see this yesterday with Uche and Aaron. Usually I don't mention the movies I watch, because I watch too many of them and I don't want to be tempted into rating and reviewing them all. However, for Nemesis, I will make an exception. First, let me complain about non-spoiler nitpicky things.

First, and most damningly, it gets TNG-era shields all wrong. But Stephan, you say, you're allowing yourself to be distracted by minor flaws. I say, you don't understand the Trek universe. Things have to be exactly right, with a loving attention to detail, or they may as well not even bother. The fact of the matter is, TNG-era shields are bubbles. More precisely, ellipsoids. Phaser fire and photon torpedoes hit the shield bubble. They don't hit the ship as long as the shields are up. Nemesis ignores this fundamental fact. When phaser fire hits the NCC 1701-E, it hits the ship, and shields flicker over the hull. This is not Captain Archer's Enterprise, please. It's the god damned twenty-fourth century. We've grown beyond polarized hull plating. They may as well show us two suns in the sky and expect us to believe that it's Earth.

Perhaps I didn't pay enough attention to Star Trek: Insurrection (can you blame me?). However, I don't remember being pissed off at that movie, just bored. I think that in Insurrection, the NCC 1701-E had a shield bubble. It doesn't take much to keep me happy, you know. "Captain, conformal shields are online." Just one line, and I'd be happy. But nooo.

Next, as neat as tablet PCs and personal digital assistants are, they remain strictly an early twenty-first century thing. Tricorders are fat things, not flat, and they are bent. Tricorders were around long before personal digital assistants. If Data's carrying around some flat scanner in his hand, I want to know what the heck it is, because it's certainly not a tricorder.

Jeffries tubes. They are well-lit and very cramped, as Rascals taught us. They are not dark and Borg-like, and Commander Riker certainly cannot stand up in one.

Trek forcefields are staticy. They are not wavy.

Every little thing adds up. In First Contact, the loving attention to detail really showed. The scene with the Vulcans at the end was the crowning moment. There is precious little of that in Nemesis.

Now, for some spoilers.

The special effects of Nemesis were by and large pleasing. Trek hasn't looked this good, ever. The ramming scene was spectacular. Data jumping through space was badass.

In Star Trek, starship conflicts tend to be naval; large ships sitting mostly still firing big guns at each other. Nemesis pleasingly breaks this tradition a little. There's a fair amount of three-dimensional maneuvering going on.

However, one thing that is most decidedly not pleasing is an abundance of tooth fairies. The Shinzon thing was Nemesis's tooth fairy. I was perfectly happy to accept it without much explanation. (A tooth fairy is an otherwise hard to believe circumstance which a story can be based on. SF stories get one tooth fairy for free. More than one, and the story suffers.) Nemesis has a LOT of tooth fairies.

First and foremost, Before. Everyone and his uncle knows that Dr. Noonian Soong constructed only two androids with stable positronic nets: Lore and Data. Thanks to Inheritance, we know that Soong did create many androids before Lore, but their positronic nets were all unstable. (Soong definitely didn't create any androids after Data; the Crystalline Entity attacked, Soong fled, and spent the rest of his years working on Data's emotion chip.) Now, you might say, Before doesn't exactly have a stable positronic net. I'll disagree vehemently - we saw what happened to Lal when her positronic net lost its integrity. But even assuming that Before was created by Soong, it is too hard to believe that the Romulans just found him.

Speaking of that, Data's emotion chip was not mentioned in Nemesis. Sigh.

The personal transporter node is a tooth fairy. The "lethal to organic matter" radiation is a tooth fairy.

And finally, Data. They killed Data, and I can't forgive them for that. Yes, the movie had a nice idea behind it, and they explored that with Shinzon, and the conversations between Picard and Data. Nemesis is a decent movie. I liked it better when they called it Star Trek II: The Wrath of Khan. We've already seen the second in command give his life because the needs of the many outweigh the needs of the few... or the one. It makes for a strong story, but we've done that already.

I leave you with this thought. Nemesis had the potential to be an incredible, inspiring movie. Of course, that would have required daring. Imagine if Picard had given his life for Data.

12/22/2002 - Fixed a stale link on the Links page; the BWT demonstration link now works again.

12/21/2002 - Daniel Garibay has alerted me to an error on the Deus Ex Story page. The MIB aren't nanoaugs; they use a "physiopharmaceutical approach". I have fixed my comments about the MIB.

bwtzip is coming along well; I have made the MTF, ZLE, and arithmetic coding functions stand alone, independent of Bcell. Things are organized much more effectively now, and things are more efficient. However, upon reading the Ukkonen paper again, I probably won't be implementing the quadratic time algorithm as an example - the notation is too mind-numbing! (And to think that somehow I figured out the full algorithm from the paper alone.)

Today's external link is to NVNews, which has reported that there are issues with ATI's newest drivers. This, dear readers, is why I'll never use anything but Nvidia.

I've heard some bad things about Gainward cards, and it is said that Leadtek will be the first to market with the NV30. Higher 2D quality, here I come!

12/17/2002 - My internet connection is down again, thanks to the incredible incompetency of Caltech ITS and Charter Cable. I apologize to the people who sent me E-mail during finals week; I finally found the time to respond on Monday, but right before that, my connection died. I'll respond as soon as I can.

Currently, I plan to clean up the Bcell codebase and improve its commenting and structure significantly. I may also write an example suffix tree program which uses the simple algorithm that Ukkonen presents in his paper (quadratic-time rather than linear-time).

12/16/2002 - I have updated my Extended Essay; it's now available in PDF format.

I have reorganized the Site Directory; bwtzip is now a Primary page because I've been working on it so much. What used to be Auxiliary is now Diversions and includes the Coloring page. Other pages have been shuffled around.

As usual, I'd like to hear about how easy it is to find things on my site. There are a lot of pages here and each has a lot of information. I can't do much about that (it's a feature, not a bug), but I can try to make it fairly easy for you to find what you want. Or easy for me to find what I want. We have to stick together, you know.

The Inquirer has learned that Intel's Canterwood chipset will be called the i875P and will support:

Also, it looks like the Prescott will continue to use Socket 478.

12/15/2002 - I have updated the Downloads page; there are now new executables of all of my programs, as well as newly compiled versions of the other utilities. I've packaged everything into a single ZIP file.

I have updated bwtzip. This version features more space-efficiency and higher performance than ever before. Two major changes are responsible for this: first, dummy SuffixNodes for leaves are no longer created (that was the optimization I made on 12/13/2002). Also, I no longer use std::list in TransitionList. Now I use std::vector, which uses space much more efficiently. bwtzip's memory usage is now down to something like 50 bytes/input byte. Compression efficiency has not changed since I added the Wheeler ZLE pass almost half a year ago. I'm still looking into more efficient algorithms, though.

I've learned that FOX is cancelling Firefly. Bastards.

12/13/2002 - I have optimized bwtzip! I changed two lines of the code, which cut the space usage from 106 bytes/input byte to 80 bytes/input byte. This also produced a 36% speed increase. I'll upload the code after I implement a new algorithm or two.

Michael Crichton has a new novel out named Prey.

Moonbase Commander owns you.

12/11/2002 - I added the Time Stamp(0) algorithm to Bcell; however, it produced worse compression than MTF-2 on The Jargon File and the 1998 CIA World Factbook. I'm leaving in the algorithm, but it will not become a part of bwtzip's usual routines. I still want to implement Inversion Frequencies and the little-understood Distance Coding.

It turns out that the Deus Ex developers really enjoy martial arts films. I've tracked down a long list of references on the Deus Ex Story Page.

While analyzing's statistics, I found that had linked to my Paper Airplane page, calling it "utterly pedantic". Whee!

12/9/2002 - Sighted on a forum today:

STL is probably the best writer on the forum, IMO.

I have updated the bwtzip source code and executables; this is the fixed version with the iterative DFS that will successfully compress the Calgary Corpus's pic or a megabyte of zeros.

Today's external link is to Sephen, a new webcomic I've been following.

12/5/2002 - The endless work on bwtzip continues. I now have tables comparing ZIP, gzip, bzip2, and bwtzip for seven different files. Most are of moderate size (1MB), one is small (200KB), and several are large (2MB - 4MB). I included Flatland because even though it's small, it shows that bwtzip doesn't perform badly on small files, even though the savings over bzip2 are insignificant. The large files are the really interesting results; in particular, the wget TAR archive. Even though bzip2 does really well on it, bwtzip does even better.

The Federalist Papers, plain text Flatland, plain text Great Expectations, plain text On The Origin Of Species, plain text
Compression Method Size (Bytes)Percent of
Output Bits
Per Input Byte
Size (Bytes)Percent of
Output Bits
Per Input Byte
Size (Bytes)Percent of
Output Bits
Per Input Byte
Size (Bytes)Percent of
Output Bits
Per Input Byte
Original: 1,205,848100.0%8.00218,565100.0%8.001,032,052100.0%8.001,286,961100.0%8.00
XP Integrated ZIP: 411,76134.1%2.7384,03538.4%3.08402,36739.0%3.12441,06634.3%2.74
gzip 1.2.4: 396,10832.8%2.6382,15937.6%3.01391,21237.9%3.03428,78733.3%2.67
bzip2 1.0.2: 282,42823.4%1.8765,88630.1%2.41288,08127.9%2.23313,42824.4%1.95
bwtzip: 266,08622.1%1.7765,66830.0%2.40275,31726.7%2.13293,57522.8%1.82

The Jargon File 4.3.3, flat HTML wget 1.8.2 source code, TAR The 1998 CIA World Fact Book, plain text
Compression Method Size (Bytes)Percent of
Output Bits
Per Input Byte
Size (Bytes)Percent of
Output Bits
Per Input Byte
Size (Bytes)Percent of
Output Bits
Per Input Byte
Original: 2,360,016100.0%8.004,474,880100.0%8.003,469,087100.0%8.00
XP Integrated ZIP: 774,37032.8%2.621,180,14426.4%2.111,037,83429.9%2.39
gzip 1.2.4: 761,87932.3%2.581,154,66325.8%2.061,003,13928.9%2.31
bzip2 1.0.2: 546,76523.2%1.85783,65117.5%1.40686,29019.8%1.58
bwtzip: 496,98121.1%1.68750,96116.8%1.34590,81517.0%1.36

I fixed the deep recursion problem. As usual, I wrote an enormously complicated function and then committed a stupid mistake. (Happily, it was compile-time. I forgot to #include <stack>. It's the run-time mistakes that are really painful.) Otherwise, I got it completely right the first time.

// The stack contains internal nodes, never leaf nodes.
void Bcell::SuffixNode::dfs(list<size_t>& l, stack<pair<SuffixNode *, size_t> > stak) {
    while (!stak.empty()) {
        // points to the node we're processing.
        if (>haschildren()) {
            Transition temp =>children.getFirstChild();
            // temp.child points to the SuffixNode below us.
            // Is it a leaf?
            if (temp.child->haschildren()) {
                // There is an internal node below us. Let's process it.
                pair<SuffixNode *, size_t> mypair(temp.child, + temp.right - temp.left + 1);
            } else { // There is a leaf below us.
                l.push_back( + temp.right - temp.left + 1); // Update l
                delete temp.child;  // Delete the leaf
        } else {    // We're finished with this internal node.
            delete;    // Delete the internal node.
Today's external link is to HappyNet 3. There will be a picture of a bunny!

12/4/2002 - Meet the eternal hell that is my life.

void Bcell::SuffixNode::dfs(list<size_t>& l, size_t x) {
    if (!haschildren()) {
    } else {
        while (haschildren()) {
            Transition temp = children.getFirstChild();
            temp.child->dfs(l, x + temp.right - temp.left + 1);
            delete temp.child;
If I compress the file pic from the Calgary Corpus using bwtzip on Win32, it dies silently during the DFS. Trying to compress a hundred kilobytes or a megabyte of null characters causes bwtzip to segfault in Linux during the DFS. I am almost certain that massively deep recursion is blowing the stack.

This is the only recursive function in Bcell, of course. Now, I need to write it in a wholly iterative fashion, but that's unnatural.

Over a year ago I was claiming that humans and computers worked in completely iterative fashion. Now I hesitate to write an iterative routine. How time flies....

12/3/2002 - I've updated the bwtzip source code and executables. They're now more optimized, non-leaking, and instrumented to display various statistics.

I have also updated the comparison table; now, results for gzip are included.

I updated the Diet page; there is now a new graph of my weight. I have also begun graphing how many calories I burn each day.

Today's external link is to Paul Spaeth's page. His song Oracle is excellent.

12/2/2002 - I've fixed the bwtzip memory leak! It turns out that DJGPP was at fault, creating a massive performance degradation whenever I tried to fix the memory leak. I've switched to MinGW, which is a much nicer compiler. It also creates smaller executables; I'll soon update the Downloads page appropriately.

12/1/2002 - I updated the Anime/SF Reviews - now, there is a sorted summary of book ratings.

11/28/2002 - I updated the bwtzip source code. I added an SHA-1 based pseudorandom number generator to the project, and I also sped up make all. On my machine, the PRNG generated 100 million bytes in 13.5714 seconds, which is 7,368,437 bytes/sec and 299 clocks/byte. Whee. Better yet, these will pass any statistical tests you care to throw at them.

I updated the Anime/SF Reviews with a review of Vernor Vinge's True Names and a review of Ian Stewart and Jack Cohen's Wheelers. Yes, the same Stewart and Cohen who wrote The Collapse of Chaos and Figments of Reality. My conclusions? I enjoyed both books immensely. I also added extremely short reviews of all of the Foundation novels. And all of the books on the Anime/SF Reviews page now have ratings, on the same scale that the anime series are rated on.

I continue to discover neat things about MetaPad. Not only does it have Block Indent, Block Unindent, Make Tabified, and Make Untabified, it can comment out and uncomment out blocks of code, like DrScheme does! All you have to do is set Options > Settings > Quote String to slash-slash-space. Then, highlighting a block of code and pressing Alt-Q will comment it out. Alt-Z thrice will then uncomment it. And there's even a nifty Strip Trailing Whitespace (Alt-W) command.

I fixed something on the Archived News that said that I work on this site in WordPad, because I don't anymore. MetaPad for life!

Today's external link is to

<Pookablu> Ron Dwight, the author of the RAR compression format, passed away a few days ago.
<ev> he was found in several same-size pieces and had to be combined to put him in the coffin
11/26/2002 - I have added a collection of all of the small programs that I have written to the Downloads page. There are new versions of apply, bitrate, map, prepend, sha1, and sha512. Also included is my enhanced version of Jason Summers' pngrewrite, which is now wildcard-aware. map and apply are no longer useful to me, but I have included them anyways in case they are useful to someone else.

prepend and sha512 are new; hopefully they will be of use to someone.

Today's external link is to an essay on

11/25/2002 - I gave up on changing Mcell to internally use vectors. Why? Because of vector<bool>. Gargh!

Today's external link is to an interview with the One Must Fall: Battlegrounds developers.

I'd like to take this moment to laugh at all the poor saps who run IDE and think that they have "killer systems". Ha ha ha. That's some funny stuff.

Northy: Clocking cycles like no one else can; the gate is down and the lights are flashing but there ain't no train coming.

11/24/2002 - I updated the Anime/SF Reviews now that I've finished Patriot Games by Tom Clancy.

VirtualDub 1.4.12 is out, and it's optimized for the P4. Whee.

Today's second external link is to, an online PS->PDF converter.

11/23/2002 - I added a large version of my modified P4 HT logo to the Coloring page.

In other news, I've been working on bwtzip. The implementation of the Ukkonen suffix tree construction algorithm is much cleaner now, and uses STL lists instead of my hand-rolled lists. Also, STL pairs are used instead of my hand-rolled pairs, which makes the code clearer. I'm still working on plugging the Titanic-on-crack memory leak, but the addition of STL lists is one step in the right direction. I plan to recode Mcell to use STL vectors; using the Resource Acquisition Is Initialization principle, they will work properly in the event of exceptions. I'll update the Bcell code when that happens. Also, I plan to start tacking on version numbers to my code.

Today's external link is to the gcc mailing list archives.

11/22/2002 - Sighted on a forum today:

Nvidia wants to have my money. To get my money, they make great cards using the latest process technologies, have great drivers, and generally offer a great experience.

I want to have all those great things; in exchange, I am all too happy to give Nvidia all they money they want and offer my fervent admiration for their company, culture, and products.

I am a fanboy, and proud of it.
Today's external link is to two sample chapters of The Fortunate Fall by Raphael Carter.

Today's annoyance is the British. "Your government are sending us everything we need", says a character in Patriot Games by Tom Clancy. That's an abomination. Government is a collective noun and is hence treated as a singular. Why can't the British speak Earth-standard properly?

11/21/2002 - My reign of terror wrt antialiased logos continues! I created a modified P4 HyperThreading logo. See Image Hacking - HyperThreading.

Today's external link is to the Intel page that has the high resolution source image.

11/19/2002 - I have a neat antialiased GeForce FX logo ready for my website.

I updated the Icon Collection on the Downloads page; there's now an alpha transparent GeForce FX icon.

Thanks go to Brent of [H]ardOCP. While their forum moderation style could teach Stalin a thing or two, sometimes they can be pretty cool.

I have learned that Canterwood will be superior to Springdale; now, at least, I know what chipset Reason will use.

11/18/2002 - I have updated the bwtzip source code and executables. The Makefile works now, and the resulting bwtzip and bwtunzip actually perform as advertised. Since no one complained, I guess no one had even tried to run bwtzip from that package. :-<

I added an explanation of what Bcell is to the bwtzip page.

I have finally successfully hacked pngrewrite to accept wildcards. I will eventually upload my modified version of it.

So, today is the promised NV30 announcement day. It turns out that the chip is a 125M transistor part on 0.13 micron using 500MHz DDR-II memory. I already knew all of that. What I didn't know is that its core will run at 500MHz and that its name is GeForce FX. For reference, the GF3 (NV20) that I purchased in May 2001 was a 200MHz core / 230MHz memory part. I had expected that the NV30 would be 400/500, but the news that it is 500/500 is startling. Yay for 0.13!

The NV30 also has 400MHz RAMDACs; whee.

I will, of course, be buying a Gainward GeForce FX as soon as possible.

Segways are now available for personal purchase. At $5000, though, they're a little too expensive for me.

Intel has announced that P4s will never use a 667MHz FSB, and will jump straight to an 800MHz FSB. (This is good news!) Also, the Prescott has been delayed to Q4 2003. (Not so good news.) I guess that means I'll be buying Reason one year from now. I still don't know what chipset I'll be using; I believe that Springdale will be superior to Canterwood, but I don't know too much about them yet.

Today's external link is to the GeForce FX home page.

11/16/2002 - I updated the Diet page; a graph of my weight for the last 52 days is now available. My trend weight is now 176 pounds, down from 194.

I updated the Random Work page; the ternary sequence code is clearer now.

Today's external link is to; Xbox Live was released yesterday.

How did I pull off my taskbar trick? Here's how:

  1. Enable 48x48 icons:
    Right Click Desktop > Properties > Appearance > Effects > Use Large Icons

  2. Add all of the toolbars you desire to the taskbar:
    Right Click Taskbar > Toolbars > New Toolbar...

    Taskbar #1

    Here, I have my Quick Launch bar, my open programs bar, my MP3 directory, shortcuts to frequently-accessed documents, shortcuts to the C and C++ standards in PDF form, and shortcuts to my video editing programs. The Quick Launch bar is no different than any of the other icon toolbars: it's just a directory full of shortcuts which have fancy icons. The MP3 toolbar will be used to access files in that directory; it is not an icon toolbar, but a directory toolbar. (The difference is in how you use and view them; there is no fundamental difference. You could treat an icon toolbar like a directory toolbar; you'd then click the >> arrow and get a small list of the shortcuts in that directory, rather than having them all available immediately.)

  3. Leave any directory toolbars untouched.

  4. However, the icon toolbars need to use 48x48 icons instead of 16x16, and they need to not display any text. With any toolbar which consists of icons:
    Right Click Toolbar > Deselect Show Text
    Right Click Toolbar > Deselect Show Title
    Right Click Toolbar > View > Large Icons

    This will make all of your icon toolbars use 48x48 icons.

    Taskbar #2

    You can see that things are getting a little squished.

  5. Resize the taskbar to double-height.

    Taskbar #3

  6. Now, take any toolbar you like and drag it to the top of the taskbar. This will create an actual second row of icons.

    Taskbar #4

  7. Add any other toolbars you like to the second row.

    Taskbar #5

  8. Let's add an Address bar.
    Right Click Taskbar > Toolbars > Address

    Taskbar #6

  9. Drag the Address bar to the bottom of the taskbar; it will form a new row.

    Taskbar #7

  10. Now you have three rows to play with. Drag toolbars around until they're in the position you want. Let's put Quick Launch on the bottom with the Address bar.

    Taskbar #8

  11. Let's put the Address bar on the top.

    Taskbar #9

  12. Let's move the open programs bar and the video editing programs bar to the second row, leaving the Address bar alone by itself on the third row.

    Taskbar #10

  13. Let's move the MP3 toolbar, the documents toolbar, and the standards toolbar to the bottom row.

    Taskbar #11

  14. Let's remove the title from the Address bar, rearrange all the icons, position the toolbars appropriately, and then lock everything in place. We're done!

    Taskbar #12

11/15/2002 - Updated the Northwood Desktop Screenshot on the Computer page. I've pulled off something very tricky with my taskbar, and I think it's really neat.

Today's external link is to the page that taught me how to paint my optical drives silver.

11/13/2002 - I added a few Sarek quotes to the Quotation Collection; the total now stands at 612.

"Of course, in the end, I was proven correct."

I was reading a neat set of lecture notes online about American history, and came across this little tidbit: Dmitri Volkogonov was involved in the Alger Hiss case, as in 1992 he searched the Soviet archives and declared that Hiss had never been a spy. The page doesn't name Volkogonov directly, but I recognized that the "Russian general" had to be him. (I did some searching and confirmed that it was indeed him.) Of course, I recognized his name because he was the author of the excellent Stalin: Triumph and Tragedy.

11/12/2002 - I updated the Computer page to reflect the fact that I removed Northy's fan bracket; as a result, the price has dropped by about $57. Also, I have painted Northy's I-Storm IIs and optical drives silver; it looks pretty good now. I tried to paint the floppy drive silver too, but I broke its flap, and as a result I've stealthed the entire drive. I should take a new picture of Northy.

Also, while working on my computer, I managed to short it out when I reconnected the floppy drive. Man, that was scary! Fortunately, nothing was damaged.

Uche has recently been working on suffix trees, and he's written a page about what he's done. Neat!

I plan to add an explanation of Ukkonen's algorithm to the bwtzip page, when I find the time. I can explain how Ukkonen's algorithm works, but not why it works.

Today's second external link is to the PuTTY Download Page. I recently figured out how to use PuTTYGen so that I can SSH into remote computers without typing my username or password (I hate being challenged for my identity). Whee.

11/10/2002 - Added one FAQ to the Deus Ex Story page and one FAQ to the Anime/SF Reviews. In short: yes, I'm working on annotating Deus Ex's dialogue, and yes, I will get around to watching Cowboy Bebop.

I added a collection of the icons that I created to the Downloads page.

Interesting fact: if I remove the fan from Northy's heatsink, the processor temperature rises to 57 degrees Celsius and then levels off. That's a 2.2GHz processor under full load, running without a fan. :->

11/9/2002 - Midterms are over, and my connection is usable, if highly flaky. I recently discovered how to create Windows XP icons, 48x48 with alpha transparency, and have been busy making new icons for all my websites. Before, when I could only make 48x48 Windows 98SE era icons (with binary transparency only), most of my icons were simply square images. They looked nice, but they didn't fit in with the other XP icons I use. That has all changed now.

Comparison of old and new icons

On the left is the upper portion of my Links toolbar when I had the square icons; on the right is my current Links toolbar. Doesn't it look nifty?

Today's external link is to Icon XP, the utility that - along with Photoshop 7 and the PNG file format - allows me to create XP icons. It's totally better than Icon Easel, the Windows 95 icon editor that I used to use.

11/5/2002 - Well, that was a short interlude. In an amazing turn of events, my connection is working again. (It only took them four days... four hellish days.)

I added bitrate to the Downloads page; it's a small video bitrate calculator. I used some nifty DJGPP tricks to reduce the size of the executable to 24 KB; however, the code remains strictly conforming, so you can run it anywhere.

I removed zlibtest from the Downloads page; it was a demonstration of the Mcell code in C. How time flies! This functionality is still provided in Bcell, not that anyone cares.

When I start up a command window in XP, now it's titled Northwood instead of Command Prompt. Whee.

Start > Run... > regedit > HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Command Processor > AutoRun > Modify > title Northwood

I added images of Asuka, Pen Pen, Shinji, and Bart to the Anime/SF Reviews.

I updated the graph on the Diet page to cover the first 42 days I've measured.

Today's external link is to confirmation that the NV30 is a 125M transistor part (5M more than I originally thought).

11/4/2002 - I have no Internet connection. Caltech offers a 10Mbps Ethernet connection in every room on campus... except for the apartment I live in this year. My apartment is connected via a cable modem. An incredibly lousy cable modem connection, as it turns out. Since school started, the connection has gone from sucky (its natural state) to flaky, and now to dead.

Today's external link is to this page written by Caltech Info. Tech. Services.

Caltech ITS says that my connection will be down not for days but for weeks. The better part of a month, in fact - and that's if I'm lucky. Needless to say, I have immediately started implementing Operation Infinite 802.11b; in the next couple of days I will be ordering a bunch of equipment, because I absolutely cannot tolerate this situation. However, until I get set up again, updating my website will be essentially impossible. I can write news updates (as I am doing here) from another computer, but that's a pain. So, there will be a brief interlude in the news posts for a while. I'll work on content when I can on Northy and upload it all when my connection is back on line, back in action.

10/29/2002 - I have added the Diet page. I'm losing weight to the tune of 2.5 pounds per week, and it's so incredibly simple I just have to tell the whole world about it.

I prepared an image that will eventually go on the Lossless NV30 Screenshots page.

Are you ready for the NV30?

10/28/2002 - Updated the Random Work page to include a general way for lambda functions to recurse on themselves.

10/27/2002 - I have added pictures of Rei Ayanami and four characters from Vandread to the Anime/SF Reviews.

I have updated the Random Work page with some code that performs an iterative computation using only lambda functions. I thought it was cool. Then again, I think thermonuclear explosions are cool.

Today's external link is to the DrScheme interpreter.

10/26/2002 - Brian Burke of Nvidia E-mailed yesterday saying, in part:
We think [ATI's GDDR-3] spec needs to be more aggressive. NVIDIA cannot endorse the spec as is. It needs more work. 500MHz as a starting point is boring in the time frame they are talking about, which is 2003. 500MHz in 2002 is exciting. 500MHz in 2H03 is boring. The value of the GDDR3 as it stands in the current spec will be severely tested in the coming weeks with existing technology.
Allow me to read between the lines for you:
The NV30, which we are announcing at Comdex in less than a month, has 500MHz double data rate memory.
Aw hell yeah!

10/24/2002 - Today's external link is to Chronic Logic. They have recently released Pontifex II. It rules.

My Hard Level 7 bridge passes the test with no broken links. It costs $124418. Can you beat that?

10/22/2002 - I have updated bwtzip. The source code hasn't changed significantly recently, with the exception of some expanded PNG support (pngacc is nearing completion). However, it is organized better now, and includes a Makefile. Compiling bwtzip has never been easier! As before, I have included precompiled executables for bwtzip and bwtunzip.

Today's external link is A Block-Sorting Lossless Data Compression Algorithm, the original 1994 paper by Burrows and Wheeler.

10/17/2002 - I have completed my first draft spec for Reason! Reason, if you remember the one time I mentioned it before, is my working name for the computer I will build sometime in 2003. After all, Northy was completed in January 2002; by the end of junior year it will be one Moore generation old, and that hurts. To create Reason, I will gut Northy - while Northy will still be a perfectly operational computer, I will remove some hardware from it and keep all my peripherals. That doesn't mean that Reason will be cheap, though!

Plextor PX-W4824TA (IDE 48/24/48X BURN-Proof Tray-Loading CD-RW)$130
Pioneer DVD-106S (IDE 16X Slot-Loading DVD-ROM)$50
Adaptec 29160N SCSI Host Adapter (Bare Card)$189
Seagate Cheetah 15K.3 (36GB SCSI)$350
Western Digital WD2000JB (200GB IDE 8MB cache)$359
Promise Ultra133TX2 Controller Card$36
P4 Prescott (Highest End)$600
Motherboard (Highest End)$200
1GB RAM (Perhaps 2GB)$300
Lian Li PC-68 + USB2$163
Enermax EG651P-VE$155
PC-65 Window Side Panel$45
Blue, Purple 12" Cold Cathode Lights$27
Swiftech Heatsink$80
Creative Labs Audigy 2 Sound Card$135
5x Delta 80x38mm FFB0812EHE Fans (80CFM)$75
8x Gold 80mm Fan Grills$32
10" Silver Mesh Rounded Floppy Cable$8
4x IDE ATA/100 18" Copper Mesh Rounded Cables$44
Silver Mesh 7 Connector Rounded SCSI Cable$35
SCSI Terminator$17
Two Hard Drive Brackets$4
100 Black Fan Screws$5
From Northwood:
Microsoft Hovermouse Explorer 3.0
Sony CPD-G520P 21" Flat Trinitron Monitor
Klipsch Promedia 5.1 Speakers
Intel Pro/1000 Network Interface Card (Gigabit Copper Ethernet)
Arctic Silver II Thermal Compound
3x Just Cooler FC-100 System Coolers
Samsung Black Floppy Drive
Western Digital WD1000BB (100GB IDE 2MB cache)
Western Digital WD1200JB (120GB IDE 8MB cache)
To Northwood:
Linksys LNE100TX Network Interface Card$20

The total cost of new components comes to $3059 without tax or shipping. With tax and shipping it may cost $3500. Obviously, much of the spec remains uncertain at this time.

My main considerations are:

10/16/2002 - I have mothballed the GeForce 3 page; removing the full size screenshots saves me 18MB which I will later use for my Lossless NV30 Screenshots page. I assume that all my readers have GeForce 3-class cards or higher now. If not - oh well. Get with the 21st century, will ya?

I have finished Red Storm Rising and have completed my review of it. The verdict? Decent, but not spectacular. I am still looking forward to the last novel in the Ryanverse, code-named HITS.

I have finished watching Hack Sign and have reviewed it. I gave it six stars ("good"). If only it had moved a little faster and managed to keep my interest throughout the whole thing. The worst thing is that no one episode stands out in my mind as being spectacular; the last few minutes of the last episode were great, but that was outweighed by the slow pace of everything else.

Today's external link is to John Walker's The Hacker's Diet.

10/13/2002 - Yay! If you remember my 9/22/2002 news post, you will recall that I couldn't get Windows XP to behave as I wanted it to. Clicking on My Computer would force you to manually click Folders to see the directory tree. Explorer would start up with the directory tree visible, but My Documents would be open (and I don't use My Documents for anything). I had found a way to launch Explorer that would open up C: with a directory tree. But this wasn't quite the behavior I wanted. It didn't fix the My Computer icon on my desktop, which I need to leave because it has a right-click context menu. And, much of the time, I want to access my D: audiovisual drive, so having C: open by default is undesirable. I have solved these problems!

The solution is to use My Computer or a shortcut to My Computer (I use a shortcut in my Quick Launch bar, and the real icon on the Desktop). My Computer > Tools > Folder Options > File Types > (NONE) Folder > Advanced > explore > Set Default. And poof! My Computer now launches with the Folder view open and your computer selected, rather than any individual drive.

Today's external link is to Microsoft's ClearType Tuner. If you're using ClearType, and you should be, this will allow you to configure how it looks. I prefer the default on my system, but you may prefer something else.

10/11/2002 - I bought Red Storm Rising by Tom Clancy today. Got to love those Soviets!

I will probably eventually promote bwtzip to a Primary page.

My problem sets this past week were killer; I don't know if I'll get anything worthwhile done this weekend. We'll see.

Today's external link is to an old favorite: Grid II by The Cynic Project. It's my "driving to Caltech" song. Whenever I hear it, I am reminded of when I left my old life and started anew.

10/7/2002 - I have updated the Personal Page. The changes are, in absolute magnitude, rather minor; however, they are significant in that they change the tone of the entire page. Much of the ranting about evil Ruddock House is gone. This is not because I no longer consider them evil; indeed, if anything, I more completely understand what an awful time that was for me. However, man wrongs, and time avenges. I am sufficiently distanced from that episode to be able to condense it to a factual account, rather than rabid ranting.

I have added two new questions to the Personal Page: Are you an optimist? and Are you arrogant? You know, I'm really not that bad of a person, once you get to know me. :->

Here comes another week of classes... I will think of something cool to do with the site soon. I don't have an external link handy this time around which is worthy of your attention. In its place, I would like to beg for you to visit the bwtzip page. Burrows-Wheeler compression sounds so incredibly esoteric, but I find it endlessly fascinating, and I hope that you will too. Please let me know if you like the bwtzip page; it represents a lot of my effort over the last several months, and I am always so overjoyed to discover people liking what I have produced.

10/4/2002 - I have updated (221 KB) on the Download page. map and apply now correctly handle filenames with spaces.

Reports that the NV30 would be announced at Comdex have been verified. Mmm, all sorts of good things are happening at the end of the year:

Also, I hear One Must Fall: Battlegrounds is being released in early 2003. Should tide me over until I get DX2: Invisible War.

10/3/2002 - AMD Shares Fall 20% On Revenue Warning - It's news like this that just makes me feel all warm and fuzzy inside.

Nothing big has happened recently, hence the lack of updates. I really should work on bwtzip and pngacc when I find the time.

There's some concept which has been kicking around in my mind for a while. I call it "totality of experience". It's sort of the sum of everything you have ever read and watched and thought and experienced. Totality of experience is something very private; it cannot be communicated directly to anyone else or recorded permanently (not yet, anyways). It's sort of how you view the world, but it's more than that. I consider my totality of experience to be something very special. It includes things like Jack Cohen and Ian Stewart's The Collapse of Chaos and Figments of Reality, Stargate: SG-1, Mersenne primes, the Burrows-Wheeler Transformation, GEM and DOS 5, The Illustrated Dictionary of Physics, and IB Russian. Everything I write is just a slice of my totality of experience. My site is an attempt to communicate my totality of experience, in a limited way, to anyone who's willing to listen.

Anyways, enough of that stuff. When I get my grubby meathooks on an NV30, I'll have some pretty pictures up on a new page, and that's always fun. I will probably remove the GF3 full size screenshots, but leave the thumbnails. Most of the readers of my site should have GF3-class cards already.

9/30/2002 - I updated the Computer page. I've made a lot of changes to my UI, so I took a new screenshot of Northwood.

Caltech changed their main webpage and in the process managed to kill all of my counters for a day. I have now restored them.

Today's external link is to Labyrinth (6.6 MB) by Raymond Wave. It's a great, long trance track.

Today also happens to be the first day of classes. Back to the grind.... However, I will still be updating the site when I have time.

9/29/2002 - I have finished watching all 26 episodes of Chobits and have completed my review on the Anime/SF Reviews page. My verdict was five ("average") stars; the ending was neither good (e.g. like in FMP) nor bad (e.g. like in RahXephon), it was just an ending to a series that went on for far too long. Even if I made up a list of 13 episodes to watch, skipping all the filler, it still wouldn't save the series; not much is explained, and not much happens.

I have reorganized the Site Directory; it now has alternating colors to make reading its entries easier. I was concerned that having such a big mass of text in a table would be hard to read. Also, I have simplified many of the descriptions.

Today's annoyance is people who say "baited breath". Whenever I hear that, I want to throttle them until their breath is bated.

Today's external link is Google News. Who needs journalists when computers do their job better and faster? Now, all we need is Google Government, formerly named Multivac.

9/28/2002 - I replaced the Comments section on the Index & Plan with a Compensation section. My pleas for people to write to me and link to my site should be communicated more clearly now. ^_^

Today's external link is to You Need To Connect, a track by The Cynic Project. It owns.

9/25/2002 - I have updated one of the images on the Links page; the DJGPP image is much cleaner and lacks nasty aliasing. Also, I have added a new file to the Downloads page - it's a little 2KB Excel spreadsheet with the C operators, their precedences, and their associativities.

Today's external link is to the C/C++ Users Journal; there are a couple of articles from each issue online. They make for very interesting reading.

9/24/2002 - I have added several new quotations to the Collection; the total now stands at 607. There is a new section for quotes from John Walker, founder of Autodesk and all-around badass.

Today's external link is to Stargate SG-1 Fanfiction by Suz. Fanfiction, if you are unfamiliar with the term, refers to short stories written by fans of a TV show (or otherwise) which are based in the universe of that TV show. There is fanfiction for virtually every SF series out there (it seems to be primarily an SF thing. I haven't seen a lot of ER fanfiction, or any for that matter - then again, I haven't looked. Perhaps I don't want to know). Now, if you follow my Anime/SF Reviews, you'll be familiar with how I like a lot of stuff and also detest/am bored by a lot of stuff. Maybe 50% of the anime I watch and 50% of the SF novels I read are good. Fanfiction is in a sorrier state. Almost all of the fan fiction I have ever read (and I've read a lot of it; not only SG-1 but Star Trek as well) is appallingly horrific. The failings of bad fanfiction range from numerous spelling errors, to characters not sounding 'right', to inconsistencies with the universe, to authors who think including lyrics of their favorite song makes for a good story (guess what - it doesn't). Most fanfiction is trash, and that makes me sad. However, I link to Suz's SG-1 fanfiction precisely because it is good. In fact, it is probably the largest archive of good fanfiction that I have ever seen, much less all by the same author. Some of her stories I just don't get (it happens, especially with me), but this is rare. Most are interesting, some are compelling, and several are just darn awesome. (And I don't just say this because I have a thing for time travel.) A couple of nights before I returned to Caltech, I stayed up until 5AM because I couldn't stop reading the stories. Eventually, several billion years of evolution won out, and I fell asleep with a couple of stories unread. Needless to say, that was my first stop the next morning. Suz also seems to be extremely prolific; in the last couple of days it seems like she has cranked out a story per day, or more. If you watch SG-1 regularly (and you should), you should also take a look at these stories. WARNING: The stories necessarily spoil episodes which they refer to. Forewarned is half the battle, and all that.

And yes, my terrible secret is revealed: I am an incurable shipper. Please kill me now.

pngacc, bwtzip, and the Deus Ex Story Page are all on my mental to do list. Don't expect any large updates from me until a week or so after classes start (i.e. nothing big will happen in the next couple of weeks); things are just a bit insane for me right now. Comments about my pages, as always, are welcome; the time they take to read and reply to is insignificant compared to the time they save me, because then I know what people want me to write about. I am fairly certain people do not want to listen to me rambling in news updates, but I can do whatever I want on my site, especially if it pleases me. :-)

Speaking of rambling, it occurred to me while reading The Caves of Steel by Isaac Asimov that while it is eerily prescient for being written so many decades ago, one part was not prescient. C/Fe, we are told, symbolizes the working together of humans (carbon-based) and robots (iron-based). After having seen fifty something years of the endless triumphs of the transistor, we now know that it is silicon, and not iron, which really powers robots (for now). Had Asimov understood this (which he could not have), the early Foundation novels would have referred to C/Si. See?

9/22/2002 - I have updated the Links page. I changed the link to because Winamp 2.x rocks and Winamp 3.x sucks (I'm not kidding, sadly - 3.x has about the same functionality as 1.x).

I have always been annoyed that clicking on My Computer in XP displays "System Tasks", "Other Places", "Details" in the left pane, forcing you to manually click Folders to see the directory tree (which I always want to do). But Explorer starts up showing the useless My Documents folder, instead of C: (which I always want to see). There is a solution! Simply run:

explorer /n,/e [sic: that is a comma]

and the directory tree will be shown in the left pane, opened to the C: drive. You can create a shortcut with this and set it to open Explorer in Maximized mode.

If VirtualDub repeatedly crashes on encodes at frame 9995, the cause is multiple MP3 codecs conflicting. Uninstall all but the Professional codec, and things will magically begin working again. (This drove me insane until I figured out that reinstalling my Audigy drivers messed up my codecs).

Happily, my 5.1 sound is working - it plays in Neverwinter Nights. It's awesome!

I fixed a couple of inconsistencies on the Computer page thanks to Josh W.'s sharp eyes.

9/20/2002 - I have returned to Caltech! In celebration, I have updated the Computer page; Northy's total cost has now risen to $5320.47. This is because I ditched my lousy Altec Lansing ADA880s (4.1) in favor of Klipsch Promedia 5.1 speakers. The sound quality is very much improved, and they actually have real surround sound (the ADA880s aren't true 4.1, they suck). However, except when listening to 5.1 AC3 audio or Creative's speaker tests, I cannot hear anything from the center channel. MP3s play on the 4 satellites and the subwoofer, but the center channel is silent. This also happens with DVDs (I have tested From the Earth to the Moon and the Terminator II Ultimate Edition DVD). Anyone know why?

I apologize for not having an external link in the last quick update (I was packing up my stuff, getting ready to move back to Caltech). This will not be the case today! I was initially attracted to the Klipsch 5.1s by a FiringSquad review. However, I did a little more searching and I found that that review was rather inferior. 3D SoundSurge's review was far superior. I have some things against audiophiles: firstly, they have an analog fetish (and you know how I feel about analog), and secondly, they're insane. However, they do know their stuff, and the 3DSS review didn't rip on the Klipsch 5.1s all that much. So, I knew that they had to be really good speakers, if audiophiles could listen to them and not run screaming out of the room. So ends yet another tale of me buying stuff for Northy.

I may make a tutorial on how to create antialiased stars like I did recently.

9/17/2002 - I have made new images for the star ratings. These look a lot better and are nicely antialiased. Here are the old images compared to the new ones (the old one appears on top, the new one appears on the bottom). I also switched the colors of the 4 star and 8 star ratings; I like green more, so it should go to the 8 star rating.

Star Image Comparison

9/16/2002 - I have updated the Anime/SF Reviews, since I have finished watching RahXephon. I now have a complete review of RahXephon. I had given it a preliminary 5 stars ("average") while I was watching it, but in the end I had to drop it to 4 stars ("dubious"). There are now two anime series that I am watching while they are currently airing: Chobits and Hack Sign. If Chobits continues what it's been doing unchanged, I will give it 5 stars, but my review won't be very nice (Chobits will have to seriously screw up in the next few episodes to get a "dubious" rating - I do not hand those out lightly). Hack Sign may maintain its 6 star rating ("good"), but if the ending is lousy, I will give it 5 stars. I am disheartened by the fact that so much of the anime I watch is so appallingly poor. I can only take comfort in the fact that there are nevertheless some very good series out there. While on summer vacation for four weeks in Colorado, I have not only watched over a dozen movies, I have also watched 79 episodes of Stargate: SG-1 (out of 121 episodes aired so far), and I have also rewatched the bulk of Full Metal Panic. I am so buying the FMP DVDs when they are released. Video on demand rules!

I have added a second part to Essay 3: Programming. I call this section A Perspective From The Top Down.

Today's external link is to the Fermi National Accelerator Laboratory. As an insane and idealistic middle schooler, I visited Fermilab during my summer vacation. (It is a happy coincidence that I was born in Illinois and have extended family out there, but I might have visited Fermilab even if that were not the case.) Until those blasted Europeans upgrade their precious CERN, Fermilab is still the most badass particle accelerator in the world. If you ever have a chance to tour its grounds, I suggest you take it - it is very pretty, and filled with cool art. Not "abstract hypermoderist surrealism" or what have you. As one example, visualize three giant metal claws, stuck into the ground at the points of a triangle (and straddling a road). These spikes curve upwards, but don't entirely meet at the center. One is too tall and one is too short, and none of them touch. The sculpture, if you want to call it that, is named "Broken Symmetry". (For those unaware of quantum mechanics, it is a clever title.)

9/13/2002 - The Quotation Collection now contains 600 quotes. I have added only 200 quotes since the Great Reorganization, but I think I am doing fine, since only 1/3 of the quotes are now unverified. (I am particularly fanatical about copying quotations verbatim, hence the categorization into verified and unverified.) I have also fixed the Jump To links in the Collection so that they jump to the precise point where a new section starts. The latest addition to the Collection?

"Many that live deserve death. And some that die deserve life" - J.R.R. Tolkien, The Lord of the Rings, spoken by Gandalf
I have also resolved to link to at least one external thing every time, or almost every time, I make a news post. Aaron somehow has the ability to determine where visitors to his site come from, and he mentioned that some intrepid explorers actually reached his PHP Tutorial, etc. through my 9/9/2002 news post. I thought that was nifty. So, to kick off this thing, I will link to MetaPad, the freeware replacement for Windows Notepad. It has been my main programming editor for quite some time (i.e. all time after I discovered it). Recently, upon installing it on another computer, I have discovered that MetaPad actually makes hyperlinks in text documents active. This is so cool! So, for example, if I am working on a source code file, and it mentions, it will be an actual hyperlink I can follow directly, rather than cutting and pasting it into IE. This is done without changing the file itself. For some reason I had this feature turned off in the MetaPad I have running on Northy. No longer! As soon as I get back to Caltech, I am enabling that feature.

In the future I will try to link to things that aren't already on my Links page. ;-)

9/12/2002 - There are now 599 quotations in my Quotation Collection. It will probably hit 600 soon.

I have added Aaron's website to the Links page. In addition, I have made all of the images on that page links, and I have added a disclaimer (basically saying that I'll be safely and cozily dead before I ever put anything on my website for money or because someone else ordered it so).

I was going to update the bwtzip page to add some more data points to the size comparisons, as I have a program which uses zlib as effectively as possible, but it turned out to be insignificantly better than XP Integrated ZIP on the two files in question.

So, what is planned for the website in the next week? 9/9/2002 - I have rewritten Essay 3: Programming. None of the original essay remains. That's good, because I first wrote it when I knew basically nothing. The new one is much better, I think, and reflects my current state of mind. I think it's a bit disjointed, but then again, everything I write is a bit disjointed. In it, I slam unstructured programming and I slam Java (yay). I also talk about the place I think functional programming has. Scheme will never be my most favorite programming language, but it has its place, and there are very many things which can be learned from it. I also talk about C and C++, of course. The essay should be fairly intelligible to nonprogrammers, though I have not bothered to explain things like "control flow".

I have updated my damned Personal page. There's now a modern picture of me, as well as a much better picture of Peppermint. I still have no replacement for the bad picture of Uche, Aaron, and myself, where Uche's face is invisible and Aaron and I have mottled-orange skin. We haven't all been in the same state at the same time for at least a year.

Aaron now has a webpage. Shock and horror! It's actually pretty cool, and I want to see more of his PHP tutorial. Here's a nice excerpt from his site:

I bought the Intellimouse Explorer 3.0.... I also got a can of spray-on Teflon... and applied a light coat onto the skids on the bottom.... decreasing the friction between the mouse and the desk!
That may be one of the few times that I have ever been ahead of Aaron at anything. ^_^ Of course, I don't agree with everything Aaron says:

In other news, I watched "Black Hawk Down" today. Interestingly, it was a movie without a plot or a protagonist, but I guess that was the point of the movie. War has no meaning, and there are no "heroes". The one thing that really stood out was how artistically well done the movie was made. The cinematography was really very beatiful and haunting. In many ways, it is one of the better movies that I've seen come out of Hollywood in the past few years.
I thought Black Hawk Down sucked. Behind Enemy Lines was far better. Anyways, I'll add Aaron's webpage to the Links page soon.

9/8/2002 - The Deus Ex Story Page is complete! I still have plenty to add to it, but in its current state it can be considered complete.

I have reorganized the Site Directory table on the top of each page. I have placed the Anime/SF reviews and the Deus Ex Story Page in the Primary section, and have moved the PNG page and Book Reviews page to the Auxiliary section. I fear that the Site Directory is a bit too large to read all at once, but I can't envision a more efficient way to present all of the links at the same time. Right now, the site takes the shape of a completely connected graph with 28 nodes (there are a few minor offshoot pages too). I am highly reluctant to break up the site into six different connected graphs; while it would make it easier to navigate between related pages, it would be more difficult to move between unrelated pages (e.g. Origami Polyhedra and Random Work). Since I have an interest in maximizing the number of people who view each page (namely, I want people to read what I've written, heh), I will keep the present organization until the site becomes so unwieldy that something must be done. I don't expect that to happen until I have 50 or 60 pages, so that will be a long time in coming. (On average, I make a new page every month.)

The current Site Directory attempts to direct the reader to the pages that I consider most valuable. I have always thought of the Quotation Collection as the nucleus and most important page of my site, which is why it comes first and is given a long name (rather than simply Quotes). The Downloads page, while short, represents a whole lot of my effort, and thus is put in the second most likely place to be seen by the reader. Of course, this leads to important pages like the Computer page being buried in a mass of links, but I can't do very much about that.

9/7/2002 - I have annotated a good chunk of the Deus Ex Story Page. It is coming along nicely.


9/4/2002 - Rewrote map and apply on the Download page. They're now C++ code, vastly simplified from their earlier C incarnations. The documentation is also somewhat easier to understand. There should be no visible changes in their operation; no features have been added or removed.

8/31/2002 - Enhanced the bwtzip page significantly. There is a fairly lengthy diatribe on why sorting suffixes is as good as sorting circular shifts, the Circular = Suffix section. Also, there is a very in-depth introduction to Suffix Trees, complete with nifty pictures and everything. Please let me know if I can make these explanations any clearer. Details of Ukkonen's algorithm may be in the future. It's pretty involved, so maybe it is best left to the bwtzip sourcecode.

Added several quotations to the Computer Programming Quotations section. Here's one of my favorite new additions:

"I spent several months programming in Java. Contrary to its author's prediction, it did not grow on me. I did not find any new insights - for the first time in my life programming in a new language did not bring me new insights. It keeps all the stuff that I never use in C++ - inheritance, virtuals - OO gook - and removes the stuff that I find useful. It might be successful... but it has no intellectual value whatsoever" - Alexander Stepanov
After all, the best quotations are the ones that you agree with.

8/30/2002 - I have reviewed all of the Clancy novels that I have read, on the Anime/SF Reviews page. Some of my reviews are characteristically short (e.g. Red Rabbit was a very good novel, I just didn't have a lot to say about it), but some are fairly in depth. I plan to add star ratings to the novels eventually, and to upgrade the Jump To links. The astute reader will catch my harsh criticism of Executive Orders.

8/27/2002 - Someone recently asked me why evolution is interesting. Why should it be any more interesting than creationism? I'll tell you why. Fiction is very nice and all, but it doesn't hold a candle to the truth. The Bible's creation myth, Genesis, is a decent story, one to be examined in literature classes. Yet it is not true. The real story, that of our planet's formation 4.5 billion years ago, of the origin of organisms out of the very water and dirt of Earth, and of their subsequent evolution, is magnificent. The Bible says that our ancestors walked around in the Garden of Eden. The real story is infinitely more grand. Our ancestors, science reveals, were there when a massive asteroid slammed into the Yucatan Peninsula. They were there, and they survived. Our solar system formed due to the complex interplay of gravity, electromagnetism, and the nuclear forces. Worlds sit out there, waiting to be explored - airless worlds, worlds with sulfuric acid clouds, worlds with metallic hydrogen at their core, worlds which have gigantic, centuries-long storms, worlds that don't even spin the right way. The truth is more wondrous than fiction, because as imaginative as our primate minds are, reality is far more imaginative. That's why science - and evolution, which is part of science - is so interesting.

I wish more people lived in the world that I live in. Take the word "decade". Pronounced "deck-ade", it's your ordinary, everyday word. Pronounced "de-kade", it is a direct reference to JFK's famous speech. How many people do you think know that? How many people do you think care? This little bit of information may be lost to time. I hope not. It's one of the things that makes our world such a wonderful and rich place to live in. John Q. Public's concerns range from "Do I have enough gas for my car?", "What's for dinner?", or "My daughter better not be dating anyone I don't approve of". He doesn't know that America is losing the lead in experimental particle physics research, that our space program has been stagnating for the last thirty years (chances are John Q. Public wasn't even alive during Apollo), that gravity is almost, but not quite, an inverse-square force, or that every day he sees by the light of a thermonuclear inferno almost a hundred million miles away. Our ancestors feared and worshipped the Sun as a god. Today, we know better. We have unleashed the power behind the Sun, and we are close to attaining complete mastery over that power. How often in mythology do humans gain the upper hand against gods? Yet that is exactly what has happened.

Part of the problem is the general public's fault. Having had their childhood curiosity stamped out by the media, by their peers, by awful education and disinterested teachers, and by the deadening hands of tradition, culture, and religion, they just don't care about learning, or actively resist it. Part of the problem is the fault of scientists. While many are very good at doing science, not all of them are good at explaining science. Any explanation of science is incomplete without a sense of the wonder involved. Sometimes this wonder is visceral, the kind of wonder I saw when I was six years old. That there exist black holes, which are dead stars that suck even light itself into their cavernous jaws. That by harnessing the power of the atom, we can create fantastically powerful bombs rivalling anything else on Earth. Sometimes this wonder is more intellectual. Witness the Halting Language, which tells us that there are some things which are simply not computable, whether you use a machine or a mind (which is, after all, just another machine). The general public does not see or understand this wonder. To them, science is something that nerds do. It's a bunch of equations and dry facts, jumbled in a box and scattered over textbooks. They don't see the intricate connections between the facts that science has discovered, the theories which explain the world we live in. Indeed, they abuse the word 'theory' itself, leading them to say things like "evolution is just an unproven theory". They think it is synonymous with 'hypothesis' or 'guess'. And in the process, they completely miss the point.

In fact, few people outside of scientists actually understand what the scientific method is. The scientific method is not something which can be explained in a little box in a textbook. Nor is it something which can be listed as a series of steps: "Do this, and you can create science". In reality, science is what scientists do, and the scientific method is passed down by the most unscientific of methods, from master to apprentice over a long period of time. You cannot be flat-out told what the scientific method is, you must absorb it. This mystifies philosophers, who see one glimpse of what scientists do and think that it is the whole picture. Philosophy is bunk. Centuries, even millennia of useless thought about ill-defined concepts. Biology has taught us more about the mind and the body than Descartes ever did, or could have hoped to. Science works, and nothing else does. It's really quite as simple as that. I recently had the unpleasant experience of having someone tell me that Aristotle was the father of science. Apparently, this person was told this in a course about the history of science. It was obviously taught by an incompetent fool. Aristotle held back scientific thought for a millennium, as his followers blindly accepted his proclamations without ever doing real experiments. No, Galileo was the father of science. Galileo was the first man who used what can be recognized as the modern scientific method. Science was born while Galileo rolled balls down polished slopes to investigate the behavior of acceleration and gravity. Immediately after, the Church tried to stamp out science, and put Galileo under house arrest. I see a pattern there.

What infuriates me the most may be relativists. These are the fools who proclaim, "There are no such things as good or evil, right or wrong - everything is all just opinions, and it depends on who you are and how you look at it". Malarkey. There are things which are absolutely good and absolutely evil, absolutely right and absolutely wrong. If I say that Stalin or Hitler were evil men, that's not my opinion, that is a fact. If I say that the Earth orbits the sun because of the curvature of spacetime, it is not my opinion, it is a fact. Just because I'm saying it doesn't make it any less true. Furthermore, just because some people think astrology works doesn't make it any less of a disease. The real attraction of relativism is that if there are no such things as good or evil, right or wrong, then no one can be wrong! One sees this in literature, as well - there are only interpretations of what an author is trying to say, never a single correct meaning to an author's words. This is also hogwash. When writing down something, an author means to communicate something. That something may exist on several levels and may have several different aspects, but it is only one thing. Furthermore there is another thing - what is actually the case. If a slaveowner says that if you teach a slave to read, he would be forever unfit to be a slave again, then the slaveowner means one thing (don't teach slaves to read), and the truth is another thing (and very, very ironic, considering the slaveowner's choice of words), but that's it. There are no further interpretations to be had. There can be no endless analysis. That is why relativism is wrong.

8/26/2002 - The Northwood B-2.8 is now out, and it's significantly less expensive than what I got my Northwood A-2.2 for. Even worse, the Northwood B-2.53 sells for about $240. Damn that Moore and his law!

Anyways, I am currently back in Colorado, hating every second of my existence thanks to dialup and a horribly configured PIII-800. (I used to always be in charge of the family computer, and I ran a tight ship, but the PIII-800 has grown up without my iron hand of discipline. I had to remove hundreds of spyware components - disgusting.) Updates will be infrequent, perhaps on the order of once a week, since updating my web page is a pain over dialup. But, I hear enough annoying stories of people running lousy computers on lousy connections, and I don't want to talk about mine anymore. (I'm just counting down the days until I can return to Caltech and my Northy.)

I haven't yet thought about what I'm going to do first. Actually, second, since I have a little summer research to finish up. Probably I will work on a new version of pngacc, since the Bcell codebase is already in place.

8/23/2002 - Well, oops. On the bwtzip page, I referenced an Issues section but failed to write it. The section is now present.

8/22/2002 - I have updated the bwtzip page. It's structured far better now, has modern comparisons of compressed filesizes, has an explanation of Wheeler's Zero Length Encoder (the previous explanations of Switched Run Length Encoding and my variants have been removed*), and generally is far niftier. I still have to include an explanation of why sorting cyclic permutations can be the same as sorting suffixes.

Currently, bwtzip beats ZIP into fine dust and outpaces bzip2 significantly. For the 1998 CIA World Fact Book, ZIP compresses the 3.31MB file to 29.9% of its original size. bzip2 compresses it to 19.8% of its original size, and bwtzip achieves 17.0%. Hence, bwtzip produces a compressed file 437 KB smaller than ZIP and 93 KB smaller than bzip2!

* Nothing mysterious going on here. The SRLE algorithm just sucked for bwtzip.

8/20/2002 - Updated the fourth Northwood wallpaper. Now, the Northwood logo's color gradient is a reverse of the background. I think this looks much better.

My apologies for the lack of updates recently. I have been finishing up my Summer Undergraduate Research Fellowship while at the same time trying to pack up the contents of my entire room. Since when I moved to Caltech I brought an entire U-Haul trailer with me (full of books, naturally), it's a lot of stuff. Sigh.

Updates you can expect in September:

8/16/2002 - Yesterday I went through and spruced up my bwtzip code. My Huffman and arithmetic encoding routines are prettier now. Before, they used to do a lot of bit twiddling. Now, they work with linked lists of bits, and the simplification makes it harder for bugs to lurk in the code. The bit twiddling in the Huffman routines, which I wrote months ago, was all my fault. However, the arithmetic routines started life as code in a 1987 article. They were then transformed into object-oriented C code by Fred Wheeler, and finally into object-oriented C++ code by me. Before yesterday, they used to use little-endian encoding - bletcherous! Fortunately, I do not have to worry about a bwtzip userbase, so I can make changes to the file format unimpeded.

In SURF-related news, I deabstracted bwtzip to gather realistic timings from it. That is to say, I rewrote all of the code to use raw pointers, instead of accessing memory through bounds-checking objects. (A function call with several conditional tests for every array dereference - yeah!) All the algorithms are relatively blazingly fast, except for suffix array sorting, which I already knew to be dog-slow. Now I know exactly how much of its dog-slowness was due to my abstraction, and how much is inherent in the algorithm. The unabstracted version works at about 1/30 MB/sec on my machine; abstraction imposes approximately a 2x performance penalty.

It's been a long time since I worked with "real" memory and pointers, and the experience was rather unpleasant. I like coding in my little world of abstraction. :-> (The original, abstracted, pretty bwtzip codebase remains; the unabstracted version is a one-time offshoot of the main code branch. I do not expect to work on it significantly ever again.)

I have not spruced up the suffix tree code, which if you will recall is the linear time sorting function that I have in bwtzip. It continues to work at about 1/6 MB/sec on my machine, in addition to gobbling up tremendous amounts of memory (tremendous, but fairly acceptable). Much work remains to be done in that area, though it will have to wait until after my SURF ends.

8/13/2002 - Programming is everything: the greatest of joys, the deepest of sorrows. Nothing quite compares to the feeling of having written code that works. It's a nice plus if it's useful, or elegant, or fast - but it's got to work first. When you write correct code, you have successfully triumphed against that greatest of foes, Complexity. You have captured the operation of the system in your own mind in every detail and you have attained complete understanding. And nothing quite compares to the feeling of having written broken code. Your stupid primate brain had too much trouble remembering more than seven things at a time, and thus you lack complete understanding. Sometimes it's possible to blame circumstances - the compiler wasn't smart enough, the system is flaky, etc - but most of the time, the only thing you can blame is your own mind. And that sucks.

Currently I am happy, since my streaming arithmetic coder now works. :->

8/12/2002 - I have reorganized the Links page.

8/10/2002 - Added a couple of quotations to the Collection. One is a particularly insightful comment from Rob Pike about computers and imagination.

Here's a quotation I will not be adding to the Collection anytime soon. As you may have noticed, most of the authors of quotes in the Collection are good people. Interesting people whom I respect or somehow admire. I also have some quotations from very bad people - there's a rather vile one from a racist whose meaning is entirely the opposite of what he intended, and there's one in there from Hitler. However, I do not add stupid quotations (unless they're somehow funny), and I stumbled across a particularly horrifying one in my search for the two good ones I just added. It goes:

"In the first stage of operating system socialism, I know, there must be competition among corporate bodies, with each subscribing to the same overall philosophy and yet each seeking to twist the nascent state to its advantage. In the second stage, however, the Stalins will take over from the Lenins - that is, the theoreticians will give way to thoroughgoing non-purists who will compromise with the Devil if that's what it takes to succeed" - Ray Woodcock, "Is Linux for Crazies?"
Ray Woodcock is probably not a particularly evil man. However, he is a particularly stupid man. I realize quite well what he was trying to say - he trips all over himself trying to clarify it, anyways. He misses the point - you just don't say such things in the first place! I'm sure he really believed what he said, and all that. He's just a damn fool. Why is that, you ask? Stalin was the second greatest monster of the twentieth century, and probably the second greatest monster of all time. He murdered millions in his paranoia, his incompetency, and his cruelty. That's not one million, or two million, it is something on the order of twenty million people, and that's where the conservative estimates begin. Calling Stalin anything but a mass murderer is a minor atrocity in and of itself. Secondly, Lenin was not some pure academician corruputed by Stalin. Lenin showed no signs of being any better than Stalin. We simply never got the chance to see just how bad Lenin would have been. (Probably, he wouldn't have been quite so ruthlessly competent at evil as Stalin was, but you never know.) One can call Marx and Engels [severely deluded] theoreticians, that's fine - Marx and Engels never killed anyone. In fact, they both were dead by the beginning of the twentieth century. But to trivialize and ignore Lenin's and Stalin's crimes in the manner that Woodcock does is insanity itself.

The other reason why this quotation is so remarkably stupid is that it compares a possible ascendancy of Linux to the October Revolution. That's not something you want to be doing.

"All revolutions are bloody. The October Revolution was bloodless, but it was only the beginning" - Dmitri Volkogonov, Trotsky

8/9/2002 - Why are some people idiots? I specifically refer to the practice of claiming that hardware will be "too fast". Oh no, the idiots say, processors are too fast. Who needs the speed of a 3.2GHz 0.09 Prescott Pentium 4 with Hyperthreading and 1MB L2 cache just to check E-mail and write Word documents? Oh no, the idiots say, video cards are too fast. Who needs an NV30 when a GF4 Ti 4600 will run Doom 3 just fine?

The truth of the matter is that computers can never be too fast. You can never have enough speed, enough fill rate, enough bandwidth. These improvements - Prescotts and NV30s, oh my - can't get here fast enough.

Also, Doom 3 is lame. Why do people have this fascination with Doom? I grew up playing Wolfenstein 3D. Doom is a Wolf3D clone. Yet people talk about Doom like it transmutes lead into gold, and conveniently seem to forget Wolfenstein 3D. What's worse, people talk about Doom 3 like it's a limitless source of energy, when in fact it will suck. The future is Deus Ex 2.

Oh, and Halo 2. Halo 2. I need to buy a DeLorean and travel to December 2003.

8/8/2002 - Yay! I installed the Nvidia 30.82 Detonators and I can now run 1600x1200x32@100Hz! Whee!

8/6/2002 - I have revised my "The Author" section and put it back on the Index & Plan. Also, on several pages I have made the Jump To links more efficient and standardized.

Today, I discovered that my Sony CPD-G520P monitor remembers the settings for each individual resolution. Thus, I can correctly configure the monitor for 1600x1200 and 1152x864, and the settings won't interfere with each other. Joy! I don't think my old 19" Trinitron was capable of this, and I wasn't even aware it was possible until I saw the options "Reset current mode" and "Reset all modes", which got me thinking.

8/5/2002 - I have created a fourth Northwood wallpaper:

Preview of Northwood wallpaper v4.0 Center of Northwood wallpaper v4.0

8/4/2002 - I'm just a big ball of annoyance today. Today's first thing that annoys me is a phrase I have repeatedly run into while reading Clancy novels: "an historian". "Historian" starts with a consonant. The phrase is properly "a historian". "An hour" and "an herb", fine, but "a historian".

The second thing that annoys me is the Free Software Foundation. They use the ambiguous and confusing term "free software", claiming that there are no alternatives. This is wrong! There is an alternative, one which is superior in every way: "freedom software". Maybe all the people at the FSF grew up speaking Russian, or something (in which nouns can not be used as adjectives), but in our glorious language, nouns can be used as adjectives every day of the week, and twice on Wednesdays. We speak of "freedom fighters", why not "freedom software"?

The third thing that annoys me is political. Conservatives are so annoying. Especially the conservative bias that showed up in The Bear and the Dragon by Tom Clancy and especially in his Executive Orders. I like reading about an alternate universe or future which isn't a New Dark Age. Having the Supreme Court annihilated by a jet crash, only to have nine conservative justices in their 40s and 50s appointed by a new President, is my idea of a New Dark Age.

The fourth and fifth things that annoy me are the RIAA and MPAA. They do not make life easy. Trying to design a file sharing network that is not only distributed but resistant to an external attacker is not an easy mental exercise.

The sixth and seventh things that annoy me are ATI and AMD. Why don't they just give up? The Northwood, the Prescott, and the NV30 are annihilating/will annihilate them anyways. One thing that does not annoy me is Matrox - their Parhelia is, as I had always said, a complete joke, and hence not an issue capable of annoying me.

The eighth thing that annoys me is Caltech ITS, which in its infinite wisdom has decided not to lay Ethernet cable to all of the apartments that students can be crammed into. God and 802.11b willing, I will fix this with my own two hands.

The ninth thing that annoys me is also Caltech ITS, which in its infinite vision destroys the accounts of anyone who graduates from Caltech. Grr! I like the URL a lot. (No, I am not graduating any time soon, but unlike most teenagers, I am capable of looking a couple of years into the future, and not liking what I see there at all.)

The tenth thing that annoys me is people who are incapable of writing with proper spelling or grammar. Chief among them is the abomination "alot", not to mention "u" or "sup".

The eleventh thing that annoys me is, which is once again taken. Grr!

The twelfth thing that annoys me is Congress. Aside from relaxing encryption export regulations, they haven't done anything especially nice lately. They're all still on my first enemies list for cancelling the Superconducting Super Collider.

The thirteenth thing that annoys me is books, movies, and television. But first: Warning! Massive spoilers for T2: Infiltrator and T2: Rising Storm by S.M. Stirling, The Patriot (with Mel Gibson), Impostor (with Gary Sinise), Saving Private Ryan, Full Metal Panic, and RahXephon follow. Select the blue text with your mouse at your own peril.

I am really quite annoyed with books, movies, and television. Specifically, their practice of making characters we care about and then savagely killing them.

Example the first: The Patriot. We're introduced to Gabriel Martin's girlfriend and then wife, Anne Howard. She's beautiful and very nice, and Benjamin Martin gives her a necklace that his deceased wife wore, a metal star. All is well. Then the British come, lock Anne and dozens of other people in a church, and set the church on fire. We the audience, of course, expect that they will find some way to escape the inferno, or that the cavalry will come to the rescue just in time. But this is not to be! Instead, Anne dies horribly, and all that's left is a charred metal star. That wasn't very nice at all!

Example the second: RahXephon, episode 19, if I recall correctly. We've been introduced to Asahina, one of Ayato's classmates in Tokyo. He manages to get her out of Tokyo Jupiter, and all is well. Then, to save Asahina, Ayato uses RahXephon to fight and destroy a Dolem. What he doesn't know is that Asahina (a Mulian) is linked to the Dolem, and in destroying the Dolem he destroys Asahina. That wasn't very nice at all!

Example the third, and the worst yet. In T2: Infiltrator by S.M. Stirling, Skynet sent an Infiltrator back in time to after the events of T2: Judgment Day. This Infiltrator is human, with internal cybernetic implants. Thus, the Infilitrator more resembles a human than the Terminators do. John and Sarah Connor, along with Dieter von Rossbach (an antiterrorist agent whose likeness is later used by Skynet as the model for the Uncle Bob series of Terminators - i.e. Dieter looks like Arnold Schwarzenegger), at great cost manage to destroy the Infiltrator. What they don't know is that the Infilitrator had created a couple of clones of herself, and these clones are activated in the sequel, T2: Rising Storm. John gets the idea that time seems to want to keep the original events intact: thus, it is very hard to prevent Skynet from becoming self-aware, but it is also very hard to destroy the Connors themselves. So, why not co-opt the process? He gets the help of an MIT student, Wendy Dorset, to craft Skynet's sentience routines. Then, Wendy writes code that will identify any path of execution leading to sentience and prevent it from running. The resulting code will still be able to control missile production and all that, it just can't become self-aware and hence a threat to the human race. Unfortunately, after they load the sentience routines but before they load the anti-sentience routines, Wendy is attacked by the Infiltrator, and she's no match for the cybernetically augmented killing machine. Her neck is horribly crushed, and the anti-sentience disk is destroyed. Thus, in addition to killing a character the audience likes, Skynet also becomes self-aware! And that's enough to ruin anyone's day.

Now, I'm not saying I'm against character death in general. Sometimes it isn't done gratuitously, just to piss the audience off. In Impostor, both Spencer and Maya Olham have been killed by aliens, Maya's replicant is shot, and Spencer's replicant manages to explode and kill people in a wide radius. But that's okay, it doesn't evoke feelings of horror (and hence anger) in me. Likewise, in Saving Private Ryan, we get to know Captain John Miller (Tom Hanks), a former schoolteacher, pretty well. We like him. He dies near the end, of course, and tells Private Ryan to make something of himself, to be a good man. This isn't a very happy moment. I damn near come close to crying every time I see the conclusion. But it's not gratuitous, it's the whole point of the film.

Maybe I'm just against books, movies, and television killing cute women. Then again, there's nothing that says they have to. Near the end of Full Metal Panic, I was on the edge of my seat, hoping that Theresa Testarossa (my favorite character in FMP) would survive. Happily, she DID survive. That's what I call good storytelling. Had Theresa died, I would have been seriously horrified and pissed off. The point of entertainment is not necessarily to evoke negative emotion in the audience, it's to be interesting and/or fun to watch. Character death can move the plot along, I just don't like it when it happens for no good reason. (And no, the fact that it happens for no good reason in real life is not an excuse. Entertainment is supposed to be an escape from real life, even "realistic" entertainment like 24 or Behind Enemy Lines.)

8/2/2002 - I plan to overhaul the bwtzip page this weekend. bwtzip is achieving significantly better compression than bzip2, and its speed is finally becoming acceptable. It's definitely not suitable for memory-limited systems, but it's not like I care anyways.

RAR can bite my shiny metal ass. Sure, it seems to achieve better compression than bzip2 (I think it does this via Prediction by Partial Matching, everyone's favorite badass compression algorithm), but RAR's algorithm is SECRET. That's even worse than a patented but openly known algorithm. I'd rather use Huffman encoding than a secret algorithm.

Sighted on a forum today:
While making GIFs and gunning down people from a clock tower ARE closely
related, there is a difference if you look closely enough. For example,
there is no patent on gunning down people from a clock tower.
That was me, of course.

Yesterday I learned from going to the bookstore (though I could have just read the Asimov FAQ again) the true cause of Isaac Asimov's death. In December 1983, he a triple bypass operation, and he died on April 6, 1992 of heart and kidney failure. What wasn't known to the public until March 2002 is that the ten year span between the two dates was not coincidental. Asimov actually contracted HIV from tainted blood that was transfused into him during his operation. (In the early 1980s, blood was not screened for HIV, and many people, particularly hemophiliacs, contracted HIV from the blood supply.) It then remained dormant for a decade, as HIV is wont to do, until it came back with a vengeance shortly after he completed Forward the Foundation. It's a pity that such a great man had to die from such a horrible failure of the medical system. He probably could have easily survived into the twenty-first century, which he always wanted to see, had he not been felled by a little virus. Janet Jeppson, Asimov's second wife, was probably right to keep the true cause of his death secret until now. In the late 1980s and the early 1990s there was a horrible stigma against those infected with HIV, even if it wasn't their fault at all.

7/30/2002 - Updated the Comments section on the Index page, and slightly rearranged the large Site Directory.

The Archived News page is just about 300 KB right now. Unbelievable.

7/29/2002 - So, I saw K-19: The Widowmaker yesterday. I thought it was a good movie. There were only two minor problems with it, though. First, and minor, is that the gulags were emptied after the Stalinist era. They continued to exist, but nowhere near the horrific level that they achieved under Stalin, and did not imprison nearly so many people. Thus, while it was reasonable for a film set in 1961 to have a character say that his father was put into the gulags, it was probably not reasonable to say that the character himself faced that danger. Second, and much more serious, is a total lapse in realism when it comes to nucleics. So the characters in K-19 say, if a nuclear fission reactor loses coolant and overheats, it will eventually melt down and destroy itself along with everyone else (correct) and also create a thermonuclear explosion (incorrect) which could yield 1.4 megatons (incorrect) and be mistaken for a bomb, thus instigating World War III (incorrect). Not to mention that it could also detonate the thermonuclear warheads already on the ship (incorrect). These are not minor errors, they are rather central to the plot and rather glaring, if you know the first thing about nucleics. Even a drunken reactor engineer would know that a fission reactor is not capable of starting anything thermonuclear.

If you don't know the first thing about nucleics, though, then you're probably confused. Nuclear fission can be most easily be understood from a mechanical perspective. If you gather the right material - Uranium - and correctly process it, producing Uranium with a high concentration of the Uranium-235 isotope, then you have achieved the first step. If you fashion the Uranium into fuel rods, you get objects which get hot of their own accord. Put them close to each other in the right manner and they will become incredibly hot, liberating enormous quantities of energy. All you do is remove the heat and use it to power something; this process is no more conceptually complicated than burning coal and using the liberated chemical energy for power. You can control the energy the fuel rods release with moderators, which are rods made of another material. Move the moderator rods in appropriately, keep everything cooled, and you have yourself a little nuclear reactor. Now, if you let things get too hot, well, they get too hot, and the reactor will proceed out of control, merrily liberating fantastic amounts of energy and melting itself and its containment vessel. Now you have yourself a meltdown, and this is where people die horrible deaths. It used to be said that a reactor would melt its way all the way down to China, thus producing the "China Syndrome". (That's incredibly wrong for a number of blatant reasons, but the phrase remains with us.) Now, a meltdown is a horrible nuclear catastrophe, and one has happened at Chernobyl due to incompetent reactor design, maintenance, and operation.

Alternatively, you can gather up Uranium-235, and fashion it into a giant bullet and three large rings. You then stick the bullet into a cannon, and launch it into the rings at a sufficiently high velocity. This setup is dead simple, and 1940s technology was so up to the task that the designers didn't even feel the need to test the thing. If you launch the uranium bullet into the uranium rings, things get incredibly hot incredibly fast, and you have in your hands an atomic bomb explosion. Little Boy detonated because a lump of Uranium-235 was formed for a fraction of a second, and it just got incredibly hot incredibly fast. Now, if you are somewhat more clever, you can produce Plutonium-239 (this is achieved by running a Uranium reactor, and then chemically separating out the Plutonium produced, which is not nearly as difficult as separating Uranium isotopes). You can't pull off the giant-cannon approach with Plutonium, though. Rather, you set up a sphere of the material, though not large enough so that it explodes on you. In the center you stick various materials of a highly classified nature. Then you pack the sphere in high explosives which are carefully configured to produce an imploding spherical shock wave. Then you ingite the explosives. The shock wave compresses the Plutonium into a tiny ball of incredible density, and once again it gets incredibly hot incredibly fast, and then people die.

However, none of these are thermonuclear processes. Thermonuclear doesn't just mean "badass", or "really hot", or anything of the sort. It has a separate meaning from "atomic" or "nuclear". Nuclear fission reactors work by arranging material carefully and using the heat liberated. Atomic bombs work by arranging material carefully for a fraction of a second, during which time it will liberate incredible heat before it blows itself apart (and that is when the reaction stops). They both work by splitting large nuclei into smaller nuclei, and taking advantage of an interesting phenomenon called the "mass defect". There is another way to exploit the mass defect, however, and it is the method which powers the Sun and hence the Earth and everything that lives and happens on it. If you combine small nuclei into larger nuclei, you can liberate heat. This is nuclear fusion. Nuclear fusion does not happen of its own accord if you leave material sitting out, even if it is arranged in a certain manner or if it is highly compressed. Nuclear fusion requires incredible, fantastic heat - heat which will overcome to strength of the electromagnetic force, which is one bad dude you would be scared to meet in a dark alley. In fact, it requires the heat of an atomic (fission) bomb. Once you have this heat, nuclei will begin fusing of their own accord. Furthermore, they liberate so much energy in the process that neigboring nuclei will also fuse. The reaction propagates of its own will. Unlike nuclear fission, which is a chain reaction, nuclear fusion is a reaction akin to burning. Indeed, we speak of burning in the nuclear sense as well. If you light a piece of paper on fire, the fire will consume all of the paper, no matter how large it is (and your house too, if you give it half a chance). If you light a tank of liquid deuterium (Hydrogen-2) on thermonuclear fire, it will begin "burning" (fusing) of its own accord too, until all of the deuterium has been used. There is an upper limit to the magnitude of a fission explosion, but there is no easy upper limit to the magnitude of a thermonuclear fusion explosion. The first thermonuclear weapon tested, Mike, was a cryogenic liquid deuterium device which yielded energy equivalent to 10 megatons of TNT. It vaporized an entire island, one which is not found on maps anymore.

This is why K-19 is wrong. Its writers forgot the distinction between nuclear fission and thermonuclear fusion. A reactor meltdown can not ignite any thermonuclear reactions. It gets hot, but not as hot as an atomic bomb. It can not explode like a bomb, much less yield 1.4 megatons. It can not be mistaken for a bomb - when Chernobyl happened, Europe and America quickly realized that not all was well in the Union of Soviet Socialist Republics (especially when isotopes began blowing over Europe), but we did not think that a bomb went off. Furthermore, a meltdown in a submarine nuclear reactor could not ignite any thermonuclear weapons carried on board. At the worst, the high explosives surrounding a plutonium sphere could be ignited in the usual way, but it certainly would not happen with the precise timing needed to start a chain reaction - all that would happen would be an unbalanced explosion that would scatter plutonium everywhere. Not like you'd care, since you already have a reactor meltdown.

(I am feeling rather generous, so I will let you in on one of the cute references I have scattered into my writing here. My usage of the word "nucleics" is not common, and if you look it up in the OED you will only find "nucleic" as in "nucleic acid". However, it is a word, and a very good one too. It was used by Isaac Asimov in the Foundation series, in fact. I use it to refer to anything nuclear. Asimov invented the word "robotics" too, so this is just walking through established territory.)

7/27/2002 - I have updated Essay 4 to correct an error and to include instructions for getting DJGPP.

7/23/2002 - Added another Weasel Commando today.

7/22/2002 - Restructured my personal page. I haven't added new significant sections, but I have gone through and edited minor things here and there, and I have totally revamped the jump-to section at the top.

My apologies, but I didn't get around to working on the bwtzip page this weekend. The codebase is again moving so rapidly that documenting it right now would be a worthless exercise. I will significantly expand on the page next weekend, or perhaps during this week.

This has nothing to do with the lack of updates to the bwtzip page - no, really... my liege.

Additionally, Stargate SG-1 606 Abyss was excellent. Chobits episodes 15 and 16 have finally picked up the pace - if this continues, I will have to update the Anime/SF Reviews page with an improved opinion of the series. Surprisingly, RahXephon episode 18 was also very interesting. And, I have hoovered through not one, not two, but three Clancy novels so far - The Sum Of All Fears, Debt Of Honor, and The Bear And The Dragon - that's a combined total of 3000 pages in what I guess has been two or three weeks, which is unusual even for me. (It's only because it's been so long since I've done so much reading, outside of technical papers - shame on me, I know.) So I need to burn through a few more novels. They have all been fine and dandy so far. My one problem with them, of course, is that Clancy's conservative, pro-life bias shines through in The Bear and the Dragon when he had kept it so skillfully concealed in the other novels - nevertheless, one of the characters calls such beliefs worthy of a Neanderthal, and that pleases me sufficiently. Because it's true. Continuing on my Clancy kick I have also watched Patriot Games, which I had never seen before.

7/21/2002 - Added Essay #6: Bits & Bytes. It's a not-too-technical explanation of some basic things about computers.

7/20/2002 - Today I read a review by Paul Clinton of the movie K-19: The Widowmaker. It was a nice review (I haven't seen the movie yet), but there was one teensy problem. He says:

"K-19: The Widowmaker" is a great yarn, albeit one that makes the Soviet government at a Cold War peak look like a monolithic red-tape nightmare. But aside from those blatant bureaucratic stereotypes (usually it's the U.S. government that's made to look idiotic)....
I don't think this guy was trying to be funny. I think he's just an idiot.

(The problem, of course, is that the Soviet government was a monolithic red-tape nightmare.)

7/19/2002 - Updated the Anime/SF Reviews; now, the sorted summary table with one-sentence reviews now has links to the full reviews. Also, I changed the ALT text on the stars; instead of saying "6 Stars", now it says "GOOD", and so forth. (To see ALT text, hover your mouse over the images.)

I have working suffix tree code now! True linear time Burrows-Wheeler Transformation, baby. There's just one teensy problem... when compressing a 50KB file, it consumes 500MB of temporary space. That's right, 10,000 bytes of RAM needed for every input byte. I am working on this, heh.

7/16/2002 - Mmm, Star Trek. Do you know about the Law of Evens? Simply put, it states that even-numbered Star Trek films rule, and odd-numbered Star Trek films suck.

Updated my desktop screenshot, since I now run 1600x1200.

Coming this weekend: a new essay, and a restructuring of the personal page.

7/15/2002 - Updated the Northwood wallpaper section with unresized previews of the center of each wallpaper.

7/13/2002 - I have updated the Anime/SF Reviews with a full review of Geneshaft. I have also updated the RahXephon, Chobits, and Hack Sign reviews (expanding on why they are all moving so slowly) and have added a review of The Sum of All Fears by Tom Clancy.

It's spring cleaning time! Or summer cleaning. Whatever. Going against my usual policy of never removing pages, I have deleted the GIMPS Banner Gallery, the DOUBLE V Page, and the Avatar Gallery. The first was incredibly, incredibly stale and dated. The second was also incredibly stale. The third I simply didn't like enough, and it was taking up too much space. (I still have a quota to worry about, and 1600x1200 wallpapers don't make it any easier.)

7/12/2002 - Updated the Downloads page heavily. There is now a new, with newer (non-broken) versions of the programs, as well as bmp2png and png2bmp. Also, in celebration of my new monitor, I have created a third Northwood wallpaper:

Preview of Northwood wallpaper v3.0

7/11/2002 - My Sony CPD-G520P arrived in the mail today. I want it to have my children. It does 1280x960x32 @ 120Hz, or 1600x1200x32 @ 85Hz. And it's completely flat.

Updated the bwtzip page, expanding on its time complexity.

In celebration of my new monitor, I have updated the Northwood wallpapers to their full 1600x1200 glory. See them on the Downloads page. has been revamped by my own hand, though as of yet there is no content on it.

Before I delve into why I haven't been updating the site recently, I'd like to apologize for the technical, advanced turn that things have been taking recently. When I started the site, I was fresh out of high school, and wrote things directed at a level slightly less advanced than my own. Granted, I wasn't stupid two years ago; it's merely relative. As I have completed half of my Caltech education, my knowledge and experience have expanded considerably. Things which I once found near impossible I now find trivial. And, as a result, I have been writing my website at a more and more advanced audience. I hope that in the intervening years you too have become more advanced, but I also fear that I am losing some people. Therefore, while I will still bust out a technical description of my work in the next paragraph, I also resolve to write an essay directed at a nontechnical audience soon. I think it will be on bits and bytes. Anyways, here goes.

Here's today's interesting bwtzip-related discovery. In Burrows-Wheeler compression, Phil Norman's Switched-RLE is in fact a horrible pessimization. Today I finished implementing in C++ a complete suite of RLE algorithms. Phil Norman developed the Switched-RLE algorithm, which I abbreviate SRLE. I have implemented that, as well as my own enhanced SRLE-0 tuned for Burrows-Wheeler compression, and my super-enhanced SRLE-0-A. I have had SRLE-0 and 0-A working for a while, and today I implemented SRLE. I thought that it would be marginally worse than my optimizations, but in fact I was dead wrong. I took the Jargon File 4.3.1 in flat HTML form, which is 2,314,778 bytes, and compressed it using my straight up Burrows-Wheeler transformation, followed by Move-to-Front (or Balkenhol and Shtarkov's Move-to-Front 2) then a Run Length Encoder stage, and finally adaptive arithmetic compression. Here are the sizes I got:


As you can see, SRLE increases filesize regardless of whether MTF or MTF-2 is used. This means it's worse than useless. On the other hand, my SRLE-0 performs remarkably well, and SRLE-0-A just a little bit better. This is bad news for me, because for my summer research I have implemented SRLE for reconfigurable processors, thinking that it was almost as good as my SRLE-0-A. Now I know differently - I will have to implement SRLE-0-A for reconfigurable processors.

In more happy news, I discovered an optimization that Fenwick had made to his arithmetic encoder, which makes it more adaptive. This optimization performs remarkably - its true performance wasn't clear to me until I tested it out on the Jargon File. I will call this optimization Arith+.


You can draw your own conclusions.

7/3/2002 - I updated the Computer page to reflect the fact that I've bought a new monitor for my Northy (it hasn't arrived yet, but it will soon). Northy's total cost is now $4890.47. Of course, one could build a better computer for less right now, but that would have been true no matter what spec I chose.

I heard about this hilarious conspiracy theory involving Moore's Law. So the story goes, Moore's Law is all a conspiracy. Why is that? Well, companies in the computer sector really are capable of outdoing Moore's Law any time they see fit. What they really have done is conspired to release products that only double their performance every 18 months, and therefore extract maximum profit out of consumers while impressing them with exponential increases in performance. If there were no conspiracy, we would be enjoying super-exponential performance gains. Heheheh. Deus Ex II needs to include this!

7/2/2002 - I updated the Links page and added VirtualDub and MetaPad, two of my favorite programs.

6/27/2002 - The coloring section, which started out on the Index page, and then was moved to the News page, now has its own page.

6/26/2002 - I added an in-depth explanation of why the BWT compresses, on the bwtzip page.

6/25/2002 - I revised the Anime/SF Reviews page, increasing my rating for Angelic Layer (to 7, or "best"), increasing my rating for Rurouni Kenshin (to 6), and decreasing my rating for Chobits to 5. RahXephon remains at a conditional 5. And Full Metal Panic is over, to my complete disappointment. Like Deus Ex, it's one of those things you never want to see end.

6/24/2002 - Finished a new colorized image.

6/23/2002 - I've updated the Links page a little, cleaning up the links to my friends' websites. I've also updated the recoded SHA-1 program. Now you can hash a whole directory of things, all at once, with sha1 *.* or other wildcards.

6/22/2002 - I have recoded my SHA-1 program in C++. This one essentially supersedes my original C version, which I wrote two years ago. It's faster (LOTS faster, not nearly as I/O bound as before) and works with arbitary-length files. I would like to hear if it disagrees on any file compared to the old version, or other SHA-1 hashing programs. The old version is still up. My thanks to Lapo Luchini, who commented on my original SHA-1 program and got me thinking about recoding it. I really like the cute way I handled message padding this time around.

I have fixed a small factual error on the Links page, thanks to Josh W.

6/21/2002 - At lab today, I dreamed up a new algorithm, which I call Switched-RLE-0, or SRLE0 for short. It's a post-second-stage step in the Burrows-Wheeler compressor. If you will recall (the most famous reindeer of all), Burrows-Wheeler compression is usually done in a three-step process. In the Bcell code, that now looks like:

BWT => MTF or MTF-2 => [SRLE0 optionally] => Huffman or Arithmetic coding

You should know all this if you've read the bwtzip home page. I've tested SRLE0 on the HTML for The Jargon File, and it successfully reverses itself, so I coded something right. It also improves compression DRAMATICALLY, and comes at nearly no performance cost. I ran final compressed size tests on various variants of my algorithm and compared it to ZIP and bzip2. Here's the breakdown:

AlgorithmSize (Bytes)% of Original

That's right - moving from Huffman to Arith netted me 75KB, and moving to MTF-2 got me 5KB, and adding in SRLE0 got me another 45KB. I now compress better than bzip2! Whee! (On this file, at least - bwtzip still performs inferiorly to bzip2 on other files. And the speed is still rather slow.)

What is Switched-RLE-0, you ask? First, let's start with Packbits, one of the standard forms of compression for TIFF. Packbits is a form of Run Length Encoding, which you might know about. Data compressed with packbits is stored in runs. Each run consists of a header byte which describes what kind of run it is and its length, and one or more trailer bytes which contain the actual data. In all cases, the header byte is split into two sections: its top bit describes whether it's a run of literal (uncompressed) characters or a run of all the same character, and the bottom 7 bits specify the length of the run. For a literal run, the bytes are sent in the clear. For a fill run, one byte is sent in the clear, which is then replicated as necessary. Obviously, the maximum length of any run is 127.

Now, Switched-RLE is an optimization of Packbits developed by Phil Norman. The main idea behind it is that a sane compressor will use runs as large as possible, to reduce the overhead of header bytes. Switched-RLE assumes that any run which is of the maximum length is followed by a run of the same type, and any run shorter than the maximum length is followed by a run of the other kind. That is to say, the type of a run is NOT encoded in the run itself. Both the compressor and the decompressor thus have a current state at any point in their operation: literal or fill. They both start in literal. When in the literal state, a run is started with a header byte, which describes the length of the run from 0-255 inclusive. Then it is followed by that many literal bytes. When in the fill state, a run is started with a header byte, which describes the length of the run from 0-255 inclusive. The run then consists of the LAST literal character output, and no other bytes are encoded after the header. If there are exactly 255 characters to encode in a certain mode, the next run will simply have length 0.

Now, when performing a BWT on data followed by MTF-2, massive runs of 0x00 bytes result. The file will usually be 60% to 90% zeroes! 0x01 is the second most common byte, with the other bytes decreasing monotonically in frequency. Runs of nonzero bytes are extremely rare, rarer than you'd expect even given the very biased frequencies (for slightly detailed reasons). Thus, I invented an optimization of Switched-RLE which I call Switched-RLE-0.

SRLE0 operates identically to SRLE, except for one thing: runs always consist of 0. This means that the 0 does not have to be stored as the last character of a literal run (indeed, 0 should never be observed at the end of a literal run except in one case). Furthermore, lone 0 bytes are simply encoded literally, but runs of two 0 bytes are encoded as such.

I haven't tested how SRLE0 performs wrt SRLE, but I might.

Oh, and today I went and saw Minority Report (good movie) and met Tom Knight. He's very cool.

6/20/2002 - Busy busy busy! Real research is fun... if you can get the compiler working...

As you might be able to tell from looking at the Archived News page, at any given time I have several things planned to do. I'd estimate that I get about 80% of them done, eventually. If you read the news chronologically (starting at the bottom of the page), you can see this for yourself. Things in the past that I planned and later successfully finished include: redoing the Paper Airplane images, writing pngacc (even though it's broken), Northwood, the Random Work page, bwtzip, etc. Probably the biggest one that I planned for and worked on the longest is this website itself. Then there are the things that I just never got around to, or became irrelevant in the process. There actually aren't too many of those. Anyways, the RPG is still solidly in the bin of things I am eventually going to do. Never fear.

6/17/2002 - I added a lengthy (15KB) description of Huffman encoding to the bwtzip page.

6/15/2002 - The Mcell page has been changed to the bwtzip home page, and descriptions of the BWT algorithm are provided there. It's fun, I assure you.

6/13/2002 - Want to back up DVDs without interlacing?

I assume a minimum level of competency; don't ask me where to find these programs.

First, install an MP3 codec, DivX 4.12, SmartRipper 2.25, VirtualDub 1.4.10, DVD2AVI v1.76+, and VFAPI v1.04 beta.

Insert the DVD into your drive and start up SmartRipper. Go to Settings, and configure it thusly: File Splitting: Max Filesize, Max Filesize 3900 MB. Then, on the Stream Processing Tab, select only the first two streams, which should be the Video stream and the English Audio stream. The movie itself should be automagically selected on the Input tab. Select an appropriate target, and rip the movie by hitting Start. This will take all of 10 minutes or so. Close SmartRipper.

Start DVD2AVI and File > Open the VOB or VOBs you just created. DVD2AVI should automatically select all the VOBs in the correct order, so hit OK. Select Video > Field Operation > Forced FILM. Now, File > Save Project and create DVDName.d2v. This will take a couple of minutes, as DVD2AVI creates a gigabyte WAV from the multichannel audio in the DVD. Close DVD2AVI.

Start VFAPI and Add Job the DVDName.d2v you created. Click OK, then Convert, then Exit. This is instantaneous. Close VFAPI.

Start VirtualDub. File > Open the AVI that VFAPI created. (Steps 2 and 3 did magic trickery that allows VirtualDub to read VOBs - note that you can play the DVD in VirtualDub now.) Look through the file.
If there is any interlacing, you will need to delete the .d2v and .avi, go back to step 2, and use Video > Field Operation > None, and in step 5 you will need to do Video > Frame Rate > Inverse Telecine > Adaptive.
If there is no interlacing, do not enable VirtualDub's inverse telecine - the Forced FILM in step 2 fixed the interlacing already.

Audio > Full Processing. Audio > WAV Audio, then select the WAV that step 2 created. Audio > Conversion, then 44.1kHz, High Quality, 16-bit, Stereo. Audio > Compression > MP3 > 128kbps, 44.1kHz, stereo. The video may be stretched - apply a bicubic resize filter to fix this. (I won't explain that.) You may also need to crop off black edges. Video > Compression > DivX 4.12 > 2-pass/first pass, Maximum Key Frame Interval 24 Frames, Maximum Default Postprocessing Level, 0 Frame Dropping. Select an appropriate bitrate. (File > File Information will tell you the length of the file; calculate how high the video bitrate must be to create a 650, 700, 1400, whatever MB file. Remember that audio takes an additional 128kbps. I won't explain this either.) File > Save as AVI > DVDName1.avi AND Add Operation To Job List. Now change the compression to 2-pass/second pass, changing nothing else, and File > Save as AVI > DVDName2.avi AND Add Operation To Job List. File > Job Control > Start.

6/7/2002 - Today on "I Did This, Part III", I completed another colorization. See the Coloring Page.

6/3/2002 - The Northwood font is the exact same font used on the cover of Short Circuit. No wonder I liked it so much.

6/2/2002 - Happy birthday to me: today I turned 19 years old. In fact, the birthday of this web site is fast approaching and will be here in three days. Can you believe that almost two years ago I started the site as one page of quotes and now it has expanded to twenty-seven distinct pages? Let's see how things look when I turn 20 and the site turns 3.

5/30/2002 - Updated the Anime/SF reviews page, adding in a few more pictures for FMP, summaries of the ratings, and reviews of Vandread and Hoshi no Koe.

Updated the Downloads page with a new Everything is now compiled by me using gcc 3.1 and my maximum optimization switches, as well as being packed with UPX.

Compiling the programs was remarkably easy this time around - it made me realize how much I've learned about programming in the last couple of years.

So, I was working on Caltech CS11: Programming Workshop: C++ Track Lab 5, implementing a SparseMatrix class. At first, I created a flat list of nodes with row, column, and data fields, and traversed it rather lazily. This led to my code taking 10 minutes on my Northy to complete. This was too damn slow. So, I went and sped it up by removing some unnecessary code, which sped it up 10x. However, it still took a minute to complete, which was again too slow. I deleted all of my code and tried to create a sparse vector of SparseVectors, but that failed because I had two different types of lists at the same time and had trouble keeping them separate.

So, finally, I'm sitting around bored in class and come up with a Great Plan: to make a list-of-lists data structure from scratch and traverse it myself. I quickly coded up everything - and it just DOES NOT WORK. I traced the bug to my function insert_data(), but just couldn't figure out where it is.

Here's the class and node struct which I use:
class List {

    struct node {
        int     index;  // Either a row or a column
        int     data;
        node *  up;
        node *  down;
        node *  left;
        node *  right;

        // Constructor
        node(int index, int data, node *up, node *down, node *left, node *right)
            : index(index), data(data), up(up), down(down), left(left), right(right) {}

    node * head;
    // Etc
The data structure which I misleadingly call a List is really a list of lists. There is a doubly linked vertical list of "trunk" nodes, which store row information and have pointers to the right which point to the row of data they store. Each row is a horizontal doubly linked list of "branch" nodes which store the column they represent as well as the data which they hold. No trunk node should ever have a null pointer to the right (othw. it should be deleted).

Here's the insert_data() function:

// Set location (r, c) to d
void List::insert_data(int r, int c, int d) {

    node * n = new node(c, d, NULL, NULL, NULL, NULL);

    node * trunk = head;

    while (trunk != NULL) {
        if (trunk->index == r) {
            node * branch = trunk->right;
            node * oldtemp = branch;

            while (branch != NULL) {
                if (branch->index == c) {    // Modify the data
                    if (d == 0) {

                        if (trunk->right == NULL) {

                    } else {
                        branch->data = d;
                } else if (branch->index > c) {

                    // Branch points at node H for higher
                    // Wanted ordering: L-> <-N-> <-H
                    // L definitely exists

                    branch->left->right = n;    // L->
                    n->left = branch->left;     // <-N
                    n->right = branch;          // N->
                    branch->left = n;           // <-H
                // Continue looking through the branch
                oldtemp = branch;
                branch = branch->right;

            // Have to add the node onto the end of the branch
            n->left = oldtemp;
            oldtemp->right = n;

        trunk = trunk->down;

    // The required row does not exist. Insert in sorted order.

    node * trunknode =  new node(r, 0, NULL, NULL, NULL, n);
    n->left = trunknode;

    // Just need to insert trunknode now

    if (head == NULL) {
        head = trunknode;

    trunk = head;
    node * oldtemp = trunk;

    while (trunk != NULL) {

        if (trunk->index > r) {
            // Trunk points at node H for higher
            // Wanted ordering: L-> <-N-> <-H

            if (trunk->up == NULL) {
                head = trunknode;
            } else {
                trunk->up->down = trunknode;    // L->
                trunknode->up = trunk->up;      // <-N

            trunknode->down = trunk;    // N->
            trunk->up = trunknode;      // <-H

        // Continue looking
        oldtemp = trunk;
        trunk = trunk->down;

    oldtemp->down = n; 
    n->up = oldtemp;   
Just lookit all that code. 100 lines of the stuff. So much logic that can go wrong. In the end, a single bug prevented its operation. Can you find it? (The answer is in the HTML source.)


5/29/2002 - Updated the Avatars page (now deceased).

5/27/2002 - Moved my colorized sketches to the bottom of the Index page. Also, I updated the detailed Site Directory on the Index page.

5/25/2002 - Reorganized the Site Directory and linked in the Mcell page. Updated the anime reviews page. I took down the HTML version of my Extended Essay and put up the original DOC file (the way it was meant to be viewed).

5/23/2002 - Documented Mcell code is now up here.

Today, on "I Did This, Part II", I finished my colorization of the Pirokomatic sketch. See the Coloring Page.

5/21/2002 - Okay, here's a cute little issue of the day. You know how some websites have fascist disclaimers that say "best viewed at 1024x768 or higher"? Well, I don't particularly care what resolution you view my website at, since it works with everything that anyone should be running. However, there is another issue: that of gamut. I run my computer with Digital Vibrance set to High. This is an option available on my GeForce 3 (that I didn't have with my TNT2 Ultra 32MB) that increases the vibrancy of colors displayed. It isn't a software setting, that is to say - it actually changes the light that comes out of the monitor. My wallpapers look really, really lousy on computers without Digital Vibrance set to High. They look very bland and gray. So, keep that in mind.

Documented Mcell C++ code may be in the future.

5/20/2002 - Bring back memories? It should.

Logging Out

5/19/2002 - Added a bzip2 executable to the Downloads page. It's been sped up by 20%.

Here, Stephan talks about what he's been doing the last week or so.

Data compression is an interesting field. It attempts to do what should be impossible, and succeeds spectacularly at it. That is to say, it is impossible to compress every file by even one byte; all compressors have to actually expand when given some types of inputs. However, people are usually interested in working with data that has a lot of order to it - for example, the regular structure of English text (there are a lot of letter E's in a typical passage of English, and few Z's), or the smoothly varying colors of an image. We generally don't read random gibberish or look at pictures filled with static. So, we design our compressors to work best on typical data, and we don't mind if they expand chunks of random data, since we have little reason to be working with random data in the first place.

A very simple method of compression is called Run Length Encoding. The premise is that if your data has a lot of repeated symbols in it, you can instead look for long runs of those symbols. Then you can replace them with one symbol and a count of how many times it should be repeated. For example, "DDDDDDQQQT44AAAAAAAA" might be compressed as "D6Q3T142A8". Of course, when working with data, our symbols are not A-Z and 0-9, but the 256 different kinds of bytes. Still, you get the picture. (Run Length Encoders typically use a special symbol to mark when a run occurs, and otherwise transmits the data in the clear, to help when no runs are encountered.)

Another method of compression is Huffman Encoding. The premise is that if some kinds of bytes occur more often than others, you can represent those bytes with only a couple of bits (remember, there are 8 bits to a byte). For example, instead of writing out 10001001 every time you encountered byte #137, you could instead represent it with the bits 01. We might represent byte #47, 00101111, with the bits 001. If byte #0, 00000000, occurs very rarely in your data, you could represent it with the bits 000000000000001. That's a lot of bits, but we won't have to use them very often. So, if we had the datastream [137][47][0][137][137][47][137], which would be represented in the clear as:
We could instead represent it as:
There are a few things to consider, of course - because we can no longer simply look at every chunk of 8 bits and determine what byte it encodes and instead we're using variable-length sequences of bits, we need to ensure that we can decode the compressed data uniquely. For example, if the code for byte #137 was 1, the code for byte #10 was 0, and the code for byte #15 was 10, if we were presented with the bitstream 010, we wouldn't know what it meant - does it mean 10, 137, 10, or 10, 15, or what? It turns out that we can make up sequences of bits which are uniquely decodable (by ensuring that no code is a prefix of any other code). Also, we need to somehow transmit to the decoder exactly what sequences of bits mean what. There are ways to do this. Unlike RLE, Huffman exploits the fact that in most data, the symbols do not occur with equal probabilities. When typing English text, I use the letter 'e' very frequently, but the symbol '!' not very often at all.

There are also "dictionary-based" compressors, such as the one found in PKZIP. It exploits the fact that sequences of data sometimes occur repeatedly. For example, I've had occasion to use the word 'the' many times. If I could represent that entire word with a single byte, that would be nice. Even better if I tend to use long words very often. This is the basis for the "LZ77" family of compressors, which date back to the 1970s.

In 1994, a revolutionary method of data compression was developed. Its operation is very simple, and it manages to outperform the compression ratios of all the popular algorithms, approaching the performance of the very best statistical compressors. You may be familiar with the Fast Fourier Transform. The FFT takes, for example, audio data (which is often represented as the amplitude of the audio varying with time) and transforms it so that it's in the "frequency domain" - that is, instead of looking like an oscilloscope, the data represents the strengths of different frequencies and how they change over time. A pure note in the amplitude domain is wiggling back and forth hundreds or thousands of times per second. A pure note in the frequency domain is captured by a list of frequencies which don't change. You can see this in Winamp - the oscilloscope visualization represents normal audio data, and the spectrum analyzer visualization represents the data after it's run through an FFT. There's a lesson here - sometimes, attacking a problem is easier after a transformation has been done. Modifying the pitch of an audio signal is hard, because it's wiggling every which way. But if we FFT the data, then all we have to do is multiply and divide a few frequencies, and then reverse the transformation - voila, we have a Winamp plugin that deepens or raises the pitch of the audio.

This 1994 algorithm for data compression works on the principle of using a transformation to make work easier. It's called the Burrows-Wheeler Transformation. When you apply it to data, it neither expands nor shrinks the size of the data, it merely changes it. You can losslessly reverse the process too. What's that good for?

There's another lossless transformation, called Move-to-Front. It's so simple that I can explain it completely. It works on a stream of bytes (remember, there are 256 different kinds of bytes). The algorithm remembers which bytes it's seen before, but doesn't know what's coming up next. If you give it a byte it's never seen before, it will output that very same byte. But if you give it something that it's seen before, it will output the number of distinct other bytes that it's seen since the last occurrence of that same byte. Thus, the bytestream [137][47][0][137][137][47][137] is transformed into [137][47][0][2][0][2][1]. We can reverse this transformation easily. This is a byte-for-byte transformation - like the Burrows-Wheeler Transformation, Move-to-Front neither expands nor contracts the size of the data.

Well, this is seeming more and more pointless. Why would we bother to do either of those? Well, here's the kicker - the Burrows-Wheeler transformation tends to produce data that has high concentrations of a few particular types of bytes in any given area. To give a short example, performing the BWT on my name, "STEPHANTLAVAVEJ", which if you will notice has no repeated letters, produces "HLVVTPETAEJSNAA". Notice the duplicated V's and A's. Imagine that being done on a lot of data - you'd see a lot of byte [31]'s all hanging together in the same area, perhaps mixed in with a few byte [42]'s. Later in the bytestream there might be a lot of byte [74]'s mixed in with [143]'s and [90]'s. There might be long runs of these bytes, but there aren't THAT many, so Run Length Encoders might not like it too much.

However, after performing the BWT on data, we can perform a Move-to-Front transformation! The MTF algorithm, when given such data, tends to output a LOT of 0's, 1's, and 2's. That is to say, the MTF algorithm will output low numbers whenever it sees a byte it's seen very recently. Since the BWT produces clusters of bytes that stick together, chances are any given byte is not far from its friends. Hence, running the BWT (lossless transformation) followed by the MTF (another lossless transformation) produces data rich in low-numbered bytes, with hardly any high-numbered bytes.

This is a perfect candidate for that "simplistic" compression algorithm, Huffman! The BWT-MTF-Huffman chain manages to produce superior compression to established algorithms like PKZIP.

And that, folks, is what I have just implemented from scratch in C++ this past week. Source code will be forthcoming once I optimize things.

5/18/2002 - Updated the anime reviews, adding star ratings. Also, I've reviewed Stephen Baxter's Voyage.

5/16/2002 - As Aaron Lee is taking down his Harvard server for the summer, the GeForce 3 images have been moved back onto the same server where the rest of the site is.

5/14/2002 - The anime and book reviews have been split off into a separate page.

You can blame my recent trend of sporadic updates on C++, which I've been immersing myself in in prepration for SCORE. I am going to have to substantially revise Essay 3, because I like C++ now.

5/11/2002 - Finished a second version of the Northwood wallpaper. It's on the Downloads Page.

5/10/2002 - Added the Avatars Page, which has 1.5MB of images on it. (Now deceased.)

4/29/2002 - The ITS quota has been increased to 60MB! Wheee!

4/28/2002 - Thinking about how to organize the Index page better.

4/27/2002 - Expanded on the anime reviews a bit.

4/22/2002 - The Links page has been updated; I've shuffled around the webcomics and updated my descriptions of them. I added 8-Bit Theater again, and changed the UPX URL.

4/21/2002 - Essay 2 has been updated and expanded (from 18KB to 30KB). All of the old content is still there, now with expanded discussions of digital video and the myriad uses of the Internet. My thanks go to Stephen Petraues, who encouraged me to update it. It was nearly a year old, in fact. I think this version is much better; its points are more precise and harder-hitting, my phrasing is improved, and I even nabbed two typos that slipped by me the first time around. Also, irrelevant comments about the state of technology a year ago have been snipped; it turns out that in 2002, everyone's computer is capable of playing highly compressed video, etc.

Completed a little more programming. See zlibtest on the Downloads page, though it will probably be of interest only to programmers. Interestingly, while writing the functions needed to create zlibtest, I ran into no errors other than the usual idiotic compile-time things. Whoo!

4/15/2002 - Stephan 1, Harvard 0.

I considered moving the large GF3 images to, but the Harvard server is back up.

4/14/2002 - Updated the Computer page, changing most of its phrasing because I've already built Northwood.

4/13/2002 - Organized the News page somewhat; now, all news posts have tags so they can be jumped to.

4/10/2002 - Finally updated the site with the anime reviews, RPG introduction, and class reviews, which are all on the Index page for now. Forgive me, but because the third term just started, the class reviews aren't finished yet, and the anime reviews are sketchy in places. And I changed the link color on the Index to red for no apparent reason whatsoever.

4/4/2002 - Today, on a whim, I wrote the introduction to the text-based RPG I someday hope to program. I think that it is suitably interesting, but I need to work on it some more. Maybe I'm wrong.

4/3/2002 - My application for a Summer Undergraduate Research Fellowship under Professor Andre DeHon was accepted!

Generally, I don't talk about my classes in the news posts because I don't think anyone cares about it, but I do know that I always enjoy reading about what Aaron and Uche are doing (they don't update their news pages nearly often enough, heh), so maybe I should join in on the fun. So, I added a section to the Personal Page detailing all the classes I've taken.

4/2/2002 - Updated the Personal Page with the classes I'm taking this term.

I may as well mention that yesterday (April 1, of all days) I was accepted as a Summer Undergraduate Research Fellowship (SURF) applicant, working to develop applications for reconfigurable processors; specifically, the Stream Computation Organized for Reconfigurable Execution (SCORE) computational model. No doubt I'll be mentioning this in my news posts later as I puzzle out how SCORE works. This means I'll be at Caltech over the summer working at my own computer, rather than going home to Colorado (i.e. not where my computer is). I am very excited about this, because it's my first chance at helping an actual ongoing research project. My mentor for this SURF is, you might guess, Professor Andre DeHon. I just wish I could go back in time and tell myself as a frosh all that's happened. I'd love to see the look on my face. Thanks to Andre's willingness to see past my empty ranting, I'll be molded into something resembling a computer scientist yet. I'm very happy. :->

I have also been accepted as a CS1 TA junior year.

3/29/2002 - Updated the Deus Ex Story page; I added the Troubleshooter and Shooter proposals, and I also organized things more effectively.

3/28/2002 - Still working on the DX Story page (big things are coming).

Today, on "I Did This", I finished my colorization of the Endgames sketch. See the Coloring Page.

3/25/2002 - Currently I'm preparing a lot of things to add to the DX page.

Changed all the BIG tags on the site to H3, so once again there is a unified visual look.

I finally updated part of the Archived News page, creating a new Pages section which describes the status (instead of the content like on the Index) of my pages. Of note is that I summarize which pages I'm working on and which I'm not working on. Also, I may as well point out that, analogous to the name and slogan of my current computer ('Northwood' / "When in doubt, use brute force"), I've picked out a name and slogan for my next computer: 'Reason' / "Ultima ratio regum". I have no spec in mind, and won't for a long time (not before senior year), but I've got the name down. ;-)

3/24/2002 - Changed the ending text on each page to be left-justified and more brief.

I linked in the Deus Ex Story page in the main site directory. It's not finished, but oh well.

Today, I learned my sister was accepted into 6 colleges (she hasn't heard from the 7th she applied to yet) and is going to go to Reed. This sucks. Why? Because she's going to a school that's more expensive than Caltech. ^_^

3/22/2002 - Updated the Work page with a solution to the Earth falling into the Sun problem which I've been wondering about for four years.

3/18/2002 - Here's an even better reason why ClearType is awesome:

Italic Text

3/17/2002 - Updated the link summary section of the personal page to look like the new-style site directory and not like the old-style one.

3/16/2002 - Added a new download to the Downloads page, the Deus Ex title.

3/12/2002 - Today I worked on the Deus Ex Story page some more, explaining a bit about the tags and getting the text into an (almost) readable state.

I also worked on my Memory Cell Abstraction code, totally revamping it so that it is almost completely type-agnostic. Now, in order to have memory cells of different types, I need only define two or so new functions. I still need to do more testing - I need to write programs that deliberately try to trash the memory, so I can test the error reporting functions. It would also be cool if this code detected memory leaks, but for that I will need a linked list implementation.

3/10/2002 - Went digging through my hard drive a little today. It's amazing to look through history like that.


3/8/2002 - Processed DeusExConText.u a little, removing binary garbage and other non-readable data. It's down to 1.2MB (from 3.8MB).

3/6/2002 - Hard at work on the Deus Ex Story page. When it is finally not 'under development', it will be linked into the main site directory. Usually, I do not post pages which I am still developing, but this one is going to take a while.

I recently enabled ClearType on my computer. It's amazing, even though I use a CRT. It's because ClearType antialiases everything, not just large fonts.

And I created another logo for the site, though it didn't seem to fit well at the top. This one fits the color theme I have. Logo

3/2/2002 - Updated the personal page, expanding on some points and reorganizing things so it flows better.

My program map is now on the Download page along with apply.

I've once again tried my hand at creating a logo for the site: Logo

2/28/2002 - Changed the Northwood desktop screenshot on the personal page (it now actually resembles what I use every day) and finally made thumbnails so that the page isn't so huge.

2/27/2002 - You'll notice a new page today - the Wallpaper page. It details the making of the Northwood wallpaper. Check it out. In the future I may add a "The Making of the Deus Ex Wallpaper" part to it (its construction is simpler, and is more about layout and working with source images than creating content from scratch). This has been made possible by the 12MB I have left now. Whee.

I changed the detailed Site Directory on the Index page to use a table rather than a list - this takes up less vertical space, and is somewhat more organized.

There is now a "Reading" section on the Links page with three entries.

2/26/2002 - Added information on the Traveling Salesman Problem to the Work page.

So, since moving to my Avery room, I've had a problem with book storage, since my room entirely lacks bookshelves. I have two portable bookshelves which I use, but most of my books I keep in a large cabinet. (I have two large cabinets in my room, though there is only supposed to be one per single - one I keep clothing in, the other is for books.) Today I reorganized the books within. I gave up any pretenses I had at wanting to randomly access any of the books, and just made big stacks of them. Essentially, I've given up for the time being on ever having the time to really reorganize the Book Reviews page. Maybe later I'll tidy it up a bit, but a full reorganization is just beyond my abilities right now. I still believe in the purpose of the page, and I really wish I had the time to work on it - but the truth is, I don't. I was only able to create the page during my Thornton-Caltech summer, and (if you read the news archives) it took me forever.

More troubling is the fact that there is so much reorganization to do. Since finishing that page on July 15, 2000 (has it almost been two years?), I've been through nearly half of my Caltech education (and I've almost completed my core classes). My knowledge and understanding, not just rigorous/mathematical but also conceptual, has broadened significantly from the time when I was a high school senior sitting on top of a big pile of books. I know so much more now than I did then, that I would have to change nearly every review. They would all be for the better, but I would have to sink in massive amounts of time and energy into the task. Since no one ever writes to me about the Book Reviews anymore (not that they ever did), I have to assume that the level of interest in me completing a reorganization is rather low. Better that I spend time on other tasks. I have to move on, you know. Maybe at the end of this summer I can work on the Reviews.

I also moved some of my CDRs to that closet (they were getting really unstable sitting in stacks on top of my refrigerator). I have some 260 CDRs there, as well as a bunch of CDRs and pressed CDs still sitting beside my refrigerator. That's some 165 GB or so of data sitting in my closet (more like 130 - they're not all full). Jeeez.

I am totally a data packrat. Whenever I see something, my first instinct is to save it. I have full archives of three of the webcomics I read (Megatokyo, Penny Arcade, Mac Hall), as well as plenty of other stuff. I archived all of Greg Martin's work as soon as I found his site. And, you know, it comes in handy - Greg Martin later took down his images (at this time of writing), and Megatokyo switched to 6-color images (bleaaaah).

So, I suppose I should give myself some site tasks to get done eventually:
Ho hum.

As the people who know me offline are well aware, I keep a "to do" sheet with all the tasks I have to complete written down and organized. Really, I have things like "Work On bwtzip" and "Add Quotations From The Making of the Atomic Bomb" there. I am always thinking about the site. I just have so little usable free time during the term, it's ridiculous. Maybe once these core classes let up third term I might be able to get more done. (On Monday, the Nine Hour Ma 2b Analytic Set of Doom was due... bleargh. When I say I have no free time, I mean it - I just leave out the details because they are invariably boring and painful to hear.)

2/23/2002 - The content of the 11/25/2001 news post has been edited but its spirit has not.

I will defend to the death my right to say whatever the hell I want on my site. Anything I have ever said to anyone anywhere is fair game to be quoted here unless I have given the copyright up to someone else (which I've done once, and even then I got it up here).

2/20/2002 - I haven't had any free time, so absolutely nothing has happened with the site recently. I apologize, and I'm thinking about what next to do.

The problem is that the site's content revolves around me finding a big chunk of free time and just writing for as long as possible. There hasn't been enough time recently for me to do that, and I haven't thought of any new projects I could work on piece by piece.

The one thing I might do is add something about the Traveling Salesman Problem to the Work page; there was a CS20 competition which I did reasonably well in, using a deterministic algorithm (no annealing for me).

I am still planning to work on bwtzip when I get a chance.

Since you're here anyways, I may as well point out that you should see Shamus Young's free online novel Free Radical, which is now 22 chapters long and an excellent read. Also of interest may be Uche's random thoughts page, which is like this news section of my site, except ten times funnier.

2/6/2002 - I added a new picture of my case interior to the Computer page (the cabling is really pretty now), and updated several images around the site. As the GF4 was announced today, interest in the GF3 should diminish and the GF3 page should slowly turn historical. As a result, I've offloaded the high-resolution GF3 images to Aaron's server; they should still load, and just as fast as when they were on Caltech's server. Everything else on my site is still on Caltech's servers.

2/3/2002 - I've been really busy, so I haven't been working on the site. Nevertheless, you can now see what my Northwood desktop looks like on my personal page, and the wallpaper downloads have been updated to 1152x864. I have got to do something about my quota.

My computers are now reachable as and, though I haven't set up any FTP servers yet.

1/20/2002 - Some changes to the computer page, most notably the addition of yummy pictures. Large changes were made to my personal page, too.

Added in-depth explanations of all my pages to the Index.

1/15/2002 - Constructed Northwood yesterday. Getting stuff set up.

1/13/2002 - Updated the Computer page to show where I bought all my goodies, and also updated the Polyhedra page slightly. Try doing a Google Image Search for "Epcot" and see what turns up. ;-)

It is actually surprising that of all the pages in my site, the Poly page generates the most mail. Hmm. I wish I still had that much free time.

1/11/2002 - Updated the Computer page to reflect my final purchases. I also updated the Index page some; it's more concentrated and efficiently laid out.

1/9/2002 - I worked on the Collection a little - some quotations have been moved from Unverified to Verified (finally - but only a few), and I created some new subsections, so things should be easier to find. I also added a few; it's up to 570 now. I added a list of the classes I've taken to my personal page.

1/7/2002 - Classes are starting again, so (predictably) I've fallen behind in updating the site. Though I did manage to answer most of my E-mail. It means a lot to me when I hear that my pages have been useful. Thanks to everyone. :-)

I bought my computer parts today, whee. They should arrive in a week.

Since this is not only an Index, but a Plan too, just like homology is followed by cohomology, it might be fun to go over what I'm planning to do with the site in the (hopefully) near future.

Okay, that's getting close to the "distant future" now, so I think I'll stop. Oh, and I need to work on my personal page. But don't I always?

1/3/2002 - I added a new image to the Links page - as it turns out, I am not entirely incompetent with images. Whee. I added a little to the Tips section and the Review section of the Index.

1/2/2002 - I tried finishing the Huffman compression code, but I failed - bah. So no code for now.

I enhanced the Northwood background, so I've been using that version. I haven't put it up, yet (it would put me over my quota).

This week, I'll probably buy the rest of the computer components I need. Whee!

12/31/2001 - Added a couple of quotations to the Collection, and I spent some time changing over the HTML. It has actually shrunk in size some five hundred bytes, and the HTML is less deprecated. (These changes are not as easily applied to the rest of my pages. Bah.)

I suppose I should finish the Huffman compression code soon, or something.

The Archived News page is nearing 200KB. Fortunately, I still have somewhat over a megabyte left until I reach my quota limit, so I can continue to update the site relatively unhindered.

Speaking of page sizes, it's interesting to look at all of them. I have four large pages - the Collection, the Book Reviews, Archived News, and the Extended Essay are all over 100KB. All the other pages are less than 30KB, with a couple of exceptions - the Work page and my personal page. (This ignores the images on each page.) Hence, it's obvious which pages are a one-shot deal and which ones I work on over and over again, adding bit by bit.

Hmm, let's see if the sizes of the HTML files obey Zipf's Law; namely, that when the files are ranked by size, the size of the nth file should be about c/n, where c is some constant. To determine the constant, I'll use a rather lousy method (since I'm rapidly forgetting everything I learned in Ma 2a). The sum of the inverses of the integers from 1 to 25 is about 3.816; the sum of the sizes of 25 HTML files in my directory is 1,002,863. Hence c should be around 262,805. Here's a quick table (I took the size of this file while I was working on it - heh):
# |Name         |Real Size|Predicted|Error
1 |news.html    |200,869  |262,805  |+30.8%
2 |books.html   |166,979  |131,403  |-21.3%
3 |quotes.html  |134,498  |87,602   |-34.9%
4 |mersenne.html|118,270  |65,701   |-44.4%
5 |stephan.html |60,110   |52,561   |-12.6%
6 |work.html    |33,246   |43,801   |+31.7%
7 |links.html   |27,296   |37,543   |+37.5%
8 |png.html     |26,270   |32,850   |+25.0%
9 |poly.html    |25,481   |29,201   |+14.6%
10|index.html   |24,854   |26,281   |+5.7%
11|airplane.html|23,751   |23,891   |+0.6%
12|essay5.html  |20,496   |21,901   |+6.9%
13|essay2.html  |18,784   |20,216   |+7.6%
14|seldon.html  |18,467   |18,772   |+1.7%
15|essay4.html  |17,520   |17,520   |+0.0%
16|gf3.html     |15,753   |16,425   |+4.3%
17|essay3.html  |14,746   |15,459   |+4.8%
18|essay1.html  |14,576   |14,600   |+0.2%
19|download.html|13,130   |13,832   |+5.3%
20|computer.html|10,443   |13,140   |+25.8%
21|gallery.html |10,281   |12,515   |+21.7%
22|doublev.html |6,919    |11,946   |+72.7%
23|lastly.html  |6,253    |11,426   |+82.7%
24|pngacc.html  |5,179    |10,950   |+111.4%
25|paper.html   |3,268    |10,512   |+221.7%

12/29/2001 - Big changes today! Now, for more depressing news (to me): I noticed the PNG page could use a little updating (to my more modern style of speaking), and that the Book Reviews page is getting even more stale. I really, really, really need to work on the Book Reviews. Must keep telling myself that, so that someday I will break down and actually work on it. But not today. ^_^

12/28/2001 - Ah, back at Caltech. Life is good. Life is better with 512MB RAM (thanks Eli). I completed the MTF code; the main() function is now truly a one-liner (hee hee hee). I have begun writing code for Huffman compression. This will probably become my fourth completed program.

12/26/2001 - Updated several more pages to the new "bold topic headers" style I'm using.

In the last couple of days, I've written what I think is a really cool set of functions; they abstract away memory access and (I hope) make GPFs impossible. I've already written a Move-To-Front transformation program and its reverse; because I had written enough abstraction layers, the main() function turned out to be essentially a one-liner. (Not quite yet; I need to fix some things.) In fact, it's clear how much my programming has become functional-style. Next up is a Huffman encoding and decoding engine.

I updated Essay #3. Over the months which have passed since I first wrote that essay, it's become clear to me I didn't always know what I was talking about. I've removed the passages which ripped on DrScheme, and updated the rest of it. It's now a fairly good essay which (I would hope) demolishes Uche's claims that C++ can turn lead into gold.

12/24/2001 - I wrote a new essay (#5: Games) and linked it in. I am still thinking about how to revise #3: Programming. I saw LotR: FotR yesterday with Aaron; it was a good (if long) movie. I have some complaints about it, but surprisingly nothing major. Yum.

I made some changes to the GF3 page, and also cleaned up some things around the site (the headers now say " - Foo" instead of "Stephan T. Lavavej's Foo"; also, I've been changing more pages over to my new style of using bold topic phrases instead of Font Size 5).

12/23/2001 - Today, I performed the Burrows-Wheeler Transformation on my own name, and managed to recover it. Whee!

Here's a thought: in Halo: The Fall of Reach, the Master Chief is said to be able to cover a half-kilometer in 17 seconds. That's enough speed to do a one-minute-mile. Heh. Also, the orbital Super MACs of Reach are said to be able to fire one 3000-ton projectile at four tenths the speed of light, every 5 seconds. Sounds cool, but if you do the calculations, it's ludicrous - it would require many exawatts of power, which could be fed by total conversion reactors chewing up hundreds of thousands of kilograms of matter per second, or fusion reactors (which is what the book says power the guns) running on even more hydrogen per second. Heh. Even the Enterprise D warp core can only put out a terawatt or so.

12/22/2001 - I added five quotations to the Collection; it's at 564 now. I also organized it a bit, creating a new category (Fiction Quotations, for all the ones which don't fit under particular authors).

I cleaned up the Archived News page a bit, and added a few notes about when planned things didn't get done. However, I didn't try to note all the places where my speculation turned out to be wrong or right; I do a lot of speculating in my news updates, so it makes life fun. ^_^ Most remarkably, there is now a table on the Archived News page; this is the first HTML table I've ever done. Whee!

12/21/2001 - Well, I made some changes to the Archived News page, generally cleaning up things a tad. Eventually I may make a table with the counter data in it, though I don't know how yet. (I just have to look it up; no need to tell me how.) Perhaps in a couple of days. (I have nothing but time right now.)

What I am I working on? I suppose I should mention that Halo is really, really fun and if you aren't playing it you're missing out on something big. The worst thing I can say about Halo is that it's not Deus Ex II.

I have also been learning lots about the upcoming Northwood processor. Let's just say that I am very, very excited about it.

12/17/2001 - I'm glad to report that various assertions on my site are still annoying people. It's always surprising what generates the most mail (relatively speaking); at first glance, you might think bold, obvious assertions like "GIF sucks", "up with the GeForce 3", or "AMD makes inferior silicon" would attract lots of mail from angry, deluded foolz, but no! A one-line comment about "HDD" being annoying generates no less than two E-mails in a span of months (which is a lot, heh).

Anyways, keep the E-mail coming. The only things that annoy me are requests to review the novels of the Foundation series one-by-one, or similar silliness.

Updates may be slow in the coming weeks. Fear not, for great things are in store. Maybe.

It has been noted (repeatedly) that I do not bother to state my opinions as such, and instead state them as facts. This is because I've taken Stephan's Paper Writing Style, painstakingly developed over 4 years of IB, and made it into Stephan's Writing Style. I do not bother to wrap my statements in phrases like "in my opinion", or "I believe", because I believe I am right, I do not like watering down my statements, and it takes too much time anyways. Oh well.

The Northwood does not have SMT enabled (sob). Oh well. It's still insanely fast, and Intel will crush everyone else with the 0.09 micron, SMT-enabled (I hope) P4 in due time.

I wonder how many people ever notice all the interesting things I sneak into my writing. For example, [deleted], [deleted], and the lifesaving [deleted]. [We can't spoil all their fun, now can we? - Ed.] These most often take the form of references to stuff you don't know about (see "lord and master" comment below), or to things you should know about (see "schway" comment below; I'm pretty sure you could figure this out just by reading the rest of my pages intently), but sometimes are hidden things you wouldn't notice at first glance (there's another one of those on this page), or things you have to go looking to find (and judging from the E-mails I get, sometimes even those things are missed). Hmmm. Veeery mysterious.

If it means anything (which it doesn't, I'm sure), I am finally happy with my personal page (which is well over a year old now, I am surprised). The entire state of my website makes me proud. I spend so much time fiddling with small parts of it, trying to get things right, or working on new content, that I rarely take the time to step back and take it all in (I envy you; I get the feeling that reading all of this stuff is much more enjoyable than writing it). I shouldn't let things like the banner gallery become rusty and stale, but it's part of life; I have to move on and do new things. Making banners for GIMPS is something I involved myself with heavily years ago (has it really been that long?), but my interests have changed somewhat over the years, and my heart just isn't in that particular endeavor anymore. Perhaps one day I'll take the stale pages down (DOUBLE V, anyone?), but for now they'll be left up. Then there are things like the Book Reviews and the later parts of the Quotation Collection which are sort of stale, but could easily be refreshed with just a few weeks' work. I'll see about doing that; I am obviously still interested in quotes and books, and will be for some time to come. Remember, your E-mails help to show me which parts of the site are most interesting to readers, and which parts aren't; the only other indicators I have of this are the counters, and (as you might be able to tell) all that the counters say is "work on GeForce 3 stuff", which does not particularly interest me at the moment. (Well, I do want to add a proper demonstration of anisotropic filtering. However, that will not be possible until my ITS quota is increased from 30MB. I have indeed asked about this, and while they denied my individual request, a global quota increase is in the works "soon". Not all delays are my fault, you know. ^_^)

12/15/2001 - And now that finals are over, I've finished the complete reorganization of my personal page, and I actually updated the online copy of the website (gasp). Remember to check out the Northwood wallpaper (updates about that are below).

12/13/2001 - Worked some more on my personal page.

12/8/2001 - Added a problem to the work page.

12/6/2001 - Wallpaper is finished. Check it out on the Download page.

12/5/2001 - Working on a new wallpaper, 1600x1200.

12/2/2001 - I'll be able to build Northwood this January. Yay!

11/29/2001 - Read a couple of novels: Halo: The Fall of Reach and K-PAX. Excellent - simply excellent. They remind me how much I like reading.

11/25/2001 - Here, read what I've written in my E-mail.

From: Stephan T. Lavavej
To: Megha W. Watugala


> This is a summary report on the assignment.
> For a more detailed report, please run "cs20report l6"
> Assignment graded by Megha
> Grader comments on style:  8 out of 10
>   [-2] avoid using descructive and imperative operations like
>       sort, loop, return, setq, pop, dolist, push, setf
>   ** Contact Megha to reclaim these style deductions **

I am curious... did you even bother to read my lab? I did not
use those operations in my code. There is a reason the CS
department uses humans for TAs, and not programs capable of
searching for strings in text. Please give me back these 2
points as I did nothing wrong.

Additionally, I have issues with CS20 Lab 2, which you also
graded. Please contact me.

Stephan T. Lavavej
From: Stephan T. Lavavej
To: Megha W. Watugala


Regarding Lab 6:

No, I did not [use those operations in my code]. My "style",
if you will, is to avoid the usage of lets, as they do not
correspond to how I think. Using the word search function of
DOS EDIT, I find that the only let commands in my hw6.lsp
appear, listed in order, in the methods or functions:

[...many more...]
(defmethod reachable-from( (M NFA) from letter &optional (exclude NIL) )
(defmethod Relabel( (M Automaton) &key (prefix "Q") )

Note that these aren't mine! You can blame Professor Arvo for these functions.
The last usage, in Relabel, occurs on line 1263 of my hw6.lsp. My code,
as denoted by ";; ***BEGIN CODE FOR LAB 6***", starts on line 1358.
I do not see how I could have made things any clearer.

I repeat again; I did nothing wrong. I did not even use let statements,
much less using imperative or assignment commands inside a let.

Regarding Lab 2:
Attached is Version 2 of my hw2.lsp. Using - again - the incredibly
powerful DOS EDIT, I have replaced all occurrences of
with, instead,
Happily, CLISP won't crash if the print statements are commented out.

And, to be pedantic, I have also included Version 3 of my hw2.lsp.
Using - yet again - DOS EDIT, Shift, Delete, and the Up and Down Arrow
keys, I have actually deleted all the test code from the lab.
This Herculean task was made easier by the fact that I clearly marked
off all the test cases, and all the print statements began with zero

Doesn't the CS department drill (or, rather, try to drill) Emacs into everyone?

Thank you for your time,
Stephan T. Lavavej
Sigh. Emacs Makes A CS20 TA....

11/24/2001 - Found a stupid mistake on the Books page and erased it from the memories of everyone alive. It must have been sitting there for over a year. Heh.

Switched my screen resolution to 1152x864, so I can get more text on the screen at once. Yum. I've also been making my desktop cleaner and more efficient; I'll take a screenshot of it someday soon.

To reiterate: My name is very, very simple. "Stephan". It is pronounced with no accent. ("Lavavej" isn't pronounced with an accent EITHER, as it happens.) My name is not abbreviated in any manner, nor do I go by any nicknames. ("STL" is quite far enough.) The observant will notice that as a result, I do not accord special privilege to anyone. Except Aaron. ;-)

Today I got my first "help with homework" E-mail. Bleah. Go steal someone else's time; I already give enough of mine away as it is.

Trashed a broken link on the Links page.

11/21/2001 - I will not be dual-booting to Linux on my next computer Northwood. I would not dare defile it so.

Why the change of plans? Linux is a freaking nightmare. If I want to play Armagetron on my computer (a GPLed game), I download the binaries and play. I am assured that it will work without fail on my Win98SE box. Whereas, if I want to play Armagetron on a Linux box, it's a nightmare from hell. Do I have the right libraries? (And you know how I feel about DLLs, except infinitely more so when I have to work with them myself.) Do I have the right privileges to install the libraries? (Which I do not.) The various types and distributions of Unices have made it "necessary" for many programs to have awful makefiles, which are a lame hack to get programs working on different operating systems and configurations. It should be the operating system's responsibility to work with lots of different stuff, not the programmer's, not the person compiling the program, and ESPECIALLY not the end user. If I wanted a Linux box now, I'd be taking a step back in time to the early nineties or so when I was running DOS 5. And DOS 5 has DOS EDIT, which Linux lacks. So Linux is even worse than DOS 5.

And what do I need to do in Linux that I can't do in Windows, anyways? Nothing.

Blah blah blah. People say Microsoft is evil. So what? They're a large corporation. Corporations have to make money to stay alive, and the large ones are the best at staying alive - therefore they are the best at making lots of money. Microsoft has done so by writing the operating system in use worldwide, as well as the office applications used worldwide. Through careful management, they manage to get a system built of crocks and cruft to run far more stably than you'd expect, and to be compatible with insane varieties of hardware. No matter how customized a Windows operating system is, it's still Windows, and can run Windows applications. The differences between Windows 98 SE, 2000, XP, what have you, are insignificant compared to the differences between the various Unices. Furthermore, Windows has eventually gotten to a point where it doesn't annoy seriously! Using Windows Explorer, I can powerfully navigate my directory structure in an intuitive and efficient manner, far better than I can in commandline. Microsoft Word allows me to type papers in exactly the manner I want; Wordpad (such as I am using now) and Notepad have their uses too. Instead of a disgusting mess of desktop icons (ala Windows 3.1), Windows now works off of a menu of programs, which is much more efficient to navigate. I run a Microsoft Office Shortcut Bar in addition to the standard Quick Launch, letting me get to the stuff I want even faster. Click on a sound or video file, and it just plays. Windows - because stuff just works. Freaking Linux. The only thing Linux has going for it is that it's GPLed, and Windows is not. But I can still write GPLed programs to run in Windows.

Microsoft understands user interfaces. The best Linux can do is try to copy it, and programs such as Word. Microsoft aims its operating system at the average guy on the street who doesn't particularly care what dependencies or makefiles are, and doesn't want to know. Microsoft INSULATES the user from knowing anything detailed about the inner workings of the operating system. This is a Good Thing. As a power user, I fight hard to get at the internals of the operating system so I can tweak it to my heart's content, but I don't want to have to mess with them if I don't feel like it.

I love huge corporations. Microsoft, Nvidia, Intel, bless them all.

In other news, I hacked my "apply" program to be called as: "map program ext", which is useful to convert large numbers of nasty GIF images to sweet PNG images. Blessed automation. I will probably eventually upload that.

Oh, and down with incompetent CS20 TAs.

11/14/2001 - Woke up this morning, went to class, read my mail. Guess what today is.


Exciting times. Oh yeah, and that Xbox thang tomorrow.

11/11/2001 - So yeah, finally updated the page (a bunch of hard drive updates are below - heh).

My image editing skills grow daily... whee.

11/7/2001 - New and interesting things today:
I have some ideas for the Work page. Haven't implemented them yet.

Civilization III is fun.

11/4/2001 - Added a section to the personal page about why I work on this site.

11/3/2001 - And now, presenting My Guide To Finding "Dr. Lavavej":
1. I am not addressed as "Dr. Lavavej". Not YET, anyways.
2. If you're looking for a Dr. Lavavej, there are only 3 of them in this world, and they are NOT me.
3. I haven't published any books. Not YET, anyways. Look for Things I Like, which will be published Q3 2002, along with its companion Things I Don't Like a year afterwards.

Dear crazy people: Stay the hell away from me. Sincerely, Stephan.

You see me? My name is "Stephan". Not "Northwood". Is it sad that by this simple fact alone I am already more sane than some?

Why can't everyone be normal? And when I say normal, I mean not weird.

In case anyone is interested, I do not change my site on the demand of others, especially if they tell me I'm wrong on some matter of opinion (see "hard drive, HD, la la la" in yesterday's news post). They're my pages. No one tells me what to put here. If you want to dictate what goes on my webpage, that would involve compromising my principles. And I'd need to sell out to do that. Selling out, as we all know, involves both compromising one's principles AND getting mad cash flow for it. So, be prepared to start the mad cash flow (4 digits in base 10 of United States currency; no, digits to the right of the decimal point don't count) if you want to put words in my mouth. Otherwise, you can stay over there with the crazy people and far away from me.

Classes are sucking up most of my time, so I come to you bearing no site updates.

It's my website, so I'll say it right here: hard drive, hard drive, HD, hard drive, HD HD HD. La la la.

The teflon tape I put on my Intellimouse Explorer simply rules.

I'll get something new up soon. I hope.

10/28/2001 - Hmm, what a waste of two hours. Argh.

In other news, today I found something I had all along, and lost something I never had anyways.

I need to change the Links page - it's getting staaaale.

10/26/2001 - Played Halo today.

Yeah, that's right. My first impressions:

Now, for other observations: 10/24/2001 - Big changes today. Learned the PRE HTML tag, so I changed Essay #4 to look better. Also, you'll notice there is a new page, "Random Work", with four cool things I've been working around with. In fact, while typing up that CS/Ma 6 proof, I found a couple of holes that I had to plug in. Heh. The new page is some 21KB, so it's a yummy addition. I'll probably take another break from website writing in the next coupla weeks, what with classes and all. I will update the news page several times a week still, though. :-> Let me know if you like the new page.

10/23/2001 - For no reason at all I was playing around with Scheme today (for non-CS1-TA-related purposes). I must be going insane.

10/21/2001 - Busy busy busy.

10/15/2001 - Yes, we're in another update drought right now. Bleah.

Some "interesting" news. pngacc is by now famous (to me) for crashing when given cham1.png from my GF3 page. I compiled pngacc on a Unix system today and ran it on cham1.png... and guess what. It didn't crash. It didn't even mangle the file (the original pngacc, version 0, had a very bad habit of mangling anything it was given). It output a perfectly valid PNG a couple bytes smaller than the original. I officially have No Clue what's wrong with the thing, but as the behavior is not reproducible across a wide variety of systems it has got to be some nasty memory allocation thingy. Sigh.

10/8/2001 - My case arrived today. Here's a quick review:

The thing that strikes me about the Lian Li PC-68+USB case is that it's serious. Everything is engineered and machined to precision. When putting on the side of my Dell case (beige plastic over a steel endoskeleton), I have to squeeze it on, wiggle it in, and finally use one thumbscrew (that cannot be removed, at least, not easily) to secure it in place. If I take the left side off, only then can I remove the front cover (which has no active cooling to speak of). The Lian Li is so infinitely greater in comparison. The left side is secured with two Phillips thumbscrews; taking them off allows the panel to be removed. It slides out smoothly and then lifts straight out. When putting the side back on, it goes directly into position smoothly, as if the case had been cut from a single block of aluminum. The front panel can be removed at any time; it clips into place securely (a site I had read saying that the front cover was insecure was flat-out lying). The motherboard tray behaves the same as the side cover. Installation of the Enermax EG465P-VE power supply was simple; I encountered no problems with it (some reviews I had read noted incompatibilities between the PC-6x series and the Enermax EGnnnP-VE power supplies). And the aluminum drive bay covers of the Lian Li snap securely into place without screws. It's just an amazing piece of work.

The bad news of yesterday is that, most likely, I will not be able to finish construction of the whole computer until March. This means it may very well be a Northwood-2.4! I have decided waiting two terms is acceptable, even if it means 2002.

10/6/2001 - Meet Stephan Lavavej, the CS1 TA.

No significant site work has been done so far; sorry about that. I've got some things in the pipeline planned, as usual.

Bad stuff going down. God damn it.

10/3/2001 - Interviewed for CS1 TA position.

10/1/2001 - Starting up classes again. I can't guarantee any site updates until this weekend. Bleah.

I do plan to resume work on "twonot" once I get the chance.

Recently it came as a surprise to my friends that they don't always know everything about me. I occasionally like to keep people guessing. ;-)

9/30/2001 - Well, I finally have my room set up. Mostlyish. And I ordered my case, PSU, case fans, and thermal interface compound - yum. That ought to arrive soon. I updated the Northwood page to reflect that.

9/29/2001 - Stuff getting done. Slowly, maybe.

9/27/2001 - Interesting Observation Of The Day - When dragging folders around in Explorer, usually everything behaves normally. However, I was moving my folder titled "", and Explorer created a shortcut to it instead of actually moving the folder. Why? Because it believes that anything ending in ".com" must be an executable file, and it simply performs the same bogus behavior that it does when you try to move actual executables. Heh.

9/26/2001 - AMD is beginning to die.

I spent some time reading all of Aaron's website (he added lotsa stuff when I wasn't looking), and it's very interesting. Aaron writes HTML in a wholly different way from how he chats. I think it's very nice; he writes very well and it's always interesting to hear even more of what my friends think (it's why we're friends after all: what we think and how we express it). Check this out:

8/27/01 : Sigh... More updated information... I got the frames working!!! Trying desperately to think of more things to add to this website. Any suggestions would be nice. Tomorrow I leave for Boston to go back to Harvard. So the next update might be a few days...
8/26/01 : The birth of Version 4 of my website. Inspiration from my dear friend Stephan Lavavej.
I think the phrasing style sounds very similar to my own, which is very spooky, but not all that surprising since I always claim Aaron is just like me, only way cooler and smarter. ;-)

It just feels right, now, that we Thornton Three have websites on which we post stuff. I learned Aaron went to Tarver Elementary - the weird thing is that Tarver is essentially constructed identically to Skyview Elementary, where I (and Uche) went. Heh.

Next: And just when you thought you had me all figured out, surprise. Here's a sketch I did of the case I'm going to buy:

Lian Li PC-68+USB Case Sketch

Thoughts on "Enterprise": Ha ha, they don't have shields. Ha ha, they don't have tractor beams. The series seems free of the problems that so plagued Voyager - I was pleased that not everything was wrapped up by the end of the pilot. But the opening theme - it is SO AWFUL. So terribly awful.

9/24/2001 - I was reading Isaac Asimov's The Complete Stories, Volume 2 (I own Volume 1 but can't find Volume 2 to buy; the copy I have next to me is borrowed from the Blacker Hovse library right now) and came across a very, very interesting passage. The stories in it are excellent - in fact, I'm still going through the book, but one story in particular was eerie.

"Let's Get Together" is copyrighted 1956. I just read it now and have never heard of its existence before. No one ever told me about it. Asimov, of course, has unfortunately been dead for quite some time. And that made it all the more eerie when I read:

There were ten humanoid robots somewhere in the United States, each one carrying a fragment of a TC bomb.

TC! The race for sheer horror in bomb-ery had ended there. TC! Total Conversion! The sun was no longer a synonym one could use. Total Conversion made the sun a penny candle....

Presidental Assistant Jeffreys cut in.... "If they are going to TC a target, they will want to cripple us as much as possible, so it would seem that a major city would have to be it. In any case, a major metropolis is the only target worth a TC bomb. I think there are four possibilities: Washington, as the administrative center; New York, as the financial center; and Detroit and Pittsburgh as the two chief industrial centers."

Macalaster of Security said, "I vote for New York. Administration and industry have both been decentralized to the point where the destruction of any one particular city won't prevent instant retaliation."

"Then why New York?" asked Amberly of Science, perhaps more sharply than he intended. "Finance has been decentralized as well."

"A question of morale. It may be they intend to destroy our will to resist, to induce surrender by the sheer horror of the first blow. The greatest destruction of human life would be in the New York Metropolitan area--"

"Pretty cold-blooded," muttered Lynn.
Yeah. Crazy. And it's all been sitting in print for nearly half a century.

In other news, I am still getting my computer and stuff set up, so my site updates will be sparse for a coupla days.

9/21/2001 - Moving back to Caltech. I will be unreponsive to my E-mail for a bit.

9/19/2001 - Lots of interesting news!

The Xbox ad's soundtrack that puzzled me for so long is "Welcome to the Terror Dome" by Public Enemy. I assume this is the same band featured prominently on John Connor's shirt.

The Swiftech MC462 no worky on Socket 478. But there will be a revision of it that will work, coming late October. Yay!

The Lian Li's case fans are ball-bearing, not sleeve-bearing. I presume they pump 40CFM or so each. I'll still swap them out. I also still plan to use the I-Storm coolers, as they provide smooth airflow. Putting the X15-36LP in front of two Delta SHE (or EHE, be still my heart) would be nice, but they produce a swirling angry airflow. And it would compromise complete case cooling too.

I read some posts about the 106S drive, and I am still convinced it is good.

Availability of the 80mm EHE fans is in mid to late October, yum. I am also looking into getting a Delta FFB1312EHE fan that pumps some 260CFM of air. 127mm. Yes, I am insane.

I read a Lian Li PC-68+USB review, and damnit, I want this case now! :-D

Has the tone of my news posts, and general site activity, changed lately? You betcha. That's because you are witnessing, firsthand, Stephan T. Lavavej in a full-blown obsession. I get this way sometimes, and for a long period of time (months to years) get obsessed with some particular subject and learn all I can about it. Right now it's "computer components and stuff". Yum. Rest assured the original STL, who builds paper airplanes, folds mathematical shapes, and yes, even reads books and collects quotes, is still in there somewhere, and will re-emerge at the proper time (suitably modified).

9/17/2001 - Interesting developments today.

Here's a semirandom thought. The mere use of different units sometimes prevents us from thinking of different measurements in the same way. Take, for example, bandwidth. Dual-channel PC800 RDRAM provides some 3.2 GB/sec of bandwidth. We can think about that in terms of megabytes per second, but at least SI conversions are rather transparent and simple. Now take a modem. It allows for some 6 KB/sec of bandwidth (with a number of restrictions). Ew. Ethernet, 10 Mbps, sounds all big and bad until you realize that it's only 1.25 MB/sec of bandwidth. That pales in comparison to a modern 40X or similar CD-ROM drive, which attains perhaps 7 MB/sec. DVD drives running at 16X provide some 20 MB/sec, I'm told - that sounds a little better. Things get fun with Gigabit Ethernet. That sounds high and mighty, and 125 MB/sec is actually pretty good; it takes two Seagate Cheetah X15-36LP drives to attain that kind of bandwidth to sustain a Gigabit Ethernet connection. Not that it matters anyways; the 33MHz 32-bit PCI bus saturates in practice at about 100 MB/sec, so you couldn't use Ten Gigabit Ethernet ("Fast Gigabit Ethernet"? Heh) on today's computers even if you wanted to. Actually, even 66MHz 64-bit PCI wouldn't reach "Fast Gigabit Ethernet" speeds. The highest quality MP3 files run 320kbps, but 40 KB/sec sounds much more reasonable, doesn't it?

This sort of thing follows the realization that a small bag of Doritos, such as can be purchased in a vending machine for a couple of quarters, has 260 Calories. That's 260,000 calories. As 1 calorie is 4.184 joules, that's somewhat over a megajoule of energy! A megajoule sounds MUCH more impressive than 260 Calories, no? Heh.

I made an interesting prediction in a forum today. Namely, that the Northwood processor will have Jackson Technology enabled on-die. It's probably more wishful thinking than anything else... but it'd be cool!

Why is it that most of Stephan's Revenge Plans involve earning a truckload of money, and then using it to make selected people look like idiots? I don't know... but it sounds good to me! ^_^

Recently I have been learning about SMT and SMP technologies (SMT: Simultaneous MultiThreading, aka Hyper-Threading, aka Jackson Technology; SMP: Symmetric MultiProcessing, aka "dual processors"). Basically, SMT rules and SMP... doesn't. It's also forcing me to throw out old concepts. For example, I learned during the early days of Windows 3.1 that multithreading is simulated on a serial processor by switching very fast between tasks, but fast to us is a matter of milliseconds or so. There are now fine-grained multithreaded processors that will issue instructions for separate threads interleaved on the order of clockcycles! And SMT processors can actually execute different threads simultaneously, according to the needs of the threads... that's true multitasking. SMP, in contrast, is the brute force solution, less efficient with resources and providing less performance increase. Therefore I will continue to laugh at "overclockers" who build "dual Athlon" systems for extra performance. Ha ha ha.

9/16/2001 - Still befuzzled by "welcome to the teledome". Please, help!

To make my life a little easier (I am so selfish), I went and wrote a program. Probably the last site-updatey thing of worth I'll get done before going to Caltech again.

What is it, you may ask? It is a very simple tool designed to make my life the most easier for the least amount of actual coding being done. It also marks the first non-strictly conforming ANSI C program I've written (well, mostly) as it interfaces with directories. I call it apply, and it is designed to make pngrewrite less brain-damaged. You see, the useful tool pngrewrite works on one file at a time. It doesn't know what directories are. (Much like pngacc.) But now, with apply, you can type:

apply pngrewrite png pnx

And all the *.png files will be pngrewritten into *.png.pnx, which can be trivially processed with "del" and "ren". Yum! It appears to have no bugs - I fixed one typo, and it compiled. Whee. It is almost certainly highly intolerant of bad input, though. Watch your step.

Find all the apply goodness you want on the Download page. ^_^

Reorganized the Computer Quotations section a little (putting some unsorted quotes in there).

9/13/2001 - So, what's going on, you might ask? First, I came up with a couple of small ideas for the RPG, which I have duly noted. I am still sticking with my decision to not reveal any details of the game until if and when it is completed.

Second, I'm thinking about writing a fifth essay, this time on Artificial Intelligence. I might do it, I might not. An interesting idea.

The time to move back to Caltech is nigh.

It's been so long since I've experienced real computer power at my fingertips; the last small rush was upon installing my GF3. Now that I get 6fps benchmarking in 3DMark2001 (1024x768 with maximum, maximum graphical quality), I'm ready for some more. November cannot get here fast enough.

On a related note, I saw a commercial today for the Xbox (the first such one I've seen so far). First, I want to know what the song playing in the background was. (Lyrics like "Welcome to the teledome" - I'm not very good at figuring out what songs are saying.) Secondly, I want an Xbox, damnit. Thirdly, even the football game looked pretty damn cool, and I hate sports, so that says something. Fourthly, there was no Halo coverage in the ad, which made me sad. Fifthly, I heard the Microsoft HomeStation will be powered by a Pentium 4... whee.

I still want to know if the Swiftech MC462 heatsink will work on Socket 478 motherboards! I tried asking some guy who reviewed the Swiftech MC462 (on top of the Infidel's Silicon) and he wasn't very helpful at all.

Thinking up some ideas to put into execution when I get back... one is creating a compilation CDR of "cool stuff" and burning a few for the prefrosh. Hmm.

I updated my personal page so it sucks less.

9/12/2001 - Finished the latest iteration of the Northwood Logo. I believe it should be my last, as I'm happy with it.
Northwood Logo Mark IV

My best friend Andy Yang made a rant of his own (on his web page). It's a good read, even if it's got the Stephan-style length. ;-) He asked why I haven't donated blood; though I'm old enough now (heh), the blood banks have quite enough blood already, and will probably have to discard what they can't use when it can't be kept any longer. (I don't even know what blood type I have, heh.) He also asked if I've donated money to support the rescue and cleanup efforts, which I thought was a good question. Incidentally, a news report I watched stated that as the World Trade Center towers were built in the 60s and 70s, they included a significant amount of asbestos, which is therefore in the air of New York City right now along with a good fraction of the rest of the building. Asbestos is ugly stuff. Anyway, no, I haven't donated money to any charitable efforts, nor have my parents. The prosaic reason is because my parents aren't filthy rich, and though I plan to be one day, I am not anywhere near wealthy right now. Why am I continuing ahead with my plan to build a new computer? I believe David Baltimore said it better than I can, in an E-mail address to the Caltech community:

"Today we face the challenge of picking up our lives and livelihoods after a day of horror, torture, frustration, and introspection. Each person in the Caltech community should remember that we work for a greater good that terrorism cannot touch, the enlightenment produced by discovery and learning.

We will have a difficult time today concentrating on what may seem trivial in the face of the disasters. That is natural. We may have to stop for a minute and hug someone, just to remind ourselves how lucky we are to be alive. We may have to stop and allow our thoughts to go to the victims of the terror. But in the end we will triumph over terror by returning to ordinary pursuits. Although September 11, 2001 will live in infamy, let us make September 12 a day of renewal of our vows to serve humanity and to conquer ignorance with knowledge" - David Baltimore, message to the Caltech community
We will triumph over terror by returning to ordinary pursuits. Whatever group of motherfucking terrorist bastards was responsible for the attack, their fondest wish is to see Americans cower in fear, to see our American way of life permanently disrupted. I will not give them that pleasure, and I hope you won't either.

Incidentally, Eli Karpilovsky expressed surprise that I'm actually incredibly patriotic. I am, I just don't often have a reason to mention it. :-> I may eventually update my personal page in light of this.

9/11/2001 - Sighted on a forum today:

Riviera Kid (read: some adolescent fuck) said [unedited and complete]:
> The americans should never have sided with israel,
> sharron was a lunatic and he bombed and blasted palistine,
> and america supported israel. America is a bossy country
> and they should keep there noses out of foreign affairs.
> e.g. Vietname, should have stayed out of it. I don't like
> america, big headed and bossy. I think them 4 planes should
> have been redirected into the statue of liberty, that way no
> lives are lost and it pisses off the americans.
> Big tradgedy but the american brought in on them selves, to an extent.
> I'm gonna get some abuse for this but I have freedom of speech.
> I am british.

STL's reply:
WHO CARES WHAT THE FUCK WE SUPPORT! That is NO FUCKING EXCUSE to crash two massive airplanes loaded with jet fuel into a symbol of American capitalism, with massive loss of life, and a third airplane into the Pentagon itself. This terrorism is not OUR fault. It isn't even YOUR fault, you insane sicko. It's the terrorists' fault, and rest assured we will find and kill them all.

> America is a bossy country and they should
> keep there noses out of foreign affairs.

Do you know anything about history? Do you know what happened in World War I? Things looked bad until America stepped in and ended the war. Then we kept our noses out of international politics (as we did since the country's inception), the League of Nations disintegrated, and everything went to hell in the late 30's, leading to World War II. The attack on Pearl Harbor finally gave us a perfect reason to get all of America behind the war effort, and then - combined with the Soviets, to whom we owe the ENTIRE FREE WORLD as it is today, we saved the world. Without America or without the USSR, you would be speaking German and Japanese now. Then we went and nuked Japan because we were seriously pissed off, and the bomb happened to be completed at the right time.

Guess what would have happened if America did not reach into its infinitely deep pockets and bail out Western European countries, and set up the political infrastructure (NATO and the UN) to keep the world together? That's right: WORLD WAR III. With Americans nuking Soviets and vice versa, plus everyone in between. It's amazing we survived the Cold War at all. And even if WW3 did not occur by some chance, without America single-handedly rebuilding Europe via the Marshall Plan, your own country of England would look like any random Eastern European country (say, Czechoslovakia).

> I don't like america, big headed and bossy.

Go fuck yourself.

> I think them 4 planes should have been
> redirected into the statue of liberty,
> that way no lives are lost

Except for the fucking people ON THE PLANES!

> and it pisses off the americans.

I hope you die. Well, soon.

> I am british.

Good. That means we've already kicked your collective ass.


I think my thoughts are clear on the matter. Today is a dark day for America.

9/9/2001 - Designed a logo, but it needs work. Made some more improvements to the Northwood logo, but I still need to add the tag line back in.

I'm going to need a Molex splitter for my computer... I've been gradually figuring out "where I ought to buy stuff", and I eventually found the splitters I need. Also need to look into SCSI cabling and active termination. (2 front case fans + 1 rear case fan + 2 PSU fans + 2 I-Storm II fans + 3 slot fans + 1 GF3 fan + 1 CPU heatsink fan + 1 Plextor CD-RW fan = 13 fans in one computer. Wheee.)

Looking into ordering some 80x38mm EHE fans (80CFM) direct from Delta (I hope they sell to individuals), and even more massive things....

9/8/2001 - Interesting things going on. Updated the site a little, added a coupla quotes.

Continued playing around with the Northwood Logo; I think I like this one better:
Northwood Logo Mark III

9/6/2001 - Created a page detailing my computer specs, yum. Also, my fans and coolers arrived today - they are AWESOME! The I-Storm II HD coolers are essentially silent, and they create a laminar stream of cool air - while not tremendously forceful, I am fairly certain each I-Storm II moves as much air as my entire case cooling does right now (two fans came in my PIII-600, and they hardly move any air). The 80x38mm FFB0812SHE fans are awesome - their 68CFM is tremendous, and they blow themselves across my desk. They're loud, too. Yay!

9/5/2001 - Using some mad Photoshoppery skillz, I created a logo for my new computer, which I have uninventively dubbed "Northwood":
Northwood Logo

Unlike the logo I tried to create for my website a while ago, I think this Northwood logo is much stronger; while it doesn't have any form other than the letterforms themselves (which is said to make a logo weaker), the color scheme is quite distinctive. Obviously and uninventively I chose a blue theme fading into snow and even some harsh purple from the lens flare to be on the "North" side, while I chose a green theme fading into orange and brown (with a rainbow effect from the lens flare) to be on the "wood" side. Heh heh heh. Anyways, I'll probably print this out sometime and it will adorn my Lian Li PC-68+USB case.

And here's the same thing with a nifty tag line below:
Northwood Logo Mark II

I think I like this one better. :-D

9/4/2001 - I took down the ASF of my cat Peppermint, and replaced it with a small ZIP of some good music tracks (MIDI and MOD). Enjoy.

Due to some interesting financial stuff that went down today, I'm rather happy. And I definitely should get my dream computer now (good thing, because it's overrunning my estimate of $3000 rather heavily... once I factor in shipping, my GF3, and the monitor and other accessories I already own, this is essentially a $4500 desktop. Yum!). Oh, and they shipped my four fans and two hard drive coolers today.

9/3/2001 - The usual, you guessed it - nothing new on the site. However, I was just brimming with RPG ideas today, and I had to write them all down before I'd forget it. My auxiliary note document is up to 21 ideas which I have to write in more detail in the full RPG design doc. Oh, and I decided the story will be "GPLed", or so to speak.

9/1/2001 - Ordering parts for Northwood has begun; I've got $122 of fans and coolers coming to me. Yum. Also picked out the startup sound I want for Northwood; it's "Muse" by Alexander Brandon, a good 28 second track by the composer for Deus Ex. Yum. (The first startup sound I used was "Let's get ready... switch me on... *click* *THUNK* *thruuuuum*" from Ghostbusters; now I've switched to "L-l-look at you, hacker, a p-p-pathetic creature of meat and bone, panting and sweating as you r-r-run through my corridors. H-h-how can you challenge a perfect, immortal machine?" from Shodan.) At first I considered using "Ending 1" from the DX soundtrack, but the problem with that one is that it's over a minute long; hopefully Northwood will take but a half a minute to boot up. (Hey, I want it to be one of the fastest desktop machines ever built :-D )

I gotta talk to ITS soon. The site updates are pushing me ever closer to my quota.

I moved the "History", "Finished pages" and "Plans" to the Archived News page.

8/31/2001 - Another update drought passes; I return from the desert with nothing useful to show. "Sorry."

I did write a couple of long posts about the P4 and IA-64 cores. I checked, and it's about 15 or 16KB, so you can essentially call it a full essay, though I probably won't make it into one.


Nvidia has been making graphics processors for a moderately long time; their NV1 and NV2 failed, but since then it's been nothing but success. They code-name each core simply: NV1 (their first), NV5, NV15, etc. The GeForce 3 is the latest Nvidia core, as you know, and it was codenamed NV20. It's got the DX8 features, etc, and its core runs at 200MHz default. All GeForce 3s run with 64MB of "460MHz" DDR (which is really 230MHz, of course) - but these chips only cover one side of the board, so the card is obviously asking for 128MB to be placed on it.

The GeForce 3 MX is what we're speculating will be the budget GeForce 3; presumably one that runs at a lower clock, with lower-clocked RAM (and possibly only 32MB of it), and perhaps less features.

The GeForce 3 Ultra is what we're speculating will be the "fall refresh" GeForce 3, presumably with a faster clocked core and RAM (250/500 maybe?). It is highly probable that the GF3 Ultra will also have additional features, such as more shader pipelines, etc, that make it even "better".

The "Titanium" stuff is from an apparently leaked report. I personally doubt that Nvidia will use that terminology on their retail products, but they might (there were some confusing things about the leaked PDFs too, that might suggest they are hoaxes).

Intel also uses code names for their cores; I believe they name everything after rivers in Oregon. For example, the current Pentium 4 core everyone knows right now was known long before as "Willamette"; it is produced using 0.18 micron technology, which is "on its way out" now (the NV20 core is made with 0.15 micron process, for comparsion). Willamette cores have 256KB L2 cache, and started out in a Socket 423 form factor but are now being produced in a Socket 478 form factor. Due to the 0.18 micron process, Willamette cores will not be produced over 2.0 GHz.

The next revision of the Pentium 4 architecture is the core codenamed Northwood. Intel has given every indication that they will call the Northwood simply a Pentium 4, and give no other indication of the switch from Willamette. I feel that this is a stupid decision, because the Northwood is in fact far superior to the Willamette core. Even "Pentium 5" would be a better way to show the difference (they went from "Pentium II" to "Pentium III" for far, far less of a difference). The Northwood core is produced using 0.13 micron technology (highly advanced at this time), and comes exclusively in the Socket 478 configuration. It will be produced at 2.0GHz and up, eventually reaching 3.5 and possibly 4.0 before a new Pentium 4 architecture core is produced (whose name I do not know; the P4 architecture itself will ramp to 10GHz). The other nifty thing the Northwood has is 512KB of L2 cache, which is Really Good[TM]; thus clock-for-clock a Northwood core will be faster than a Willamette core (and this comparison IS valid). I have not heard of any new instruction sets the Northwood will be bringing to the table; I doubt that an "SSE3" will be introduced, but it may be a surprise waiting in the wings. Therefore, if you order a 2.2GHz Pentium 4, you will be certain to get a Socket 478 Northwood core. However, the 2.0GHz mark itself will be especially confusing, as Socket 423 Willamettes (ew), Socket 478 Willamettes, and Socket 478 Northwoods will all be distributed in a box marked "2.0GHz" with no clear and obvious indications of which is which.

If you're interested in what the difference between Socket 423 and Socket 478 is, it's not just Intel being evil and making everyone switch motherboards. First, the packaging is much reduced; Socket 423 chips have some PCB (Printed Circuit Board, not PolyChlorinated Biphenyls) around them, whereas a Socket 478 chip lacks the PCB trimmings. The pins occupy a space directly below the core, and are much more densely packed than in other chips (478 of the little buggers!). The top of the core is wholly covered by a steel heat spreader; therefore, Socket 478 chips will be really, REALLY hard to damage as there isn't even any PCB on the edges to nick or crush. If you want to know exactly how large a Socket 478 chip is, the pins occupy a square-donut shaped region surrounding a middle square region with no pins; that middle region is easily covered up by a dime. The entire processor itself is the same size as an Intel 386 chip (heh).

Intel is also working on 0.10 micron processor, presumably to be used with Itanium and McKinley cores; the P4 will also probably be produced at 0.10 some day.

The extra pins in the Socket 478 configuration are to bring more power and ground to the core, which means more stability at higher frequencies. (Remember, when they're not producing a new architecture, core, or stepping, Intel engineers are essentially professional, highly-paid overclockers with a multi-billion-dollar R&D budget.)

The Socket 478 chips also use a new heatsink configuration, one that looks "really nifty". Essentially, the heatsinks are clipped right over the core using a sturdy frame; I'm pretty sure you could drop a PC off a three-story building and the heatsink would not move at all.

I realize that I started talking about microns and processes without explaining why smaller numbers are better. Every integrated circuit is created using "photolithography", which literally means "writing on stone with light". More advanced photolithography techniques permit the etching of smaller and smaller circuit elements, which means smaller and smaller transistors. Photolithography is directly dependent on the wavelength of light used; more "blue" light means smaller wavelengths, higher energies, and smaller elements. (Also they are harder to work with, especially finding lenses and mirrors for the appropriate wavelengths. Photolithography is difficult enough that new fabrication plants cost billions of dollars, especially if they work with large wafers of pure silicon. Intel adopts an approach of "copy exactly", wherein each fabrication plant is a direct duplicate of the next, down to the tiles on the floor. I presume it helps when spare parts are needed.)

When the change is made to a smaller wavelength (a "die shrink", as the core of a chip is called a die), more transistors fit into a smaller area, permitting faster communication between them (the speed of electronic signals only allows them to get so far in a billionth of a second) - or, optionally, permitting more transistors to be packed into a smaller volume. If memory serves me correctly, the original Pentium chips (0.35 micron process or thereabouts) had something like 5 million transistors - stunning for the time. The 0.18 micron Pentium 4s have 42 million transistors, and the 0.15 micron NV20 core has a staggering 58 million transistors. (Never fear, it's only upwards from here; the Intel Itanium chip, which is 64-bit and looong in the making, has 300 million transistors and puts out 130 watts of heat.)

One great benefit is that as smaller transistors are used, they draw less current and less voltage, and emit less heat, stressing heatsinks less. This is why notebook processors have to slightly lag behind desktops in performance, because emitting less heat means using lower frequencies. A nontrivial portion of the performance increase we've seen since the 286, etc chips comes from our willingness to use ever-larger heatsinks and fans on our cores.

I'll now take the time to illuminate (heh) the workings of the Pentium 4 architecture, from a "why it's so awesome" standpoint instead of the "why it doesn't suck" defense I ordinarily have to present. :-D And we can all learn some history too, while we're at it.

Processors for desktop systems today essentially must be compatible with the "x86" instruction set. To do otherwise means discarding the entire base of code already written for PCs, and the major selling point of ANY chip is never its frequency or power consumption, it's that "it'll work with the programs you already have". Non-x86 cores are relegated to specialty or niche uses right from the start (like the Macintosh, or stuff like high-powered servers, though those are often powered by x86 chips as well). This is all because Intel's 16-bit chip, the 8086, was used in the first personal computers, not because x86 is inherently awesome or anything. Actually, its 8-bit inferior sibling, the 8088, was chosen to be the IBM PC processor.

The 80286, 80386, on up have all been backwards-compatible with 8086 code (or, at the very least, code that worked on the previous processor; I have a feeling that code written for an 8086 years ago might not work on a P4, because the original programmers probably made all sorts of ugly crockish assumptions). The x86 instruction set is pretty ugly, though, and the instructions later processors (like the 486, etc) added onto it make it more baroque still. Therefore, modern cores like the Pentium Pro core ("P6") that is actually used in the PII and PIII chips, and the Pentium 4 cores, are backward-compatible with the x86 instruction set but actually use a more refined internal set of instructions ("micro-operations", contracted to "microops" or often "uops" - the "u" is supposed to be a greek mu), and the x86 code is translated ("decoded") to uops on the fly.

The Pentium 4 architecture has a number of innovations that allows it to reach high frequencies while providing powerful performance as well. First, it has a long pipeline. Pipelines are good, and longer ones are better. If you've got laundry to do (I hate doing laundry), then it would suck massively to have to put a load in the washer, wash it, remove it and put it in the dryer, dry it, and then remove it from the dryer and fold it before putting the next load in the washer. Rather, by putting a new load in the washer as the first one is drying, time can be saved (more machines can be used at once). Another strategy is using multiple washer/dryer sets, as I often do (in processors this is being "superscalar"). The Pentium 4 has a 20-stage pipeline; because less complex circuitry is needed for each pipeline stage (each one is only expected to do its part, not be completely universal), circuitry can be simplified, and simplified circuitry can reach higher frequencies. Two of the P4's pipeline stages are named "drive"; they allow signals to reach one end of the processor when starting from the other (a big problem when you reach high frequencies, and no processor before has had to take it into account in the design of its pipeline).

Now, code that is compiled and then stored on disk as executables often doesn't perform as the processor would like; namely, straight-through execution accessing stuff that's already been cached. The Pentium 4 tries to predict the outcome of conditional jumps in code; its branch-prediction circuitry is more advanced than in previous cores (it gains a few percentage points above 90% accuracy). A branch (the outcome of an IF statement) that's correctly predicted is essentially the same as straight-through code. This is needed because a misprediction involves an ugly pipeline clear and refilling.

The Pentium 4 adds an "execution trace cache" that allows it to store decoded micro-ops rather than having to decode them from the x86 instructions all over again (saving lotsa time). Yet another P4 improvement is a "rapid execution engine" that allows simple things like additions and subtractions to be performed very quickly; in practice this means having two ALUs (arithmetic logic units) which are double-pumped - they run at TWICE the frequency of the processor. That means inside every Northwood-2.2 are a pair of ALUs thrumming along at 4.4GHz; inside a 4GHz P4 (as Intel recently demonstrated) are two ALUs at an astounding 8GHz. Additionally, compilers can specifically optimize code for the Pentium 4 architecture; they've already been able to do this for other cores (passing -mcpu=i686 to the GNU C Compiler allows it to place instructions in ways that the PIII likes, for example), but the Pentium 4 benefits even more than previous chip generations from compiler optimizations.

The P4 introduces another addition to the x86 instruction set, arguably the first such addition that doesn't suck (the 486's added instructions, the MMX instructions introduced with the Pentium, and the Katmai New Instructions introduced by the PIII made no revolutionary jumps in performance). The P4's new SSE2 instructions (SIMD: Single Instruction Multiple Data), in short, allow it to work on "lots of data very fast". Stuff like audio processing and video processing work on large data sets, applying the same instructions over and over, so they benefit greatly from code that uses the SSE2 instructions. We especially see this when we run something like Quake III, written by John Carmack - Intel engineers call Carmack "the human compiler" for his wizardry at optimizing code.

Taking a broader look at the evolution of Intel processors, it's clear that the Pentium 4 bridges the gap between previous generations of x86 processors and the next-generation cores being worked on just down the hall; namely, the Itanium chip (codenamed Merced) and the next-generation McKinley core, both of which use the IA-64 architecture. The new philosophy in part adopted by the P4 is "let the compiler do some work too", as you can dump several hours (or weeks, heh) into compiling production code, but when instructions are executed they have to finish right this very nanosecond.

x86 code is essentially too baroque and unrefined for the kind of speed and power that will be necessary in the future. Therefore, Intel is essentially discarding x86 entirely, and moving to the IA-64 architecture - which is, of course, 64-bit. IA-64 uses the EPIC approach, which means Explicitly Parallel Instruction Computing or thereabouts; Intel also calls it VLIW for Very Long Instruction Word. What those imposing Extended Three Letter Acronyms mean is that IA-64 processors don't engage in the ridiculous "decoding to micro-ops" process that all current x86 processors must do. Rather, the IA-64 core runs VLIW code directly.

However, it expects compilers to do their fair share of the work. Therefore, an IA-64 compiler must analyze the source code it's working on, and see how it branches and loops, and what kind of data it works on. Then the compiler must re-arrange the code in a way that benefits the processor, and furthermore encodes this information directly into the instructions themselves which are passed to the processor (hence, very long instruction words are used to convey what instructions can be executed in what manner). This is because often, a program works on one thing, and then works on another thing which is independent of the first. The IA-64 processor can be told of this, and then will execute both things simultaneously. Also, the Itanium and McKinley processors don't take a half-hearted approach to branching; if they come across an instruction branch, and can't figure out from what the compiler put in the code which way the branch will go, they just execute BOTH parts of the branch simultaneously, and when they eventually figure out which branch needs to actually be followed, they've already computed a good portion of that code (and drop the other part). And plenty of other nifty things, half of which I've learned of at this moment.

Therefore, the Itanium is an extremely powerful chip when running at just 800MHz, and the McKinley is looking to be even more exciting. x86 compatibility IS provided by the IA-64 chips, but it's essentially an afterthought; IA-64 cores, if you will, run fast on very "clean fuel" (IA-64 code), and don't work too well on "diesel" (x86 code). We've seen this in part in P4s already, which want compilers to optimize code and use SSE2 instructions. It will be a better decision to just keep a 4GHz Pentium 4 or so around for x86 code, and let the Itaniums and McKinleys do what they're best at: 64-bit code.


8/29/2001 - I watched The Game again; it's an even more brilliant movie than I realized the first time around. ^_^

I also met another Weasel Commando today.

8/28/2001 - Bleah.

I tried to write an essay on free software, expanding upon an E-mail I wrote to the Cabal. However, it ended up becoming "mush". So, I'll either have to scrap it and start afresh, or try to refine it to a point where I'll put it up here and at The Cabal. Sorry. :-/

If you're curious as to why it became mush, it just sort of lost focus, and had no ending. Generally when writing an essay I just automatically wrap it up as I approach the 20KB mark. Not so this time. It isn't the first time I've written a failed essay attempt though, so it's okay. :-D

If you're interested, my failed essays go like this:
Yeah, my hard drive is like a graveyard of sorts. (Those failed essays are 168KB total, which is a substantial fraction of the entirety of text I've written for the site as it is right now. Which makes me even more sad/annoyed that they're not suitable for consumption yet.) I'd still like to do essays on many of these topics (ESPECIALLY the FPS essay, as you can see I wrote the most into that one before giving up), but I need to get into that essay-writing groove, which I just wasn't in today. (Having spent most of my energy writing stuff in forums. Bleah.)

I worked a little on the RPG, envisioning how some critical gameplay systems will be implemented. The failed "Planned RPG" essay above has nothing to do with the one I'm thinking about now (thank the gods; my first attempt was hideous).

8/27/2001 - First, I bought the Terminator 2 Ultimate Edition DVD; it rocks. Mmm. I especially enjoyed watching the T2 Special Edition, with all the cut finished footage added. I'm a T2 fanatic, so I couldn't imagine anything better than this DVD. (I bought the book T2: Infiltrator when I saw it at Borders just because of the T2 name alone - yes, it was a good book. I just remembered it and reviewed it along with the others on the Index page.)

Next, I thought up a bunch of things for the RPG, which I have duly noted in a text file and will eventually get around to writing up more detail in the proto-design-document. Maybe I'll leak some of what I've got churning around in my brain (but not anywhere close to all of it - don't want to spoil you now, would I?). I am tired of current RPGs; only Deus Ex comes close to the sort of "immersion in a neat world" I want. Nethack clones are all well and good - like Diablo II - but are not worthy of the name "RPG". Only Neverwinter Nights holds any promise for me (I am very excited about NWN, even though I've never played any pencil-and-paper RPGs such as D&D before). Therefore, in the RPG I plan to write, I want to create a new fresh world - a futuristic one (circa 2050, I think I'm leaning towards) including some of my real speculation about what the future will be like, but also some more traditional cyberpunk elements. (Read: More like Snow Crash and as far away from Neuromancer as possible. Also incorporating - hopefully! - some of the feel of Free Radical.) I don't want stats (recite them with me, Spector-style: STR DEX INT WIS CHA CON), I don't want HP, I especially don't want MP, and I don't want graphics. That's right. I want to create a text-based RPG done right - one in which the "room descriptions" are more than useless filler. I want the player to have a real investment in her or his character, which does mean building up a unique inventory (and building a futuristic portable computer - oops, I've said too much). I want NPCs that are more like real humans than mindless drones, and I want a massive detailed gameworld that can be explored essentially at will. Oh, and a somewhat gripping plot to tie it all together. Can I achieve this? Maybe. As I've mentioned before, I consider myself a fairly capable writer, one who's maybe even good at fiction. The programming required behind the scenes will be nontrivial, but I think that if I fully plan out every feature I want, and then resist the temptation later to add features to a complete or nearly complete design, implementation of "the engine" will be fairly straightforward. Assuming I get this RPG done (a project for sophomore year, if you will) I plan to distribute it under the GNU GPL - that means it will be freely downloadable, and yes, you will get to see and play with the source if you like (the story may not be GPLed; I'm still thinking about that one, but it will cost no money and you'll be able to give copies of the full game to your friends). I also plan - it is just a plan - to request donations of $10 from anyone who's completed the game and finds it worthy. (Incidentally, I plan to never publicly release the game in an unfinished state; if ever you see it here it will be in a fully complete "out of the box" state with something like 24 hours of gameplay.) My insane fantastical hope is that somehow I can get this thang written in under 9 months and proceed to duly impress no less than 300 people around the world, so that I can avoid having to find a job my sophomore/junior summer and work on even more stuff. Insane? Maybe. It's just a dream right now.

8/26/2001 - Nothing of interest happening. I have little free time, but maybe I can get something done Monday and Tuesday. Bleah.

I'd like to do a miscellaneous rant. People who say "I have a 1.2 gig processor" drive me nuts. And not just because they're AMD infidels, as they always turn out to be. Since the 8086, processors have run at several megahertz; we always said "I have a 486-33" or "I own a PIII-600". Not, "I have a 33 meg processor" or "I've got a 600 meg processor". Foolz, "meg" and "gig" are shorthand for "megabyte" and "gigabyte" respectively, and nothing else! Therefore, the correct way to say it is "I have a Northwood-2.2" or "I have a PIII-1.2". Bleah.

In case you're worried, these pages are here to stay, even when it seems like I never have time to work on them. Unless I'm hit by a truck tomorrow, I'll be working on these pages for the next 8 or so years, and I'll find some way to keep them around even when I have to enter the Real World. I'm not just going to give up some day and trash the whole thing. My pages have existed for 4 years now - the Quotation Collection is about that old, even though everything else is only over a year old - so I've got a good track record. :->

8/22/2001 - And just when you thought you couldn't love Nvidia any more.... A guy in England bought an Asus GF3 and added a copper watercooling block on top of the core, and an aluminum watercooling block on top of the RAM. Looked really spiffy. Then Jensen Huang, CEO of Nvidia, E-mails him and asks for it personally. Now the guy's trading his original for a duplicate Asus GF3 and two reference GF3s (all operational). Oh, and an Nvidia shirt and mousepad. ^_^ Probably one day the CEO will put it in the foyer of Nvidia Corporation. That's just... cool.

8/21/2001 - Another real update, first one in a week (heh). Working on a C program called "twonot" right now, though I'm being hassled by some of Aaron's Hahvahd friends. ^_^

In other news, there are now four Weasel Commandos.

8/20/2001 - I recently posed a challenge to the Cabal. I was reading HAKMEM and came across a cool-looking electrical engineering problem; HAKMEM stated there was a solution but did not specify what it was. I tried to solve it for two hours and got nowhere. So I posed it to the Cabal, and Guy presented a non-working solution immediately. ;-) Then Aaron found a solution posted online, which I hand-verified (and found three problems wrong with the diagram Aaron found), heh. The problem and the solution are on the Random Work page.

8/19/2001 - No site updates at all, though I did plan out a few likely things for the RPG.

8/17/2001 - Working a little on the RPG design doc, thinking of heatsink materials. ^_^ Not much else going on.

8/16/2001 - I was listening to "Men in Black" for the first time in ages; I'm able to make out way more words than I used to. I guess my headphones are far superior to the Pentium 200 speakers I first listened to MiB with.

8/15/2001 - I had meant to work more on the RPG design doc, maybe get an essay up, but as usual stuff got in the way and now I have nothing. Well, I did write a good number of posts on a forum, about technical and physics subjects (yum), but nothing processable into essay form for here. "Bleah".

I decided the world isn't ready for a "LASTLY II". Therefore, in a thoroughly uninventive spirit, I'll call my new computer "Northwood". I figure once Intel's done with their code name, it's up for grabs. ^_^

8/13/2001 - Not much going on, other than I actually updated the website. ;-) I've been lazy and I've written the last few updates to my hard drive; sorry about that. Added a quote to the Collection; it's up to 552 now, so I think I'm doing well there. I haven't written anything of value recently... again, I apologize. I have, however, been working on a design document for a text-based RPG. And you probably know what happens when I get obsessed about something... cool things happen. I'll probably do some C coding tonight in preparation.

The odd thing is that I'm enjoying my summer less than time at Caltech, but I'm obviously getting more done on the site now than in the last 9 months... heh.

Let's see, what else can I talk about. My web site takes up 25.7MB on my hard drive. Breaking this down:
*sigh* At least the GF3 page gets a lot of traffic.

I found a good song on recently. The Cynic Project hasn't updated in ages (sigh), but I've got something to last in the meantime: The Rainy Season (Hydrophonic Mix) by Kooz. It's gooood.

I've been reworking the plan for my next computer... I think I'm going to go with 1GB of PC800 RDRAM. With the massive price wars going on, this will probably be one of the cheapest components of the computer. I've been thinking about naming this thing... because it's going to chew through Mersenne numbers like there's no tomorrow (I predict 0.030 seconds per iteration), one obvious name is "LASTLY II". I'll ask Aaron about it. A certain type of fan I want is out of stock, so I may have to use a smaller version that only pumps 68 cubic feet of air a minute, instead of 80. However, the power supply unit will be less strained, and I might actually be able to sleep with this thing on. Ah, that's the real price of performance.

I read that the Itanium processor has 300 million transistors. Woooow. I won't be surprised if a billion-transistor chip arrives in the next decade. And just think... at a special time about 50 years ago, the entire world went from having no transistors to just one.

8/12/2001 - Changed the site directory a little, putting the essays on their own line.

Interesting thing I learned: Socket 478 chips are small! The space on a motherboard where the chip is inserted is a square with a smaller square cut out in the middle, so the pins are arranged in a donut shape. A dime is easily larger than the central region with no pins. Heh! 70 or 80 watts of heat coming out of that little volume... poor little Northwoods.

I had downloaded the DroneZ benchmark a while ago... nice dynamic lighting, but the animation is horrible, and the gameplay looks pretty awful. I don't think I'll be buying this game.

8/11/2001 - So, here's the word. I tried to write Essay #5, on data types in C, but the task is simply too large, too detailed, and too subtle for me to attempt easily without a big chance of screwing something up. I can mostly blame C99 for this; however, while preparing a draft of the essay I read through some portions of the C99 standard and now I know some more stuff, so that's always good.

I haven't been up to much else so far. As usual, I beg you to E-mail me.

I added up all the totals of my counters and got 21,728. Wheee. Since not many people browse through all the pages of my site, I estimate that about 10,000 to 15,000 separate people have visited here since I put the pages up at Caltech. Yay.

My planned computer is looking to cost $2900 - that's with a Northwood-2.2, X15-36LP 36GB and 73LP, and 1GB PC800 RDRAM, plus the VisionTek GF3 I already own. And maybe $200 for fans and such. There are still some issues I'm working out (like what kind of heatsinks will work on the new Socket 478 motherboards), but I might start buying the case I want as early as October, with the rest in November when the Northwood-2.2 is released. I hope.

8/9/2001 - Updated the Quotation Collection with a big set of computer quotes.

8/5/2001 - A thought occured to me today: perhaps people are being terminally polite. It's perfectly okay to send me an E-mail stating, "Update more! I command it!" I get easily distractable when there's nothing of any importance to do, and when I'm easily distractable I'm much more likely to spend time reading about SCSI drives or Deus Ex, or possibly just enjoying entertainment like reading John Cramer's Twistor (which, sadly, lasted me only a few hours - the perils of being able to hoover in words at a mad rate) or watching Batman Beyond, rather than doing anything of value (as in, working on the pages, writing essays, or writing programs). So E-mail me; it's very simple, I am at - just offer suggestions, comments, or requests for advice and stuff.

Bought C Unleashed today, and it is a very good book. A very good book. Plenty of tasty C99 info, too. C99 is not a minor update of C - there are strange wonderful things inside it. And, of course, a new meaning of "static". Also snagged Twistor by John Cramer; you can find a review of it at the bottom of the Index page. I realized a little thingy in my introductory C essay, so I added an addendum at the bottom; it mainly causes trouble because I can't assume the reader knows that "int" and "char" aren't synonyms for "integer" and "character".

I will probably have to beseech ITS to double my quota, or something. My website is becoming too large for the space I have.

In news the past week, Maxtor (bleah) announced the ATA-133 standard (bleah), increasing from the already-pointless ATA-100 standard. In what may be the shortest rant you'll ever see me write, I have this to say. "IDE bad, SCSI good." If I go through my life without ever again buying an IDE drive for main storage (i.e. performance-oriented), I'll be a happy guy - moreover, a happy guy who works on blisteringly fast computers. If "IDE bad, SCSI good" doesn't quite do it for you, I wrote a small essay on hard drives; look for it at the bottom of the Index.

The Seagate Cheetah X15-36LP is still schway. I want one. Incidentally, the launch of the Northwood coincides roughly with winter break. Mmm.

Updated the Quotations page with a few C Unleashed quotations; from now on I'll be changing books there from being italicized to being underlined. Why be backwards compatible with something that's wrong?

8/3/2001 - Great news. I now have It's fully equivalent to my ITS web address, and isn't a lame redirection thing or anything. And it's easier to type and remember. You can get to the Quotation Collection with for example. Yum! So I went around the site and changed the URLs listed at the bottom of each page to recognize this.

Put up my "Introduction to the C programming language" as Essay #4. I'll probably make a new row for the essays on the site directory, or something. Expect Essay #5 to be "Why Intel Rules", unless someone talks me out of it before I write it. *grin*.

Brewing up more ideas for a text-based RPG. No promises yet, though I do consider myself a reasonably capable writer (maybe even at fiction), and of course I seem to be pretty good at just spewing out words en masse. Heh.

8/1/2001 - Not much going on, I'm afraid. HTMLized the introductory C essay, but I haven't linked it in here yet. Bought the actual ANSI C standard 9899:1999, yum. I will probably wait until returning to Caltech to actually print it out: the thing is some 500+ pages long. Added a quote or two to the Quotation Collection, and (finally) selected a Top Ten of my favorite quotes and put it at the top. I apologize for the recent lack of updates; I'm finding it hard to maintain any sort of motivation right now. The word for this is "bleah". I do respond to every E-mail I get; now more than ever since I learned how to SSH tunnel into Caltech. (Heh, he said "tunnel".) I have nothing of value planned for the website right now, unless I get some ideas in the next two months.

If you are curious, Caltech starts late - much later than other schools. Aaron and Uche go back to school in the week of August 20. Whereas Caltech's rooms open up September 28, and classes start October 1. Now, I wuv broadband, so I'll probably arrive very early at Caltech. This means up to two months of this "update drought", at least until I find work where I don't feel dead every day.

I felt that this page was becoming too large to be easily loaded and updated, so I split off the "old news" section onto a whole entire page, which I inventively named "Archived News". This is because I update news every time I upload the website (it's sort of like a forced journal, come to think of it after reading through the past updates), but I only move stuff to "old news" in big chunks, perhaps once or twice a month. So this is easier for me and for you. Whoo hoo!

Remember to E-mail poor old and talk to him about whatever. Otherwise he will be sucked into the black hole of time that is USENET, and we wouldn't want that to happen. USENET means funny quotes in the collection, but no site updates until he returns to the land of the living. 8-O

7/31/2001 - In the dead of night today, Luke (of the Cabal - I'll make a link to the Cabal on the links page later) asked me if I could send my colorprintf() code, which I instantly did. Whoo hoo - code reuse works. 8-> I have very good feelings about the future - this Cabal thing rocks. ;-)

I hammered out an introductory essay on C programming itself (read: not a rant on why C is warm and fuzzy and DrScheme is not). I'm awaiting Cabal revision and then I'll post it there and here. Yum.

7/29/2001 - Another site update. The first thing you should notice is that (once again) I have changed the Site Directory. I use a smaller font and only five lines for it. I think it works well and isn't as obtrusive as it used to be. I HTMLized my essay on C programming for the Cabal, and went and performed the necessary steps to link it in here. Mmm, three essays. My old web site was up to like nine, or something, before I stopped working on the thing. (Which I won't do here; I'll always be working on this thing. :-D) Also, I added the books whose titles I noted before I left Caltech. I added reviews for some of them (Hackers has the longest one), but not all.

Mail me at and give me ideas for things to do, or something. I'm bored.

7/28/2001 - Updated the web site again. Sorry for the long pause. After 3 days of playing, I finished Max Payne. It's pretty good. As for actual work and stuff, I haven't done much to the site, and I don't have any new programming stuff. Aw. But, I actually have been doing worthwhile things, such as getting my Cabal page set up. Namely, will take you to all the Cabal goodness you could ask for. Let's see, site news, what's with the site news.... I am at 27MB for my website. This is a Bad Thing. My ITS quota is 30MB, which means I'm very, VERY close to hitting it. Soon I may move a portion of my website over to my UGCS account, where 16MB of tasty web space is waiting for me. If I manage to consume 46MB total, I'll just have to beg ITS for another 30MB, not like in this day and age we're running out of HD space to begin with. I am also planning (eventually) to ask for an FTP account at Caltech. This will mean 5MB more I can play with. I'll offload the stuff in the Files for Download section there, then. Hopefully that won't cause too many people too many problems. Let's see... Caltech is now offering virtual host names. This means that possibly very soon you will no longer have to type to reach my pages - instead, they will be reachable at the very dignified and elite - YUM! I can hardly wait., - life is good. Other, uh, "stuff". I wrote an essay on programming for the Cabal. Depending on how lazy, or more precisely how un-lazy I am feeling, I may do the work needed to whip up a web page and link it into the main site here as Essay #3. I don't quite know everything I'm talking about when I talk about programming, but I'm pretty sure of two basic tenets:

Yeah. I might embellish the essay for this main website here, and edit it some; the essay's original intended audience was the Cabal, and I can make certain assumptions about backgrounds that I can't make while writing stuff for this web site. (My opinions on this eventually changed. Sort of.)

Got a site-related E-mail recently, that was fun. I'm a fan of anything that doesn't begin with "Hi! I send you this file in order to have your advice". (Which, damnit, I can't even filter out, because the mails use entirely common words.)

Remember, this is the summer. While I have to work, and generally do unpleasant things that I shouldn't have to do, and various other portions of my time are taken up by watching Men in Black and Batman Beyond, I do have rather disgusting amounts of free time handy. If you E-mail me and ask me if I could do certain stuff, I'd probably go and do it. Do you really think I have anything else to do? That I have an actual social life? Hah. Because we five of the Cabal are rather desynchronized people, we can only hope to meet on the weekends. In contrast, my time at Caltech seems positively jam-packed with meaningful social interaction. (Andy et. al. are always hassling me about how I never come out of my room. This'll change at Avery, really - heh.)

I gotta think of a good new page I should make.

Why don't I talk about animation for a bit. Most American animation sucks pretty hard. And it tends to be geared toward young kids. (It's a cultural thing.) Contrast anime. For example, Evangelion. Well, perhaps that's not a good typical example. Anyways, I've started watching some animated shows again, because I set my VCR at home to record stuff while I'm out getting myself roughed up at work. In particular, Men in Black and Batman Beyond. I'm of the opinion that, while actual interesting American animation is buried under a sea of lame kiddy shows, the technical excellence of American animation is probably superior to anime. For example, check out the intro to Batman Beyond. I mean, WOW. There's a couple of shots of the elderly Bruce Wayne, as he looks at the camera - very impressive. Near the end of the intro, Batman is surrounded in a group of enemies as the camera circles, which is incredibly amazing. They can be forgiven for not using such coolness in the day-to-day shows (I don't even want to know how long it took to create that intro), but even so, the animation in the show is, I think, better than anime. Batman Beyond also has this cool thing it's got going - since the show's set many years into the future (I can't figure out exactly when, but I think it's 2020-ish), the world has its own slang. "Twip" is equivalent to today's "idiot". "Schway" is "cool".

Speaking of new words, there's a cool term I found. "Gun" is a pretty boring, and rather old word. "Firearm", etc, all are blah. "Projectile weapon" is certainly descriptive of the thing (I've seen it used in Dark Mirror, a Star Trek: The Next Generation novel) but it's a little too bland. But I like "slugthrower". I don't really know why, but the term is just appealing. Plus, it carries the connotation that there are things that aren't slugthrowers - namely, energy weapons. Cooool. I first met the word "slugthrower" in System Shock 2, but it's been in use for quite a while.

My planned computer is continuing to own me, rather than the other way around. I want Intel to drop prices on its high-end procs, I want to snag a Northwood-2.2, and then I want Intel to flatten AMD into a thin silicon pulp.

I'm listening to a lot of Cruel Angel Thesis. As in, over and over, several times in a row. It's pretty, uh, freaky. One of these days I'm going to sit down, watch Evangelion again, and then when it's all over, see if it screws with my head more or less than the first time.

The X15-36LP is schway. I want one.

While standing around doing nothing in particular today I came up with the idea to reimplement SHA1. Now that I grok pointers, SHA1's design will be incredibly elegant. I just have to do it.

Aw, who cares. I wrote up a long review of Max Payne today, for a forum. And since this is my data dump page, you can enjoy it here too.

(This is spoiler-free.)

So, today I finished Max Payne; I've had it for 3 days now and here I'll compare what it did better and what it did worse than the game we all love, Deus Ex.

1. MP gets the "having a plot" thing done right. The use of the graphic novel, the 3rd person perspective, and the structure of the missions all support the plot. It does feel like an action movie, and in this they succeeded. This proves that while DX's methods (which involve much more NPC conversation and much less narration from the main character) work brilliantly, we'll be seeing plenty of other interesting approaches in the future.
DX, of course, is king of plots.

2. MP partially gets atmosphere down. The written style of the graphic novel is consistent; humor is quite good and located only where it ought to be, and the world is consistent enough to "feel" like Max Payne.
Actually, MP has an extremely funny bit at the end of the second part, that I enjoyed quite thoroughly. Deus Ex doesn't quite reach that level of funny. :-)
DX, of course, has a fully realized atmosphere; one of the things I and everyone else will be looking at very closely in DX2 is if they keep the atmosphere the same.

3. MP fails pretty badly at interactivity. Newspapers lie on the ground - you can't read them. Computers are scattered throughout the game world - you can't use them usually. (When you can, you get to see actual changes on the screen in the game world - this is a plus compared to DX, where you go to an actual computer screen.) Televisions and radios are scattered about - you receive plot through them, but it's a one-dose dispenser sort of thing. Two televisions in the game world actually have a pseudo-show playing on them (not very varied images repeat over and over, but there's an audio track) - I liked this and wanted to see more.
Deus Ex was pretty good at interactivity.

4. MP fails miserably at nonlinearity. The game is completely and utterly linear. There is one and only one solution to every problem. Your routes through buildings sometimes take you through the same (or nearly the same) locations as they loop around, but it's still a line. I really mean it - say you're walking in a large hallway with lots of keypadded doors around. Without exception, one and only one of the doors will be open and have new stuff inside. Not even a spare side room with goodies or something to investigate. This, to put it mildly, blew. And it hurt the immersiveness of the game too. Like HL, MP's linearity sometimes hurts gameplay, when there is one and only one solution to an obstacle, and you don't see it at first. I got stuck at a couple of points until I figured out what should be done. The ending of the game - oh, I won't spoil it.
DX, of course, is minute-to-minute nonlinear but has a linear plot. World spaces are multiply connected 3D regions with plenty to do and a route for every style of gameplay. MP does not support multiple styles of gameplay.

5. MP succeeds spectacularly at fighting, more so than any previous FPS. The games I've played - Half-Life, Deus Ex, System Shock 2, among others - pale in comparison. And, after all, this is what they were focusing on all along in MP. Weapons are differentiated well and all have their uses. If you've seen Terminator 2 (read: if you've ever lived a day in your life), you're in for a hell of a treat. But, no spoilers.
Deus Ex had some interesting fighting, but obviously DXSP wasn't hardcore on it. DXMP's fighting is the most interesting of all multiplayer games to date due to the balanced weapons and augmentations, of course.

6. MP's innovation, bullet-time, succeeds spectacularly and is one of the reasons why the fighting is so cool. If you refrain from using bullet-time, the fighting becomes much more boring.
DX has augs, but "I must admit" that they are not as visually impressive.

7. MP's "extra" tidbits are done well, for the most part. Without spoiling anything, dream sequences (which you play through) are mostly appropriate and interestingly implemented. There's one effect that I was surprised the Max-FX engine is capable of. (Hint: when you see it, you'll know instantly that it's more unreal than Unreal.) There were two things that annoyed me. The completely dark walkways of blood mazes (portions of dream sequences) were pointless and annoying. Worst yet, it's pretty easy to die in them. Second, there's a portion of the game where you WILL get roasted REPEATEDLY, until you figure out exactly what it is they want you to do. That could have been done with much more convincing effect either in the graphic novel, or (better yet) an extended in-game engine cinematic. (MP, like DX, does not use FMV in-game, yay.)

8. Max's engine is extremely impressive, this confirms the suspicions we've all had since seeing 3DMark2001. I am seriously considering stopping learning UnrealEd and starting to learn how to use the Max Payne editor.

9. Auto-balancing works extremely well. One of the chief ways it works (the only one I was able to figure out just by playing it) is that the game controls weapon and health drops by enemies, and the amount of health items placed in cabinets throughout the world, and does so dynamically. If you start sucking old-school, you'll find 4 health powerups in the next cabinet. If you're mopping the floors with goons, you might only find 1 powerup.

10. Mechanics: Generally I have no complaints here. Even unpatched, the game runs stable on my system; no crashes, no odd behaviors. Autoaiming works well enough (though the "crosshair" pixel still pisses me off). The AI is reasonably intelligent in firefights; as the game progresses, the smarter goons do things like rolling to dodge shots. The AI does NOT seem to respond to sound well (good thing; Max can't crouch and walk) like they do in DX. The AI in MP does seem to have realistic perceptions, whereas in DX something often felt "off". A big problem in DX is that enemies don't stay freaked after seeing a dead body; they often say "oh, I should get my sonics checked" after seeing their friend get a sniper bullet in his head. MP is not so big on the stealthy thing, so there aren't really any chances to see if the AI freaks on seeing a dead body. Don't take this to mean MP AI is flawless; after seeing Max (which does freak out the goons) and losing sight of him, sometimes the enemies will just stop moving around and wait. This is obviously exploitable. When waiting around for Max, before ever seeing him, few goons in the game are on any sort of patrol. Most just stand there. This is also exploitable. Generally I am unimpressed with the AI, except in fights.
The cool camera flybys after killing the last enemy of a group spectacularly are nifty. So is the sequence played when using a sniper rifle. (The sniper rifle doesn't zoom in enough for my tastes, though, and the red dot obscures the target in the first place!)
The engine, as I noted as a first impression, doesn't usually chug down even when processing lots of enemies. However, on the last map the engine WOULD chug badly on my system, to the point of making it very hard to finish the game. This was unpatched behavior on a GF3; I'll see what the patch does.

So, all in all, Max is good. Its utter linearity and short play time are the chief disappointments, especially after such a long development, but it's got some pretty wicked fighting.

Next up, I'm going to play the more difficult modes. See ya.
So yeah. This concludes what may be my longest news post ever. In fact, it is. It's 3AM, and my glasses are hurting my face. Ow. (I don't wear the small things you can see in the photo on my personal page; since the bicycle mishap, I wear this massive contraption of steel and polycarbonate resin that looks much cooler, but starts to really hurt when I've worn them more or less constantly. And, since I'm pretty much helpless without my glasses, my only option is to go to bed. Bleah.)

Ooh, today I get to watch "The Zeta Project" on TV. Call me a sucker for robots, I guess.

7/24/2001 - Made some changes to the Quotation Collection. I reorganized the Computer quotations (I have a lot of those, it seems) into a bunch of separate categories by content. I then rearranged some of them to make a straight-through linear reading more pleasant and interesting. And then, I went and made a jump-table for the whole thing, like I did for the Book Reviews. And I used lists within lists within lists, neato. This should make navigating through that big old thing much easier, if you need to quickly find a quotation. I'm still working on organizing the bulk of it (especially that damn unverified section), but I can't really do anything without my books with me.

7/23/2001 - Updated my personal page (gasp!); now, 75% less vitriolic ranting!

Timed my computer's bootup today; it takes 95 seconds for it to be fully ready for use. What a lame, slow hunk of junk. Here's a wild prediction: the Northwood/SCSI monster I'll build in December or so ought to boot up in, say, 30 seconds. (In keeping with the principle that everything ought to be 3 or 4 times faster.) We'll see....

Speaking of The Monster, I re-realized that RDRAM needs to be installed in pairs. Hence I will have to go with 512MB. This will topple me far over $3000 - but I'm so reluctant to cut anything. Dropping the X15-36LP to 18GB might be an option. I also figured out how I will arrange the drives in their bays; the PC-68 has four external 5.25" bays. I will install the X15-36LP in the lowest bay, in an I-Storm II cooler (that sticks out 4 inches from the case). Next up, the slot-loading IDE DVD-ROM drive. And above it, another I-Storm II (which won't interfere with the slot-loader) holding the 73LP. And on top, the IDE CDRW which will be my main optical drive. Mmmm. I also figured, if I'm going to have one monstrous 80CFM Delta fan, it won't add much to the noise to have two, or four - so eventually I'll see if I want to replace the two front and one rear fans that come with the PC-68, and put 80CFM Delta fans there. Yumm. Also, I read about these cool little fans; you stick them in a PCI slot (they don't plug into the motherboard, but they replace one of the empty placeholder rails) and they suck some air from the PCI and AGP areas outside the case. This would be an excellent idea to place under my GeForce 3. Yum!

You won't believe this until you see it - I actually worked on the Book Reviews some (gasp!). Namely, I added a bunch of reviews and ratings for books I actually read during the past, uh year. However, I did not add any of the books I bought while at Caltech. I made a list of all the ones I thought were new when I was packing up my books - Real Soon Now I'll add their titles and authors, and will eventually review them to the best of my ability (namely, from memory, after perhaps only a single read through! Amazing). I might go through and correct/update/enhance my earlier reviews, if I'm sitting around with nothing to do.

Rearranged the Links section a bunch, corrected some stuff, added a new Megatokyo banner I stitched together. Also, while being bored, I made a 468x60 banner for my own site, to see how it would look:

STL Banner

Yeah... it sucks. I need to put some more thought into it.

Overall I am happy with the background change - it distracts the eye a lot less from the text, and it doesn't seem to repeat (hooray). I figured out a new way to get rid of nasty mirroring effects, and finally I understand how it's done. Hee hee hee. (Yes, I created the new background from the old. Heh.)

Speaking of thoughts, I was browsing around my offline website and realized - dang, this thing is huge! It makes me very happy to think that a little thing I only work on in my free time (and when I'm shirking real work) could grow to be so massive and, I think, so nifty. In fact, right now the whole web site is just about a year and a month old. Since I work on it more efficiently now than ever before, its growth should only accelerate in the future. It's still just a little amazing that I can think up something like "boy, it'd be nice to have a page showing how to make these neato-keen paper airplanes Aaron and I were playing with" and then go and make it reality over a year later. (Took me that long to fix the images.) And the web site doesn't even get all that dated, which is good. My writing style (uh, such as it is), I think, has mostly stabilized. Let's face it - I don't do much of any writing at Caltech. So my IB-supercharged fingers will probably sound the same on web pages and the like from now on. This is a Good ThingTM: on the old web site (which I wrote mainly when I was a sophomore at Thornton High) my writing style was somewhat more primitive.

As for my handwriting - it has been more or less stable since the fourth grade, as far as I can tell. Sometime around the tenth grade, I believe, for no apparent reason whatsoever, my '2's mutated from having a loop to not having a loop, making them dangerously degenerate with my 'z's. I've made incremental changes since then: I learned the art of the "swept t", so that it is non-degenerate with my '+', and the barred 'z' (so it's not degenerate with my '2's), and so forth. I now can do reasonably good printed 'a's, the kind you see in a book. I only use such things when writing math or science, though. I'm just too lazy to change my normal handwriting, and it's clear enough anyways. The book-style 'a's I reserve for Russian print, or English print that has to look really good; otherwise, I use the modified 'o' more or less exclusively. (Actually, my stuff is pretty legible: though not much care is put into individual letters, I write the correct size for college ruled paper, and my writing is always very dark and distinct. An example of my handwriting can be seen in the printed signature at the bottom of each page; extra little tidbits can be found on the airplane page. Maybe someday I'll scan in a page of my Caltech notes; I'll have to remember to bring a sheet of notes home the next time I fly back from Caltech.) The only other big change is that recently I started taking notes in pen - very dangerous, I know, but it greatly enhances legibility. (Not that I ever read 90% of the notes I take in class anyways.) But my handwriting has basically not changed since the fourth grade. Oh yeah, I lost the ability to do English cursive several years ago; all I can do is my signature now.

And a big plus is that I seem to have perfected the art of the angry rant. Maybe some day I'll post the nasty E-mail I once wrote to a certain offensive person. I'm rather proud of that work, in fact. (This was indeed added, but later removed.)

7/22/2001 - Site update: I added a new essay, namely, Essay #2: The Internet. In which I talk about advertising and the like. As with everything I post, I already know all of this stuff, and it's completely obvious to me, but I don't know about anyone else. So, you might like it. As usual, I didn't cover it in exhaustive detail (I didn't do that with Essay #1, either), nor did I even touch on everything I might have talked about, but still I think I got my main points across and didn't embarrass myself too badly, so I think it's good. I don't know what Essay #3 might be about, but go ahead and suggest topics to me. You know my E-mail address, don't you? :-D

Been doing some minor modifications to my nifty Intellimouse Explorer. The ball mouse that I used to own (a plain Intellimouse, I believe) was the first mouse I found that didn't suck. (I went through zillions of mice during my 486 era.) But the optical Intellimouse Explorer is so amazingly awesome, I can't go back to that ancient technology. First, if you use a fingernail you can scrape off the "Microsoft" logo from the rear of the mouse, leaving only a shadow. Mmm. Next, you can use a fingernail to pry off the big old sticker on the bottom of the Intellimouse; it will leave all sorts of glue and silver text. Rub with WD-40 (being careful not to get any solvents on the lens!) and that will come right off. You can see more of the PCB and chips, which I like. You can also use a pin or similar sharp object to pry off the Microsoft hologram at the top of the back of the mouse; WD-40 will also clean off the gunk left behind. Wheee.

Today, someone sent me a virus in an E-mail attachment. I don't appreciate that. I was too well-armored to be affected by it (ever since Michaelangelo, baby), but still - that sort of stuff is annoying. Bleah. I looked up information on this beastie, called "Sircam". Apparently this guy's computer was infected and the virus was sent automatically. That's a little better to know, rather than someone just up and sending me a virus for no apparent reason (plus spelling really badly!). I'm curious as to why my address was in someone's computer - someone who I can't recall ever E-mailing me before... weird. Good thing I updated my protection just last night. I've said it once, and I'll say it again: Symantec RULES.

Why don't I tell a story here, the story of the first and only virus I was ever hit by.

Stephan's Story of the Day:

Once upon a time, I had a computer. Actually, that could be any time. In particular, I had a 486/33 DX, 4MB RAM, 120MB HD. It was, and is, a very solid little trooper, and even bears the crushing load of Windows 3.1 reasonably well. And it had no soundcard, because when I bought it such things weren't available. One day, I was reading my father's U.S. News & World Report, and read a little article about a computer virus named "Michaelangelo". It would strike on a certain day and do various nasty things which I do not recall. U.S. News also noted that if you ran CHKDSK and it reported a certain value, you had the virus. So, being a good little boy, I ran CHKDSK and saw our computer was infected by Michaelangelo. The hundreds of 5 1/4" floppy disks we owned also had to be cleaned, but we finished it just in time. We eventually figured out that the virus must have been installed onto our computer with the operating system. (We bought it from some shop the name of which I never knew.) And, as a reward for saving the family computer, my father bought me a Soundblaster 8 bit card for $200, which we installed into the desktop system. And it was good. From then on, we always bought Norton AntiVirus, and it has served us ever so faithfully, and we all lived happily ever after until games started to come out on CD-ROM, and our 486 to this day lacks a CD-ROM drive.

Touching, isn't it?

7/21/2001 - Updated the Links page a bit (added the remaining members of The Cabal) and fixed a ghastly error - but now I know you can have lists of lists in HTML! Whatever good THAT will do me. (Note: I eventually used this for good, not evil.) I am being plagued by bugs in pngacc. "Bleah." All you people reading this and staying silent - don't! E-mail poor old and say whatever's on your mind.

You should have noticed a big site change right about now - I changed the background I use. Originally my Quotation Collection (on the old web site) used some image of water droplets; in successive months I increasingly lightened the image to make the text more readable. Then I mirrored the thing so it would tile. But just now, I decided it was a little too busy and tacky for the glory that is the new web site, so I created a new background to go with it; it's not plain light blue-gray - it has some swirls and waves in it. And I weaseled it so you can't see any mirroring, either. It almost looks like it doesn't repeat... I think I like it; it puts more emphasis on the text without being as flat as a plain white background (which occasionally gets all nasty on the eyes, particularly late at night when I do most work) or black on gray (which is okay, but rather boring). And gray on black, the simplest to see color scheme, is not good; I am opposed to dark backgrounds on web pages as a matter of principle.

(Note: I also posted the spec for my badass computer, which was later moved to its own page. I planned to get 256MB RDRAM, a CD-W516EB, a DVD-116S, and an EG365P-VE; heh, how things change.) Yes, the case will be loud. My position on this is, "the louder the better".

Remember to tell Stephan how completely insane he is at

7/18/2001 - Finished Hackers bright and early this morning; added two quotations to the collection. I think the book is a 1994 reprint of the 1984 original; that's why I found it at the bookstore.

7/17/2001 - Snagged three books at Barnes & Noble today: Hackers by Steven Levy, Einstein's Bridge by John Cramer, and Cosmic Clouds by James B. Kaler. Cosmic Clouds is a SciAm Library book (a hardcover!), that used to be 33 dollars but was on sale for 7. And Hackers was out of print - I thought I'd never see a copy of it ever! And Einstein's Bridge turned out (I already read it) to be an EXCELLENT piece of SF. Now I have to go get that other book by John Cramer I saw there. First SF book I've ever read that incorporated particle physics... intelligently! (It was an impulse buy, I'm sad to report. "Oooh, Einstein's Bridge - cool name. Nifty green cover. "A Novel of Hard Science Fiction" - yea! About particle physics? Written by a physicist? Win!) No coding or site work done today - appointments with doctors have a way of endlessly sucking up time. (Don't get any strange ideas; I have 3 eye doctors.)

7/16/2001 - Busy getting others addicted to Tron. Updated pngacc to v0.05 (fixed stuff, it's faster now too, etc). Eventually I want just a star bar [********...] instead of the pngcrush style status indicator, but I have to figure out how to do that first. Oh, updated the website publicly too (sometimes I do "shadow updates" - it's there on my HD, but not on my WWW. Laaaazy, I know.) I seem to be getting more mail from people who've found the site; this is cool and I'm hoping the trend continues. I actually do respond to everyone....

Sorry for the relative lack of site updates recently. Work cuts into my "fun time" seriously, and I'd rather be coding C or watching Batman Beyond than slaving away at HTML, if my time is limited. Yet I seem to be getting more done over the summer than at Caltech.... heh.

Jeez, the DOUBLE V page is old. I got to do something about that.

I guess I'm a sophomore now at Caltech... argh, this means I have to run around the site and change "frosh" to "smore" wherever I can find it. Siiiigh.

Correction: Andy has informed my poor brain that, happily, I am not yet a sophomore yet - I have to wait for the damn cannon to scare the crap out of me while playing Deus Ex (as I invariably am). Good thing I never bothered to change more than one mention 'round the site. :-D

7/15/2001 - Not working on pngacc so much, but still coding lotsa C. Current projects percolating through my brain: finish Uche's pngread & pngwrite (status: get off lazy ass and hack it); clean up pngacc (status: get off lazy ass and hack it); implement RPG engine (status: colored text is yummy); reimplement Tierra (status: ugh).

Changed up the download section a little, added my Russian declension sheets.

I figured out why I like most of my music. I like complex, multilayered themes. One of my favorites, Logic Dreams, has maybe 4 or 5 things going on at once - above that, I can't really keep count. ;-)

7/12/2001 - FF: TSW rules, despite Uche's proclamations to the contrary. I think Evangelion would cause his mind to implode, or something....

Fixed an idiotic bug in pngacc, but I can't figure out why unfiltered data has such a high autocorrelation coefficient. If I can't find any data for which the acc filter does anything significant with, then "pngacc" will be somewhat of a misnomer... ;-)

7/11/2001 - Haven't worked on pngacc in the last couple of days, but I will. :-> Updated the Links page, added some new links to webcomics, added some new images, cleaned up everything. Lookin' cool. Final Fantasy is out today... whooo hoooo.

7/8/2001 - Installed gcc 3.0 and began playing around with it. Added an image for Free Radical on the Links page.

7/7/2001 - Created a homepage for pngacc, which is in version 0.03beta right now. Hope you appreciate the big old site update - 85 kilobytes of source code is pretty good for a project I do in my free time. Added some quotations and organized up the verified section a little bit - it's up to 523 quotations now. Back on 6/20/2001 I said, "Let's look at the counters: The Quotes page has broken 3000, Books at 1500, Airplane at 2000, PNG at 1600, and the GeForce 3 page is plodding along at 2000." Let's do so again: The Quotes page is at 3100, Books at 1550 (blah), Airplane at 2150, PNG at 1650, and GF3 at 2400. My GF3 page is thus quickly rising in popularity, almost certainly because it's the one I've got in a signature that I use when posting on fora. Heh.

7/6/2001 - Cranking on pngacc some more - fixed a nasty GPF error.

C programming interlude: If you create a pointer, and then malloc memory with it, and then increment the pointer itself, you're in for a world of hurt if you aren't careful to decrement that sucker before you free the memory.

Heh. I'll whip up a pngacc home page soon enough. Looked through pngcrush's code - it's, uh, big, and I'm glad I'm only using zlib in my program and not libpng. (That's right, pngacc deconstructs PNG files at the binary level, I don't use other people's code to do that stuff.) Pngacc is just about 80 kilobytes of pure source code right now, not counting zlib, and counting my copious commenting.

7/2/2001 - I'm continuing to work HARD on pngacc. Evidence: The source code directory for pngacc, which is entirely stuff I've typed myself in DOS EDIT, is 45 kilobytes. That's a lot of text - even the massive Quotation Collection is only twice that, or so. I'm up to the point where I decompress the PNG data - now, to defilter it. Hopefully, pngacc should be massively fast compared to pngcrush - I plan to only do trials that are necessary, and I do all work in memory. Woe be he who tries to run pngacc on a 500MB PNG file on a computer with 256MB RAM. ;-)

7/1/2001 - Quotes hit 519 - added some good stuff from Expert C Programming: Deep C Secrets. Figured out a bonehead mistake I made in pngacc that was causing GPF after GPF: PNG files start with the signature, not the IHDR chunk... duh.

6/30/2001 - Added a screenshot of my desktop to my personal page - go check it out, it's fun. Am I not updating much? It's because I'm working on pngacc, to clean up its code and getting ready to add more capabilities to it. Mmm, I do my best work at 4AM in the morning.

6/27/2001 - Moving up in the world. I also read through all of my old news posts - heh, this page is so rambling and detailed to the point of irrelevancy. At least it's fun. Quotes hit 513 now. It was at 400 just a year ago, 6/25/2000. As you can tell, most of the growth in the Quotes page happened during the time of the old web site (may we never speak of it again). Then again, during this last year I wrote this entire web site from scratch. So I'm feelin' pretty good.

6/26/2001 - Worked on the Quotes page a little - added a few (I am up to 499 now) and put some more organization to the verified section. As I don't have my books with me, I don't think I'll move any quotes from unverified to verified this summer. Oh well.

6/25/2001 - Working with UnrealEd some - I have made a working door with a nanokey and lockpickability. Oh, I love this so much more than Build. Need to know if multiplayer maps can have datacubes/computers/books, because that will be an important part of DXMP_Blacker. Figured out multiple file compilation in C - it all makes sense now.

6/24/2001 - Tried to write two essays for the site, and both were lost in a mire of suckiness. I'll see what I can do - I feel like writing about System Shock 2 and Deus Ex. Thinking about the Deus Ex SDK too... a little something called DXMP_Blacker. Let's see if I can make a box room first. I will probably work on pngacc soon. I'd love to add it to the downloads section once it's complete. Added a mini-book reviews section to this page.

Downloaded the DX SDK and a bunch of tutorials for it. I feel an obsession coming on....

6/22/2001 - Added a new quotation to the Collection. It's, uh, long (about a page from the book) but it absolutely rules: a selection from The Silmarillion. All in all I haven't found the book as quotable as LotR (probably because I find it even more interesting!), but this one is more than enough. Right now it is at #30 (I will be too lazy to update this as this new item grows old). As in, if you haven't read The Silmarillion, go do so NOW.

Pngacc is now at v0.02alpha, or thereabouts - I am putting in heaps of code to defend against errored PNG files.

6/20/2001 - Back in Colorado, with my computer (oh, life isn't worth living without your personal computer around). Starting work on "pngacc", yes, for real this time. Let's see how it goes. I have successfully malloced and used memory now, yippee. Dialup sucks, but I am planning a super-neat anisotropic filtering addition to my GeForce 3 page (did you think it was just a one-shot deal meant to strain ITS's webserver? Heh. It's here for the long run. I've already added the Deus Ex antialiasing screenshots.) And I am continuing to play System Shock 2, which continues to scare the hell out of me.

Dialup really sucks - it's going to be quite difficult to update my webpage, just because of the long upload times. And because I loathe multi-page thingies, my web site is composed of about a dozen long HTML files. Which means if I update one, I have to upload the whole durned thing. Links may break, or something, if I am not careful and don't keep the online website an exact duplicate of the offline website (which may happen as I only upload the pages I change - or remember changing). It takes forever to check my favorite sites like NVNews or my webcomics. Aaaargh.

Got a copy of the PNG Specification and the Zlib Manual (aka the Old Testament and the New Testament), so I'm all ready to crank out some good C code.

Some good news: Deus Ex II will use the Unreal II engine. That's not just any old Unreal II engine, it's the Un-fucking-real "100 times the poly count and insanely gorgeous" II engine. Oh, there is a god, and his name is Warren Spector. GCC 3.0 was released, so I need to get a copy and see if I can get it to run on my system. (Odds: 50/50.) And Final Fantasy: The Spirits Within is upcoming, whoo hooooo. Max Payne is taunting me - I am somewhere between psyched for and annoyed with it.

Aaron is winning me over to the side of DDR SDRAM. Hmmmmm.

Let's look at the counters: The Quotes page has broken 3000, Books at 1500, Airplane at 2000, PNG at 1600, and the GeForce 3 page is plodding along at 2000. How do you people find my pages? Heh.

I did manage to snag a list of the new books I added to my bookshelf, and I'm pretty certain it's all complete. In the days to come I hope to work on the Book Reviews page, as it is growing old, and make it new again. That is, if pngacc doesn't suck up all of my time.

Added "The Dumpbox" to the Links page - go check it out. It rules.

Added Tolkien stuff to the Quotation Collection.

6/15/2001 - Finally managed to write a long E-mail to Frank L. Lambert, of and fame. Actually - heh - I found his sites months earlier, and cited them in a short extra-credit paper on cold packs that I wrote for Caltech's Chem 1b. And then he finds my little corner of the web and mails ME! Coincidences are so fun. Just the thought that important and distinguished people are reading my HTML makes me want to clean up this poor excuse of a site, make it more formal, less silly, less, uh, ranty. (The ITS folk read my GeForce 3 page too, heh.) I am now moving back to Colorado as I finished my 4 finals and 1 lab (that, uh, I got an F on, but I didn't care about the lab in the first place), so I will be out of commission for something like a week. I will see what I can do about Book Reviews - I will try to write down their titles, then do reviews from my poor faulty memory at home in my Plentiful Free TimeTM.

I was sort of astounded to read Professor Lambert's pages and realize that as he graduated from Harvard in 1939, he was actually -around- when the Hindenburg burned. As a silly teenager, I automatically assumed that such events were from the ancient past. I thought I was immune to such snobbery, but alas, I was guilty of assuming the world belongs to young people when in fact it was built from the ground up by our previous generations. Too few "young people" (it's awkward to say that, as I am one of them), I think, really respect their elders. And I have an automatic worship of scientists, so when a real _professor_ sends me mail, I can't quite believe it. Like if Tiger Woods personally sent an E-mail to my good friend Andy Yang, who praises the very greens Tiger walks on. :-)

I am even more curious than before as to how people are actually FINDING my little set of pages out in hyperspace.

My parents figured out I bought a GeForce 3. "D'oh"

Ah well - time to get to work and start packing some stuff up (uh, digitally).

6/12/2001 - Yes, I am updating my site in the middle of finals. This qualifies me as a "slacker". Mmmm, slacker.

System Shock 2 is easily the most goddamned scariest thing I have ever seen, movies, books, you name it.

Deus Ex continues to rock.

I keep working on my personal page to make it less embarrassing and ranty, and, well, I am somewhat successful. More updates will come "soon". Hopefully.

Who wants to read a bunch of boring news on the Index page? I put a little list of tips there, because I do not want to make a dedicated subpage for it. Mmmm.

6/7/2001 - Mmm, another site update. Just completed another Bi 1 set. While I was looking up rhodopsin sequences online, I got the idea to search for "microphthalmia". Wow. Like, take When a single protein is damaged, you get stuff like "physical and mental retardation, hypospadias and bilateral cryptorchidism, renal dysgenesis and hydroureters, left microphthalmos, agenesis of upper lateral incisors and irregular lower incisors, long cylindrical thorax with sloping shoulders and exaggerated lumbar lordosis, and cutaneous clubbing of the right third and fourth toes". Daaaamn. As far as I know, I am completely normal in every way except for my unilateral microphthalmia. Maybe I should call myself Stephan "Lucky" Lavavej.

5/31/2001 - Sometimes I say things which are completely obvious to me, but seem to strike others as funny. Last Bi 1 section, we were discussing cystic fibrosis: 1/20 of the population are carriers for this recessive disorder. (I have no idea whether anyone in my family is a carrier, but I suspect not). Left to its own devices, CF genes would not increase or decrease in the population assuming random this and no correlation that. However, two CF genes are deadly, and make males infertile to boot. This tends to pull out CF genes from the population, very slowly, as CF patients die. What seems to be keeping it around, like sickle-cell anemia, is that CF carriers may receive protection from cholera. However, since cholera is not a big thing any more, at least in advanced countries, one would expect CF genes to dwindle by about 1% per population, leading to its eventual elimination in somewhat over a hundred generations. That would be a Good Thing. I remarked on this in Bi 1 section, and then added as an afterthought, you know, we'll engineer it out of the germ line long before then. And the TAs and other students chuckled and looked at me strangely. However, I'm right. As genetic technologies advance, we'll not only be able to fix CF patients, we'll be able to fix CF carriers as embryos. Or select embryos that are CF free, even from couples of two CF carriers. No one would ever need be born with CF again, as a patient or a carrier, and we could eradicate it from the face of the planet within a generation or two. We don't need to know how to treat cystic fibrosis if no one is ever born with it in the first place. The religious nutcases would object to germ line engineering, but they object to everything. History will steamroll right over them into the future. I fully expect this to happen. It's just... obvious.

This has obvious personal implications to me, for I am a mutant. Indeed, we are all mutants, but I have a detectable and deleterious mutation. Because my microphthalmia is unilateral, I doubt it's in my genes. Rather, some DNA helix probably was damaged while I was a small bundle of cells, and it just happened to be the precursor to my right eye. Who knows - perhaps a K40 nucleus, or indeed a C14 making up the helix itself decided to explode, and the course of my life was changed. I don't know enough about the defect. Indeed, my family has never had a case of microphthalmia as far as they can remember; my sister and parents are normal, and indeed I don't even know a single other person with it. But if the defect is in the DNA of all of my cells, that would suck. I would not want to have children with microphthalmia, especially if a bilateral defect were to strike. But I don't fear much. Genetic engineering will have a solution to this soon enough. Science has nearly infinite powers.

5/25/2001 - I realized recently that a fair amount of the website updating happens while I'm doing laundry. Heh heh. Added my friends' pages to the Links page. I just realized that my main HTML directory takes up 657KB, most of which is text I typed out myself, very little of it formatting. Heh. Daaaamn.

And, finally, I updated the Paper Airplane page. Those overcompressed photos are totally gone, replaced by really good looking new photos, and it only took me a few hours of processing and editing. They look more professional now. I didn't take them in a very professional manner, but they sure look like it. And the page size only increased by a factor of 4 or so, so I am happy.

I read through all the archived news updates on this page and edited them to bring them up to date. They are actually quite interesting to read: I get ideas to do stuff, I wait around for a while, and then it gets done. Story of my life. Apparently a lot of people are seeing this Index/Plan now, which is funny because before the site move, hardly anyone looked at my index and plan. Perhaps I should work on my book reviews, which I haven't touched in ages - yes, it's gotten really bad, and yes, I have even more books now. A whole freakin' load of them. Sigh. I must do that before the end of term, because I will be 1000 miles away from my books during the summer. Eck.

5/24/2001 - In recognition that my web site has in some sense "hit the big time", I have finally moved the directories on my hard drive from C:\TEMP\NEWWEB where they have languished for just about a year now, to a more permanent home C:\STORAGE\WEB. Heh. This made no difference at all to my web pages; they don't care if they are on my hard drive or on www.its's, but it took me a year to make the change nevertheless. Force of habit, I guess.

Some interesting stuff: Even though ITS upped the quota on their webservers from 20 to 30 MB sometime recently, I am close to hitting it, even after taking down the offline site archive. I am currently at 25288KB used of 30000KB - this is mostly the fault of those big GeForce 3 and Deus Ex images. Never fear; I will continue working on the site and will be undeterred. Why is that, you ask? Because, I have access to www.ugcs as well, and I have 15MB of juicy unused space waiting for me there too. Not that anyone reading these pages will care - the internal organization is unimportant to the end user.

Yes, I am still thinking about those damned airplane images - they are sitting on a CD on top of my monitor. Yes, I will get to them. Soon, or something.

5/22/2001 - Heh, it has been a funny few days indeed. On May 20th, at about 6 or 7AM, I created the GeForce 3 screenshot page. It was 7 megs at the time because I thought my quota was 20. At 7:32AM I E-mailed Halcyon of NVNews about the page, because I like their site, and it updates frequently. I sent no further mails on the matter, as that's what I told Halcyon I would do. At 9:18AM, Halcyon was kind enough to post about it on NVNews. Visitors started trickling in; once 100 had seen the page, I finally figured out how to screenshot 3DMark 2001, and so I added those and some Vulpine shots to the page, bringing it up to its present state and size of 15MB. Visitors started to really rush in - when I got to 500 I realized I had something big on my hands. On May 21st Monday, 3:44PM, Erich Schneider sent me a mail about administrative matters. I found this incredibly hilarious, as did my friends, so I added it to the Quotation Collection. (If he hadn't been mailing me in his official capacity, then I would not have quoted it, as personal E-mails are exactly that, but official communications are fair game. Heh.) The counter is now reading 1300, or something similarly huge. For comparison, the counter at the bottom of THIS page reads only a few thousand, and I've had the new web site up at Caltech since I got here. Funny, funny stuff.

What's the nerdiest thing you've ever done? I don't think I could choose a single thing, because there is so much data to sift through in my case, *grin*, but ranking somewhere in the top ten has to be that I'm now carrying a creditcard-sized index card with div, grad, curl, and Laplacian formulae printed on it. Yes, I took the time to do all the dels and partial derivatives in MS Equation Editor. It's laminated so it is waterproof and to some extent abuseproof. Oh, yeeaah.

I was thinking for a long time about letter tripling in English. Two examples are "freeer" and "freeest", although I haven't had the occasion to use them in a paper. Yet. But another instance hit me recently, one that I do use occasionally: "crosssection". Whoo hoo. I am a big champion of eliminating hyphens in technical words, and it looks like crosssection is going to be my latest victim of traumatic hyphen removal injury. I still spell it "E-mail", though, most of the time. Heh. I am also thinking about word tripling; every once in a while I have the opportunity to double a word in written or spoken speech, and it pleases me to no end. I was wondering if there is a valid non-crocky English sentence that uses word tripling. I think it would take a form like: Something [phrase ending with 'in'] in [phrase beginning with 'in'] something. Oh look, I found it. A sentence ending in in in a novel might sound awkward. 8->

Took down the offline site archive as it was becoming a pain to update.

Yeah, ITS cracked down on me. So I changed the GF3 page to make it use thumbnails. I actually like it better now. Heh.

5/20/2001 - So yeah, I was feeling bad about being such a lazy bum and not doing all the things I want to do with the website. The website is actually more important to me than I tell myself sometimes - it's a big ongoing creation of mine, and I have indeed put a lot of effort into it. So, I've added a new page, the lossless GeForce 3 screenshot page. 15 megs out of my 30 is dedicated to it. Enjoy!

5/13/2001 - So yeah, I realized that I was pretty damn angry when I wrote some of the new sections on my personal page. I don't care very much, other than I worry that it makes me look like a disgruntled frosh (which I most certainly am). The rest of my site is still all about happy fluffy kitties, or PNG interlacing and Mersenne primes, so I think it all balances out in the end.

I am tired of keeping secrets. Not that I have a burning desire to tell them to others, it's that they gnaw at my mind, knowing that I hide things from others. (Sounds insidious, doesn't it?) One of my friends was recently talking about something, then mentioned a certain topic and refused to say anything more about it. (Yes, that is vague.) While I respect that, it's something that I personally would never do. I like to think I'm one of the most open people out there. Certainly on the topic that I and my friend were talking about, I'd tell my thoughts and opinions to anyone who asked, and even people who didn't. Yet I keep my own secrets, small ones, but nevertheless real. I'm still thinking about it.

5/5/2001 - Made a lot of UPX-related changes. Squashed some stuff that was hiding in my Downloads section.

5/4/2001 - Added some stuff to the Airplane page. Unbelievably, people continue to somehow find my pages and link to them! Andrew Chipling added my airplane page to his links page; his paper aircraft page is at And he's written a book too. I plan to update the images on the airplane page as soon as I have time.

4/30/2001 - Added some stuff to the Links page. Yummy.

4/28/2001 - Quick update today. Last night I fell asleep at 5PM (I was really tired) and so this morning I woke up at 5AM (very unusual for me). I had a dream (not one of those "I'm dreaming about getting a Pentium 4", but the other kind of dream, those weird brain movies that play while you sleep) about guest lecturing to Math 7 (Number Theory for Beginners) about Mersenne Primes. No, I have no clue why I was dreaming that. Yes, I am screwed up.

4/27/2001 - Someone linked to my pages today! Joy of joys. ;-) Jill Britton, author of Polyhedra Pastimes, linked to my Polyhedra page from I am still wondering how people find my pages! :-> I don't post on USENET much at all anymore (grumble black hole of time grumble), so I guess it's search engines, or something. I'll continue to work on the site and add more content, so it keeps growing.

I installed a newer version of gcc today, and got a new compressor, bzip2, which looks interesting although it doesn't have the functionality to replace pkzip. Hm, it is 6:10AM. I am feeling bored. Let me tell you a story.

So, my sleeping is wildly out of synchronization with trivial things like the sun, for instance. So I had taken a short nap and I woke up at 10PM, having to do some Biology homework (bleah). When I take a nap, usually I try to remember to take out my prosthesis (see my Personal page). This is because it is basically a giant hard contact lens from hell, and when I wear it for 16 or 20 hours a day, it starts to irritate my eye like grains of sand. Bleah. It's for cosmetic purposes; in fact, I'm more comfortable when I don't have the thing in my skull. So it's 10PM, and I'm sitting down to work on Biology in my single room. Actually, installing bzip2 and shirking Biology. And Andy and Nick (two of my friends at Caltech) decide that it's a good time to come over, at 10PM, heh. Of course, I just woke up from my nap, so I'm not thinking coherently enough, and I open the door. Lo and behold, they're joined by a sophomore too (at least, I think she was a sophomore) from Blacker. And you can see the position I'm in; here I am, looking like a complete dork with one eye closed, and I'm talking to this person whose name I still don't know, heh. What am I going to say? "Wait a minute, let me put my eye back in?" Argh, it was an inferno of embarrassment. I mean, I'm pretty sure I already look goofy (alternating cross-eyed and wall-eyed), and so forth. So it goes. This is one of the reasons I like computers; I don't worry about what I look like to others, except by how I type, which I can control. :-D I feel like Piro of Megatokyo sometimes.

In completely unrelated news, some parts of this site are aging, shall we say, gracefully. I have not worked on the GIMPS banners in quite a while nor has Scott Kurowski asked about them. I talk about TI-RSA on this page, but I still don't know when I'll release the thing. And so forth. The To Do list grows ever longer....

I'm still thinking about how I do the site. The old site, may we never speak of it again, was this incredibly embarrassing collage of rants I wrote in my early teenage years. Mind you, I could write very well then (I crack myself up, I used to be rather funny), but I lacked, how shall we put it, tact. Also, the old web site had no personal information on it. The new web site here started out as pure content: book reviews and quotes, and the like. To a large extent, the web site is still highly focused around the main content pages, and my new Site Directory makes this much more clear. I've been throwing in some information about myself too, though; I've got the LASTLY shrine up, and that personal page that I keep working on so that I don't look like a dweeb (I'm a nerd, mind you). And I've been doing some personal ranting on this Index/Plan page too, which is the most disorganized page of all. I think I need to add some more content to the web site. :-) I am EXTREMELY happy with what I have accomplished so far; several interesting pages containing a wealth of information available hardly anywhere else. Ah well. I don't know if anyone even reads these news posts I put here.

4/21/2001 - Changed an image on my personal page. Aaron and I no longer look like dorks. However, the image still has a bunch of problems. I had to work voodoo magic on the original shot I took of the photograph with my father's digital camera. I'll redo it AGAIN this summer. (I didn't know I needed more light until I got back here.) Basically, Uche's skin is chocolate brown, but in the new image most of the details have been lost it is so dark. Aaron and I also have corrupted skin tones there: no, we are not orange mottled with gray. On the other hand, we don't look like dorks any more.

4/19/2001 - Added some more quotes.

And now, I'd like to take the opportunity to write a mini-essay on this page. I realized that I have a 40k essay on First Person Shooters lying around on my HD, and it actually doesn't suck that much. I might be putting it up later. (Note: Didn't happen.)

What I'm going to write about is something that Ernest Adams said in his The Designer's Notebook at He came up with this scheme, "Dogma 2001", about how to make computer games better. Now, it was mostly meant in jest, and he expected no one to take it seriously, but it's got a lot of misconceptions behind it. I'd like to talk about it. His document consisted of recommendations for game development. I'll mention anything that I strongly disagree with.

"2. The use of hardware 3D acceleration of any sort is forbidden. Software 3D engines are not forbidden, but the game must run at 20 frames per second or better in 640 x 480 16-bit SVGA mode or the nearest available equivalent.

Justification: By adopting a simple, well-known display standard and sticking rigorously to it, both designers and programmers are freed to concentrate on tasks of real importance."
This is a crock. Some stories cannot be told without hardware 3D acceleration. This is because 3D graphics are extremely computationally intensive, and not even the fastest CPU can handle them. At the time of this writing, the best graphics card, the GeForce 3 has more transistors in it than the Pentium 4, the best CPU. Some things are possible in hardware that simply cannot be achieved in software. Look at Wolfenstein 3D and Duke Nukem. Their engines are too simplistic to tell a realistic story. The player is constantly reminded that they're looking at sprites in a nonreal world. Whereas, we move to Deus Ex, which is a 3D accelerated game. It actually tells a real story, one that might be found in a novel or a movie. The fact that its engine (the Unreal engine) is accelerated in hardware allows for more graphical detail while maintaining framerate (the real world does not move at 5 frames a second, as Deus Ex does in software rendering mode). And when you think about it, Deus Ex's graphics are really primitive. Compared to the 3DMark2001 nature scene demo (utterly breathtaking) running on the Max Payne engine, or Halo running on its own engine, Deus Ex really is primitive. As 3D hardware acceleration technology advances, graphics will become less and less important (paradoxically) as they approach the real world, and telling an actual story will be more important. Live action films contain 'graphics' far beyond anything achievable with computers, and we're not impressed that people's faces actually look like faces. The story matters more. The same will happen with computer games; as they become more realistic, it will be easier to tell stories in them, and it will become vital to tell stories in them. As it's worked for authors for hundreds of years and filmmakers for decades, game designers are realizing that what really counts is telling a story in a game.

"3. Only the following input devices are allowed: on a console machine, the controller which normally ships with it. On a computer, a 2-axis joystick with two buttons, or a D-pad with two buttons; a standard 101-key PC keyboard; a 2-button mouse.

Justification: Most games that depend on gimmicky input devices are crummy games. You must not waste your time trying to design for them."
This is partially a good idea. Steering wheels, foot pedals, fishing rods, these are obviously worthless gimmicks. However, in his reaction Ernest Adams is limiting future development. Just a few short years ago, I would have thought that the mouse had reached its pinnacle of perfection: three-button mouses were omnipresent, and no one used the third button anyways. And then, out of nowhere, the mouse wheel was developed. I couldn't live without my mousewheel today. It's used in games to an amazing extent too; you can scroll through weapon selection menus with it, zoom in and out, and so forth. Clicking the mouse wheel (which is still the third button of lore) now does things both in the OS and in games. Not to mention that I use an Intellimouse Explorer, which has two additional thumb buttons (a big one and a little one) on the side. I use this to great effect in Deus Ex Multiplayer where I can select augmentations at a click, instead of taking my left hand off of the precious ASDF keys and pushing a function key to select an augmentation. (The Q, E, etc keys perform functions too). Who knows what the next advance in input technology will be?

"4. There shall be no knights, elves, dwarves or dragons. Nor shall there be any wizards, wenches, bards, bartenders, golems, giants, clerics, necromancers, thieves, gods, angels, demons, sorceresses, undead bodies or body parts (mummified or decaying), Nazis, Russians, spies, mercenaries, space marines, stormtroopers, star pilots, humanoid robots, evil geniuses, mad scientists, or carnivorous aliens. And no freakin' vampires."
Yea, there are many cliched ideas here. However, note that the revolutionary game Black & White casts you as a god battling other gods, with good and evil consciences. A game with cliched characters does not have to be cliched in itself. Also, my favorite science fiction characters of all time, NFN NMI Data, Andrew Martin, and R. Daneel Olivaw, are all humanoid robots. J.C. Denton comes close. If anything, we need more of them in games, not less. ;-)

"5. The following types of games are prohibited: first-person shooters, side-scrollers, any action game with "special attacks."
Deus Ex was a revolutionary game. It also included shooting from a first-person perspective. However, I agree that mindless Quake and Doom style shooters are worthless. Also, One Must Fall: 2097 was insane fun, and OMF: Battlegrounds will likely be too. Just because Mortal Kombat and its derivatives were made does not mean that the fighting genre is worthless.

"6. All cinematics, cut-scenes, and other non-interactive movies are forbidden. If a game requires any introductory or transitional material, it must be provided by scrolling text.

Justification: The secret desire of game designers to be film directors is deleterious to their games and to the industry generally. This desire must be stamped out."
This is just silly. Deus Ex's cutscenes to dialogue (all were done in DX's engine) were the key and vital component of the game. ConEdit technology puts even Final Fantasy VIII, that other pinnacle of story-based gaming, to shame. In fact, Final Fantasy VIII's cinematics were likewise key; the ending could not have been done in the game engine itself. Nor could it really be done today in engine.

"7. Violence is strictly limited to the disappearance or immobilization of destroyed units. Units which are damaged or destroyed shall be so indicated by symbolic, not representational, means. There shall be no blood, explosions, or injury or death animations."
Silly. Imagine The Matrix or Terminator II if this rule were applied.

"8. There may be victory and defeat, and my side and their side, but there may not be Good and Evil."
Imagine Lord of the Rings if this rule were applied.

4/17/2001 - Lotsa updates. Try to find them all.

4/16/2001 - A big drought of updates has passed. Yeah, I know. I have been working on the page but I've been having to deal with a lot of stuff. I massively changed my personal page. Added some images to the links page and some more songs. Added a bunch of new quotes. I am really getting behind on the reviewing books thing. I know, I know. (Note: Uh, I think somewhere around this time I got a single, meaning that my life changed from being an utter hellhole to less of a hellhole. Yay)

4/1/2001 - April Fool's Day, the only holiday universally celebrated on the Internet. I am going to be buying a Mac, a PS2, and an Athlon with an ATI video card. :-P Now, for some things which aren't a joke: I found and fixed four miscellaneous mistakes on the website. I changed my personal page some and fixed the PNG page.

3/17/2001 - Well, finals are over. Whoo hoo. I have not worked on most of the webpage in a while, I am sorry. I've been busy with other things. However, as a treat, I have enhanced the PNG page with new and larger images, and a demonstration of the wonders that bicubic interpolation can work. I think you will like it. For the next coupla weeks, I will be back in Colorado; while I can still use my E-mail, I will not have actual access to my computer and won't get any web page work done. However, I WILL remember to use my father's sweet, sweet digital camera to take images for the site, and those will be up later. I also updated my Personal page a little more.

3/9/2001 - Well, second term is over, although I still have finals to do. Added five quotations to the collection. Important news: I am going home to Colorado for spring break, back to my family, my kittycat, and my father's sweet, sweet digital camera. I will be enhancing several pictures on the site, in particular the Paper Airplane instructions. Also I may take a recent picture of myself. (Note: Didn't happen.) People still seem to influx through this site, although it's been a while since I posted to USENET and had my site's URL in the signature. I wonder where they are coming from. Maybe search engines. Just to give you something to look at, I finally put up a Links page. It is skeletonized right now, but it is all the stuff that I commonly visit. My big huge archive of links is half-broken anyways....

2/20/2001 - So yeah, it might appear that work on the website has slowed to a grinding halt. And yeah, that might just appear to be the case. But really, I've been doing a lot of stuff. Like reading a whole bunch of science fiction. I haven't read this much since Asimov's Foundation, and this time it's actually by different authors. Wow. And I've been making my way through some of my science books as well, although this brings me no closer to having them all reviewed on my book reviews page. And I've been working on a new Epcot creation, that'll be really nifty when it's finished. (Note: Left uncompleted.) Oh yeah, and all that Caltech stuff. Rest assured that I am still thinking about the website, heh, and I won't let it stagnate. Much. :-D

2/7/2001 - Still very busy. Reencoded kitty.avi to kitty.asf, shrinking it 5x, and now it ought to work on everyone's computers. Yaaay. (This file is now gone from the Downloads page.)

1/29/2001 - Busy busy busy. Little getting done in the way of website stuff, though. Here's an interesting tidbit: I now understand why I was accepted into Caltech and not into MIT. Of course, the MIT people may just be weasels (still likely!), but I might have hit upon a contributing factor. I was feeling nostalgic and was reading my college admission essays. I was too damn concerned with getting into MIT. I put too much work into my essays. Tried to craft them to be the best they could be, tried to show my best side, explain my shortcomings and so forth. Basically, I presented a false image of myself. I hate that. I didn't know enough about Caltech at the time I wrote the essays to really want to go there, er, come here, whatever. So I didn't care about looking my best. I spilled who I am onto those essays. I included my Extended Essay abstract. I talked about how much I love science, how much there is left to learn, and it's all done at my pace. I was just relaxedly describing who I am. I like the essay much better after reading it again. I think that's why I got into Caltech and not into MIT. Sometimes, luck strikes in the strangest places. :-D It almost reminds me of some of the better parts of the essays from my old website. Just me, down to the core, talking about what interests me and having no patience for any other pretensions. That's what I'd like to think this site is, now. I hope I'm coming close to what I want. I hate myself when I try to be something I'm not, when I try to put on a facade for other people. I love simplicity. I like being myself, damnit. This is who I am.

1/14/2001 - Added five more books (sans reviews) to the Book Reviews (heh) page. This is the getting worse before it gets better part. Sorry for the increasing bogosity; I hope to have this resolved soon. (Note: Didn't happen.)

1/12/2001 - Did a search on my hard drive: at the moment, I have 297 PNG files stored, and 3315 GIFs. Bleah. Most of the GIFs aren't my fault. But it's still disgusting.

12/27/2000 - Added a quote to the Quotation Collection. Added four new books to the Book Reviews page (but without reviews, sorry). I am getting rather behind in that area; not only do I have a small number of books that are unread, but I have a larger number of books I still need to write reviews for. This will only become worse in the coming days and weeks before it becomes better. :-< I finally fixed those "too technical" notes with a simple system of gray stars, which I'm much, much happier with. Also, added some Winamp AVS presets to the download page, for fun. And, ARGH, I found two spelling mistakes on the PNG page while I was reading it. That just annoys me - it makes my pages and me look unprofessional. No one caught them before, so either no one noticed, didn't bother to tell me, didn't care, or were too polite to mention it. :-D

12/20/2000 - I'm back at Caltech from Colorado. My Internet connection works again, after I remembered to plug the Ethernet in (I really amaze myself sometimes). Fixed some stuff on the Polyhedra page and generally spiffed up the site to prepare for the new millennium of the Common Era. That includes the little things at the bottom that give my name and E-mail address, because heck knows I'm annoyed when I print out a web page but don't note any contact information. (This is why that URL stuff has been there from the beginning; sometimes whatever application I'm using doesn't note the URL, or I'm looking at a page on my hard drive.) Right now I want to play Diablo II (a horrendously plot-devoid yet strangely fun game, like Nethack on anabolic steroids) and DXMP, Deus Ex Multiplayer (an incredibly awesome and fun game). While in Colorado I was actually working on the website, cooking up a new page. I may upload it if I decide it's worthy and cool. It's about writing and spelling, and some thoughts I had on the matters. (Note: This was never uploaded.) I really, really, really love broadband. Dialup must burn! In other news, more and more people seem to be stumbling across this little paradise I've created. I always enjoy receiving E-mails; they're fun to respond to, and remind me that putting time into this website isn't actually a complete and utter waste. I also updated this Index/Plan page somewhat. Work on DOUBLE V has momentarily paused as its creators are flitting about the country in jets. I plan to restart an old, discarded project of mine, pngacc, in preparation for DOUBLE V (I hope to be able to reuse some of the code). In an act of blazing, blinding stupidity, I forgot to do the digital camera work I needed to do in Colorado before the camera was made unavailable to me. This matters because my father has a really COOL digital camera. So, unfortunately, the artifacty JPEG images on my Airplane page (a relic from when I had, shudder, dialup) will have to remain during second term at Caltech, until I can get back to Colorado and that awesome digital camera. (This includes, Aaron, that picture you hated. Sorry...) Additionally, I've been doing some reading and book purchasing. In the upcoming days I may update the Book Reviews page to reflect this.

12/10/2000 - I get to see my kittycat!

12/9/2000 - All-nighters are fun. In other news, a place called XXXXX gave me an "Academic Excellence Award" for my Origami Polyhedra page. Oddly enough, they claim that human reviewers found my page, but sent me a form letter about it. I don't like form letters; never have, never will. Second, while I appreciate their linking to my page, they misclassified it as Family: Crafts: Origami. I say on the page, "the word 'origami' therefore applies very tenously, you see; it's more of a mechanical process". I.E. It's not really origami like art origami, and I wouldn't consider making stellated truncated icosahedra a family activity. It belongs in a Mathematics section. Next, they invited me to display their award on my web pages. That won't happen for a number of reasons. First, it's a GIF file, and we all know how rabidly I hate the GIF format. (I mean really rabidly. Come on. I wrote up an entire page with a graphical demonstration and everything of how much GIF sucks.) But the real reason that I'm annoyed and not happy is that they claim that "the XXXXX Academic Excellence Award and the images associated with it remain at all times the copyright of Yoyodyne Propulsion Systems Inc. We reserve the right to withdraw the award should the quality of a site in our view deteriorate". That's not a gift, is it? I detest the thought of putting copyrighted things on my site which aren't copylefted/GPLed/etc. (My Mersenne paper is, sadly/annoyingly, copyrighted by the IBO, but it's obviously an exception for a number of reasons.) So this is why I am not linking back to their site nor displaying their "award" on my web page. (And why I've censored the name of the site and their parent company here. I have principles, you know.) They can still link to me, but I won't link back under their conditions.

12/8/2000 - First term finals are over, and I celebrated by playing multiplayer Deus Ex well into the, eh, morning. Corrected some things on the website, added a quotation, etc. This multiplayer Deus Ex will now start sucking up my time in place of schoolwork, so I can't promise any massive site updates.

11/24/2000 - Reorganized some quotations (didn't move any from unverified to verified, sadly).

11/20/2000 - Massively busy. Added the DOUBLE V page, which you shouldn't care about unless you're Uche or Aaron. It'll be cool. (Note: Uh huh. Sure. That page is now deceased.)

11/9/2000 - Added a few more quotations to the collection.

11/5/2000 - Tweaked some of the pages on the site. Still don't have a lot of free time. Sorry. :-<

10/22/2000 - Worked on the site some more.

10/20/2000 - Bah, who wants to do problem sets? I worked on the site a little, including revamping this page. Contact info and whatnot is on my personal page.

10/12/2000 - Getting set up at Caltech. Don't have much free time. Added file to Downloads page.

10/11/2000 - I don't have a super-elite digital camera anymore, so putting pictures on my site will have to undergo a temporary moratorium. Bah. I need to update the pictures on my personal page and on my paper airplane page.

10/7/2000 - Put up my Mersenne Primes paper and my personal page. (Note: This is the precise moment when my personal page begins to annoy me.)

9/30/2000 - The Great Site Move of September 30, 2000, occurs!

9/27/2000 - I'm back... but very busy. In other news, Aaron Lee is a Weasel Commando.

Stephan T. Lavavej moves to Caltech...

9/6/2000 - The pngcat project that Aaron Lee and I were working on has stalled, mostly because we hate the code so much. We've started another, bigger, (and more useful) project, called pngacc, but we don't have a working beta version yet. I haven't worked on SHA1.EXE at all so far, as it's in a much more developed state than pngacc right now. Stuff is proceeding on a number of other fronts, and it'll be an exciting time in the months to come. I added an image of the LASTLY paper clip to the LASTLY shrine, because I finally got around to giving AYL one of the two that I made. (More current update: Pngacc is fundamentally broken, I'll have to recode it. SHA-1 is now superseded by SHA-512. Isn't life great? When I have time I will work on a total recode of pngacc.)

9/2/2000 - Essay #1, Space Exploration, completed.

8/31/2000 - Things are still developing with SHA1 and that project that AYL and I did, although they've been put on hold for now. Updated the Quotation Collection.

8/28/2000 - Updated the LASTLY page. I finally found some images of the LASTLY chip that I like, which is good because they were rather ugly before. The new ones are supercool and I probably won't ever have to change them again. Still working on SHA1.EXE. Also, I completed a joint project between AYL and myself, pngcat. It sucks, hard, and I don't really need it anymore. It won't be released publicly. Surprisingly, after fixing some stupid typos, the program ran without a hitch. Which was rather unexpected given the fact that both AYL and I had no freaking clue what we were doing when we wrote it. Actually, AYL wrote most of it, while I tried to keep track of what the program was doing (I know the PNG spec better, while AYL claims to know C better: void main(), indeed! :-P )

8/26/2000 - Updated SHA1.ZIP again. Added some rather nifty features. Sorry for not working on the site as much as I'd like, but I can only type a finite amount of characters per day; whether it's C or HTML doesn't affect how much time I have to type them in. I'll probably get back on working on site features once SHA1.EXE starts settling down, which should be soon. I'm learning sooooo much C from this little program, it's cool!

8/24/2000 - Updated SHA1.ZIP again, with some massive code improvements. The program should now be fully FIPS 180-1 compliant.

8/23/2000 - Ahhh! Survivor finale tonight! Heh. Updated SHA1.ZIP, which is cool. There's still a lot of stuff I want to do with it. The code is looking rather better than before, actually. (Later update: Richard won! That's great. I feared that Kelly might win. Too bad Rudy didn't win, though.)

8/22/2000 - Added three new books I bought to the Book Reviews page; I'll have to start reviewing some soon. I've finished Supersymmetry and K&R2, and I'll be adding reviews of them soon enough.

8/21/2000 - Updated banners! I made a number of significant changes, the most significant of which is that the banners now look so smooth you wouldn't believe that they're 8-bit. As Duffman would say, "Oh, yeah." It did involve a 4,000 byte increase per PNG, which pisses me off, but quality comes first and filesize comes second. NEW PAGE! I added my turbo-nifty PNG page, which is cool. Go check it out; it's got an awesome demonstration of PNG interlacing, one that way outperforms even the PNG Home Page's demonstrations.

8/19/2000 - Tightened up the source code in sha1.c, actually adding in three functions (SEE, Aaron, I could use functions!) and cleaning up a lot of the general crud I had put in there first. I learned some more stuff about C from making plenty of stupid errors. Things to note about this new version, v0.21b: I don't use a temporary file anymore! Instead, I perform padding on the fly, because it was cool and I hacked out a nifty function that both makes my code cleaner and adds padding when the file runs out. Hacking C is becoming as easy as hacking BASIC, which is a good thing! (AYL gave me example code how to perform a simple function, but I dreamed up getpad() all by myself). Because that damned tempfile is gone, I don't need to include stdlib.h and I don't need to make a system() call, which completely defangs sha1.exe (no possibility of it deleting anything), and totally shrinks the code. It's smaller than some Hello, World programs now. It's also FAST, although I really didn't do anything special. Next up I'll probably add in a way to tell sha1.exe to write its output to a specified file, so that other programs can use it, say by executing "sha1 -qq -b FILENAME.BIN OUTFILE.BIN". Whee. sha1.exe also supports a -q switch at nearly no filesize cost (that string.h is tiny, yay), which makes it shut up. Good. Sorry if it looks like I'm not working on the site; I'm working on sha1.exe. Which is on the site. So there. :-D

8/16/2000 - I wrote my first ever real C program yesterday, a program that calculates the SHA-1 hash of an arbitrary file. Read all about it on my Downloads page. As Duffman would say, "Oh, yeah!". Also changed to, which is supernifty. Various other things are proceeding at their own pace: that 5000-word paper stuff should be done shortly.

8/14/2000 - The Plan/Index Unification occurs! I had expanded my anemic placeholder index.html (the one that no one should have ever found on purpose), but decided that it was redundant to have both an index.html and a plan.html. So I combined the two pages into one. Nifty, huh? Also, I added three new quotations to the Collection.

8/13/2000 - Quick update! I hope to have a super-nifty pack of three PNG programs available (i.e. the three that I use) in one .ZIP file: pngcrush (long live pngcrush!), pngrewrite, and pngcheck.

8/11/2000 - Updated pngcrush executable on my downloads page to have assembler code. Glenn Randers-Pehrson taught me how to compile in the assembler code, which makes pngcrush faster. Nifty! Glenn Randers-Pehrson is cool. Through E-mail I suggested an interesting idea for adaptive filtering that was burning in my mind; he also thinks it's interesting, which is great. Maybe we'll see it soon in pngcrush. (Random thought: I really like free software and the authors of free software. They respond to suggestions from mere mortal users. Let's see a massive heartless corporation like [ominous music] Microsoft respond to, let alone actually consider, a suggestion to add non-brain-damaged PNG support to IE.) I'm now working on squeezing out further optimizations. Got some new books which I'll be reviewing as well, but my big book shipment hasn't arrived yet. Darn. Got an E-mail about my paper airplanes page, which makes me happy. E-mail good. Added some quotations; up to 448 now, and more are on their way. And most of them are Latin. Yeah!

8/9/2000 - Completed the Origami Polyhedra page. The graphics are nifty, and the polyhedra images actually look good. It's a really nifty page. I'm not sure what I want to do next. I really like how the new web site is turning out. It's just great. Every page is packed with content and (almost) no irrelevancy, every image is compressed as much as possible, the HTML is entirely written by me and as such is some of the cleanest HTML in existence (although this is mostly due to the fact that I don't know HTML), and all of the pages actually look good when printed. Although IE5 prints out screwed-up PNGs. Most importantly, I'm not embarrased by my site anymore. The old site (may we never speak of it again) was embarrasing. That's why I deleted it. :-D I also updated this page to reflect the fact that I've completed yet another page.

8/7/2000 - Added new, completely updated banner gallery. (Now deceased.) All GIF images on my site are dead. Added new quotations. Updated LASTLY page's graphics; they're supercool. Changed news format slightly.

8/4/2000 - Added a new update to the Downloads page; this time, it's a smaller, faster version of the pngcrush executable. Check it out; it's really nifty. I'd do the same for BladeEnc if it weren't for copyright crud.

7/31/2000 - Massive interconnectivity to the Book Reviews page added. All books have unique identifiers; if you know what I'm talking about then feel free to link to them; if you don't know what I'm talking about, then just ignore it as it's not meant for you. Go play Deus Ex. Changed the 9-star graphic to one that I actually like.

7/25/2000 - Played through and won Deus Ex. :-> Now back to the website.

7/15/2000 - Finished all book reviews.

7/14/2000 - Bought Deus Ex.

7/13/2000 - Added one new quotation. Added plan.html to the Site Directory of all pages. Reviewed a whole bunch of books; now up to 160.

7/12/2000 - Reviewed some more books; up to 141 now. IE5.5b is said to be able to print .PNG images correctly, but I don't feel like upgrading just to verify that. I really love the PNG format. pngcrush and pngrewrite are simply awesome little utilities. The Book Reviews page is now entirely starred, except for books that I haven't reviewed yet or read yet. Finished the Astronomy/Astrophysics section. Got some nifty tools, pngcrush and pngrewrite. I also crushed and rewrote the .PNGs used in the rest of the site; again, I got a 63% space savings! Also added a new level of stars.

7/11/2000 - No additional reviews today, but I do have a treat: RATINGS! Yes, I'm rating every book that I've reviewed so far using my own one-to-five star system with three bonus points possible. (It's explained on the Book Reviews page.) I finally found these really nifty star graphics to use, and they only required moderate munging to create what you see there. As time goes on, more reviews will be rated. Please E-mail me if you have any comments about my cool stars or questions/suggestions about where my website is going. My learning of the C programming language continues, albeit slowly.... Happy discovery of the day: the PNG images I use don't print correctly in IE5 - grrr.

7/10/2000 - Added 2 new quotations. Reviewed some astronomy books today, and now I'm up to 117.

7/9/2000 - Reviewed the last of the technology books; now at 112 total.

7/8/2000 - 103 of 169 books reviewed, including all the Chemistry books. The Book Reviews page has now far surpassed the Quotation Collection in size: 94KB versus 85KB, and it will only get longer. Content, here we come!

7/7/2000 - Finished the physics books. Up to 85 of 169. I really like how the new site is coming along. I've always wanted to have a Book Reviews page and now that it's taking shape I'm extraordinarily pleased with the signal-to-noise ratio of the new site. (The new site is 95% signal; the old site was 95% noise.) Reorganized some, placing Stalin and the Bomb in the Technology section and Liquid Crystals in the Chemistry Books section where they properly belong.

7/6/2000 - Reviewed some more physics books; up to 60 of 169. Learned how to do blockquoting, so I added that to the book reviews page in place of my earlier methods, which makes everything look much more cleaner and elegant. Added an image of the LASTLY chip to the LASTLY page. Searched the Internet; found other sites dealing with the same type of origami polyhedra I want to describe; the pieces seem to be called "Sonobes", but I'll still keep calling them "pieces". Found images of the icosahedron but not of the specific Epcot Ball I've created. Fixed a moronic mistake on the LASTLY page.

7/4/2000 - 52 books reviewed. I'm reviewing some more books, and got the first E-mail cheering me on. :-D Rearranged some of the books to make them fit better; The Collapse of Chaos and Figments of Reality are now in the Science Books section along with reviews; I had them in the Mathematics Books section but that was blatantly wrong. Quotes hit 419.

7/3/2000 - Reorganized internally some more. All images were moved to a separate directory to make things much cleaner. Renamed two archaically named images for the new web site. More importantly, there are no more GIFs anywhere on my website. PNGs are now used where there were GIFs (I still use JPEG, of course, for the background and for the airplane images). Sorry if this breaks my page in older browsers. In fact, even the newest versions of IE and Netscape have severely broken PNG code, even to a level where it affects me. 8-bit grayscale transparency is broken in IE5, as is 24-bit transparency) Oh well. This will save a minor amount of transmission time and storage space, but more importantly I did it for ideology. Created a Download page. Reencoded the JPEG files that make up my Paper Airplane page, reducing their total size by about half. (Note: this later caused me a lot of pain until I fixed it on May 25, 2001.) The final image is now very sharp and in color. Learned how to superscript. Nifty. Added said capability to the LASTLY page.

7/2/2000 - Added the LASTLY page.

6/29/2000 - Reorganized the quotes some, added a few new ones. Almost all Albert Einstein quotations placed in the Personally Collected section where they belong. Things are looking better. Added a new book to the Book Reviews: A Brief History of the Future.

6/27/2000 - Quotations hit 407. Added a numbering system to the quotes to make manual counts unnecessary. Added numbering to the Book Reviews as well.

6/25/2000 - Quotations hit 400, thanks to James Arthur.

[Various pages are added in short order, until the creation of plan.html]

6/5/2000 - The Great Reorganization of June 5, 2000 occurs. My entire old web site is deleted save for quotes.html. (updated a long time ago)
Stephan T. Lavavej
This is my personal website. I work for Microsoft, but I don't speak for them.