October 9th, 2007

london, doesn't work, broken

Cure for the Itch

For future reference, for the intellectual embetterment of others and for troubled souls searching for answers I commit this to digital bits.

I did a friend a favour the other day and helped him install some software on a phone using a SD card. Unfortunately his SD card had a virus on it (my first since, ooh, about 1993 I think) that my AV software didn't know about.

I first started noticing that things were a bit sluggish although this was Windows so ... then I did what actually turned out to be the dumb thing and rebooted.

At this point I started noticing that I was getting pop ups for WinSysProtect or similar. "Hmm," I thought. Then I started getting Error 216 dialogs everywhere. I disconnected the machine from the network immediately and went searching for answers using a handy Mac.

It appeared I had picked up a trojan called Vundo which seemed to be fairly well known. Most sites on the matter recommended a piece of software called VundoFix which I transferred using a USB key (which I promptly burnt, encased in molten glass and then dumped in a cave somewhere at sea) and sure enough it found the infected files.

The only problem was that this variant of Vundo had attached itself to the winlogon process which meant I couldn't delete it since it was "In Use". Unfortunately winlogon is practically the first thing to start up and therefore booting into SafeMode or similar doesn't help.

At this point I was facing either reformatting or risking using a Knoppix Live cd with Captive NTFS or NTFS-3G both of which made me nervous.

However I found a bit of software called Avenger which allows you to write a small script and then reboot. The script is then executed before winlogon.

This worked a treat and a subsequent thorough scan with every bit AV and Anti-Malware software I could lay my hands on indicated I was now squeaky clean.

So, if you end up in the same situation then I can recommend the above.
skinhead, tea

Somewhere deep inside there's a neon sign

I've been hankering to learn a new language recently. The only problem is which one to learn.

To learn a new language you need to have problem to solve in it otherwise you're just spinning your wheels and there's no motivation. This sort of rules out Lisp and SmallTalk for me.

I really don't have that much use for Ruby since I don't do web stuff, I've already done at least one large project in Python (and I didn't really find it to my taste although I realise that's a personal thing. Part of it, however, might have been that it wasn't sufficiently better/different from Perl to make it worth giving up all those years of knowledge and CPAN).

I embraced the strange beauty of Miranda and Haskell over a decade ago and the even stranger beauty of Prolog about a year later.

I've been aching to have a go at D for a while but haven't had a project to do in it - although I've been pondering either redoing my SWF dissertation and Gravel stuff or, alternatively, writing a compositor, possibly with Shake plugin compatability (this would especially useful since the fucking Apple fucks decided to End Of Line it because no-one used it on their hardware despite them dropping the price to $499 for OSX and keeping it at ~$5000 a seat on Linux. Assholes).

However one of those is retreading old ground and the other's kind of an overly ambitious project.

I thought about C# as well - maybe implementing this stuff that I wrote about 2 and a bit years ago but, well, it's not really that different from Java is it?

A few people have been talking about CouchDB - a transactional, non relational DB type affair written in Erlang.

Erlang is pretty cool - a concurrent, distributed, functional programming language based around message passing with a bunch of nifty features designed to be fast, fault tolerant and with high availability in minds (code can be replaced without restarting the system) and which, because its functional, can be reasoned about.

I've also been using ActiveMQ a fair bit recently. I hate it. It sucks (for me at least, maybe I'm just unlucky) and seems to introduce new regressions at every point.

Thinking about it most of the features you want from a PubSub system - HA, guaranteed delivery, distributed, concurrent - you get for free in Erlang. Throw in CouchDB for the transactional stuff and half the hard work is done for you.

It's not an unprecedented idea either - ejabberd, the XMPP server used to run jabber.org is written in Erlang.

Feature set wise I'm thinking fairly basic - multiple master-master brokers with fail over, queues (i.e only one subscribed consumer out of many will get a message), topics (multiple subscribers all get a copy of the message), optional guaranteed delivery and then maybe later point-to-point communication.

Something akin to Rendezvous's globbed subjects or JMS's Message Selectors would be cool too.

The only issue is how other languages would use the system - a simple network protocol or HTTP would work but it would be nice if it could emulate JMS or STOMP as well.