Samsterby

A blog by Sam Easterby-Smith

It's new year's day, and it's very rainy, so seems like a moment to reflect on the year past and think about the year to come.

2024 has felt like a pretty long slog. Day-to-day of life has been quite relentless and the background noise of sleep deprivation (littlest one is just about starting to sleep through, sometimes) and my partner's impossible NHS shift-work in ever worsening conditions has been challenging.

That said, looking back, we have somehow done an awful lot of stuff and have much to be proud of.

The kids:

🚲 Littlest child learned to ride a bike 🚸 Littlest child started school 👩🏽‍🎓 Eldest child finished school 💖 Middle size children doing grand 🎪 Infinite den building, craft activities, and other play 🍕 Successfully kept everyone fed and alive

Resolutions: • Carry on, we are doing fine!

At home:

🧹 Hired a cleaner 🇫🇷 Went to France twice 🎭 Went on some excellent dates 🏋🏻‍♀️ My partner started going to the gym consistently

Resolutions: • Get the conservatory roof temp-fixed • Progress an actual plan for new kitchen • Make sure we get some small grown-up holidays • Family holiday in Scotland • Me to go out cycling with friends again

In politics:

🗳️ Stood in two elections, local (came 3rd) and general (came 2nd, very chuffed with that) 🫣 Helped run a 3rd local by-election campaign ⛔️ Failed to save our LTN (but learned a lot) 🚄 Changed Green Party policy to unequivocally support high speed rail (actually amazing)

All of these were very much team efforts – so proud of all my friends and colleagues who put in time on these various fronts.

Resolutions: • Make more trouble on local transport issues • Get the party's digital policy off the ground • No elections in 2025 plz

At work:

👈 instituted shift-left testing 🔎 shipped pending transactions and search 💖 did some good bossing with my team 🔥 got stuck behind failed back-end deployments

Resolutions: • Go to fewer meetings • Make releases smooth again • Find more joy for everyone • Die on several hills • Set better boundaries

I'm feeling a bit narked at work, frustrated by our lack of ability to make progress on various fronts, annoyed by institutional dysfunction. But on the other hand, some good stuff happened – and will hopefully set us up for better times ahead.

At the piano:

🌟 Nailed “Ah vous dirai-je, Maman” aka “Twinkle Twinkle Little Star” by Mozart 🪿 Learned Bruyeres by Debussy 🎹 Cracking on with Beethoven's 9th piano Sonata and Debussy's Suite Bergamesque among other things

Playing the piano is very much a sanity hygiene thing for me. Great for the moments where I just need to step away from work and get my head together. Having regular lessons is helping really push my technical skills and explore pieces that I would have considered impossible.

Resolutions: • Do my sight reading practice consistently

Vague conclusions:

The temptation to do more is always strong, but having got through 2024, I'm feeling that has to be tempered with make space to do the things we really want to do. Boundaries and checkpoints are going to be important so we don't try and chew off too much this year. Also celebrating successes and reflecting on good stuff.

Problem statement: I want to self host a bunch of things over my home broadband.

I point some DNS records to my fixed IPv4 address, set up port forwarding to a Pi, and whoopdedoo.

Nah. My router is crap and can’t do hairpin NAT (it says it can, but it can’t). I can see the services from OUTSIDE my network, but if I try to connect from inside, it just won’t have it.

But I’m very smart. If I use IPv6 I can make that problem go away. I point an IPv6 AAAA record at the Pi, open up ports on the firewall (the router will let me do that) and we are winning. Internally (because my network and devices are all IPv6 capable) it will use that in preference to IPv4. Externally you can connect either way.

I’ve had this setup running for a while and it’s fine.

But I now want to run a bunch more things and containerise it all so erm, docker. (Perhaps I should have gone there with Kubernetes, but docker was already installed on my Synology NAS, and it’s otherwise a bit under-used)

I could use the Pi as an ingress point, point v6 and v4 DNS to it, and reverse proxy internally over ipv4 to services on docker I want to expose. Sweet. That’s how you’re reading this…

But if those services want to be able to see each other via their public addresses (think OIDC flows or activitypub services) I hit the same issue – hairpin NAT doesn’t work. I need to use the same trick again, but my docker bridge networks are IPv4 only. Surely that will be a matter of minutes to fix?

Lol.

Synology inexplicably hobble IPv6 in their “Container Manager” docker setup, but I eventually found a script someone had done to work around it. Looks like I can now create IPv6 bridge networks.

This is where I've got to: I can now access the various things from around my network via the IPv6 address of the synology. From within the Syno I can ping said containers. From within a container I can ping the syno AND other containers.

But… from within a container I can't see the rest of my network, and I can't see the outside world. I've clearly done something wrong.

Update – several weeks later:

In the end, the move was to fix the fundamental issue; that my ISP-supplied router wasn’t able to do either hairpin-NAT or static routes. The new one can – including static ipv6 routes. Everything is now glorious and my internal stuff can see my external stuff.

Today at work I spent some quality time with a couple of my developers chasing race conditions.

For benefit of non-developers reading this, software generally has a whole bunch of stuff going on in parallel, and you have to be a bit careful with it. Imagine you have two bicycles racing each other down a road, but if the blue one happens to win they both mysteriously explode.

Or perhaps the green bike will suddenly have orange spots, but you didn't know to look at it because it was also on fire.

There are excellent ways of not getting into this situation, but that would mean re-writing about a thousand lines of (quite important) spaghetti that we inherited – and we've not had the time or bravery. Nuts to it, I'm calling it my Christmas project. Wish us luck.

Also today we got absolutely drenched riding the kids home from school.

One of my aims with this blog is to act as a POSSE (Post on Own Site Syndicate Elsewhere) setup. Because that sounds like a peachy way to run a disparate selection of socials powered by a main place to write slightly longer form content.

There's also a political point to it, exerting control and asserting ownership of one's own output, rather than being beholden to platforms.

Native activitypub using Writefreely

The blog is running on a self-hosted instance of Writefreely (WF) and that includes some degree of native activitypub support. I had some initial problems following myself – but those turned out to be of my own making to do with my network/proxy/container setups.

Plenty of people seem to be using it but it wasn't immediately obvious what would happen or how it would work. Here's what I found out:

Question: Do posts show up as a link? Or long-form? Answer: They show up as the title, and a link, and then a preview card with the title (again), very first line of text, and a preview image which is just the first letter of my username. This is a big fail. Frankly it looks rubbish. I'm thinking we need some options for how stuff is presented, and how much text to include in the post body (from just the title to the whole damn thing). There is a “notes_only” option but I've no idea what it does.

Question: Do images get included? Answer: Nope. Not when viewed from masto anyway. Again this very much contributes to it looking rubbish.

Question: If so, what about alt-text? Answer: Double nope. I found an open issue from a year ago, in which they were thinking about it.

Question: If you reply to a WF blog post from elsewhere, what happens? Answer: You can reply, but it goes into the void and I'll NEVER see it. That's a big fail tbh. You're liable to get whole bunches of people chatting away expecting that you'd see and be able to interact with the replies.

Selfie. I am wearing a plastic Viking helmet. Background: a brightly coloured wall display with yellow flowers on a green background.

Further thought: If we are including text in the post body, I'd want it to be updatable – just like when edits a masto post.

Much as I really like the stark simplicity of the WF interface and writing posts in Markdown – and it's a perfectly serviceable blog, it's not doing what I want in terms of publishing outwards. I'm minded to completely turn off federation and post links manually for now.

What about bridgy

Additionally, because I've got to try several things in parallel, I'm trying to work out if Bridgy will do this the “other” way – and directly post stuff from here to my other profiles including Bluesky. Will that work?

Yes... Bridgy works for posting a link from here out to Masto or BS, but it's basically a manual process. Why would I bother? It's also an absolutely rotten user experience – like mega bad confusing.

When I started my current job we didn't have childcare on Wednesdays, so I negotiated a 4-day week. I'm very glad of this and even though the smallest one is now at school there's no way I'm going to work 5-day weeks again if I can possibly avoid it.

It gives me a bit of space to do some of the bazillion things I need and want to do – and occasionally just to sit around in my pants. Highly recommended, do lobby for it.

Today, I mostly:

🧺 Did loads and loads of laundry 🚲 Shuttled the children to and from school 💻 Messed around setting up this blog (it's self-hosted here at home, running on the NAS, with a Pi doing ingress) 🍗 Made schnitzels 🗝️ Pondered authentication and access management (which is both a work problem and increasingly a domestic problem) 🎹 Had a piano lesson (working on some Beethoven)

I'm Sam Easterby-Smith. My pronouns are he/him.

Professionally:

I'm a software engineer. Specifically, I'm a mobile apps specialist and currently lead the apps team at the Co-operative Bank. For non-UK folk, that's a mid-size, quite traditional, famously ethical, high-street bank. We also run an online-only bank called Smile (I like Smile, don't forget Smile).

I really enjoy my work. I love looking after my developers and testers – improving processes, making sure we have agency and voice within the organisation, striving to be a shining and infectious pocket of enlightenment. I like being glue.

I do also rather love actually writing code, fixing bugs, and making lovely UI – when I get the chance!

[Standard disclaimer: Anything contained in my public online output, here or elsewhere, are personal views, and not those of my employer.]

Politically:

I'm an activist and member of The Green Party (of England and Wales).

I'm a huge believer in systemic change – and that to tackle the big stuff like climate change and social inequality we need to do the thing: “think global, act local”.

I'm really into two particular areas of policy: Transport and Digital

Transport

On transport, what we need is modal shift. To decarbonise transport and address the inequalities and dangers of our car-dependent society we need to provide meaningful and safe alternatives. And yes, sadly, we have to fight the culture wars to get it done. Oh, there are stories.

To deliver on that locally means pushing for better pavements, safe bike lanes, Low Traffic Neighbourhoods, school streets, road pricing, pedestrianisation, barrier removal, stopping pavement parking, public transport.

I'm one of the founding members of Greens4HS2 – and was part of changing the party policy to be solidly (but not un-critically) in favour of high-speed rail. This was quite the change for a party that not very long ago was noisily against building an electrified railway.

Digital

Our digital policy is a work in progress at the moment. We have a working group on it, cementing the party's position on digital rights, and how we can support and regulate the digital and creative industries, smash big tech, and much more.

I have stood for election a number of times, including coming a convincing second in the 2024 General Election.

[Standard disclaimer: Again, personal views in here. But where I knowingly deviate from party policy, I'll say so.]

[Imprint: Published and promoted by Sam Easterby-Smith (Green Party) c/o 36 Manchester Road, Manchester. M21 9PH]

And of course:

I'm a very proud parent of four girls, play the piano, and have been known to make clocks.