Book Review: Invisible Planets - Ken Liu


Book cover.

Yet another compendium of Chinese sci-fi stories - and there are some great stories in this collection. There are also some essays about what makes Chinese science fiction Chinese. Based on my (limited) experience, I'd say one of the defining characteristics of the Chinese SF I've read is the way exposition is dispensed with and […]

Continue reading →

M*A*S*H - War Is Heaven


DVD cover art for MASH. A bunch of solider sit around.

I finished watching Frasier over lockdown - the miserable tale of a self-destructive incel - and decided to continue watching old American sitcoms. I thought Cheers was a hellish dystopia populated with malicious tormentors. So now on to M*A*S*H. It's hailed as a masterpiece of comedy. But, really, it's an exercise in military propaganda. The […]

Continue reading →

Anti-Suffragette Postcards


Three postcards. The first shows a toddler girl writing on a blackboard - childishly writing things like "give us our rights" and a hangman showing a man being hanged. The second is of a fat and unattractive woman with the name "Aught To Be Spanked First" - she is saying "We only want what the men have got". The last is entitled Man's Reward and shows a woman using an umbrella to beat a policeman.

Due to a strange mix-up with an eBay order, I've come into possession of these rather quaint anti-suffragette postcards. I hope it is obvious that I am pro universal suffrage. What amuses me about these cards is how emotional they are! These aren't dispassionate arguments designed to calmly influence the rational man. It is all […]

Continue reading →

The limits of General Purpose Computation


A pet cat typing on a computer keyboard.

Should my bank be able to block me from using their Android app, just because my phone is rooted? I'm reluctantly coming to the conclusion that... yeah, it's fair that they get to decide their own risk tolerance. Sage of the Internet, and general Sooth Sayer, Cory Doctorow once gave an impassioned speech on "The […]

Continue reading →

Rewriting OpenBenches in Symfony


The Open Benches logo.

I once described my ideal coding environment to a colleague as "telneting directly into prod and damn the consequences!" I jest. But only a little. When I build for myself I treat best practices and coding styles as harmful. Chaotic evil but, hey, it's only myself I'm hurting. Anyway, my wife and I run a […]

Continue reading →

Theatre Review: Idiots Assemble - Spitting Image The Musical


Photo of the safety curtain, showing caricatures of famous people.

Well, this is a glorious mess! The puppetry is astounding. The grey-clad puppeteers manipulate their charges with grace, precision, and joy. The work is so much more intricate than, say, Avenue Q. The mannerisms of the Tom Cruise doll are perfectly executed, with subtle moments of genius. The puppets range from miniscule to gigantic, with […]

Continue reading →

That costs the same as five nurses!


Pamphlet for the New National Health service.

Tom Dolan has an excellent blog post which touches, in part, on comparative cost. If you're working for, say, a TV company - then you know exactly how much an hour of TV programming costs on average. If you want to do something like build a website, it's quite natural for people to evaluate its […]

Continue reading →

Gardening & Time Travel with Google Earth


Row of photos going back a decade.

There's no one dafter than the previous owner of your property. Over the years we've found dodgy wiring, horrificly bodged plaster, and things plumbed in backwards. We've started re-doing our garden recently. The hideous decking was quickly rotting away and needed removing. But what would we find under there? Google's StreetView for the web lets […]

Continue reading →

Review: Comedy of Errors at Shakespeare's Globe


Three actors in Elizabethan garb scream in an exaggerated fashion.

I'll cheerfully admit to only having a hazy familiarity with the play (it's the one with twins that isn't 12th Night, and with the shipwreck which isn't Tempest, and with the annoyed money-lender which isn't Merchant of Venice... wait... perhaps I have seen it in aggregate!) On the one hand, this is an entirely traditional […]

Continue reading →

Getting Auth0 user information on non-firewall Symfony pages


Logo of the Symfony project.

I am using Auth0's Symfony library to allow users to log in with their social network providers. It works really well. Using this firewall configuration, a user who visits /private is successfully taken through the login flow and I can then use $this->getUser() to see their details. security: password_hashers: Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' providers: users_in_memory: { memory: […]

Continue reading →