I have just installed LCC 2.12 and it doesn’t work. Version 2.11 worked fairly well but was a bit buggy when switching scroll wheel settings when focus moved between apps. I have tracked down the problem to the fact that some files are missing in the install, read on for more info and a fix. Updated 2007-01-07: ‘a’ pointed out that you need to make sure the ownership of the kext is correct, so I’ve added another step. Updated 2007-01-11: I’ve just noticed that Logitech have pulled version 2.12 from their site. You can only download version 2.11 at the moment. Updated 2007-01-12: Version 2.12 is back on Logitech’s site. Unfortunately, it is still broken. Updated 2007-01-23: [Logitech have fixed the bug](/2007/01/22/logitech-mx-revolution-drivers-fixed/. I’ve removed the download as it’s not needed any more.
Read More

This is for my own future reference. To find out the uptime of a Windows box, type net statistics server. The date and time the server started up is printed at the top of the resulting output.

Alpha Rex Last Saturday we went to Legoland Windsor because they had a special Monster Truck weekend. Heidi, James and Matthew already have annual passes, so they got in free, it cost me £30. They were running a special offer in the shop though, where you got a free annual pass voucher if you spent over £50. Well, Christmas is coming up in the not too distant future, and I’ve had my eye on the new Mindstorms NXT since they announced it in January. It was £179 but with James’s annual pass discount it came down to about £161. I was very pleased though when I received three annual pass vouchers. In the meantime Heidi had been in another queue buying Matthew a LEGO train set (set 7897), which also netted us a voucher. So in the end we came away with £290 worth of annual passes (2006 prices) and £260 worth of LEGO, for an outlay of £224 (or £254 if you include the £30 it cost me to get in the park). I don’t know if the offer’s still running but I hope they do it again next year! Now the only problem is that the boxes have been put away, as they are for Christmas. So now I’m counting the days until Christmas. I mean, James is. It’s his present, right?

When I removed my MacBook from its Second Skin this evening at about 19:00, it was almost too hot to hold. I put it to sleep at work (by closing the lid) at about 17:35. It obviously didn’t sleep, or something woke it up. The fan was running at its fastest speed, but the machine was unresponsive - I couldn’t even get the screen backlight to come on. I forced it off by holding the power switch, and when it came on again it was fine - although the fan stayed running for another 5 minutes. It’s the first time it’s happened and I’ve had it for over 2 months now. Odd.

Recently I have been refactoring some code so that various computed results are saved in a memcached cache to improve performance. A common cache idiom is:
  1. Compute cache key
  2. look up key in cache
  3. if value found, return it
  4. else, run some code to generate the required value
  5. save the generated value in the cache
  6. return the value
It’s quite awkward to have that code repeated all over your app, so I hit upon the idea of passing a block to Cache#get() which would be used to compute the value if the key wasn’t found in the cache.
Read More