I am hyper. Hyper people sometimes run. Running people sometimes turn. Turning people with frictionless socks sometimes look briefly like cartoon animals (whappita-whappita) before losing it and smashing their faces on smooth Ikea flooring. People smashing their faces on the floor sometimes dislodge computers and furniture, but fortunately don't seem to break any bones.

Witnesses tell me that the entire sequence was hilarious. I am inclined to believe them.

I went to see a movie yesterday, and discovered something neat while watching the pre-movie slideshow. They have these trivia questions about actors where they give clues next to a pixelized mosaic picture of the actor's face, and with eachclue the mosaic gets a little less coarse and more recognizable as a human face. Hopefully you know what I'm talking about.

Anyway, it so happens that I am rather nearsighted, just like almost everyone else in this industry. I found that an unrecognizable jumble of coloured squares, when viewed without my glasses, looks just like a human face. My brain started filling in all sorts of features (hairstyles, noses, ears) that, I swear, could not possibly have been represented with squares as big as they were using. And subsequent finer pixelizations showed that my brain was almost never wrong.

I flipped back and forth, glasses and no glasses, about ten times per picture, and was amazed how much more detail I could "see" without them. Crazy.

So today I tried to reproduce this effect using GIMP. I took a picture of my face and pixelized it until it was completely unrecognizable. Without glasses, *poink* there I am. Excellent. Glasses on, I tried various ways of blurring the image. Results were disappointing. It looked more recognizable than without the blurring, certainly, but I wasn't getting the same amazing interpolation my brain is apparently capable of.

Merry Christmas to all who celebrate such things, and good times with friends and family.

I am now the proud owner of a Chicken Chucker, which bears a strong resemblance to my Sanity Gun in terms of size and ergonomics, but catapults little plastic chickens instead of shooting little sanity darts.

Moral of the story: It's a good thing my brother and Mich aren't archenemies with super powers.

My Psyche Begs for Ridicule

I had a dream last night in which I had entered a programming contest, and arrived to meet my teammate and get the computer going. My teammate, wearing a white sparkly suit, matching hat, and big fancy glasses, introduced himself as "Hootie", presumably of Blowfish fame. Having never realized he could code, and being quite unsure my friends would believe me, I grabbed for my camera to take a picture and found that my lens, suddenly made of cardboard, had been thoroughly squished in my bag and was now quite useless.

Moral of the story: Life actually makes more sense when I don't sleep.

I Emerge Triumphant

The crash that had been plaguing me lately is gone. Some unnecessarily convoluted code was writing past the end of a string every time. Electric Fence and Valgrind on a little test program both caught the problem right away; the hard part, as always, was knowing what to make a test program out of.

Several people have written to me with advice on tracking down my annoying memory-stomping crash; thank you all. The majority have recommended Valgrind. This is something I had already considered, but I've been delaying it since I know it'll be even slower, which actually does cause problems, and other people have told me they've had trouble valgrinding on our system before, presumably due to our rather minimalist distro and heavily patched kernel. I will try it myself soon.

apenwarr had an interesting idea: make every function virtual, where possible. If we're accidentally stomping on objects, adding a vtable at the beginning of every object (or making the vtable bigger) should increase the chances of crashing, and hopefully help localize it. As an extra bonus, this will run only fractionally slower than usual, instead of orders of magnitude slower. We'll see.

Hawksley Workman

Refreshingly original, and completely in comfortable control of his stage presence. He riffed an apocalyptic ode to his water bottle, invoking his new god Naya to rescue a little fish. He took shots from a little plastic bottle of Buckley's mixture (Canadian readers will appreciate this) to ease his ailing throat, randomly claimed the show was indeed sponsored by Buckley's, and introduced himself as Bucksley Workman. His affectations are hysterical, his voice strong and uniquely crunchy, his falsetto smooth. And I haven't even talked about the songs.

A hearty BOOOO to my brother for mistaking the time of an exam and having to miss this.

Running a gigantic C++ program with Electric Fence is heart-wrenchingly, bone-crushingly, soul-suckingly, watch-glancingly, jaw-droppingly, mind-fsckingly slow. And it's not even really helping me find the crash I'm looking for. Said crash is seemingly unreproducible on any box other than the one that really matters, happens only a couple times a day if at all, and is very clearly a memory stompage that manifests itself in the exact same place more often than not. But where is the stompage? You'd think this would be easier.

Short-term Future

Tomorrow, by which I mean later today, I shall have my appearance altered, I shall do much assorted running around, and I shall see a Hawksley Workman concert.

The other tomorrow, by which I mean Friday, I shall board an airplane.

Long-term Future

I shall pursue a life of garish excess, featuring music, wine, books, adventure, companionship and riches, traveling the world in a modest but nimble watercraft made of handsome spruce and adorned whimsically with ostrich feathers, and ultimately be captured in a tragic misunderstanding and die at the hands of a merciless evil villain sporting the most ludicrous moustache you ever did see, all the while whistling a happy tune.

I've finally gotten around to open-sourcing a couple of fun PHP projects I've been working on lately in my spare time. Currently they're only available by anonymous CVS, but I plan to whip up some tarballs soon too.

PlaNit is a weblog aggregator designed to easily host a "Planet"-style site. It currently runs my company's pla.nit.ca site.

NITLog is a simple but fairly flexible weblogging system. It was originally my excuse for learning PHP, but I've been using and improving it for more than a year now, and I plan to keep doing so. I have a few specific ideas in mind for improving it, mainly feature requests from hub.

Both of these are things I started mainly for fun on my NonDirectionalFridays. I could easily have used some other weblog system and jdub's Planet, but I definitely learned more this way, and both projects have become flexible and general enough that someone else might find them useful. So here you go!

Specifications

Talking to apenwarr yesterday, he lamented how user interfaces always come out wrong. We've been on a specifications kick at NITI for the last year or more, and we've had very good luck producing detailed specs for the functionality of new features and products, and then code is written according to the spec, and it's generally good. Except for user interfaces.

Everybody knows programmers shouldn't design UI's, beceause we don't think like users. But we let non-programmers write our UI specs, we code the corresponding UI, and we give it back to them, and they don't like it, and they're right not to like it. UIs are rather notoriously like that.

Avery's question: Is it possible to write a decent spec for a good UI on the first try? How?

My corollary: Should we even try?

We did agree that UI work is thankfully not very deep. You'll try a newly coded UI, you'll hate it, you'll file 20 bugs, and then a day later they'll all be fixed. It's piddly tedious work, not fundamental design change work. If the first version of any UI is going to be despicable whether or not it had a spec, which itself has probably undergone umpteen revisions, why not skip a few steps and get stuff done faster?

I don't think either of us likes this discontinuity between working on UIs and working on the functionality underneath. We have certainly benefited from detailed specs for the latter, and we would like to be able to effectively specify the former. But we don't like wasting time either.

Discuss.

Everything Moves Real Slow When It's 40 Below

I saw Sam Roberts with Andrew, Peter and Jeff the other night. It was the last show of his multi-year tour, in his home town of Montréal. Goodness but this man knows how to (a) scream, and (b) work a crowd. Much energy, and much volume; I loved it. The singalong bits were well selected; there's something so very appealing about having a thousand fans at a rock concert extolling the benefits of socialism at the top of their lungs. Only in Canada.

I Haven't Eaten Since Later This Afternoon

Primer is an intentionally baffling film. I can't remember the last time I was so confused. Comparisons are being drawn to Pi, but I'm not convinced, other than that it's probably the same audience that will appreciate both. Primer's $7000 budget is naturally evident in the video and audio quality, but I can't complain about how they're used. The framing is precise, the dialog is sharp, and the geeks are definitely geeks. I failed to make any sense of the last 20 minutes, but I guess that was the point. I'll have to see it again and emerge hopefully less, but possibly more, bewildered.

The record must be set straight. There exist certain people, and they know who they are, who insist on spreading the horrible lie that I never sleep. Yesterday, after being awake for three and a half days, I was feeling mildly weary, so I lay down at 5:00 PM intending to have a quick nap. The next time I looked at my clock, it was 7:30 AM this morning and I was late returning my rental car.

It is clearly, clearly not true that I never sleep. I rarely sleep. Thank you.

I have been chasing ridiculous bugs. It's never anything straightforward; all I get is "the rsync pipe sometimes freezes or does this other crazy thing, but only some versions, and only the second time you run it, but not even always then, and never, good heavens, if you strace it." Reasonably satisfying to actually figure it all out eventually, even if the culprits (accidentally non-non-blocking sockets, and overzealous killing of processes) turn out to be less interesting than the problems they cause.

And if somebody could please reduce the temperature in the office by about ten degrees, that'd be super. Thank you.

You know those Medeco keys that are all expensive and highly secure? They evidently fail to be as structurally sound as one might like. There is presently a good chunk of one wedged deep in the lock on the front door of my apartment building. The rest of said key remains uselessly on my key chain. This presents certain logistical difficulties, such as not being able to go outside and then come back in. As a thought experiment, try combining this concept with, say, not owning any food.

Visitors are, thus, welcome.

Life

Spiffy-keen, one could say, were one so inclined. This recent key madness notwithstanding, the week in Waterloo with denizsarikaya and sfllaw was most welcome. We variously share a wide range of semi-overlapping eclectic interests, and an affinity for understated humour and bad puns, such that coming home on the train, a random passenger said it was great to hear such camaraderie from us. I guess this means he was either continually blinded by our wit, or he wished we would all just shut up already. In retrospect, I should have asked for clarification.

The Well Traveled Cheesecake

Attention Waterloovians! Sneak into the staff lounge on the 2nd floor of the CECS building, open the fridge, locate the foil-wrapped pumpkin cheesecake, and please enjoy responsibly. It has been forgotten enough times. Somebody needs to eat it.

The Well Traveled Tripod

After my accident in England, and my subsequent purchase of a new tripod, I received mail from TfL saying that they had found my old one, and would mail it back to me for a mere £24.87 sterling. I cobbled together a money order, mostly out of curiosity, sent it off, and have now received a letter saying no no, we can't accept that kind of money order. It is now unclear whether I should bother figuring out exactly what it is they want.