Follow the reluctant adventures in the life of a Welsh astrophysicist sent around the world for some reason, wherein I photograph potatoes and destroy galaxies in the name of science. And don't forget about my website,

Friday 21 April 2017

Here We Go Again

Thank you, Brenda from Bristol, for saying what we're all thinking :

There's too much politics going on at the moment.

There certainly is, far too much. Time was when we could all discuss politics at leisure, get cross with the other side but not too cross because we could be confident that the damage they could do would be limited. Checks and balances in the system worked well enough to allow the government to get things done but not to an unlimited extent, and pretty nearly all decisions were ultimately reversible at the next election. The system was a weird kind of stable non-equilibrium, but it was, ultimately, basically stable.

The current situation, on the other hand, is more like this :

It's more than for the sake of saying, "I told you so" that I point out that we wouldn't be in this situation if we hadn't had that stupid EU referendum. The EU wasn't much of a concern for anyone except the hardcore idiots before the campaign; now it dominates the political scene. Without the referendum we'd be in our perfectly normal state of grumblings about politics; Scotland wouldn't be launching yet another referendum, we'd be assured that tomorrow would proceed much as today even if today wasn't particularly great. Instead we have to deal with the nightmarishly complicated, unprecedented process of leaving the EU and the potential break-up of the UK. At best we're facing prolonged uncertainty. Oh, yay.
And now we face yet another potential political singularity in the general election. There are good reasons why some are predicting a landslide win for the Tories - they are well ahead in the polls, the SNP dominate Scotland, and Labour seem determined to screw themselves as hard as possible. And yet that does not tell the whole story. We're already in uncharted waters - not just from the referendum result, but from the massive loss of "safe" seats at the last election and in recent by-elections.

Paradoxically, this election is one born of both opportunism and desperation. It's opportunistic because of the high poll ratings for the Tories, the extreme weakness of the Labour party, the saturation level of the SNP and the tiny number of Liberal Democrat and Green MPs. And yet it is also desperate, due to the immense ongoing political pressure resulting from Brexit, coupled with the new challenge of a second Scottish independence referendum, as well as the underlying unpopularity of austerity. For Theresa May it's do-or-die at this point : either secure a "mandate" from the populace or accept defeat and a potential change of course. Politically, an election looks like not just a good way to secure the next few years of Tory government, but the only way. She's certainly gaming the system, but it's a game she's been forced to play.

But she's still gaming the system. Previously in elections if your side did badly you'd feel it had a fair crack again the next time - or for smaller parties, at least a fair chance to win more seats. Is that the case this time ? Perhaps not. Labour and the Liberal Democrats collapsed in Scotland because of their own problems, no arguments there. Of course it's perfectly fair that they're currently weak thanks to their previous actions. What I think is not fair, however, is that Labour now have a leader they not only do not want, but have tried every means possible to remove.

Now of course, it was Labour's fault for electing Corbyn in the first place. Again, that's fair enough. I said it myself, I wanted someone to the left of Miliband. But come on, this was never supposed to be an absolute. I said he should be given a year to evaluate him, which seemed perfectly normal and sensible to me. After all, no-one said, "I want someone on the far left with despotic tendencies who will fight tooth and nail to cling on to 'power' but collapse like a very collapsible wet hen whenever asked to argue anything about policy and there must not, under any circumstances, be any possibility of removing this person if they show signs of leading the party towards electoral catastrophe." Because normally, you know, if your leader is doing that badly and you realise you've made a horrible mistake, you get the chance to correct that mistake. That's surely also part of fairness.

The worst part is that Labour really tried very, very hard, to remove Corbyn. The effort is important. Had they sat meekly by then they would share in the responsibility, so having a dreadful "leader" would still be fair. But they didn't - they used every means at their disposal, but Corbyn did the unthinkable and didn't resign after massively losing a no confidence vote*. This is such a bonkers scenario that apparently no-one thought there'd be any need to make the result legally binding, i.e. that a leader who lost such a vote would automatically be removed. Of course they'd have the common decency to leave in such an eventuality, because who would be idiotic enough to think they could run a government if they couldn't run a credible opposition ?

* Oh, and now he's claiming the system is rigged. Remind you of anyone ?

Analogy : a long-term but somewhat socially distant colleague drives you home one evening from a party. As they're looking a little ill, you're not entirely sure about this but there doesn't seem to be much of a practical alternative. They start looking worse and worse throughout the drive. Pretty soon they're swerving a little and you ask them to stop. They refuse. They run over a cat and now you're shouting at them to let you out but they still don't stop. Now they're actually vomiting in the car and you're screaming at them to stop but they actually lock all the doors and start punching you in the face instead. The car crashes into a pile of fluffy kittens and explodes, with small burning kitties flying from the wreckage like flaming meteors and everyone dies horribly.

OK, maybe you made a mistake by getting in the car. Maybe someone even warned you this person wasn't safe to drive with. But they never told you they were an actual deranged psychopath from whom their was no escape. So is it fair that you should die in the burning wreckage because you made a mistake but are prevented from correcting it despite your efforts ? Is it fair that we should have an election while the main opposition party has a leader that almost no-one wants and has tried very hard to remove ?

Yet for all that the election is naked opportunism, when we're in an era in which Boris Johnson is Foreign Secretary, the only safe prediction is that there are no safe predictions. The polls got the last general election badly wrong. Can they do so again ?

I don't know. However, I've firmly fixed my voting preference to the Liberal Democrats. When you're in a knife-edge Labour-Tory minority constituency, this may ordinarily seem like a wasted, even stupid, vote. But rightly or wrongly, I believe the current state of affairs means that we're not in ordinary circumstances at all. Given this uncertainty, it seems to me that the Liberal Democrats are the only sensible choice. And since I was highly critical of third-party voters in the American elections, let me explain why.

Firstly, my assessment of Corbyn and most of his supporters is that they've confused the ends and the means - their policies and their principles are one and the same. To take a relatively emotionless issues, consider nationalising the railways. I - along with a majority of the British public - support this, because I think it will reduce fees and increase reliability. Privatisation doesn't seem to have worked well at all in Britain. But I'm not emotionally wedded to the idea in the way a typical Corbynite appears to be : show me a credible alternative that could make privatisation work (as it does, to varying degrees, in other parts of Europe) and I'll happily go along with it. A typical Corbynite, however, will froth at the mouth like a rabid dog against any alternative. It MUST be nationalisation, anything else would be an act of moral bankruptcy !

So it seems to me with pretty nearly all of Corbyn's ideas : he isn't willing to negotiate or compromise because he isn't able to - they are core parts of his identity. His early token gestures of "kinder politics" rapidly gave way to a distinct nastiness; a total lack of wisdom as to when to talk and when to threaten. This, in my opinion, is because he has made policies into moral issues, and in my personal experience it's very much harder to change someone's opinion about moral ideologies than pragmatic issues. For all my left-wing leanings, this is because I see (again rightly or wrongly) those policies as the best way to improve the lives of ordinary people. I don't want to make the government bigger because I have a sexual fetish for big government, as Corbynites seem to. Hence, my own moral principles and those of the Corbynites are incompatible in a way that was not the case with previous Labour leaders.

Secondly, on a more pragmatic point, there seems to me reasonable evidence to doubt the certainty of a landslide Tory victory. The Lib Dems recently won some spectacular victories in by-elections. Labour are so unpopular it looks extremely unlikely that they can win. Anecdotally, I know too many once-devoted Labour supporters (both young and old) who are literally disgusted with Corbyn to take any claims of a shock Labour win seriously. But surely a shock Liberal Democrat win is even more unlikely ?

Sure. But the Tory minority is tiny. It's far less implausible to suggest that it might be reduced to nothing and the government replaced with a coalition of the left. I accept that we won't get a shock Labour or Lib Dem win, but would a Tory loss be so unexpected ? Anger at Brexit is widespread, austerity is unpopular. With a sensible leader at Labour's helm I doubt there'd be much talk of a Tory landslide at all. So I do think there's a chance of an upset. More pragmatically, Cardiff voted strongly for Remain, so in my constituency the Lib Dems now have a chance to appeal to voters in a way they previously haven't, since no other party is so staunchly anti-Brexit.

Which brings me to my third and final point : Labour are currently, in effect, pro-Brexit. To my mind this is the single most important political issue in a generation, and their leader has rendered them impotent. This is not acceptable to me. If I vote Labour, then despite my overwhelming preference for virtually every other of Labour's policies over those of the Tories, on this one, single, dominating issue I'll still get what the Tories and UKIP (urrrggh !) are championing. And since this will have massive knock-on economic effects, I don't believe any of Labour's other, nicer policies will be workable post-Brexit.

That, then, is why I'm not voting Labour. If I do I will now endorse someone who stands for both different principles and policies than my own. I don't want to endorse someone who mobilises the hard left, who are every bit as idiotic as the hard right. I don't trust Corbyn, who I see as unprincipled and inflexible. I don't want to vote for Brexit, I want to stop it, not just get someone else (who seems even less willing to compromise than May) take over the process. So even if I do vote for Labour, I won't stop Brexit and I'd be electing someone whose principles I morally object to. What's the point in that ? Stopping the Tories hardly seems worth it.

All in all, the best course of action seems like voting for the Liberal Democrats. I agree with them on almost as many issues as Labour. It's a risk - a huge risk. The might not get enough seats to make a difference. And yes, last time they made an almighty mistake - I can't be sure they won't do the same again. But the Tories stated goal is a hard Brexit, and Labour's is scarcely any better, so if I vote for either of them I'll definitely get what I don't want, whereas with the Lib Dems I might not. In essence, there's nothing left to lose at this point. Not exactly a ringing endorsement, but that's because this post is explanatory, not activist. Do not think this is a choice I make comfortably. Ideal options in politics are rare indeed, but this time, they all suck more than usual. What fun.

Saturday 8 April 2017

Tutorial : Let's Get Dirty

As you may or may not know, I've jumped on board the VR bandwagon. In order to create 360 3D VR content with Blender you have little choice but to use the Cycles rendering engine, which for me at least is a fairly steep learning curve from the old material editor. Recently I got quite frustrated trying to use Cycles to do the trivial task of using one stencil to act as a stencil for another, so here's a quick, basic tutorial on how to do this from the perspective of someone new to Cycles but used to the original Blender Internal engine and material editor. I don't guarantee that this is the best way to do things, just the one that makes the most sense to me.

A very nice tutorial on some slightly more complex materials can be found here, but it's an hour long video. I won't cover nearly as much as that in this short post, but hopefully I'll give enough of the basics that the Cycles workflow won't seem so scary by the end. It really isn't that different to creating standard materials, it's just that you have to think more about what each button is doing and configure those buttons yourself.

I'll assume a basic working knowledge of Blender (where all the buttons are, how to organise windows etc.) but little or nothing about Cycles materials. I'll cover :

  • How to create standard image and procedural textures
  • How to use bump mapping
  • How to mix textures using different shaders or by mixing their colour/alpha information directly
  • How to use one texture as a stencil for another, with some Cycles-specific quirks to watch out for
  • How to arrange things to make the Cycles node window seem less intimidating.

1) Getting started

First, change the rendering engine to Cycles (top menu bar, the drop-down menu that says "Blender Render" by default). Then set up a window environment suitable for editing the materials. In Cycles this is done almost entirely via nodes, so we're going to need a nice big window for that. I like the following setup :
The left section shows the 3D view of the scene, the middle one is the node editor, and the right is the standard properties window.
Notice that on the left I've set the shading method to "rendered" (the little sphere at the bottom of the left panel, next to "object mode"). This gives a realtime preview of the scene. I've got a single Sun lamp pointing at an angle to the plane, but in more complex scenes you'll see the full effects of shading so this can be a great way to see what you're material will really look like. This setting is also available for the standard Blender engine. You also get a preview of the material in the usual panel, just like with the regular rendering engine.

A word of warning : the realtime preview can be unstable. Save your work often, and if in doubt, revert to the classical technique of rendering after making changes to the material. In the Rendering menu there are various options you can set to speed up rendering time; for this example, try lowering the number of samples in the Sampling panel.

Anyway, select your object and add a material just like normal. In the node editor you'll see the following :

What is this ? The "Diffuse BSDF" thing is scary and not at all an intuitive label. What it is is the way in which the diffuse component of the material is constructed. This is then linked to the material's output, in this case to the surface. I won't look at volumetric materials or displacement settings in this tutorial, just the regular surface shaders. We also don't need to worry about any of the material settings on the right, though it can be helpful to open the "preview" panel, here shown closed.

The first thing to understand about this Diffuse node is that it contains more information than colour. If you were to create a node containing only colour information, such as an image file, and link it to the material output surface socket directly, it wouldn't work. It needs that other information contained in the Diffuse node, even if all you wanted to do was set the colour.

Fortunately if you do just want to set the colour, that's easy. You can click on the colour picker in the Diffuse node and set it there directly. Or, more usefully, you can generate the colour from other nodes (in very complex combinations) and use that as the input to the node. Let's start with an image texture node : Shift+A -> Texture -> Image Texture. Use the file selector in the Image Texture node to choose the image file to use. Then connect the Image Texture node to the Diffuse node by clicking on its colour output socket and dragging the line to the input colour socket of the Diffuse node.

But, confusingly, although the material preview will look correct, the render preview won't. Thing is this setup by itself doesn't work. Just like with regular materials, we have to tell Blender what texture coordinates we use. So now add a Texture Coordinate node : Shift+A -> Input -> Texture Coordinate. Draw a line from its "generated" output socket to the "vector" input socket of the Image Texture node, and both the render and material previews should be what we'd expect.

Hooray ! Now you may be wondering about the other sockets on the Diffuse node. "Roughness" changes the shading style but its effects are subtle so let's not worry about that. "Normal" is used for bump maps. The way you set this up is to add a "Bump" node (from the "Vector" section of the Add (shift+A) menu) :

Just like trying to connect the image texture directly to the material output, if you'd tried to connect it
directly to the Normal socket on the Diffuse node, it wouldn't work - the Bump node converts the data into a format it can process correctly. But note how here I've cheated by using the colour of the material as a measure of its height. This works quite well in this case, and in many other cases too, but you could also use a completely different source for the bump information - another image or a procedural texture, for example.

You might also be wondering how we can alter the texture scaling. For that we need to add a Mapping node from the Vector submenu. A useful trick here - first move the Texture Coordinate node a little way off to the left. Then add the Mapping node and position it over the connecting link between the Texture Coordinate and Image Texture nodes. Notice how the link turns orange. When you left click to accept the new node, the links will be set up automatically. Then you can alter the texture scaling parameters in the usual way.

Now it's starting to look quite a bit like a regular Blender material, except that you can both see and control how each part relates to the rest.
One final extremely useful thing to be aware of : frames. Frames are (sort of but not really) meta-nodes, a way to group nodes together so they can be easily moved in blocks for tidy screen organisation. They also let you label blocks of nodes so you can see at a glance what each part is doing. Add a frame from the Layout option of the add menu. Then you can stick the nodes inside it just like parenting objects together : (shift) select the node(s) you want to add in the frame, then shift-select the frame and press CTRL+P. The frame automatically reshapes to hold the nodes. You can un-parent them in the usual way with ALT+P.

Label the frame with the N menu and edit the "Label" parameter near the top. I got rid of the Mapping node here because it's not necessary for this example.
If you select the frame you can move all its nodes around at once. Obviously this isn't much use for this simple material, but, as we shall see, it becomes essential for more complex materials - especially if you re-use them months later !

Now that we have the very basics out of the way, let's get on with setting up multiple textures in different distributions.

2) Multiple textures

Note how I chose the frame to include the whole shader in the above example. That's because one way of mixing different textures is to generate a new shader and then mix them together, so it makes sense to have each frame contain a complete shader. But we don't have to do it that way. A perhaps more intuitive method is to generate the other texture and have the colours combined before they're input into the Diffuse node. You can have shaders made up of multiple textures mixed with other shaders, so things can get extremely elaborate - and far more powerful than what you can do with Blender's standard material editor.

For example, let's add a second texture on top of our image texture. Let's first create a simple procedural noise texture on its own. For this we need two additional nodes : Noise Texture (from the Texture submenu) and the ColourRamp (from the Converter submenu for some reason - I'm not sure the layout of the add menu is particularly sensible, but never mind). Set them up like this :

You can have multiple Material Output nodes if you like, so you can create this node setup without having to remove the existing one. The output nodes that's used (i.e. the material that's displayed) will be the one that's active.
It should be fairly self-explanatory - the parameters are very similar to Blender's standard internal noise textures.

Now comes the interesting part : overlaying the noise texture on top of the original concrete texture. Let's first try this by using a different diffuse shader for each texture and mixing them. We only need to add one more node to do this - the Mix Shader node from the Shader submenu. The base layer (the concrete in this case) goes into the top socket and the overlaid "dirt" - the white fuzzy noise goes into the top. The really important bit is that the "Fac" socket which controls the mixing should come from the Alpha socket of the dirt colour ramp.

This alpha-based mixing was automatic in the original Blender materials. Now we have to specify it, which is a bit more work but also gives us more control.
You can see that this gives us exactly what we'd expect - a concrete texture with some white splodges, with the dominance of the white controlled exactly by its alpha value (if you need to modify that alpha value, send it through a Math node (Converter submenu) before it goes into the Fac socket). Places which should be totally white are totally white. All is well with the world.

Now let's try the other approach of mixing the colours before we send them into a single Diffuse node. We eliminate the Diffuse node of the dirt texture and (optionally) unparent the Diffuse node from the concrete frame. Then we add a MixRGB node (colour submenu) and, equivalent to what we did before, we put the colour output of the concrete texture into the first slot and the colour of the white patches into the second. Again we use the dirt's alpha channel to control the mixing.

Uh-oh ! This has sort-of worked, but very badly. The dirt is mixed, but now its dominance is not properly determined by its alpha. Parts which should be totally white still clearly show the concrete image. Why is this ? Watch what happens if we eliminate the Bump node :

Ahh, now we see what's going on. It wasn't that the colours of the concrete image were showing through, it's that the normal map was causing bumps that were independent of the dirt texture. If we insist on using the mixing colours rather than shaders method, there is a way we can keep the bump mapping - we use the dirt texture to set the strength of the bumps. We need to use the alpha output of the dirt for this, but since we want the white patches to be smooth we need to invert it (Colour-> Invert).

A bit messy, but it works. The nice thing about this is that by altering the "Fac" slider in the Invert node we can change the strength of the effect, so that you could still see the bumps of the concrete in the white patches a little bit if you wanted to. You could get the same effect with the mixing shaders method too, just by dragging the output of the Bump node to the second Diffuse shader as well as the first.

Of course you don't have to use a simple noise texture - you could use a Musgrave, which has a lot more parameters, or a wave (equivalent to the old "Marble" texture)... or more interestingly, you can link another texture to the input scale and distortion sockets. You can get arbitrarily complicated effects like this. And because of the node setup, you're no longer limited to arranging things in the strictly-linear manner of the original material editor.

3) Controlling where the dirt appears

We might be happy having great white splodges all over the place, but we'll often prefer it if they only appeared in a few places on the material. That is, we want patches controlling where the patches appear. Especially for very small patches of dirt - you might not want a uniform coating of dirt, flecks of paint of whatever over your whole material.

This had me stumped for the longest time, and then I felt very silly when I realised how easy it was. Then I felt a bit less silly when some kindly soul pointed out to me that a small mistake can have big consequences here.

All we need to do is make another texture that defines where the splodges appear and use this to multiply the colours of the dirt. So our distribution texture should be white where we want the dirt to appear and black where we don't. Or we can use its alpha channel, which is slightly simpler that setting the RGB colours, but it doesn't really matter. Then we use a Math node to multiply the two alphas (or colours) together, by setting the method to "Multiply" instead of the default "Mix".

The colour of the dirt is generated by a single noise texture, and it's mixed with the base material in the same way as when we had a single texture. The only difference is that now the alpha mixing is done not by the alpha channel of the dirt itself, but by a multiplied combination of the dirt's alpha and the dirt distribution texture alpha. So dirt distribution section only affects the distribution of the dirt and nothing else.

You can download the .blend file here. Play with the scale parameters in both the the dirt distribution and dirt textures to see what effect they have. If you change the dirt distribution scale, you should change the large patches where the dirt appears, whereas if you change the dirt scale, you should change the size of the smaller sub-patches.

But be careful ! There are two pitfalls here :

1) To see the effect really clearly, there should be a large difference in the scale parameters - the dirt scale should be around 10x larger than the dirt distribution (larger scale means more texture within the same area). But if you go to the other extreme, you can break it - a larger scale of the dirt texture than its distribution scale means you won't see any sub-patches.

Keeping the scale of the distribution texture at 1 but altering the scale of the dirt texture from left to right (10, 25, 50).
Keeping the scale of the dirt texture at 50 but varying the scale of the distribution texture from left to right (1, 25, 50). The distribution scale has the strongest impact at small values - once it gets as high as the dirt scale everything becomes uniform, so varying it just shrinks the size of the individual patches rather than controlling where those patches appear.

2) The position of the colourband sliders matters. Keep the distribution colourband unchanged and try moving the dirt colourband sliders around. If you move them too far to the right, the sub-patches can become too small to see or disappear entirely. Too far to the left and the sub-patches become larger than the patches, so changing the scale doesn't have any affect. A similar problem happens if you move the dirt distribution colourband sliders - it can seriously screw everything up.
A good guideline is to start with both the colourbands having markers in the same positions, then tweak it from there. So if you're making your own material, start simple and gradually build up the complexity - make sure each stage has the effect you think it should have.

Keeping all the texture scales constant but varying the position of the dirt colourband controllers (keeping their relative offset the same but moving them both to the right). In the left image the size of the gaps in the dirt are so small that they're barely visible, whereas in the right they're so large that the dirt is barely visible. This is not what happens with a single texture, where you'd have to move the colourband markers to the extreme ends to get such a strong effect - here you get unexpected behaviour if the markers are just a bit too far from the centre. And in those situations altering the scaling of the textures will give some very strange results. 

Well that about wraps this up. There are lots more aspects to creating materials, obviously, but hopefully that's enough to break the ice and show that Cycle materials aren't so scary. Since non-video tutorials are in short supply, I'll try and do more of these assuming that stuff doesn't keep getting in the way.

Sunday 2 April 2017

Ask An Astronomy Anything At All About Astronomy (XXXVI)

The questions are seemingly inexhaustible. I'm beginning to think they'll never end. Who knew space could be so complicated ?

They say there are no stupid questions. They should read questions 4 and 5 in full. Then they should skip down just past question 8, where there's a special surprise this week. Honestly, I dunno whether to despair that the current generation are such complete nincompoops or rejoice that the next one already looks to be considerably better.

1) What term should we use to describe systems of planets around other stars ?
Microsoft® Windows SuperPlanets Professional Home Edition (Service Pack 1).

2) What about that alternative to dark matter ?
It's too complicated and smells of fish.

3) There are so many other explanations instead of dark matter, is dark matter as good as the others ?
No, it's better.

4) Is this black hole heading towards Earth, and if not why are they reporting it ?
No, and because of liberal media bias.

5) Can black holes move through space ?
Yes, but only on Tuesdays.

6) Can gravitational waves fling black holes around ?
Wheeee !

7) Could we move a black hole with an electric charge ?
Yes, but if I had to choose I think I'd feel safer inside the hole - and that's not sarcasm.

8) I think this article about black holes is wrong, but I'm not going to tell you why.
Well okay then.
- No, but seriously, I insist on not telling you why.
I don't think you understand how this works.
- I'm going to keep talking anyway about how I won't tell you why it's wrong.
Please don't.

SPECIAL EDITION ! This week I received my first ever hand-written (!) questions from 7 year old Daniel Phillips. Daniel rightly understands that the best person to ask about astronomy is not his mummy or daddy but an astronomer (well what did you expect when his daddy studied philosophy ?). So I hope that these answers will be basically correct and that they'll make sense to Daniel. I don't normally record the name of who's asking (for all sorts of reasons) but I'll make an exception in this case.

I've put your questions in a different order, Daniel, because I think this will make the answers easier to understand.

1) How many stars are in the sky ?

2) Is the Moon a giant asteroid ?
Your mum's not a giant asteroid.

3) What is the Sun ?
Hot !

4) What are the stars ?
Also hot.

5) How many planets are in the Solar System ?
Some of them.

Saturday 1 April 2017

Cesky Krumlov : Why Medieval Art Desperately Needs To Jump The Shark

Tired of Prague ? Searching for something more exotic and crazy in the Czech Republic, filled with thrills, spills, dangerous monsters and death-defying escapades ? Well you won't find any in the sleepy town of Cesky Krumlov, a tiny medieval place about a hundred miles south of Prague, near the Austrian border. What you will find is a pretty little town that's a pleasant diversion for a weekend.

It takes almost exactly two hours to get to Cesky Krumlov ("Czech Crumb Love" - no not really) by car or about two days by foot. It's your choice, I'm not judging. How long it takes by balloon or camel is left as an exercise to the reader.

We stayed in this nice little B&B, which finally answers a long-standing mystery : why I keep seeing the word "penzion" everywhere. It turns out the Czech Republic is not overflowing with pension-collection centres, but guesthouses. I suppose that's more logical.

Although it was out of season and the weather was bad, this place was fully booked. Czechy Kelvin-Helmholtz is a popular place, so book in advance. Everyone else thought the guesthouse was "OK, not great", though personally I give it massive brownie points for having an exceptionally comfortable bed. I usually sleep extremely badly anywhere new, but not here.

Mind you, that might have had something to do with the excessive amount of walking. First we walked into the centre of town...

That's us, walking.
... which is a pretty little place, even in the damp and somewhat miserable weather.

Checky Krum Lust really is tiny, you could walk from one side to the other in half an hour. But if you go around all the streets and visit the many and various museums, you can easily spend all day on your feet. Which we did. But that's OK, considering how many weekends I spend watching Netflix.

Could this be the world's only nightclub with a medieval water wheel ?
We began with the town's main attraction, since during the low season it's not fully open and even then it's only open for limited hours : the rather fine castle. This is an impressive castle-palace with an extremely dramatic multi-level arched bridged linking two enclosures on different hills.

The castle itself is imposing but not spectacular from below. Like many Czech castles (not including Karl's Stein), it doesn't really look like a castle except in a few isolated areas. It's hard to get a sense of the layout of it even from its interior, though a model in the museum (one of only two parts we could visit) makes it clear that this was a huge fortified area - and definitely a proper, fighting castle, not the fortified palace it appears today.

The museum is good, and quite extensive, though the focus is on the latter stages of the castle as a palace. The other part we visited was the impressive baroque tower, which has a suitably commanding view over the whole town.

After that we went for lunch in a nice restaurant where the food was overpriced and there was a problem with every single order except mine. You win some, you lose some... I suppose that's the compensation I get for being the only single person in a group of nine.

Then we went to a bunch of museums. I forget the order, but there was the torture museum (very silly and the scariest thing was the noise the rotating gate makes), the mirror maze (not bad, actually), and the moldavites museum.

I have tiny feet ! Tee hee hee !
Moldavities are a very interesting and rare form of glass, formed by meteor impacts. The museum was fun, though for all the wrong reasons, with the very first explanatory panel opening with the memorable line, "65 million years ago, the dinosaurs had a bad day." The short video was probably better suited to astrologers than astronomers, narrated by a strange man describing how touching the moldavites made him feel their "cosmic energy" and gave him a "Buddhist attitude". There was also an interactive impact simulator where you use your hands to set the size of the asteroid and hurl it towards the Earth. It didn't work very well, and when it did it gave very inconsistent results. Sometimes the asteroid explodes in the atmosphere yet causes massive ecological damage, sometimes it impacts the ground and causes a massive crater but no burning. Very mysterious.

Then there was even more walking and nice views of Chicky Camelot until we all decided it was time to collapse.

The next day we left Chucky Krumloops for a nearby castle which I can't remember the name of because, unusually in Czech, it's got too many vowels. This castle also had a genuine medieval history, but it suffered from reconstruction (not restoration) much later, so the modern thing is very nice but little more than a fantasy stately home.

This castle was open, but because of the low season the tours were only in Czech with English printouts. On the slightly positive side, we got free entry into an art gallery. I'm not a big fan of art galleries, but this one, it must be said, was exactly the same as all the others. Lots of paintings and sculptures which you walk around thinking, "yes, that's definitely a painting" or more analytically, "well I wouldn't want that on my wall." I really don't get it.

The first level of the gallery was by far the worst. It had a nice enough opening quote by someone, explaining that only the audience can bestow meaning on the art. That's reasonable enough I suppose, but it seemed to me an excuse to justify putting a stick in some concrete and calling it art without any explanation. It was really all that I hate most about modern "art", little more than pretentious twaddle that probably earned some pot-smoking layabout enough money to make a Faberge egg omelette, or something. At least give me some description of what in God's name the artist was thinking so I can rant loudly about how, "Well I don't think much of that ! Doesn't look much like a commentary on socioeconomic policy in Aztec Mexico to me !". Instead I just had to endure a lengthy series of meaningless nonsense, reading the labels for lack of anything better to do.

The second level was slightly better, though what it God's name the artist was thinking here was all too clear : God. Well, at least the paintings and sculptures looked like what they were trying to imitate. But how many identical sculptures of Christ being brutally crucified (sometimes very graphically) do we really need ? Do we really need yet another identical painting of the adoration of the Magi ?

If only the artists from galleries one and two had met, they might have learned something from each other. The modern ones would have discovered some technical skill beyond finger-painting, and the medieval ones would have had a good dose of surrealism. The Adoration of the Magi with a Happy Shark. Jesus dying on the cross but someone shouting in a speech bubble, "He's only MOSTLY dead !". Anything would be better than a dreary series of identicalness that turn the so-called Greatest Story Ever Told into The Most Uninteresting Sequence Of Depictions You'll Ever See.

The third level, impressionism, was much better. Here there was some remarkable technical skill of conveying detail and realistic lighting while painting the sort of brush stroke a 5 year old would feel ashamed of. And they look nice dammit. OK, none of them were particularly provocative or anything, but who cares ? None of the other paintings were either clever or looked nice. And dammit, I think nice-looking paintings are a darn sight better than all those stupid ones of tins of soup or Christ spilling his guts all over the place.

After enduring this strenuous ordeal, the day concluded with the tour of the castle. This wasn't bad considering it was all in Czech, but I came away with the distinct impression that the owner was a complete deranged psychopath who must have really hated deer. Stone animal heads festoon the exterior, real ones cover every square inch of the interior that's not plastered with firearms.

I know that this was a different age when animal rights meant little, and it was all jolly good fun to take the young 'un's out to blast the wilderness into oblivion (literally - they had children's hunting rifles), but this guy was pathologically obsessed. Even the ladies rooms were plastered wall-to-wall with assorted guns. The interior designer's instructions must've been something like, "I want to be no more than two arm length's away from the nearest firearm at all times, in case a deer suddenly appears and I have to shoot it. Did I ever tell you about that time a deer tried to ravage my wife ?! Nasty little devils, deer. Almost as bad as foreigners. Can't trust 'em. Gotta shoot 'em sixteen times to make sure they're dead. Sixteen ! Yes. What was I saying ? That's right, shooting foreigners. Now, the thing about foreigners is..."

Then we escaped the Deer Extermination Centre, had a a very late lunch, and went home. And everyone lived happily ever after, except for the deer because they were all dead.