Never Judge a Book by its Cover?

This bothers me and
I’m not sure why.

Is it the irony in judging someone by the book they’re reading, and then claiming
to not pick your books by the point you’re making to the world?

Perhaps its the implication that judging someone by the book they’re reading is
somehow more intelligent than judging them by the shoes they’re wearing?

Or maybe its because I’m reading a lame, trashy, populist book at the moment.

Ah no, I’ve just figured out why it bothers me … its that the very fact that
I’m writing this proves that I’ve managed to completely mislay my sense of
humour somewhere … Wonder where I put it?

Pinball

Its fascinating how people around you can have such a dramatic
influence on where you’re going in life. Its like being bounced around
in an invisible pinball machine without even knowing it.

I shudder to think what I’d be doing now if a certain person hadn’t
grabbed hold of me and liberally applied a cluebat to me over the
course of an 8 month internship in Intel. We’re still good mates and
after a night on the beer with him and his wife I found myself coming
home with a hangover,
two
books
and a fresh perspective on some things. You can’t beat that.

In other news, shopping for a car when you don’t already have a car
really sucks.

Reading

A nice little pile of books arrived from Amazon yesterday for
my birthday. Being a slow reader, that should keep me going
for a good few months 🙂

The one I’ve started with, “Unlocking the Sky: Glen Hammond
Curtiss and the Race to Invent the Airplane”, was Tiemann’s
recommendation on Red
Hat’s summer reading list
. It seems to be a really good read
which appears at first glance to be totally unrelated, but actually
very relevant, to what we’re all doing here.

Project Vino Update

The work Caolan and I have been doing on terminal services over
VNC is part of a bigger picture plan to really start making
VNC useful across all “remote desktop” use cases.

Here’s a writeup
of the use cases and how the thing will work.

The OpenSSL License

At least twice previously I’ve gone off and figured out what this whole
OpenSSL GPL incompatibility thing is all about and, in pretty short
order, completely forgotten the details again. Well, this time I’ve
written
it down
so I won’t forget.

The Power Of The Test Case

Thanks to Tim Waugh, before we even started, we knew one of the stumbling
blocks for this terminal services thing was going to be VNC’s ZRLE encoding.
You see, in order to make the hot-desking thing work you need to be able
to transfer a VNC client between two VNC servers without the client knowing
about it.

What makes the ZRLE encoding difficult is that it compresses the pixel
stream using zlib and this introduces state into the VNC stream. A rectangle
of encoded pixel data now depends on the pixels that went before. So when,
you transfer a client between servers, the new server either needs to know
the state of the zlib stream or you need to allow the new server to start
with a clean slate somehow.

A glance at the zlib docs
and the Z_FULL_FLUSH/Z_FINISH deflate() flags jumped out
of me. Sweet, this is going to be trivial, says he. Like a good engineer,
I started writing a
test case
to prove the idea. The solution wasn’t as obvious as I’d hoped,
though, and I found myself knee deep in docs, rfcs and the inflate()/
deflate() code. Unfortunately, I had to actually understand
what the hell was going on. The horror!

Plugged the code into Xvnc and tried it out. Broken. Dramatically broken. Debug,
tweak, test. Still broken. And on it went. Eventually, hours later, I went back
to my test case and discovered that it actually wasn’t working. It was sneakily
pretending to be working. But it wasn’t. Trivial fix and all is well.

You can save so much time by figuring stuff out in a small test case rather
than trying to figure it out in the context of a huge mass of code with a million
and one other things happening. I know this to be true, and as time goes on
I’m learning just how true it is. But you still find yourself launching headlong
into problems thinking “it looks trivial, in the same time I’d write a test case
I’ll have the thing fixed” and only hours and hours later do you get a clue
and start writing a test case. I get the feeling Owen always reaches straight
for a test case. Maybe that’s his secret 🙂

Anyway, I’ve moved on to adding TLS/SSL support Xvnc and vncviewer now. And,
yes, I’m going to go through all this “state flushing” pain again. Fun
all the way, I tell ya … Now, where’s my test case?

On the plus side, I’ve had to take loads of breaks from this stuff today,
and I’ve been cooking. Had a gorgeous
ratatouille for lunch
and some chilli
is bubbling away as I type.

Blaa

I knew of Wikipedia‘s existence, and
I knew what it was, but I’d never really spent any amount of time looking at
it. Seth was babbling happily about
it at one point while I was in Westford so I went and took a good look. What
really strikes you is not only the sheer size of the thing, but the quality
of the content. Very impressive.

Anyway, I added my own drop to the fountain of knowledge – an entry on the
famous Waterford Blaa.

Threaded bugzilla mail

Woo! As, Jeremy points
out, dkl has enabled
threading
in Red Hat’s bugzilla mail. Now I can stop filtering my mail
through “fixup-threading.sh” 🙂

Red Hat developers are soon going to wonder how they ever survived without
this. We GNOME hackers have been spoilt for far too long …