“Always – 2009 Remastered” by Erasure featured in the sunset Adult Swim 2010 web game “Robot Unicorn Attack”
I’m coming to you from the underside of a migration I started in August. Yikes.
Recently I moved this blog from Amazon Lightsail to a static WordPress hosted in S3. It’s not done, but it’s “up” and with a warm backup still available in Lightsail, we’re going to see how much I like this whole…thing.
It’s been painful not to write on this blog. And simultaneously a joy also to write.
You see I didn’t just hold myself to doing a migration – I documented all of it. You can see the fun bits, like me figuring out that ripping out Jetpack was going to break a subset of pages using tiled galleries. Emojis? For specifically music notes suddenly stopped working (why?). I’ve provided the 80% complete migration plan with the work in progress bits still to come (like picking a new analytics stack).

But my most painful experience of this whole thing was a crippling set of bugs with fuse.js, the “search engine” I’m attempting to use with a statically-hosted website in S3 behind CloudFront. The death throws of working in JavaScript that you didn’t write alongside WordPress selectors and Claude guessing its way through how your theme was built on top of Gutenberg was enough to make me wonder if the entire AI timestream was going to fall apart in real time inside LocalWp.
I am reminded migrations are never for the meek, no matter how small or how fun we think they may be. 🙂 … Speaking of. I hope that emoji works when this exports.
This site is not perfect – and I broke some cardinal rules in getting here. But it is painful reminder that you can try to tick every requirement and still not have time to actually sit down and figure out what analytics platform in your 20 year career do you want to try next (again).
Meanwhile, the actual time I had to spend on the migration wasn’t controlled by…
Estimates.
Tshirt sizes.

The capacity plan of this project was made by a disaster bean.
My one year old’s evening rituals to pull every book and toy off every shelf, in all that storm, bring me peace. I love her with all my soul and she deserves 1000% of my time. In the middle of this I dropped an entire 9 in my uptime because my site went down on Lightsail in us-west-2 and between work and this singularly chaotic root cause I couldn’t even find time to start and stop the instance (an instant fix) until ~8 hours later.
Availability when your site is hard down will always be determined by the availability of yourself if there is no way to recover without you – and as you may be able to tell in the migration plan, the original site was not highly available at all.
It was one instance. You are welcome because I am cheap as hell when it comes to this website that 30 people read. I don’t care if your title is VP Bob (:D, dammit, emojis!) you are not paying me and I have done you the courtesy of not putting ads between every paragraph on here.

Anyway here it is – It isn’t perfect, but it’s static and it’s on S3 and the CMS is completely decoupled and I LOVE THAT SO MUCH.
But…if I’m being transparent it completely shotguns straight to production right now from Simply Static in Local WP to Amazon S3 with no stage. Nothing says YOLO, my friends, like doing an entire static site conversion through self-scrapping and not testing the output before Uptime Robot picks it up with a cache bust in the middle of that.
Separately – I hope you are enjoying the ups and literal downs of this post. The vibe I wanted was “like a roller coaster of architecture that reads as if it was a key and peele episode about cooking shows” and I was pretty sure if I asked Claude to write this post, it couldn’t handle that prompt.
These are solvable problems.
I’m proud it is here. I’m proud I worked through the absolutely most ridiculous script that did not work at all from Claude only to find that an abstracted bucket in Lightsail…could still be accessed anyway for a simple cp.
You can absolutely laugh as you read the “Offloaded images” part in the migration plan knowing I tried to get Claude to scrap my site first in excitement to try it with a real migration instead of using my brain and testing to see if the CLI could still hit the bucket.

I Learned So Much
I learned how not to use Claude.
But I also learned how to use it, continue to give it context. I liked that it stayed my partner as needed through this migration. I didn’t let it garbage dump it’s unpalatable bullets into my migration spec. I let it suggest things and then I meticulously reconfirmed through other sources to find bias in tool suggestions and aged architecture choices. I wrote the plan myself and didn’t lose my voice. I fed it CSS repeatedly as I worked to rip apart why Search with fuse.js did not work out of the box (and quite frankly still is mid as the Gen Z (?) say).
There is Still So Much
As mentioned earlier, the current architecture of this is too simple despite the decoupling. It is not the end state I want – I want a second environment for the conversion that lives in the cloud. These things are not hard to setup – unless you have a tornado going through your house every night between 5 and 7 PM and your dog was dying from cancer for the last 4 months and passed away in your arms on the floor 5 minutes before a somewhat important meeting only a week after you had sent a desperate email asking colleagues to please, please just cancel something so each day could get a little less hard.
This Migration Reminded Me: You and I Deserve To be Read
I absolutely love people problems because they are the kind of hard that challenges my soul and grow my integrity. I do love the small wins of this website when I develop too, though, it is quite rare. I love that next time a mentee who has never done a migration says, “What should a migration plan have in it?” I can link them the one from this site instead of something behind a closed door they are never going to see that’s 50 pages long.
This migration reminded me that teaching others, leaving bread crumbs, gives me all the good feels. And it reminded me that even when times are so incredibly tough, and people can be so incredibly shitty when you are asking for even the tiniest amount of empathy in an onslaught of execution asks:
That you can get it all done, moms.
That you are not too loud.
That you can make people laugh while doing it and be vulnerable so people do not have to feel perfect.
That your voice is not an outburst.
That your deeply passionate asks for partnership and sponsorship are not begging or offense except to those who may not understand – teaching, requires a willingness to learn from the other party and acceptance that they may still need to.
That your strength to stand up for the culture is the difference for those who needed it.
That you are never less than because someone in a far distant land wants you to be for their payroll and finds your particular existence and journey to get where you are standing today an inconvenience.
To all the women in engineering I know whose tone was somebody’s irritation:
It is nice to meet you – This blog is for you.
Signing off,
Atlanta, we are back online.

