Andrew Cairns

Andrew Cairns

@acairns.co.uk

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

8.6K followers4.1K following568 posts

> Don't assume there is a human in the loop. Make an assumption, proceed, then show a map of your assumptions at the end. A lot of decisions are 2-way doors. Just get 90% of the way and make some corrections.

I could have, and perhaps should have, used AI to create this video thumbnail. It would have saved me a lot of time. And probably looked a lot better. But I still love pouring time into something just for the sake of enjoying the process and learning stuff.

I've been getting a lot of main in my hands recently, and considering a split ortholinear keyboard. Any recommendations? Not particularly interested in building it myself, but not against it if need be. Any off-the-shelf keyboards? Will be transitioning from 75% 84 key NuPhy

Spend the extra hour in bed, or... rebuild my entire video production workflow? Maybe I should have stayed in bed.

Andrew Cairns reposted

Replying to @clgeiger.bsky.social

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.

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.

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.

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.

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:

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.

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... 😅

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.

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.

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 😬

Andrew Cairns@acairns.co.uk

Our cadet is ready to learn all about the Open-Closed Principle on the holodeck.

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... 🤔

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.

Our cadet is ready to learn all about the Open-Closed Principle on the holodeck.

Andrew Cairns@acairns.co.uk

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 😩

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 😩

View full thread

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.

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.

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.

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 😩

View full thread

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.

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 😩

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.

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

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

View full thread

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 🙏 ❤️

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

View full thread

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

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.

This is my favourite part of creating content. Just being silly and entertaining myself. Spent the morning explaining OCP using a replicator from Star Trek 🖖 Any excuse for wee graphics and stuff like this. Loads of fun.

Research for the OCP video is done. Have been digging into it's history including: Meyer's inheritance original. Uncle Bob's abstraction reframe for SOLID. The CUPID version by @tastapod.com. Testability perspective by @ploeh.dk . Protected Variation. etc. Script is.. progressing.. 😅

Meyer coined the OCP principle and presented inheritance as the OOP way to achieve it. This was in the 1980s, using Eiffel. Eiffel is a tower. So are inheritance hierarchies. If I just ruined Paris for you, then... you're welcome.

Incredible that 5k of you subscribe to my silly little channel explaining software things using metaphors and analogies. I hope you all know I have no idea how to make videos. I'm totally making it up and learning as I go. Having loads of fun, though!

Read about a few companies struggling with throughput now their output has dramatically increased. They say "code review has become a bottleneck". They are finding some creative solutions to the four-eyes principle while avoiding pair programming. I'll give them that.

Teaching Idempotency using my favourite card game while making a Silicon Valley "always blue" reference. Having fun like this is what keeps me making videos. Lord knows it's not the views! 🤣