Archive for July, 2005

Arse/Elbow Differentiation 101

Wednesday, July 6th, 2005

Dear users of Rate My Kitten,

You appear to be having difficulty telling the difference between a cat and a kitten. The site is explicitly called “Rate My Kitten”, not “Rate My Cat”, yet you still persist in inexplicably posting thousands of photos of cats. Really ugly cats, too, usually. As such, as of this point, I will be rating all things that are clearly not kittens on your site with the lowest available score.

Just to make this easy for you:

This is not a kitten, and the addition of tinsel to an already pissed off looking cat does not make it look any more like a kitten.

This is not a kitten. In fact, it’s probably too fat to be really still called a cat, too. More of a walrus with fur and a confused expression.

This is not a kitten. And the inclusion of a comedy plant-pot pose doesn’t make it a kitten either.

This is not a kitten. It is a demon creature from the very deepest part of the underworld.

This is a kitten but it’s in such a deeply disturbing place that it’s going to take several gallons of mindbleach before I’m able to think again.

Okay? For further reference, this is a kitten. So is this, this and this. Here are several kittens, one of whom is the saddest kitten in the world.

And lastly, this is not a kitten. It is clearly David Bowie after his latest image revamp.

I hope this clears up any confusion you may be experiencing;

Yours, etc.

Good day

Wednesday, July 6th, 2005

You win some.

You lose some.

Ah well.

NoMoHo

Wednesday, July 6th, 2005

I give it, ooh, two or three days before this appears in GreenFairy‘s linkdump.

C++ question

Wednesday, July 6th, 2005

I came across an interesting problem yesterday (for some value of interesting, anyway). Basically, I’m trying to figure out a way of allowing a method in a base class to access a method in the derived class (assuming this method is not declared in the base class). In other words, something like:

class Base
{
public:
//Blah
void myMethod() { derivedMethod(); }
};

class Derived : public Base
{
public:
void derivedMethod () {}
}

Okay, normally you’d use a virtual base method for this and it’d all be hunkydory. But in this instance I don’t want to do that – I’m working on some policy based programming, so I’ve got this situation:

class PolicyA
{
public:
void policyImplementor() { hostMethod(); /* other stuff */ }
};

class PolicyB
{
public:
void policyImplementor() { hostMethod(); /* other different stuff */ }
};

template < class Policy >
class PolicyHost : public Policy
{
public:
void hostMethod() { /* Do something */ }
}

Except that doesn’t work. Making a common base class for PolicyA and PolicyB which contains a virtual hostMethod() is one way to fix it, but I’m sure there must be another way. I’ve tried declaring the policy classes to be templated thus:

template < class Deriver >
class PolicyA : public Deriver { /* etc */ };

template < class < class > Policy>
class PolicyHost: public Policy<PolicyHost> { /* etc */ };

But that doesn’t work either. Anyone got any suggestions (other than “Design your classes so this isn’t necessary”) ?

Wow

Monday, July 4th, 2005

Phil Johnson has annoyed me in the past, but his latest post – in which he lambasts Live 8 for being “nearly as revolting as the Gay Pride proceedings”, and then goes on to lambast Britain for having bad food (this guy, incidentally, is American; his criticism is that Pizza Hut don’t put sausage on pizzas, and that we don’t have “authentic” Mexican food) – is perhaps his best yet. If only I could believe he were trolling.

Beer

Sunday, July 3rd, 2005

Call me biased (or an alcoholic), but I thoroughly approve of this sort of church community event. Maybe I should pay St Clements’ a visit, given that it’s just down the road from me.

My New Best Friend

Sunday, July 3rd, 2005

The PA at church got an overhaul this week. Aside from the fact that we’ve lost two channels in the multicore (and it’s only a 16-in core), the rewiring and cleaning up of everything seems to have cleaned up the sound something lovely.

But, more than that, one of these has appeared in our rack. And it’s the best thing ever. I no longer have to go to every channel and kill the 250Hz on the desk; a well balanced input sounds now sounds good without tweaking on the desk – and given the acoustics in our building, that’s bloomin’ remarkable.

I just wish we had a couple more of these so I could add a bit more punch to the drums and bass, but I guess you can’t have everything.

*cough*Some singers who didn’t just sing in unison/octaves all the time might be nice too*cough*

Jon Mark and Robbo’s – The Smokey, Peaty One

Sunday, July 3rd, 2005

Well, that does exactly what it says on the tin. Or bottle. It has to be said, though – for a blend, it is really thoroughly excellent.

Edit

Nayf informs me that it’s not a blend, it’s a mix, which is a very different thing to a blend. Indeed, the Smokey Peaty One features both Bowmore and Laphroaig, two stonkingly good malts, so I guess that explains why it’s so very drinkable.

Toucan Telecom

Saturday, July 2nd, 2005

“Hello, can I confirm that that is Mr Whitworth?”
“Speaking”
“Hello. I am happy to tell you that as a BT customer, you are now entitled to free evening and weekend calls.”
“Is that so?”
“Yes. All I need to do is confirm your account details.”
“You want me to confirm my account details?”
“Yes sir, so you can get your free evening and weekend calls.”
“Tell you what. How about you tell me what company you’re actually calling on behalf of?”
“That would be Toucan Telecom”
“Not BT? What a surprise. Can you put me through to your supervisor, please.”
“Okay sir. <pause>Hello sir, how can I help you?”
“Are you familiar with the TPS?”
“The TPS?”
“The Telephone Preference Service. It’s a list that I signed up to which means that it’s unlawful for you to cold-call me. Congratulations, you’ve broken the law.”
“Are you ex-directory, sir?”
“That’s irrelevant. It’s illegal for you to make marketing calls to numbers listed with the TPS, and I am going to be filing a complaint.”
“Well, I can assure you that you will never receive another call from us.”
“Damn right I won’t. I’m still going to file a complaint.”
“Goodbye sir”
“Goodbye”

Toucan Telecom are a bunch of deceitful idiots who have broken the law in cold-calling me. I suggest you don’t put any custom in their direction any time soon.

Obfuscated C

Friday, July 1st, 2005

I got bored this afternoon and at the prompting of Trav (who needs to update his website) I’ve been playing obfuscated C. I’ve got this far:

#include<stdio.h>
main(a,b,_){return(a==1)?(printf(“%d”,main(7,1608,0)),0):(a==2)?((_==0)?b:main(a,m
ain(3,0,(main(3,1,b)*_)),_-1)):(a==3)?((b==0)?_<<10:_>>10):(a==4)?(main(3,1,b*_)):
(a==5)?((b==2)?main(4,_,_):main(4,main(5,b-1,_),_)):(a==6)?(b/main(3,1,_)):(a==7)?
(b-main(6,main(5,3,b),main(2,main(3,0,3),2))+main(6,main(5,5,b),main(2,main(3,0,5)
,4))-main(6,main(5,7,b),main(2,main(3,0,7),6))+main(6,main(5,9,b),main(2,main(3,0,
9),8))-main(6,main(5,11,b),main(2,main(3,0,11),10))):0;}

You get a prize* if you can figure out what it does and how it does it.

* prize not guaranteed to actually exist. And yes, I know it prints 1025; I want to know why 🙂