hacker emblem
jaegerfesting

Tokyo Time

Date: 2002-06-02 15:36:15

Wednesday morning in parallel and distributed computing, Swinyar and I noted that neither of us had started with the assigned work in the class, which was a bad thing, since the end of the quarter was approaching rather rapidly. My excuse was that I had been working on my senior project for most of the quarter, until I de-prioritized it a few weeks ago and began diligently working on VLSI and networking. Swinyar and I decided that it would be in our best interest to band together in an attempt to do something useful. After computer science colloquium Wednesday night (during which several seniors gave their project presentations; I was working diligently on networking and showed up only at the very end), Swinyar and I headed to the cs lab and attempted to figure out what we were supposed to do. After some poking around on the local workstations, and being generally clueless, we headed to his house, conveniently located across the street from Kretschmar Hall (his house, as I've noted before, is technically off-campus, but is much closer to Kretschmar than my dorm), and proceeded to occupy his OS X box and bend it to our wishes. He had some potential ideas about running MPI (Message Passing Interface; some sort of pseudo-spiffy, cross-platform library for parallel and distributed computing) on OS X, so we investigated them. Mostly in parallel, I sshed to Ziyal and figured out how to convince her to run mpi. We finally gave up around 2330 and decided to investigate on our own and reconvene the following day.

Thursday I managed to accomplish much in the way of MPI. I figured out that mpich was the package I really wanted and successfully managed to compile a "Hello, World". (Thursday was also occupied by trying to coerce Ziyal into working nicely; md5sums of some large files would return different values on successive runs, but nothing else seemed to be breaking. My latest attempt was to remove my upper 256 megabyte memory module, which seems to have worked.) After a computer science department-sponsored dinner for graduating seniors (which I got included at, since Gem is a computer science graduating senior; I was the only guy there present as a guest), Swinyar and I rendezvoused in the mac lab hidden away on the top floor of the Canaday Technology Center and proceeded to get Pooch (a MPI-running neat graphical frontend for OS X) to run. We had a reasonable amount of success, and managed to figure out a little more about MPI, but it started behaving quite poorly after a while, and no amount of slapping it upside the head would make much difference.

Around midnight, we finally decided that was futile; Pooch wasn't the way we should do it. Since we were running at the end of the quarter, sleep was optional. We headed to Safeway for a midnight caffeine-acquisition run and I acquired three two-liter bottles of caffeinated beverages, which I decided would nicely fuel my finals week. Back on campus, we headed to the computer science lab and started working with mpich on Ziyal, which behaved much better than Pooch. I hunted down the sample Xlib sequential Mandelbrot code available on the textbook's website, got it to compile and link, and tried to figure out what to do with it. Once I had some vague idea how the code worked, I managed to get it to run multi-processor under MPI without much trouble. I even went to the trouble of throwing together a neat little error message if the user tried to invoke it with only one processor.

This friendly Mandelbrot-displaying program must be run with two or more processes. This first process is just the master; it requires workers to function properly. I'm sure you can understand the feeling; where would your boss be if he didn't have you under him to actually do useful work?

(Warning: Attempting to write error messages at 0245 can be hazardous to your users. This has been a public service announcement from the Festing Group.)

Swinyar headed to bed around 0300, but I stayed up to keep playing with the Mandelbrot. I got it to work with dynamic load balancing without much trouble and then set my sights to making it work just a little bit better. The application was a poorly-designed Xlib application; it refused to accept events from the server and didn't bother to redraw the screen when it was obscured. I attempted to hunt down some document that would reveal to me the secrets of Xlib, but nothing was forthcoming. I searched the catalog of the Peterson Memorial Library and saw, to my great enjoyment, that O'Reilly's Xlib book was indeed in their catalog. However, it was 0330, and due to some great oversight, the library was not open 24/6 on dead week. I searched a little more but failed to find anything terribly useful online.

I returned to my quarters to regenerate at 0430, when the sky was starting to get light. My alarm managed to wake me up at 0800, which was entirely too early, but at least I had the remains of a two-liter bottle of Mountain Dew. Conveniently, the Peterson Memorial Library opened at 0800, so I headed over there and successfully pulled Xlib Programming Manual, Volume 1. The book felt new; it didn't look like anyone had opened it for any other purpose than to stamp "Walla Walla College Library" inside it.

I headed to parallel and distributed computing at 1000, still catastrophically short on sleep, and queried Dr. Aaby about a few important questions I had. Dr. Aaby let us out early, content to wait until Monday morning at 0800, our designated final period, to learn what exactly we had or hadn't done for the class. I read Xlib Programming Manual until VLSI, which was also low-key, but I did get a useful tutorial on MachTA, which is the simulator I need to use to convince myself that my processor control is indeed working the way it should.

I got to networking five minutes late and found Dr. Aaby alone in the room. It took a few iterations before I convinced him to give me the answer to the question I really wanted to know: Had anyone else shown up and departed, or was I the first student to show up? (The latter case was the correct one.) I drew a pictorial representation of the current status of my attempt to test my TCP/IP stack and tried to conclude what the best way to test the congestion control code I wrote was. I eventually concluded what I had already decided: writing a layer in userspace between my stack and the kernel TAP driver would be the best way to simulate a bottleneck router, which would give me excellent simulation data for the slow start and congestion avoidance code I wrote.

I returned to my quarters after networking and wondered what the best way to proceed would be. I thought about caffeinating and doing something useful, but there was another complication. Swinyar headed off to Seattle for his little sister's graduation (Auburn Adventist Academy, I would imagine) and wouldn't be back until Sunday evening, which would strongly suggest that we should stay up all night Sunday night to finish enough stuff to usefully demo in our final Monday morning. I'd also like to be coherent in my rock climbing final at 1000. The thought occurred to me that it might make the most sense for me to wake up sometime Sunday afternoon, so I would be awake for a normal period of time Sunday night into Monday morning. Therefore, I should become nocturnal, and my current sleep shortage would be an excellent place to start.

I took a mostly-nap from 1430 to 1830 Friday and stayed up until 0400 Saturday morning. I woke up again at 1600 Saturday and managed to successfully get color support and double-buffering into the Xlib Mandelbrot code that I adapted, in addition to a pthreads frontend, which fulfills another slot for something to do, before going to bed at 0500, or 2100 Tokyo time.

Finals week may not be the best time to screw with my sleep schedule, but at least I can pretend that this makes sense.

Social graces are the packet headers of everyday life.
- eriko