Here's my five latest blog posts - or you can browse a complete archive of all my posts since 2008.

Metaphors

Back in 2020, when we all had a lot more time on our hands, I would occasionally hang out on /r/WritingPrompts. I stumbled across this old post today and figured I’d post it here. You know. For posterity.

Writing Prompt: You’re on a space ship with a bunch of your crewmates. You’re the only human, and apparently metaphors are a strictly human behavior. You’ve learned to cope with this, but today you’ve decided to speak in only figures of speech as a prank on the others.

“Good morning, Harzz. I feel like death.”

“Captain, you cannot feel like death. Death implies the absence of perception - and furthermore, is an experience with which you, unlike me, cannot be familiar.”

Ah, Harzz. Great science officer… pain in the ass before I’ve had my morning coffee. I should have known better. I’m about to explain when… no. You know what? This is my ship, this is my crew, and I’m tired of having to break everything down into logical, literal phrases the whole time. Today, just for once, I’m going to talk how I want to talk. They can figure it out.

“Don’t worry, Harzz. I’m just yanking your chain. I’m just a bit wiped out today, that’s all. I’ll be as right as rain after I’ve had a cup of joe.”

I head to the galley, leaving the bemused Harzz staring after me. You know, this could actually be fun…

We’ve been out here six weeks, along the edge of the disputed zone. One of those missions that feels like more of a box-ticking exercise than anything else - the “dispute” turned into more of a cold war decades ago, we’ve surveyed every rock in this place a dozen times over. No settlements, no life signs, no hostiles… HQ thinks having a couple of ships along our edge of it keeps things under control, and so far they’re right. Looks like today’s gonna be another long, dull day of empty space and blank scopes.

Sometime around ten, I wander into the mess to find the crew gathered there. Harzz, Djanik, Kjin-ti… time to have a little fun. I pour myself a cup of coffee and sat down.

“Welcome, captain. We were just reviewing today’s mission telemetry. Would you like a report?”

“No, Djanik, that’s OK. I’ll review it later. I was just thinking, you know, us out here together all these weeks, maybe it’s time we got to know each other a little.”

“Are you concerned about the crew’s performance, captain?”

“No, nothing like that. Just… you have to admit, this mission isn’t exactly keeping us busy. Thought maybe we could swap a few stories, help to pass the time. Did I ever tell you about my parents?”

“Your parents, captain?”

Here we go. This was gonna be fun.

“Yeah. You probably know my dad - he’s a big cheese, was one of the top brass for a while. It wasn’t always easy for him - he was always the kind of guy who called his own tune, y’know, marched to the beat of his own drum.”

“Captain, forgive me, I had no idea your family were musicians. I thought your father was an officer in the Federation.”

“Yes”, interjects Djanik, “and I had always believed your species was carbon-based. I did not know it was possible to create sentience from dairy products and metal alloys.”

I go on. “Well, he was a real high flyer back in his academy days - gave him a reputation as a bit of a hard-ass”

“I was unaware that altitude affected the composition of your species’ buttocks, Captain. This is fascinating.”

I catch Kjin-ti whispering to him “don’t be an idiot, Djanik! The captain already said his father was top brass - that explains the altitude and the composition!”

I’m already struggling to keep a straight face. “One night, dad and some of his classmates head out - they got some shore leave, decide to go out, paint the town red, see if they can pick up some birds”.

“Your father’s dedication to urban maintenance and wildlife conservation must have impressed the examiners at the Academy, captain”

“Perhaps, Djanik. Perhaps. Now, you gotta realise, my dad was normally an early bird - up at the crack of dawn most days…”

(I overhear Kjin-ti again: “Djanik, I have never heard the dawn crack… is this an Earth phenomenon?”. Djanik replies “I am confused as well, Kjin-ti. The captain’s father is now a bird made of brass and cheese. I am finding the aerodynamics difficult to calculate.”)

“…but my mum was a night owl; the kind of woman who was always burning the candle at both ends. Well, story goes, their eyes met across a crowded dance floor.”

“Their eyes? Did the rest of their bodies meet as well, captain?”

I laugh. “I guess you could say that, Kjin-ti. They were like glue after that night.”

Djanik nods. “Your mother must have used the heat from her candle to catalyse the proteins in your father and create an adhesive. I hope her feathers were not damaged during the process.”

Just as I can’t hold it any more, the alarm rings out. Djanik’s face is impassive. “High alert, captain. All stations.”

“Wait.”

The crew stop and stare at me. This was irregular.

“High alert, Mr Djanik? How high?”

“I… do not understand the question, captain.”

“Djanik, you said there was a high alert. I would like to know: how high is the alert?”

“I… captain, it is a high alert. We should respond at once!”

“Computer, cancel alert.” The crew are all staring at me now. “I’m sorry I deceived you. There is no alert. I was merely trying to make a point. When the alarm went off, you all recognised it as a high alert, correct?”

They nod.

“But that doesn’t mean anything, really, does it? The alert doesn’t actually have a height.”

They’re still staring, but the penny is starting to drop (I must remember to try that one on them later.)

“So… a high alert is more serious than a regular alert… yes?”

They nod again.

“Why do you think that is?”

Kjin-ti figures it out first. “Gravity, captain. Your species evolved language on a planet with gravity. You associate height with magnitude - size, scale, danger. For your ancestors, big things were high, and big things were dangerous.”

I smile. “Go on…”

“…and…” the leap in cognition is right there. She goes for it. “…and your language is built on comparisons. This is why you speak of turning up audio signals and turning down invitations, when neither of these involves a change of altitude.”

Djanik is deep in thought. “So, you say your father was a big cheese… and large things are important in your society. Was your father made of cheese, captain?”

“No, Djanik. We humans don’t just use spatial metaphors about size and height. We use images from nature, from our surroundings. Among my ancestors, to own a large piece of cheese was a sign of wealth and affluence, at a time when many humans had insufficient food.”

“And your mother… was not really an owl.”

“No, Harzz. She was 100% human, same as my father, same as me. But the owl was a nocturnal bird back on Earth, so people who stayed up past dark were called night owls.”

“I see. Captain, your species’ style of communication is highly illogical… but I begin to see how, in the absence of telepathy or pheromones, it may have given you an evolutionary advantage. Fascinating.”

The crew sit in contemplative silence for a few minutes. I pour another cup of coffee and return to the bridge, check the readouts, lay in a course, and the ship thunders to life, tongues of flame licking from her engines, an arrowhead streaking through the heavens, the stars around us an infinity of diamonds scattered across the velvet darkness of space.

"Metaphors" was posted by Dylan Beattie on 16 March 2025 • permalink

"Open Source, Open Mind" - A Free Meetup with Info Support in Veenendaal

On March 19th, I’ll be speaking at a free meetup in Veenendaal in the Netherlands, hosted by the wonderful folks over at Info Support, all about the history - and future - of “free software”. We’re coming up on half a century of folks giving their code away for free, but we’re still not entirely sure what “free software” is, how it works - or whether it’s possible to create a truly sustainable ecosystem around free and open source software.

A promo banner for the meetup "Open Source, Open Mind Met Dylan Beattie"

Come along and hear about the history of open source, free software, the GNU project, Commander Keen, WordPress, FluentAssertions, Redis… and more.

Sign up here: https://www.infosupport.com/open-source-open-mind/

See you there!

""Open Source, Open Mind" - A Free Meetup with Info Support in Veenendaal" was posted by Dylan Beattie on 04 March 2025 • permalink

Martin reckons it'll take me 20 minutes to write a blog post.

Martin is apparently dubious as to just how awesome Sveltia CMS is. (Martin also apparently isn’t entirely sure of the difference between Sveltia and Svelte, but I’m sure he’ll figure it out eventually).

For the record, he made this comment at 18:29 UTC on 2025-02-27.

Martin saying it'll take 20 minutes to write a blog post.

20 minutes? I make that 3 minutes, plus another 2 for GitHub Actions to build and publish the site.

"Martin reckons it'll take me 20 minutes to write a blog post." was posted by Dylan Beattie on 27 February 2025 • permalink

Iconography is Hard: VS2022 Refresh Edition

I’ve spoken before about the four different styles of visual communication - pictographic, phonographic, ideographic and logographic:

  • Pictographic writing is where the symbol is a picture of a thing. The smiley face emoji 😃 is a good example - regardless of what languages and alphabets you can read, you’ll see that picture and think “hey, a happy person!”
  • Phonographic writing is where pictures stand for sounds. It’s how most Western alphabets work - remember learning to read in school? Sounding out “r e d b a l l” until your brain put the sounds together into “red ball” and you went “oh, yeah, a red ball!”
  • Ideographic writing is where pictures stand for ideas - and unless somebody’s explained it in advance, you have no clue what it means. You know the “eyes” emoji 👀 ? Does that mean “I’m watching this to see what happens?” Or “I’m looking into this for you now?” Or “I’m rolling my eyes in despair because I knew this was going to happen?” Depends on the context, culture, team.
  • Logographic writing is where an image stands for a word - not an idea, but a specific word. You don’t find it much in Western languages and alphabets but it’s used in Chinese, and in kanji, one of the three forms of written Japanese: the kanji 父 represents the word “father”, for example.

When it comes to building things like toolbars and user interfaces, things can get properly gnarly. Most modern desktop apps use a delightful mashup of pictograms, ideograms and phonograms - the little yellow folder where you stored all your documents, the floppy disk that used to be a pictogram but most folks using computers today have never actually seen one so it’s become an ideogram.

I noticed earlier today that the menu in Visual Studio 2022 has two almost identical icons on it… circular arrows, which we’ve come to associate with the idea of refreshing something (“go around again”, I guess?)

Except in VS2022, if the arrow’s rotating clockwise, it means “Browser Link”, and if the arrow’s rotating counter-clockwise, it means “Restart (Ctrl+Shift+F5)”. I guess… righty refreshy, lefty-lets-recompily?

But hey - iconography is hard. You try explaining the difference between a Browser Link refresh and a project restart in 24x24 pixels. 😉

A screenshot of the Visual Studio 2022 menu bar, showing an arrow rotating clockwise with the tooltip \"Browser Link - Disabled\" and an arrow rotating counterclockwise with the tooltip \"Restart \(Ctrl+Shift+F5\)\"

"Iconography is Hard: VS2022 Refresh Edition" was posted by Dylan Beattie on 26 February 2025 • permalink

Visual Studio 2022 17.13.1 Broke My Syntax Highlighting

Another day, another software update that breaks something you can’t quite believe anybody’s still messing around with… but hey, even here in 2025 I guess somebody at the Visual Studio team is looking at syntax highlighting and going “yeah, we could improve that”.

Here’s a snippet of code from the workshop I’m writing, that I snapped a few days ago. This is Visual Studio 2022 Professional, version 17.12.3, with a slightly modified version of h4zm1’s awesome Cyberpunk theme (GitHub) (VS Marketplace):

A screenshot of some C# code in Visual Studio 2022, with a synthwave colour scheme applied.

And here’s that same snippet of code when I opened it up this morning, after installing the latest update to VS 2022 17.13.1:

A screenshot of some C# code in Visual Studio 2022, with a synthwave colour scheme applied. Several code elements are rendered in a muted color, indicating they are unused - but they ARE used. Stupid computer.

You see how the constructor parameters aren’t hot pink any more, they’re a sort of muted navy blue? And GetWebsiteBaseUri has gone from being Sunny Delight to being a colour I think we will call “crusty mustard”?

Yeah. That’s a problem. Those muted colours, that’s Visual Studio’s way of saying “hey… this thing isn’t actually being used; maybe we can remove it?” - except those bits of code absolutely are being used.

Tried the usual things. Restarted VS2022. Updated Resharper. Restarted the computer. Nope. Eventually had to revert the update - which, of course, clobbered the colour theme installation - but eventually I managed to get VS downgraded back to 17.12.3, get the color scheme reinstalled, and generally get things looking the way they’re supposed to. There’s 90 minutes of my life I’m never getting back.

Why does it matter? I’m halfway through making a training course. Lots of video. Lots of recording screens of code. So I guess we add another rule to the rulebook: don’t update Visual Studio when you’re in the middle of a video project.

I’ve filed a feedback issue with the VS team here:

https://developercommunity.visualstudio.com/t/VS2022-17131-update-has-incorrect-synt/10856882

  • if you end up on this post searching for the same problem, go give it an upvote 😉
"Visual Studio 2022 17.13.1 Broke My Syntax Highlighting" was posted by Dylan Beattie on 24 February 2025 • permalink