Sign in

Andy Ingram

@andrewingram.bsky.social
488 followers 223 following 382 posts

CEO of naming things. React and GraphQL since before they were CV fodder. “an encyclopaedic knowledge of web development". Manifesting code at Watershed.

PostsRepliesMedia
Andy Ingram @andrewingram.bsky.social · 01/07/2026
She can do no wrong
000
Andy Ingram @andrewingram.bsky.social · 25/06/2026
Good news for Vercel. But I’m midway through extricating myself from their ecosystem and service (yeah, I’m being pretty slow about this) as a form of boycott. It’s a shame, because DX-wise I do actually prefer Next over the alternatives, and would love to see it developed under different ownership
0110
Andy Ingram @andrewingram.bsky.social · 28/04/2026
Using @nuqs.dev, i'm trying to find a way to use it with something like next-navigation-guard (github.com/LayerXcom/ne...), but nuqs bypasses Next's own navigation APIs so I'm very unclear on the right way to do this. Also tried forking next-navigation-guard. cc @francoisbest.com
120
Andy Ingram @andrewingram.bsky.social · 09/03/2026
It’s called tupl now, and the API is coming along nicely — quite powerful and expressive github.com/AndrewIngram...
000
Andy Ingram @andrewingram.bsky.social · 05/03/2026
I've been prompting into existence this thing that lets you expose a public SQL interface over your datasources, including other SQL databases. Query playground (schema editing is still a bit rough): sqlql.andrewingram.workers.dev?view=query Repo (unstable API): github.com/AndrewIngram...
sqlql.andrewingram.workers.dev
sqlql playground
100
Andy Ingram @andrewingram.bsky.social · 30/01/2026
Some engineers are allergic to co-location, and I find that challenging
110
Andy Ingram @andrewingram.bsky.social · 23/01/2026
A lot of UI state should be derived from the URL (path and query strings), but that derivation should happen at the root of your component tree so that the bulk of your components are agnostic to it -- otherwise you impair their reusability.
020
Andy Ingram @andrewingram.bsky.social · 21/01/2026
Does anyone know know why this action naming convention exists? react.dev/reference/re... @danabra.mov @acemarke.dev
react.dev
useTransition – React
The library for web and native user interfaces
210
Andy Ingram @andrewingram.bsky.social · 14/01/2026
I've found a Chrome-only bug in anchor-positioning (it works as expected in Firefox and Safari), who do I talk to? is it @una.im ?
000
Andy Ingram @andrewingram.bsky.social · 22/12/2025
The limitations of anchor postioning likely make a lot of sense in terms of not making it possible to crash browsers, but are frustrating because I can’t find a way to do the cool stuff I want to do — like having a line connecting an span in the main content area to an area in a sticky sidebar.
000
Andy Ingram @andrewingram.bsky.social · 21/12/2025
Annoyingly you can't use anchor positioning in scroll-margin or scroll-padding, so if you want to account for a sticky header with internal links on a page you still seem to be stuck with magic numbers.
000
Andy Ingram @andrewingram.bsky.social · 21/12/2025
Has anyone ever gone with a convention of defining their CSS animation duration in terms of frames rather than absolute duration? e.g calc(16ms * 8) cc @jhey.dev maybe?
130
Andy Ingram @andrewingram.bsky.social · 18/12/2025
A missed opportunity that's potentially loosely related to the design of CSS anchor positioning is the ability to do "position: sticky" but without the annoying constraints about parent elements If you don't have full control over document structure it's super restrictive
100
Andy Ingram @andrewingram.bsky.social · 18/12/2025
Is there a way to batch React state updates across multiple event handlers that happen in the same tick? Use case: I have a side panel that uses an “on outside click” hook to close it, but it’s possible the thing you’ve clicked would actually reopen it.
131
Andy Ingram @andrewingram.bsky.social · 05/12/2025
I wish CSS layers defining stacking layers rather than cascade layers.
000
Andy Ingram @andrewingram.bsky.social · 05/12/2025
I got free coffee this morning thanks to the Cloudflare outage so I don't know what everyone is complaining about.
010
Andy Ingram @andrewingram.bsky.social · 05/12/2025
It should be possible to define svg path points using child elements rather than the `d` attribute, then they could be individually positioned with CSS, eg anchor positioning @jakearchibald.com make happen plzkthx
010
Andy Ingram @andrewingram.bsky.social · 02/12/2025
Is it me or are the latest versions of the Apple TV YouTube app kinda trash? Scrolling feels terrible.
110
Andy Ingram @andrewingram.bsky.social · 01/12/2025
I have a mild distaste for state management libraries that default to assuming any given bundle of state only exists once (i.e is effectively global), such that making it work in a scoped fashion is often quick finicky.
020
Andy Ingram @andrewingram.bsky.social · 15/11/2025
It’s somewhat annoying how much easier it is to take good aurora photos with an iPhone than with a chonky camera. This was a few minutes ago by the side of a road in Iceland.
020
Andy Ingram @andrewingram.bsky.social · 07/11/2025
Is there a way to do this glowy gradient button without the extra element? codepen.io/andy-ingram/... cc @jhey.dev @nerdy.dev @kevinpowell.co
codepen.io
Fancy button
...
110
Andy Ingram @andrewingram.bsky.social · 30/10/2025
2020-2023 was probably the worst time to start any large TypeScript codebase
100
Andy Ingram @andrewingram.bsky.social · 29/10/2025
One thing I’d add is that if your reaction to a pattern is “urgh that seems like extra work” rather than “this is the right way, it’s a shame about the verbosity”, you’re probably not focusing on the right thing. 1. Do it right 2. Then make it nice
030
Andy Ingram @andrewingram.bsky.social · 20/10/2025
Really speedrunning things now
030
Andy Ingram @andrewingram.bsky.social · 12/10/2025
Shit like this is why I keep bouncing off vibe-coding
010
Andy Ingram @andrewingram.bsky.social · 03/10/2025
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.
110
Andy Ingram @andrewingram.bsky.social · 01/10/2025
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).
010
Andy Ingram @andrewingram.bsky.social · 29/09/2025
Triangle man is certainly making some choices.
150
Andy Ingram @andrewingram.bsky.social · 22/09/2025
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.
000
Andy Ingram @andrewingram.bsky.social · 21/09/2025
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.
010
Andy Ingram @andrewingram.bsky.social · 21/09/2025
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.
100
Andy Ingram @andrewingram.bsky.social · 20/09/2025
Onto Silksong Act 3
000
Andy Ingram @andrewingram.bsky.social · 20/09/2025
A web framework being used for corrupt autocracy probably isn’t the _best_ selling point tbh
180
Andy Ingram @andrewingram.bsky.social · 20/09/2025
Deeply relieved that the Silksong courier rasher task is nowhere near as hard as it looks.
010
Andy Ingram @andrewingram.bsky.social · 20/09/2025
The most important setting on the new Apple TV OS is to disable choosing profile on wake.
010
Andy Ingram @andrewingram.bsky.social · 18/09/2025
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.
110
Andy Ingram @andrewingram.bsky.social · 17/09/2025
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.
020
Andy Ingram @andrewingram.bsky.social · 10/09/2025
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
010
Andy Ingram @andrewingram.bsky.social · 08/09/2025
Starting a large full-stack TypeScript codebase in ~2021 was probably the worst time in history to do it. Every single thing in the ecosystem was apparently in an awkward transition moment.
010
Andy Ingram @andrewingram.bsky.social · 08/09/2025
I feel like everyday Cursor gives me a new reason to want to switch back to VSCode
120
Andy Ingram @andrewingram.bsky.social · 08/09/2025
Phew, made it to Silksong Act 2
000
Andy Ingram @andrewingram.bsky.social · 04/09/2025
The best advert for Cloudflare is the behaviour of Guillermo Rauch on Twitter
130
Andy Ingram @andrewingram.bsky.social · 01/09/2025
zorbs + pinball, let’s make it happen
000
Andy Ingram @andrewingram.bsky.social · 31/08/2025
@steveruizok.bsky.social's perfect freehand really helps with the fake paint effect
281
Andy Ingram @andrewingram.bsky.social · 30/08/2025
This was a bug, but it looks fun
010
Andy Ingram @andrewingram.bsky.social · 29/08/2025
A bit more progress in making things seem hand-painted
020
Reposted by Andy Ingram
Andy Ingram @andrewingram.bsky.social · 26/08/2025
211
Andy Ingram @andrewingram.bsky.social · 26/08/2025
Derivative as hell, but I've spent the weekend learning about generative art and this is the first thing I've made that looks like a picture.
170
Andy Ingram @andrewingram.bsky.social · 17/08/2025
If i'm using tiptap and partykit, what's the best way to store which users made changes when I save a snapshot (e.g. to db)? Is this something that can be worked out by interrogating the ydoc in the server, or do I need to do it from client (e.g tiptap)? cc @threepointone.bsky.social
000
Andy Ingram @andrewingram.bsky.social · 14/08/2025
Did biome just ship explicit support for some user’s in-house file extension? Last I heard (I could be wrong) .graphqls files aren’t a thing github.com/biomejs/biom... @jeff.auriemma.xyz you spend more time in SDL-land, any takes?
github.com
feat(core): add support for `.graphqls` files by avshalomt2 · Pull Request #7118 · biomejs/biome
Summary We use .graphqls files for GraphQL definition files that contain only types (SDL), like this: scalar Time scalar UUID type Tenant { id: UUID! name: String! isActive: Boolean! creat...
220