Souls Like Strings

TWIL July 25th 2025

After spending most of the week trying to get a workflow setup with Copilot/Claude 4 to migrate a bunch of legacy class components to function components, I ended up giving up and just doing it quicker/better myself.

Since we have ~40 class components still in the codebase, my end goal was to set up a semi-automated pipeline we could run them through one-by-one, allowing the team to rid ourselves of a large chunk of tech-debt without the fairly large time investment that would usually require.

I started off by setting up a copilot-instructions.md with some process/code quality expectations about the...

Continue reading

Ender Magnolia: Bloom in the Mist

The Assassins Creed 2 of video game sequels.

Why

  • All the stuff that made Ender Lilies amazing, with the rough edges sanded off
  • New setting and new (slightly) less depressing vibes
  • Stronger connections to all your summons as characters
  • Satisfyingly links the two games in the same universe

Why Not

  • Can feel a little too similar to its predecessor, at least when played back to back

Impressions

A fantastic sequel which takes the medieval fantasy foundation of the original and brings it into the steampunk-ish future. The basic gameplay and premise are the same,...

Continue reading

Infinite Jest

Named for what it provides David Foster Wallace while people try to guess what on Earth is going on.

It's a testament to the difference between great and decent writers that I had absolutely no idea what was happening for the majority of this book, but was still enraptured enough to spend something like 40 hours finishing it.

DFW opens with the classic 'start at the end' gambit, then constantly keeps the reader off balance by jumping around in time and resolutely refusing to reveal anything resembling an overarching...

Continue reading

TWIL July 18th 2025

  • BE VERY CAREFUL WITH FORCE PUSHING
  • ABSOLUTELY DO NOT FORCE PUSH WITHOUT CHECKING CHANGES AFTER A LONG AND COMPLEX REBASE ON TRUNK
  • WHY WOULD YOU DO THAT
  • make sure you're not setting this.loading = true on a class that has another 5 or so api calls coming up
    • especially if it's not an observable property
    • and you want them to run simultaneously
  • when you roll out a new feature to prod, don't just spend hours making a performance monitoring dashboard
    • instead you should probably spend that time looking at the error monitoring
    • or do both,...
Continue reading

TWIL July 11th 2025

  • If you're going to have types, don't trick them. No matter how annoying it is to do them properly now, having misleading types will cause someone else a lot more annoyance down the road.
  • Alternating between passing regular props, destructuring them from params, and sometimes using injected props is very confusing. Stick to one.
  • mobx allows you to make properties on a store observable, then components you mark as observers react to changes in observables which affect them.
Continue reading