Implementing Milkwood in Java and Clojure
I was recently given, as a coding exercise by a potential employer, this problem.
It's an interesting problem, because the set of N-grams (the problem specification suggests N=3, so trigrams, but I'm sufficiently arrogant that I thought it would be more interesting to generalise it) forms, in effect, a two dimensional problem space. We have to extend the growing tip of the generated text, the meristem, as it were; but to do so we have to search sideways among the options available at each point. Finally, if we fail to find a way forward, we need to back up and try again. The problem seemed to me to indicate a depth-first search. What we're searching is not an 'optimal' solution; there is no 'best' solutions. All possible solutions are equally good, so once one solution is found, that's fine.
A paen in praise of my stove
It's time to sing a paen in praise of my stove.
A stove is the heart of any home, particularly so at this time of year. A stove transmutes wood into heat. But heat comes in a number of forms, and we appreciate it in a number of ways. My stove provides me with toasty warm towels from my heated towel rail, when I step out of the bath. It provides me with the hot water for my bath. It provides me with my hot meals, my well cooked food. It heats my oven and bakes my cakes. And, most important of all, it keeps the whole of my house warm and comfortable. And all this for no fuel bills, save the labour of cutting the wood.
So what is this paragon, I hear you ask; how much, I hear you ask, does such a thing of wonder cost?
Getting Jenkins CI running on Debian 6 under Tomcat
Today's job was to get a continuous integration server set up and integrated with my Redmine project management system. Since I run Debian 6 on my server, and I prefer where possible to install from the official Debian packages, the Redmine version I'm running is 1.1, which is somewhat behind the curve. I had a look around at which continuous integration server to use. I've tentatively picked Jenkins, the more purist-open-source variant of the Hudson/Jenkins project. Reasons include: it's available in the Debian 7 distribution (but sadly not in Debian 6), and it has a plugin for Leiningen, which is my favourite build tool.
So... on to install, and there the fun began.
Installing Jenkins
Extraordinary renderings of Stuart London
OK, I know when I blog about game worlds it's usually procedural ones, and it's probably no secret that I'm trying to put together a toolkit which will render believable (largely) procedurally generated worlds. But to put together a believable world you have to understand how real world environments work, and these extraordinary models of London from just before the Great Fire strike me as extraordinary and inspirational.
These have been produced by teams from De Monfort University — formerly Leicester School of Art and then Leicester Polytechnic — for a British Library competition called 'Off the Map'; and they are built, literally, from contemporary maps. First, here's the entry by a team calling themselves Pudding Lane Productions: This has a very grungy feel, similar to CD Projekt Red's beautiful Vizima from the original Witcher game; but (obviously) it's a much bigger and more complex environment than that.
Next, this one from the Optimistic Pessimists:
Modelling river systems: first glimmer of success
If you've been following this blog, I've been writing about modelling a large game world for some time. Ideally I'd like that world to be largely procedural, so that I can have a lot of explorable environment without having a huge amount of painstakingly handcrafted models; but I also want it to look natural. And in making a landscape look natural, one of the first key things is to model how rain falls and how water drains.
So I've been playing with some experimental code to model this. It isn't yet doing even nearly what I want, but it's beginning to show the first hints of promise.
My assumptions are: my game area is in the northern hemisphere of it's planet, which spins eastward just as the Earth does; coriolis winds blow rain in from the west, and it falls mainly on rising slopes. From where it falls it drains downhill, and once it's joined with sufficient other water, it makes a watercourse, forming a dendral river system. Got all that? Good.