I was pretty exhausted by 6pm yesterday, so I took my time walking down to the train station to meet Tyla. When I got there, Cinnabon in hand, I discovered that her train was running an hour late. I wasn't going to last that long just sitting in the train station, so I headed home to nap. Just after I got home, Emily called to say that she was back from Malaysia, and would we like to get dinner? So Emily came over, and then when Tyla arrived we trucked off for some evening sushi, and I went to sleep upon our return. Malaysia sounds like my kind of place: a country fanatically devoted to consumption, comparison and enjoyment of amazing food — and amazingly inexpensive: $0.40 for a glass of fresh-squeezed juice.
This morning, Tyla and I were in no great rush to get up, so we snoozed and lazed around until noon. Tyla had the leftover Cinnabon for breakfast, because she's fundamentally twelve years old at heart. Then I futzed with the computer a bit, tried to log into Asheron's Call 2, got a little depressed about work, and dragged Tyla off for a late lunch (perhaps, in fact, an early dinner). On the way back, we stopped at Honest Ed's, and I picked up some more weights, since I really needed more than the pair of ten-pounders I grabbed originally. Bringing that 70 pound box back home was quite the workout, but I was a little disappointed to discover that the package didn't contain the barbell bar, while the exercise booklet — written in the 1950s, unless I miss my guess — was totally barbell-focused. Ah well. I'll find some training guide that isn't totally terrifying and go from there.
We're now waiting for Miriam and Mark Kotlarewsky to show up, for evening fun and frolic. Whee!
Today began uncharacteristically early, as Madhava and Alasdair and I were to start helping Christina and Hilary load Christina's belongings into a van at 6:00 this morning. I think I hefted my first box at around 6:20, and I was the first one there, but we still managed to get everything in by shortly before 8:00. Almost everything, I suppose: Christina still has a trunkload of stuff for her father to shuttle around, but I think we did a fine job fitting that much stuff in one passenger van. I didn't think we were going to make it, myself.
After a very light breakfast at Harbord Bakery, during which we did not purchase any of the yummy-looking hallah, Madhava and I headed to the office. He tidied up his trip photos and then loaded them onto bitchcake, while I continued to be frustrated by an inability to beat sense into the connection-sharing and management code. Andrei joined us for lunch, only a few hours late, and after we returned from nummy Salad Thai food I had a bit of a breakthrough. Two hours of chasing lustre_peers and lustre_handles and uuid_ts through the internals of our request processing, I had recovery calling the right callbacks with the client and server on the same system. Now I can get on to doing Wednesday's work.
I need to go home and take a nap, perhaps tidy a little more as well, so that I can be very careful about the rest of the work that I am feeling hopelessly behind on. Or maybe I'll just have a nice dinner with my lovely wife and play Scrabble on the porch, instead. We'll see.
I wish I had a joke about ice.
How tired am I this week? So tired that I didn't catch the "hole"-for-"whole" typo below until Jacob pointed it out today. I so lose.
I lost most of today to a design flaw in our connection-reuse code. Truly mysterious behaviour, until Andreas and I talked our way through it. At that point, it was simply truly irritating. Tomorrow will be better.
To console myself, I went on a trek through downtown searching for copies of the latest Computer Games Magazine, so that I could try out the AC2 beta. No dice: they appear to not have reached Toronto yet, though I hear there are some to be had in Fredericton, of all places.
But then Vlad found copies of the issue in question in his part of California, so he grabbed some for Deb and me. I think I'm going to go home and play it now. WE LOVE YOU, VLAD!
Only meaningful accomplishment of today:
recovd.c:recovd_handle_event,l. 137 384): starting recovery for rd a0a4e64c (conn a0a4e58c)
Waterson and Brendan and I are trying to get a little book club going for studying Brands' private-PKI stuff. I used to understand it a little, back when I worked with Stefan, but that brain-portion has long since been reused for storage of kernel coding nuances and Quake3 maneuvers.
All in favour of starting this week right the hell over, raise your hand. Monday was a headache-induced wash. Tuesday morning was lost to conference calls, but the afternoon was going OK until Andreas found an oops in my code and I subsequently unearthed a hole pile of semi-scary behaviour lurking just below the surface. Today, I failed to get a message from my Dad cancelling our lunch appointment, and I spent an hour or so waiting for him in the Teranet lobby before we found someone who could inform me that he was out of the office all day. When I got back to my office, I had missed the Swiss Chalet order, but the place was still full of yummy chicken smell. Argh. I'm glad I'm not sick of Subway yet.
Also, the house is a mess, and Tyla's due back in a few days.
And I'm not making very good progress on the new recovery stuff, because every time I make a change to something I uncover a pile of other problems lurking underneath. Soon, I pray, my renovations will be complete and I'll be able to actually make some forward, rather than lateral, progress. I'm supposed to be passing some acceptance tests by the end of this week — acceptance tests which I also have to write — but it's not feeling likely right now.
I'm going out to dinner with Aven and Mark tonight, for Aven's birthday, and then we're supposed to meet up with a bunch of people for drinks. After that, I think I'm going to go home, work out a little bit, shower, and come back into work for an all-nighter. If I don't have some good progress by Thursday around lunch time, I think I'm going to cry.
(Christina's going-away get-together was lots of fun, even though she tried to be very silly and pay for drinks and food. That Christina, so silly. I'm glad I didn't follow her back to Aven-and-Mark's for "martini shots" — no, I don't know either — because I'd be even more behind now, and feeling even more guilty about it.)
I just bought some headphones, so that I can block out more ambient noise at the office. I hope they arrive soon, or I'll have to kill someone. Probably Dwayne.
I need a device that I can wear on my shoulder. Not just any device, though: this device will have certain Babel Fish-like qualities, which will greatly improve the quality of my life. It will translate thoughts like "I just have to adapt this existing (totally client-specific, moderately rusty, non-reentrant) code to work for the server recovery case" into thoughts such as "I should probably schedule more than a day for this work".
If there are compelling design reasons, I could be convinced to look at ear- or forehead-mounted devices of similar functionality, though shoulder-compatible units will receive preferential treatment in the selection process.
I heard today that we might have a cluster to test on tomorrow. Or maybe the day after. Soon, though. Maybe. If we're lucky. Phil has our tests running pleasantly on a 20-node setup, so we really, really (not kidding this time) need access to a bigger group of machines if we're to keep up our breakneck pace.
While I was out grabbing food last night, I bought some dumbbells, and my arms and chest are a touch sore today. It's a good sore, really, but that goodness doesn't make my mouse use any more pleasant. I'm sure it'll pass. Zach and Alice are apparently having good fun with a Total Gym 1500; if I can keep anything resembling an exercise regimen going for a month or so, I might talk Tyla into letting me splurge on that.
I managed to get in and out of Kinko's today for $1.09 and about 10 minutes, which feels like a decent achievement. I also managed to address Tyla's job application delivered, which is excellent, because she'd have flayed me if I'd forgotten and missed the deadline.
My Mom called, asking about sushi restaurants in Kingston, and I drew nothing but blanks. She's going to try a place called "Sapporo", which I never made it to when we were living there.
Tonight is Christina's little going-away thingy, so I'll get to trot off and drink a bit with them in a little while. In the meantime, Andreas is hitting a crash that seems to be very much related to the big patch I landed yesterday, so I need to spend some time in gdb. Nat gave me jwz's gdb hacks, so that experience should be marginally less painful.
I hope it's not my new glasses, because they're a lot more comfortable and nice-looking than my last ones, but something something has given me an industrial-grade headache. I left my new book at the office, so I don't even have anything to sit in the bath with right now. Pity me.
I think I'm going to buy a printer, and it looks like the LaserJet 1220 is going to win. It appears to have good support under Linux, and it's not outrageously expensive for a laser printer. If I pick it up tomorrow, I could print Tyla's resumé and cover letter instead of giving Kinko's more money. Something to think about while I wallow in the blahs today.
I did manage to check in my huge patch today, so I can now get started on some of our recovery-based deliverables and earn my keep. I doubt I'll get a lot done today, but maybe I'll feel better in the evening.
Weddings at the Museum of Civilization are apparently quite a good idea. Other than blabbering "lovely" a few dozen times, I'm not sure I can meaningfully elaborate, but Mike and Kristen are happily married, huzzah!
We had a nice vegetarian breakfast before setting out for Toronto, and it's a good thing we did. Without that nutritional fortification, our side trip to the Napanee Dairy Queen would have been fatal. "Chocolate Extreme" appears to be some sort of code for "bring your own insulin".
Once we got back to town, Alasdair and Madhava came over to watch Sexy Beast, which was decent. I'll need to think about it some more, but it didn't strike me as all that great. We snuck the DVD back minutes before the 10pm deadline, and I picked up High Fidelity and eXistenZ before we popped over to Insomnia for a late dinner. Tyla's away all week in New York helping George move, so I want to make sure that I have some sort of non-feline domestic commitments to avoid staying at work the whole time.
It's late, and I have to get to the tree before my scheming coworkers generate more conflicts. Peter has been quiet in the tree lately, and while I'm sure that much of it has been due to his excellent security infrastructure documentation work, I still fear that he has a complete rearchitecture of something waiting to beat me like a bag of hammers.
Today was quite the exciting day at work. I got rocking on the reorganization of our connection and export handling, and while I was hacking my brains out, machines were breaking left, right, and up the middle over on the development cluster. (We were trying to get a new kernel with some key networking fixes deployed so we could test and stuff.)
<behlendo> is there kernel trouble?
<phil> there will be in a minute
After a while, I'd accumulated enough changes in my local tree that every notification of a co-worker's change caused paroxysms of terror — no matter how minor that change might be. I was certain that Andreas or someone was going to check in a wide-ranging cleanup and make me spend a week merging.
19 files changed, 237 insertions(+), 406 deletions(-)
Of course, I then hit a bit of a wall with the locking stuff, and by the time phil and I had sorted that out, I had found a nice recursive dependency in what I was doing. Lovely. I took a break to do a quick interview for a friend's new "technology" column on CBC Radio, and then came back to ponder for a bit. I think I have a solution, and I'll be able to check in on Sunday after we get back from another trip to Ottawa. Eric, on the other hand, was kicking all manner of ass today.
<eeb> 240064 pages (79758/s, 311.56Mb/s)
(He really means megabytes, not megabits.)
I was going to take my laptop to Ottawa this weekend, but I think I need a break. It's been a long, brain-busting day, and I'm in need of a rest. I was too burned out to even play Quake this evening.
Got up around 5:30 this morning, and did a bit of reading for work before I fixed up the WarCry stalker to remove duplicate post entries and load in some data from an archive of ancient board posts. I'm not sure how interested I am in Shadowbane as a game anymore, but helping out the WarCry folks is always fun.
Peter and I wrestled with some major reorganization of the client, connection and recovery structures, in further preparation for the glorious day when a server will look down upon a slow or otherwise uncooperative client and say, in a deep and authoritative voice, "you lose". I was a little confused for a while, but then Peter gave me some clues. Or, if not clues proper, things that I can assemble into clues, or perhaps barter for clues on the grey market.
I played some Quake with the crew here today, and while I had a good first round against the bots, I think Fixy was pretty disappointed with my performance as his Rocket Arena teammate. He might be looking for a replacement now.
I hunger, but I really want to get more of this structure reorganization done before I lose the precious, precious state that's tenuously attached to my brain. And yet, hunger is making it hard to concentrate. I cannot, under any circumstances, win.
And I need to watch Sexy Beast before my seven-day rental runs out. How can I not have made time in the last week? I'm such a moron.
I got a haircut today, and I think it looks pretty darned good. Tyla, of course, will be the real arbiter of that. And speaking of Tyla and looking good, I now have a nice big picture of her on my desk. Much prettier around here already.
Here's an important productivity tip, from me to you: after you find a bug and fix it, it's really important to recompile your code before testing the bug again. If you don't do this, you can be fined as much as two hours of your time for failure to think.
But:
Woot.
Now I get to go to town on actually cancelling locks and closing open files when a client displeases us. After I take a look at another interrupt issue, of course.
Another Tuesday, another conference call full of MCR-delay reports. Next week, we might get our hands on a hundred nodes or so for testing, if all goes according to the latest plan. In the meantime, I've been poking around the proposed configuration for the various compute nodes, to make sure that our software will build and deploy and run there. So far, so good.
I also had a very pleasant coding day, and managed to build out the infrastructure for timing and expiring locks when the server is waiting for a client to cancel them. 93 lines of code, and I think I'm ready to test tomorrow. Wonderful feeling when it all actually works out.
In other wonderful-feeling news, Peter took care of the wire transfer, so I'll have some money tomorrow. This is good, because I want to get in on an angel round at Imviva and the chequing account is looking rather sad.
The Swordfish soundtrack is really good. Maybe even good enough to get me to see the movie. Maybe.
Fixy and Ken and Chris and Shatter have been teaching me the ways of Quake 3, and I like to think I'm learning pretty quickly. I used to be quite decent at the original Quake, but that was something like five years ago, so there is a substantial amount of rust to shed.
It often makes me feel better — and I don't mean this in a petty way, really — when phil doesn't have the complete workings of Lustre at his mental fingertips. Of course, he can reconstruct those workings pretty effortlessly, like someone completing a dog-eared puzzle from his youth, but then I guess Lustre is that sort of puzzle for him. When we're old and grey — OK, when I'm old and grey and phil is middle-aged and still has abs you could build a skyscraper on — we can sit around and tell our respective grandkids about the olden days, when Grandpa and Uncle Mike would take a government's money so that said government could give a huge pile of computers some sort of simulated first-strike capability. I think next we're going to help some pharmaceutical companies corner the market on vitamins. (The cluster we're building Lustre Lite for right now will apparently be #2 on that "huge pile" list when it goes live in a few quarters, BTW.)
And how did I help advance the state of nuclear simulation today? I futzed some structures around, and then spent 45 minutes on the phone with Peter designing the lock-revocation timeout code. This is important stuff, since it's what keeps a dead or petulant client from ruining the party for everyone, and it sounds like it'll be a fair bit of fun. I'll find out tomorrow, I guess.
Madhava came over today — likely to retrieve his camping equipment, which we sadly do not have at the present time — and was immediately pressed into service eating dinner, drinking wine, disposing of the chocolates that the more-gracious-than-we-deserve Blizzards left us, and watching Buffy. He also showed us his collected Blue Skies and travel photos, which are quite nice. I was a little too tired to properly enjoy them, but I'll review them when he gets them up on the web.
I have the most outrageous trouble getting back to sleep when Tyla comes to bed late, which is why I'm up at 4-something now. Tomorrow's going to be a great day, I can just tell.
Blah. Tired all day. Slept a lot. Played some Quake. Had a bath. Forgot to update the diary.
Blah.
We almost missed the train, because the subway delayed Tyla, but it all worked out pretty well. A lovely dinner and much Tyla-family-age greeted us in Ottawa, though Martha was too tired to follow through on her promise/threat to catch a late showing of Blue Crush.
On the train there and back, I managed to get some solid recovery hacking done. We now trigger the recovery process on both the client and the server in just about every timeout case, which means that we're just about to start the really fun stuff.
Phil got all of erasmus' stuff over to the new machine, pretty much. He's a superstar, and things. Next up, I guess, is migrating neon.
The Blizzards took off back to Boston today, before I made it back to Toronto. I wish I'd been able to spend more time with them while they were here. Alas.
And, yeah: it was the 25th anniversary of Elvis' death yesterday. I blame the Russians.
Some things that are important about today:
- My sister's 23rd birthday.
- The 23rd anniversary of Elvis' death.
- The Blizzards' anniversary (5th).
- Peter thinks I'm smart.
Now we're off to Ottawa for many Tyla-family birthday bits. Yay!
Guess what I worked on today? That's right, timeout and interrupt handling. Made some more progress, talked with Phil and Andreas quite a bit about some painful behaviour we were seeing in the truncate path, the usual. When Peter gets back from China or wherever he is now, I'll probably start on the recovery daemon's side of the picture, which should be a huge pile of fun.
It was Christina's last day at work today — not that I work with her or anything, but she's a friend and her job was nearby — so Alasdair and Tyla and I took her out for lunch, and then everyone-but-Tyla went to see Goldmember. In the middle of the day, and everything!
When I got back to the office, it was time for a bit of Quake, and a bit of bitchcake setup, and then more Lustre puttering. I was expecting to hear from the people who are setting up the cluster, because I hear from them pretty much every day, but there was nothing. Maybe I ticked them off when, a few days ago, I sent a relatively forceful email to them indicating that our piece of the puzzle had outrageously minimal requirements, and that if they hadn't been apparently reinventing the wheel in a new, squarer configuration, they would already have installed the configuration on which we've been testing for months. I didn't have much choice, really, since they had something like a dozen people asking me over and over about this stuff, and it was getting kinda old.
I wouldn't have been as cranky if we had a cluster to test on by now, but, alas, we don't. I may well end up with access to the LLNL development cluster before the act is gotten together in a satisfactory way.
In preparation for neon's upcoming move, I've been digging through my home directory. There's some neat old stuff in there, including, of course, some mail I should have replied to 6 years ago. Brika, I'm sorry!
(I cleaned the windows before hitting the office today, so it's safe to go home now. And I shall.)
And today, Shaver's Index (with abject apologies to Harper's):
Number of Blizzard-named friends who came to visit us today: 2
Number of items in the Japan Sushi Dinner Course, excluding beverages: 7
Approximate amount of time spent toiling fruitlessly with various Lustre build scripts before giving up and mailing Gord for help, in minutes: 200
Number of drives in the new erasmus/neon replacement ("bitchcake") that spewed errors in their default DMA configuration: 2
Number of drives that did not: 0
Number of people, of the three that are setting up bitchcake, who think that Joe Shaw writes some outrageously good software: 3
Number of these people who miss using RPM directly: 0
Average net score for Mike Shaver during office Quake games: -6
Approximate average net score for Fixy during same games: 35
Number of brownie points acquired by picking up Gosford Park on the way home from dinner last night, and setting up video infrastructure for viewing: approximately 50
Number remaining after failing to clean the windows again this morning: 6
Number of times in the past week that the author has failed to publish a diary entry after editing it in a haze of fatigue or distraction, excluding this entry: 3
Including this entry: 4
Today: conference call, more recovery work, and buying a new frigging keyboard for the work machine. I also need a sound card for the work machine, if I'm ever to improve at Quake. I think it might be time to replace the one in the home machine with something that does Firewire and the like, and then move the current one to battleboar.
Even if you're not a programmer, Guy Steele's paper on growing a (programming) language may be worth reading. If nothing else, it's an interesting expository style.
George has to go home tomorrow, because we're running out of ethnic food to experiment with. The Korean BBQ tonight was quite nice, and very filling. We'll be back, though it does tear through the monthly red meat allotment at quite a frantic pace.
You can pay Canadian federal taxes over the web, but not Quebec provincial taxes. I'm not especially surprised, but it meant that Tyla had to go down to the branch with the actual request for payment, because simply knowing the amount, account number (SIN, really) and destination wasn't enough for them to let me pay it at the branch down the street from the office. I wonder what magic incantation is on the paper — I asked, but the lady at the counter couldn't or wouldn't tell me.
I need to move my "RRSP" around, too. Bah.
The ball game was fun, even though my beer cost almost as much as my ticket ($12.50 vs $14.50). How can people afford to get drunk at ball games? Some people there looked like they'd figured it out, and I'd be equally surprised to discover that they blew $150 on beer as to find out that they got drunk on one or two glasses.
Around the beginning of the eighth inning, we started to make post-game plans. It took a call to Phil for showtimes, and some repeated invocations of Salon's review, but we finally convinced people to leave at the bottom of the eighth (Toronto was down 10-4 at that point, and we're bad fair-weather fans or something) to catch the 7pm showing of XXX. It wasn't really all that bad — I certainly thought it was better than the bad tomato rating would indicate — but I was hoping for a little more clever than I got.
After the movie, we grabbed some dinner at Young Thailand, which was quite nummy indeed. I might have to pick up the cookbook.
George and Christina went on to see George's brother play at Chicago's, but I wasn't feeling 100% and Tyla was getting tired, so we split a cab with Alasdair.
Up nice and early today, and I hope to get some work done before we trot off to ritual dim sum.
So if you're a Teamsters union and it's too expensive to use union contractors for the construction of your new union hall, what do you do? You use non-union workers, of course.
So much Greek food. So much.
I headed into the office this morning to get the new machine all building and happy, and it's mostly going quite well. I have a problem with a pristine tree not having some files the build system expects, but I'm sure it's something stupid, since nobody else seems to have this problem.
Going to meet up with Alasdair and Christina and George and Tyla after they get finished at the ROM and catch a ball game at Skydome. I haven't been to a game in a fair while, so it should be fun.
Now, what's with my silly build system? Maybe I should take a break and read some cool papers on economics and security instead.
I get a new computer today, and I think it will be very pretty and shiny. It will also be fast like a very fast thing, which will make my building and testing exercises much more palatable. And I love nothing so much as installing operating systems!
Confidential to Alasdair: Tyla and I are in; do we need to prepurchase?
My new machine arrived, and it does indeed scream. And the network screams, and all is pretty happy. I'll have to come in over the weekend to get it all set up properly, but that's no biggie.
Almost time to head out for piles of Greek food. I think I'll watch Fixy and Chris play Quake for a bit while I process OS updates on the new machine, then go do my dolmades duty.
Some days, it feels like my entire career from this point forward is destined to revolve around interrupt and timeout handling. Given that I'm taking point right now on implementation of our failure-recovery strategy, I suppose I shouldn't be surprised, but I still am. By the time I pack up tomorrow, I think I'll have all our major failure cases — things disappearing, as opposed to simple protocol violations and whatnot — being detected correctly. They should even be starting up the recovery subsystem properly, but that part is a hollow victory: the recovery subsystem doesn't really do much yet.
At least I'm hacking at a decent pace nowadays:
include/linux/lustre_lib.h | 91 +++++++++++++++++++++++++++++++++++++++++++--
osc/osc_request.c | 39 +++++++++++++++++--
ptlrpc/client.c | 65 +++++++++++++++++++++++++
We got back late last night, and got to host Christina for the night because she'd sent her keys to Ottawa by mistake. We might get her back tonight, unless she gets in touch with her landlord.
Blue Skies was, predictably, wonderful. I got a little burned, because I fell asleep and rubbed some of my sunscreen off on the blanket as I rolled around; nothing too serious, though I'll have a nice blotchy tan when it clears up. I didn't want to take any chances on Sunday, so I slathered myself with the force majeur of sunblock. Tyla was a little upset, because it was supposed to be used for faces only, or something, but I'm willing to buy her another bottle in exchange for not worsening my burns.
Anatole and I climbed a rung of Blue Skies attendance by spending four hours being the best dishwashing crew, apparently, that the performers' hospitality area had ever seen. I normally loathe washing dishes — I am more likely to live in an apartment without a roof than one lacking a dishwasher — but we had a blast and advanced the state of the art. (Others of our little Blue Skies cadre helped out as well from time to time, which only made it that much more enjoyable.)
Monday was spent lazing around the cottage, canoeing and swimming and sailing and eating leftovers and — for me, at least — reading various geeky papers about cluster filesystem recovery and the like. I didn't get very wet sailing, unlike poor Miriam, but I also didn't get to jump off the rocks on the other side of the lake, so I think we'll call it a draw.
I came back with a CD of Aengus Finnan's music, and feeling well-rested and absurdly content. Fear me, Lustre recovery, for I will dominate you utterly this week. And I might even fly to Utah to help get our test cluster set up for remote access.
Random professional observation: when someone says "it's partially working", I always hear "we have basically nothing, but you have no way to check on that". Of course, I use the phrase "partially working" all the time to describe my own work, so take that as you will.
Also: I need a much simpler way of describing what I do now, for people of varying technical pedigree. Spending 5 minutes giving a description of MCR or ASCI Purple and our role in it is proving wearisome.
Linden and John arrived safely last night, and while they were out wandering the Annex by night, Tyla and I snuck in some "married-people time". Which is to say that we passed out from heat and exhaustion, and didn't stir until morning. Romance is everything.
I checked my export-munging into the tree this morning, and then trotted off to have lunch and ice cream with the Velocet crew. They were very sweet and bought me lunch; theoretically because I helped them with a WYD hosting task, but I think it's really because they're really nice guys.
Scheming with Peter on the phone after lunch leaves me with a large bucket of stuff on my upcoming-work list, but I actually understand not only what I'm supposed to be doing now, but some meaningful parts of "why". What a month. (I invoiced, too. Mmmmoney.)
My new development system will be ready late next week, when the guys at Faster Than Insanity Systems finish building and testing it for me. It's going to scream, which is better than the pained moaning my laptop offers up during test runs.
I was going to take my laptop to Blue Skies for some late-night work, but instead I'll just take some papers to read and a few pleasure-reading books. I deserve a weekend, right? Besides, Tyla spent $50 getting the silly papers printed, so I should really try to get a lot of enjoyment out of them.
Back Monday!
Three years ago today, I married a beautiful, smart, kind woman, who obviously has questionable taste in men. Nothing else in my life has really even come close to the joy and wonder I've felt in our life together, and while I like to think that we celebrate our marriage in a little way every day, today is when we're supposed to pull out all the stops. (Thanks to our friends and family who sent their congratulations — and, in Steph's case, odd-but-touching gifts. I can't remember the last time I remembered someone else's anniversary, but a little guilt is a fine way to start a lovely day.)
Because I'm a geek, I find some analogical virtue in this passage from a report on SIGGRAPH 2002:
Showing just how incredible hardware has become, the engineers from ATI built a demo that renders Paul Debevec's Rendering With Natural Light film in real-time. This is amazing because the original film took hours per frame to render when presented four years ago at SIGGRAPH 98.
I have a hard time believing how much my life has improved over the course of our marriage, and I didn't think it was especially awful to begin with. (Wow, that was geeky.)
I'm working from home today, because my laptop is still not back in service. Of course, Bell blew a $50,000 card in the ATM switch between me and the internet, so the network situation isn't exactly wonderful. With my recent lack of productivity — wonderfully timed, as I'm supposed to be sending my first invoice today — I'm starting to have second thoughts about Blue Skies. Second, sad, nasty thoughts.