Introduction

This is the outlet for my various productions. I'm a HTML, CSS, C, Ruby, PHP, and FreeBSD weenie, so if any of your interests are compatible with mine there's a reasonable chance of finding something useful here.

Wait, don't go... here, I have a vacuous blog too:

The Freaky bl.aagh

On the other hand, my computer actually seems stable with this new PSU, so maybe they actually spent that money on useful things like PSU components and not useless things like crappy branded gloves.

At least, it sure looks like it.

  • The cable attachments on the first one are funky circular metal things with screw locks and pointlessly pretty LED's surrounding them, and rubber endcaps for unused ones; the PipeRock II instead has boring and cheap looking plastic connectors.
  • PipeRock I has selectable combined/separate rails via a switch on the back, and has a nice fat power switch you can't miss, II just has a titchy power switch that'll be more awkward to find.
  • PipeRock I came in a fabric bag, with another bag for storing the cables. PipeRock II comes in a plastic bag with the cables already attached.
  • PipeRock I came with a rubber endcap to dull vibration, PipeRock II comes with nothing, and you can't use one because it lacks a fucking earthing cable. Woe be to you if your case insulates your PSU by itself.
  • PipeRock I came with gloves, a chunky sticker, and an 45 page A5 manual with a textured facade and 8 languages. PipeRock II comes with a 21 page A6 manual in 4 languages and no texture.
  • PipeRock II is an inch deeper than PipeRock I. Good thing I got a deep case.

I can take this any of two ways:

  • Tagan care about quality of the PSU, the insides are great and well worth the £115, and while it may feel cheaper, they're more practical (those screw locks were bit of a pain, after all, and they made the cables awkwardly rigid, even if they look better).
  • Tagan are in oh-my-fucking-god-we're-running-out-of-money mode, cutting back on perks and on quality.

Hmmm, which one is more likely, I wonder.

Blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaargh.

Note to self: On second thought, maybe that 4 pin power connector really is required.

*twitch*

Note to self: 1 molex to 8 pin EPS12v is insufficient to reliably power a motherboard which actually needs those 8 pins.

Also, when the motherboard manual says a 4 pin power connector is optional in one spot, and required in another, at least try to go with the "optional" side to begin with.

I love Steam

2009-05-23 14:13:13

I especially love it when the backup option is ten times slower than my local network connection. And when restoring from those backups somehow logs me out of Steam. And when restoring from those backups simply hangs. And when installing from the network is ten times slower than my Internet connection. And when a supposedly installed game gives the utterly useless "This game is currently unavailable" error message instead of running.

Try reinstalling the whole thing, "Cannot connect to steam network, please try later". *facepalm*. Meanwhile, Impulse is happily downloading Demigod at 6MB/s; I guess it helps that they're not making one of their most popular games free, thus destroying the experience for everyone who's actually given them money.

Valve, stick to making games, because you fucking suck at application development and content delivery.

New computer

2009-05-23 00:53:26

What a faff on.

I built my new desktop today; 12GB Intel Core i7, with 2 1.5TB drives and an 80GB X25-M SSD for the OS. It's rather nice, and Windows 7 seems to like it. It also doubled my framerate in Dwarf Fortress, woo ;)

Sadly, I had to build the fucking thing. Something I think I shall avoid in the future; first, the case — the feet won't stay on. They're glued to it, and if you don't lift the (rather heavy steel) case enough when you move it, they get torn off. Quality.

Second, the motherboard wanted not only the 24 pin EPS12v and 8 pin auxiliary power cables most motherboards need, but also a 4 pin auxiliary cable along with it. Guess what most PSU's don't provide? Luckily I had an appropriate conversion cable sent next day delivery.

Third, this £100 PSU, which didn't even come with the cables necessary to drive the motherboard, is faulty; tick *power off*, tick *power on*, <wait 2 hours> tick *power off*, tick *power on*. And it would have to happen on a bank holiday weekend, gah.

Fourth, my spare PSU… well, it works, but the cables are a fucking disaster; it's an old modular Tagan. The PCI-Express cable connectors are very fat, and so don't fit together side by side - I had to hunt down a molex adapter for it. The SATA cables were clearly designed by someone who's never had to actually use one in anger; they're very stiff, and each one is so far apart that your minimum distance between drives is maybe four inches. Long story short, only one of my HD's is powered, and the entire PSU is outside the case, like the system's been disemboweled..

After all this faffing around, paying £400 more on a prebuilt workstation is looking pretty good. Well, so long as it isn't an Apple :P

Argh, nVidia

2009-05-03 15:28:03

Not content with having my 8800GTS commit suicide, nVidia's incompetence now seems to be resulting in the SATA controller on my motherboard forgetting how to talk to disks; my system keeps rebooting and all the disks attached to the nForce probe as being missing until I power cycle it.

Of course, Intel are dragging their heels on the CPU I want for my replacement system. Why on earth they couldn't have just included ECC support on the original Core i7 I have no idea; AMD can manage it, and what sort of fool wants 12GB of unprotected memory?

I've rewritten the page at my vanity domain, hur.st. There's less information on it, but it's more amusing, and that's what really matters. Right?

In case you're completely confused, it resembles the Dwarf Fortress dwarf information page.

Woo, Atom

2009-04-02 03:26:44

My bl.aagh (huh huh huh) now has an Atom feed, so if you don't want to read my ramblings, you can now have your browser or feed reader of choice do so for you.

I've caught up on a few pending patches (one since 2005, erk) and packaged up a new Ruby PHP Serializer release.

This release fixes a few bugs, and adds support for serializing and unserializing PHP sessions. There's also a small test suite included, which passes on Ruby 1.8.6, 1.9.1 and JRuby 1.2.0.

Please let me know if you find it useful :)

html_entities_ascii() just appeared under Projects; this is a very fast HTML escaping function for binary data and ASCII text. We will be using it to generate NZB fragments from our new database.

That's right, Newzbin is writing it's own database for Message-ID's; this will remove about 5 billion rows from our MySQL database and putting them in a form which can be accessed and stored more efficiently. We're benchmarking it at about 110,000 inserts/sec, which includes checksumming every page (for extra paranoia, considering we're using ZFS).

Once this is done, MySQL can concentrate on our file and other smaller tables, and we can look to extending our retention to match the recent spate of NSP's announcing 365 days and beyond.

It's funny how C is repeatedly turning out to be useful for a website mostly driven by PHP and Ruby; Newzbin depends on quite a lot of our custom C services and libraries. Let's enumerate some of them:

  • pencil; inspired by the pen load balancer, pencil is a buffering service. We use it to talk to PHP daemons over FastCGI; pencil fully reads the PHP response and buffers it for slow clients, so PHP can get on with other requests instead of hanging waiting for a client to read() a response.
  • searchd; our first generation search accelerator service. It splits titles and subjects into 2 and 3-tuples and indexes what files and reports contain which pairs and triples of letters. It's used entirely for v2.
  • resultd; our second generation search accelerator; or rather, a fully blown search engine, designed specifically for our datasets and our queries. This is what drives listings on v3. Watchdog is also driven by a releated service, part of the same codebase.
  • msgidd; a bloom filter service; every Message-ID we add goes via this service. Its job is to remember what it's seen, so we don't insert duplicate segments into the database. Prior to an upgrade of a backend server, it has been running non-stop for about 600 days.

Our new database is creatively named msgiddbd; Message-ID DataBase Daemon.

FreshBSD v2

2009-03-13 19:02:03

I've spent a couple of hours applying a bit of polish to it, and now beta.freshbsd.org is starting to look pretty nice.

I've added project pages here for k8temp and mkjail.

I've finally gotten around to releasing a bit of code; nothing too exciting, but hopefully useful to someone.

First, thrqueue; a thread safe queue for pthreads applications written in C, allowing for "easy" producer-consumer threading. It's pretty much identical to Queue as found in Python, Ruby and many other languages; you enqueue things from N threads, dequeue things from M threads.

Second, pqsort; a C macro which generates partial quicksorts for arbitrary types, allowing for efficient sorting, ranking, pagination, partitioning, etc.

Both of these are used by Newzbin's backend search engine, resultd, so they've had some exercise in real world production use.

Well, maybe you have; it's almost always mentioned on "recommend a game" threads on Reddit, despite it still being in alpha, and even despite the interface being rather… scary. And there's a good reason for that.

Dwarf Fortress is, as the name implies, a game involving dwarves and fortresses. Specifically, you make said forts for said dwarves. It's a bit like the old classic Dungeon Keeper in that regard.

But don't let the website or the graphics fool you; it may look like something out of the 1980's, but DF is very much a 21st century game, with breadth and depth that surpasses pretty much anything. Even a medium sized world probably has more impressive procedurally generated content than an entire Spore galaxy; realistically flowed rivers which have carved the landscape, lava flows and volcanoes, glaciers and deserts, oceans and aquifers, lakes and caves, mountains and ravines, layers and veins of ore, rock, gems and soil. All populated with creatures of every description, some of which you can tame, eat or milk, and many of which that'll kill you given half the chance. Some you can trade with, others will siege you, or steal from you, and you can do the same to them.

The world even procedurally generates its own *history*: civilizations battle each other, individuals get wounded (limbs removed, fingers broken, organs skewered, blinded, burned, frozen, drowned, smashed…), get married, have kids. Artifacts get made, often decorated with art which reflects events in history, megabeats roam the lands, heros kill and get killed by them, and indeed they get injured too (meaning you might get attacked by, say, a legless dragon, or a hydra with only 4 heads).

And into this world, you send your dwarves; you can choose almost anywhere to settle. Forested valley with a river running through it; haunted glacier with a cliff face and magma pipe; desert with an underground lake; mountain with a waterfall; coastline with beaches; wilderness; barren island.

And so, you start off with seven dwarves and whatever you choose to bring with you; a wide range of meat, plants, seeds, weapons, tools, drink, animals (which can be adopted as pets), etc. When you arrive, you start to dig out your fortress (or build it out of materials you find or brought with you), making stockpiles for your food and other stuff, barracks or individual rooms for your dwarves, workshops to make things like beds and doors, floodgates and levers and mechanisms to build water systems so you can build a well (for when your dwarves can't drink the alcohol you're brewing in your still). Farm plots so you can grow your seeds, butchers to turn wildlife or your tame animals into food and materials you can turn into crafts (to trade with caravans for things you need). I could go on and on.

And of course where you embark has important implications for what you can do and how you do things; get magma and you can process metal ores and forge metal items without wood or charcoal, and if you have sand you can make glass. If you don't have wood you need to bring and trade for some to make beds and burn (especially if you don't have magma). On cold maps, water will freeze, so you need to get some indoors so it's available to drink; on a glacier you may need to dig out a section and collapse it to make a small reservoir. Screw up, and you might end up with injured dwarves who need to drink water, but without any water to give them, erk. And you did save some wood to make a bucket with, right? An aquifer might lie above the rock in the region; you either need to find some rock that goes through it, or build pumps to remove the water so you can make walls to keep it out so you can dig through it. And of course the pumps need power; be it wind, flowing water or just dwarfpower. Of course, without rock you'll be severely constrained in your available construction materials to make these things…

And yes, flowing water; the game has a bunch of simulated liquid flows: water (including pressure; many a fort has been lost when someone placed their well on a lower level than the water source), magma, steam, mist, dust, miasma (from rotting items), fire, smoke. Even temperature is modelled, though I'm not sure how much of it is a flow.

Dwarves themselves are modelled in a lot of detail too. They have personalities, and they can mesh or clash, making friends, enemies, lovers, etc. They have likes and dislikes, and moods; the fortress, environment, people, and events can all make dwarves happier or unhappier, and they can get so despondent they become suicidal (jumping off cliffs, or down wells, or into rivers or magma), or become violent. Consider: one of your soldiers has had a baby. They carry it around with them. (S)he gets into a battle, and wins, but the baby gets killed. Said soldier becomes depressed, and finally goes insane, killing his wife, his other children, his pets, a member of the fortress guard, and finally he kills himself. And if any of them were close friends with other members of the fort, well, you better keep a close eye on them…

Dwarves even make art; artifacts and engraved walls often have images on them relating to events in history, or things that have happened in the fort, or even just things the artist likes. Did that guy jump off a cliff? You might find an engraving on your walls of a dwarf flinging himself into the abyss. Did you repel a siege without loss? You might find your next artifact is decorated with an image of a dwarf and a terrified goblin, with the dwarf laughing at it. You might even get images of other artifacts or other masterworks. Or you know, you might just get yet another image of a $!&*£ door.

And of course, there are endless ways to lose. And no real way to win; winning is just not losing. It's a sandbox game, and you can do whatever you like until you die or abandon the fort. Thankfully, losing is fun. And afterwards, you can reclaim your fortress and try again, or visit it as an individual adventurer to see what became of it after you all died.

Now, it's not all roses and fluffy kitties; yes, it looks like The Matrix (but graphics sets help, e.g. May Green's excellent DFG), but more critically, the interface is rather… preliminary. It's almost entirely keyboard driven, and the keybindings are not always entirely consistant. Large constructions are tricky, even before you worry about making it so dwarves don't get trapped or crushed (the latter is at least a bit realistic, but it gets old once they wall themselves in for the 5th time), and there's so much depth, it can take a considerable amount of effort to grasp what you need to do to even survive. Which I guess is also fairly realistic.

Still, if a lot of people can find the unremitting shallow repetitive tedious nonsense of Spore exciting and fun, I can find the unremitting depth and complexity of DF exciting. And call people who like Spore names.

Now, if you'll excuse me, I have six dwarves on a glacier to see to.

My per-month filtered spam counts since the end of 2001 (via the Google Charts API). Last month peaked at just over 52,000 messages; by comparison, last year's peak was 33,000, and 2005's was "just" 17,000.

My average monthly totals for 2003 are close to my average daily totals today. Clearly Something Must Be Done; I propose that illegal torture is something, ergo we must do it. Hey, it worked for terrorism!

I'm building a new machine for my mum; a dual core low-power AMD64 to replace her wheezing old 1GHz Athlon. The system runs fine on Ubuntu Linux, provided I use the latest ATI drivers and not the ones Ubuntu itself ships with (hint: apt-get install envyng-gtk).

Anyway, I put Windows Vista on it to see what it's like. What a clusterfuck. First, the installer is slow as shit; boot the DVD, and it treats you to an colourful screen with nothing but a mouse pointer to start with for the first 40 seconds or so. Long delays like this with zero disk activity are common with it for some reason.

About five reboots later, I have a desktop; I install the critical updates for it, reboot again, install the ATI drivers, reboot again, install SolSuite and Opera, and think the end is in sight. To finish it off before I prepare to migrate her email, I turn on Automatic Updates. Oh, two more updates to install? Um, OK, I guess it's doing the "Recommended" ones I ignored.

Reboot number 7; the system fails to boot. It gets to fading in "Microsoft Corporation" and simply hangs. Safe mode does the same; right after crcdisk.sys loads, all disk activity stops and the system locks solid. Well done, Microsoft QA.

Now, the true, unforgivable, what the fucking fuck aspect of this: the Windows Vista install DVD no longer boots. That's right, it hangs too, at roughly the same spot. Scouring the interwebs, this is apparantly not an uncommon issue; I expect I need to wipe the hard disk so it can no longer trip over whatever the last update fucked up. And this piece of shit retails at over £300?!

Hmm, I wonder how easy it would be to get SolSuite running under Wine…