Sign in

Andrew Cairns

@acairns.co.uk
8.5K followers 4.6K following 556 posts

Using metaphors and analogies to explain Software Engineering in fun ways: youtube.com/@metaphoricallyspeaking Staff Software Engineer. Passionate about DDD, CQRS, Event Sourcing and Distributed Systems. Kayaking, too.

PostsRepliesMedia
Reposted by Andrew Cairns
Andrew Cairns @acairns.co.uk · 24/09/2026
That's awesome. Glad you like my content. I think mapping something unfamiliar to something we already know helps us start to shape our own mental model. It helps us think for ourselves.
152
Andrew Cairns @acairns.co.uk · 24/09/2026
That's awesome. Glad you like my content. I think mapping something unfamiliar to something we already know helps us start to shape our own mental model. It helps us think for ourselves.
152
Andrew Cairns @acairns.co.uk · 11/09/2026
All this AGI talk confuses me. I think we've finally delivered on the promise of 'smart speaker'.
4173
Andrew Cairns @acairns.co.uk · 06/09/2026
I think the principle Bias for Action is much more relevant these days. It was always super important, but even more so today, and in the coming months/years.
060
Andrew Cairns @acairns.co.uk · 03/09/2026
I say more here: acairns.co.uk/notes/2026/0...
acairns.co.uk
Is Attention a Budget or a Curve?
Attention budget and attention curve describe different parts of the same problem. Budget is about how much attention there is. Curve is about how it gets distributed across the context.
060
Andrew Cairns @acairns.co.uk · 03/09/2026
I kept switching between "attention budget" and "attention curve" and assumed I was using one of them wrong. But they just describe different things. Budget: how much attention there is. Curve: how it gets distributed.
1130
Andrew Cairns @acairns.co.uk · 02/09/2026
Thanks! I'll take a look. I need all the help I can get. I have no idea what I'm doing... 😅
100
Andrew Cairns @acairns.co.uk · 02/09/2026
Say more things. I have a shape key, I believe. For each sound. But what’s throwing me is the rotation of the characters head, etc. Finding it tough aligning. Do you use a different shape key when their head is 90 degrees to the side?
100
Andrew Cairns @acairns.co.uk · 01/09/2026
Great timing, haha. I’ll raise zero hands
010
Andrew Cairns @acairns.co.uk · 01/09/2026
My @cloudflare.social Worker was at 2.1 MB (3 MB tier limit) Just found I was accidentally 1.58 MB of stuff to the bundle. Pushed what I needed to the client-side bundle, dropped entirely from the server side. Now at 0.52 MB Feeling stupid, and awesome, in equal measures.
1100
Andrew Cairns @acairns.co.uk · 01/09/2026
I hate to say this, but... I don't think the cheeks work, anymore. Was fine when he was always facing forward. But now, while building more poses, it just doesn't work. Moving them around is a total faff, too. Might need to be less cheeky going forward.
020
Andrew Cairns @acairns.co.uk · 31/08/2026
Couldn't recommend more trying your best to replicate a style you admire. Have learned so much in the past few weeks about vector art, animation, rigging, etc. Time to apply what I've learned. Starting with overhauling little Andy:
3141
Andrew Cairns @acairns.co.uk · 27/08/2026
Thank you. No idea what I’m doing, really. Making it up as I go 😅
000
Andrew Cairns @acairns.co.uk · 26/08/2026
First few clips for the intro cut together to get a feel. Still a couple of issues to solve. But, it's getting there! Not looking forward to lip sync stuff, though... 😅
3281
Andrew Cairns @acairns.co.uk · 25/08/2026
I wrote a little bit about the metaphor here: acairns.co.uk/notes/2026/0...
acairns.co.uk
The Open-Closed Principle perfectly explains the replicator from Star Trek
Adding a latte shouldn't require opening the replicator. That's the Open-Closed Principle, and the holodeck safety protocols going offline is what happens when a design ignores it.
000
Andrew Cairns @acairns.co.uk · 25/08/2026
It’s for a YouTube video explaining a software engineering principle
110
Andrew Cairns @acairns.co.uk · 25/08/2026
Took a break yesterday to play football. Weather was so nice. Had to be done. But, back to it tonight. Got our cadet walking into the holodeck. Lots of depth stuff figured out. Geordi placeholder will be removed soon. Gonna work now on the holograhic starfleet academy teacher guy.
2141
Andrew Cairns @acairns.co.uk · 24/08/2026
This one in particular is threejs inside motion canvas. SVGs were created in Sketch. Other videos with rigging were experiments using Blender's Grease Pencil and some stuff was in Unity.
110
Andrew Cairns @acairns.co.uk · 23/08/2026
Decided to push on and do a few more bits. Added the hallway when the doors open and replaced the temporary squares with a proper character. Next I'll experiment with a green screen video and chroma key. Keen to know if that'll work since it might save me a lot of time.
3200
Andrew Cairns @acairns.co.uk · 23/08/2026
Decent progress today. Functional door I can open/close show/hide via code. Camera too, including yaw. And a few placeholders in the scene for other stuff. Mixing 2d and 3d has been challenging. Learning loads.
0101
Andrew Cairns @acairns.co.uk · 23/08/2026
Appreciate that Jonathan. Good timing too as the whole project is currently driving me mad… 😅
020
Andrew Cairns @acairns.co.uk · 23/08/2026
My thinking here is that I'll be able to replace these components with pretty much anything I want. SVGs being the obvious option. Then make them sprites. But one thing I'm quite interested in experimenting with is video with a green screen background. Then, I can apply chroma key... 🤔
2100
Andrew Cairns @acairns.co.uk · 23/08/2026
Parametric holodeck with a camera inside real 3d geometry using threejs. Next step will be to add the arch, door, hallway and the cadet. Have the doors open, he walks in, doors close, then the arch and doors fade. This will be the start of mixing 2d and 3d 😬
1261
Andrew Cairns @acairns.co.uk · 22/08/2026
Our cadet is ready to learn all about the Open-Closed Principle on the holodeck.
1231
Andrew Cairns @acairns.co.uk · 21/08/2026
I’m totally triggering your nostalgia! 😅
010
Andrew Cairns @acairns.co.uk · 21/08/2026
Getting close to calling this done. I need to do the panels for the doors. Maybe a large panel on the wall to break up the boring corridor. And a little texture for the floor, maybe? Not sure. Gotta move onto the holodeck and cadet character soon, though.
150
Andrew Cairns @acairns.co.uk · 21/08/2026
Appreciate it, thank you 🙏
000
Andrew Cairns @acairns.co.uk · 21/08/2026
Thanks Dylan! All for a scene that'll last 2, maybe 3, seconds... 😅
010
Andrew Cairns @acairns.co.uk · 21/08/2026
Quick lighting experiment. Simple vector line. Larger width. Lots of drop shadow and blur with a simple gradient on the wall. Looks alright. Might change it from a line so the end caps look better and I can add a little more perspective - but I think the idea works.
270
Andrew Cairns @acairns.co.uk · 21/08/2026
Cleaning up some files on my desktop and found this. This was how I initially planned to animate the characters, but I'm not sure if I'll continue with this type of rigging. It'll just take way too long to animate the whole video this way.
0150
Andrew Cairns @acairns.co.uk · 21/08/2026
Still needs work, but this is where I ended up last night. Perspective lines are correct, but feel a little off in places. Also can't animate the door opening as it is just now... but, it's progress.
170
Andrew Cairns @acairns.co.uk · 21/08/2026
I feel your pain. Appreciate the support. Good luck on your channel. Shoot me the link.
110
Andrew Cairns @acairns.co.uk · 21/08/2026
Regarding FT I treat it more like a portfolio. I'm enjoying what I do. I have a few goals, and a couple of plans on how to get there... but nothing long-term. If it goes well... great. If not, that's ok, too. Being monetised would simply help me make more videos, better, and faster.
020
Andrew Cairns @acairns.co.uk · 21/08/2026
Honestly, I’m still figuring it out. I struggle with time, consistency, and the skills needed to make my video ideas. My advice: it’s okay not to have all the answers. That’s actually the point. I'm learning and stretching myself. Don’t put so much pressure on yourself that you burn out.
100
Andrew Cairns @acairns.co.uk · 21/08/2026
Haha, awesome. My son hates my dad jokes which just makes it even better! 🤣 Appreciate you Rob 🙌
010
Andrew Cairns @acairns.co.uk · 20/08/2026
Big door. As promised.
2100
Andrew Cairns @acairns.co.uk · 20/08/2026
Tempted just to add the door I need to the right and no more doors now. It's gotten a little easier each segment, but still quite a chore. Learned a ton. Stroke thickness, for example, as distance increases. Got a few curves to fix, improve some shadows and figure out lighting
170
Andrew Cairns @acairns.co.uk · 20/08/2026
Coming together, slowly. Lots of time for a scene which will be less than a few seconds, though. Got a few ideas for using threejs for the next scene.
160
Andrew Cairns @acairns.co.uk · 20/08/2026
Marathon? Not sure I'm familiar
100
Andrew Cairns @acairns.co.uk · 19/08/2026
WIP - hallway in a starship. Much more challenging than I thought it would be. Need to complete the walls, add more doors, and a big massive door on the right. And somehow make it curve around a corner. Oh, and lights. Ah, and panels on the wall... Lordy lord 😩
2220
Andrew Cairns @acairns.co.uk · 19/08/2026
And finally, thank you! Whether you watched a video, shared the thread, or just stopped to read. I appreciate it. One last favour: share this with someone who'd enjoy it. You might not be the audience, but someone who follows you might be. Thank you for helping with #raceTo4K 🙏 ❤️
021
Andrew Cairns @acairns.co.uk · 19/08/2026
4/ Don't use Strings and Integers for everything! 'Primitive Obsession' is a code smell that leads to messy logic and hidden bugs. Explore the challenges it introduces and why we should pursue better type safety.
youtube.com
Primitive Obsession is a Code Smell
YouTube video by Metaphorically Speaking
331
Andrew Cairns @acairns.co.uk · 19/08/2026
3/ Distributed systems face the "Dual Write" problem: one service updates, the other fails, leaving data inconsistent. A card game shows how an Outbox can ensure services stay in sync, handle failures gracefully, and apply at-least-once delivery:
youtube.com
Stop writing to two systems. Write to one.
YouTube video by Metaphorically Speaking
101
Andrew Cairns @acairns.co.uk · 19/08/2026
2/ Most software is built like a scoreboard. It shows only the current state and loses the history of how it got there. Event Sourcing flips this by storing the facts. This explores why your database maybe should be a journal, not just a scoreboard.
youtube.com
Event Sourcing Explained Using Football
YouTube video by Metaphorically Speaking
102
Andrew Cairns @acairns.co.uk · 19/08/2026
1/ Mario holds one power-up at a time: single inheritance (an "is a" relationship). Tetris clicking shapes into a complete line: composition (a "has a" relationship). Confused what Composition over Inheritance means? Let our 8-bit friends explain: 🕹️
youtube.com
Composition over Inheritance Explained using Retro Games!
YouTube video by Metaphorically Speaking
111
Andrew Cairns @acairns.co.uk · 19/08/2026
I'm 456 watch hours from monetising my YouTube channel. Soon, the threshold will double! I make software engineering videos that help build mental models with metaphors. Four favourites below 👇 If a dev you know would enjoy them, a share means a lot! 🙏 #raceTo4k
7217
Andrew Cairns @acairns.co.uk · 18/08/2026
My daughter saw me storyboarding my next video and wanted to help. She did great, but out of all the characters, she decided to choose Uncle Bob in his bathrobe instead of a Starfleet uniform. 🙈🤣 Sorry Bob, I'll fix your toes once you're a proper vector.
0251
Andrew Cairns @acairns.co.uk · 18/08/2026
If I’m not back in 5 minutes… … just wait longer!
010
Andrew Cairns @acairns.co.uk · 18/08/2026
Arm and legs day - love it! Beautiful photo
010
Andrew Cairns @acairns.co.uk · 18/08/2026
Here in Scotland, almost always true
110