Andy Ingram
@andrewingram.bsky.social
450 followers 210 following 310 posts
CEO of naming things. React and GraphQL since before they were CV fodder. “an encyclopaedic knowledge of web development". Manifesting code at Watershed.
Posts Media Videos Starter Packs
andrewingram.bsky.social
Is there any trick to make scrolling to an element match the location of target-current? I’ve been trying it for scroll-linked navigation but they don’t match up so it feels buggy.
andrewingram.bsky.social
Shit like this is why I keep bouncing off vibe-coding
andrewingram.bsky.social
nvm found one, it's "meros". I was only able to find it by specifically searching for "npm RFC1341"
andrewingram.bsky.social
Why is there not a single good multipart response handling library for node? All the ones I've found suck in one way or another. Every GraphQL client that has native support for defer (e.g. Apollo and urql) implements their own handling of the multipart spec.
andrewingram.bsky.social
graphql-eslint seems to be the latest thing to make it hard to have urql and relay coexist in the same codebase.

We have lint rules as guardrails from query mistakes with urql that aren’t needed for Relay (like always having to select an id field).
andrewingram.bsky.social
At this point Cloudflare could just stop their marketing spend and let Vercel do all the work.
andrewingram.bsky.social
Triangle man is certainly making some choices.
andrewingram.bsky.social
There’s a crazy video of someone exploiting the fact that you can jump off your death cocoon in Silksong, they use it to get the double jump whilst still in act 1.
andrewingram.bsky.social
I do think the Venn diagrams of this and GraphQL don’t fully overlap though. Mutation chaining isn’t really a thing in GraphQL if you’re using it “right”, and the big superpower is what it’s like to use at the component level. But cap’n’web is still exciting for some use cases.
andrewingram.bsky.social
Overall it’s one of the hardest games I’ve ever played, but I think the platforming element is generally easier than its predecessor.
andrewingram.bsky.social
I’m fairly sure I’ve now done all the hardest platforming sections in Silksong and tbh I’m a little disappointed, hopefully there’s some crazy path of pain equivalents in future dlc.
andrewingram.bsky.social
People on the left can’t agree on *anything* (it’s the main reason left-leaning parties don’t sweep every election in the UK), so it’s *very* bizarre to see the right treat them as a homogenous hivemind.
andrewingram.bsky.social
In my first job we had two servers in the basement that our website was hosted on, and to deploy we just ssh’d in, did an svn update and a soft restart of the apache processes. Getting code changes live was so fast.

Modern approaches are safer, but we’ve lost so much.
andrewingram.bsky.social
A web framework being used for corrupt autocracy probably isn’t the _best_ selling point tbh
andrewingram.bsky.social
Deeply relieved that the Silksong courier rasher task is nowhere near as hard as it looks.
andrewingram.bsky.social
The most important setting on the new Apple TV OS is to disable choosing profile on wake.
andrewingram.bsky.social
Unless there’s a completely different clip than the one people are sharing 🤔
andrewingram.bsky.social
Y’know I was kinda expecting to see that Jimmy Kimmel actually was “spreading misinformation” in some sense, since it’s not exactly uncommon to get facts wrong during a developing story. But if you listen to what he actually said, he didn’t make any kind of claim about the politics of the shooter.
andrewingram.bsky.social
Cursor's bugbot (PR commenter) is... really bad. I don't think I've seen it do a PR comment which wasn't actively wrong.
andrewingram.bsky.social
But yeah outside of Relay, the state of codegen for clients is pretty bad -- especially with large schemas. Relay approaches it in a much more scalable way.
andrewingram.bsky.social
Relay doesn't actually have any hard requirements for how you structure your schema beyond the usual ones that all client with normalized caches impose (the same record must look the same regardless of the path you took to reach it). But it does have some conventions for getting the most from it.
andrewingram.bsky.social
Hm, do typesafe updaters work at all with Relay w/TypeScript? cc @en-js.bsky.social

I can't even assign value to itself because the get() and set() types are different
andrewingram.bsky.social
I don’t know if it’s still the case, interfaces are more powerful than they were back then, but in my head I was thinking that the way to make this work was for generics to be part of the final schema, and the query language to be able to work with them somehow.