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 · 07/09/2026
Technically the same issue, but novel rulesets make sudoku a lot more fun. Fog of war is my favourite. Here’s one for programmers sudokupad.app/dnz6khw1tf
sudokupad.app
Base 2 by Hanks (Sven's SudokuPad v0.611.0)
001
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
0120
Andy Ingram @andrewingram.bsky.social · 07/06/2026
The most interesting thing is the links to DC’s New Gods
010
Andy Ingram @andrewingram.bsky.social · 29/04/2026
Hm, I think this is the approach we tried, but will take another look
020
Andy Ingram @andrewingram.bsky.social · 28/04/2026
Essentially we need something that can show an in-house confirmation modal for any kind of navigation, regardless of what triggered it (client-side link, hard navigation, unload, nuqs setQueryState etc)
120
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 think there's prior art in other languages, but I couldn't find anything like this for JavaScript/TypeScript. It's the kind of thing that a few months ago i'd have thought of - but dismissed as too much work to try, now it exists after a few evenings of prompting on a $20/month ChatGPT plan.
010
Andy Ingram @andrewingram.bsky.social · 05/03/2026
Motivation was that agents are good at SQL, so what if we expose a SQL interface to let agents to get exactly what they need in a token efficient way? There's some similarities to GraphQL too, i.e a user-centric facade over your data. cc @simonwillison.net (I think you'll find it interesting)
130
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 · 16/02/2026
I also like to say something about the map not being the territory. A map is a useful tool to get where want to go, but you can lose it, or take a different route, and still end up in the right place. So the KRs are your day to day tool to keep you on track, not sub objectives.
120
Andy Ingram @andrewingram.bsky.social · 11/02/2026
It does look it has a mechanism for supporting wrappers, eg “WrappedTab”, which is the main reason why you’d want a composition-based API in this scenario
110
Andy Ingram @andrewingram.bsky.social · 30/01/2026
*we’re
100
Andy Ingram @andrewingram.bsky.social · 30/01/2026
Whilst where here, it’s also never been particularly clear to me why non- reactive dependencies are only for effects, not other things which take dependency arrays like useMemo and useCallback
100
Andy Ingram @andrewingram.bsky.social · 30/01/2026
Sometimes there are perf reasons to have things defined outside of the body of a component, but at least put them immediately before it, rather than in some dumping ground corner of the file.
010
Andy Ingram @andrewingram.bsky.social · 30/01/2026
fragments, styles, component props
110
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
It seems weird to call it out unless there's something that leverages that convention, like how the rule of hooks and devtools build off the use* one.
100
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
The actual score wasn’t that significant though, and varies widely between credit checking firms. We set our cutoff as low as we could whilst still being cautious, most of our decisions were based on other factors
010
Andy Ingram @andrewingram.bsky.social · 14/01/2026
Makes sense. I used to work for a small loan lender and we only needed to do soft credit searches. Though in the UK most of the rules exist to protect consumers — ie stop you taking out loans that would ultimately worsen your financial position.
210
Andy Ingram @andrewingram.bsky.social · 14/01/2026
Is there an equivalent of the UK's soft credit searches?
200
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 · 01/01/2026
Mine included all the Dungeon Crawler Carl books, which are somewhat lengthy
110
Andy Ingram @andrewingram.bsky.social · 01/01/2026
idk how people do over 50. I read every night and ever commute and only made it to 48. Maybe I need to read shorter books.
100
Andy Ingram @andrewingram.bsky.social · 30/12/2025
Yeah, there’s a big list of technical cleanup we have to get through before we can even entertain use of the compiler, but our build times are so bad that adding in the compiler in its current state is such a non-starter that we’re not even going to spend time evaluating it.
020
Andy Ingram @andrewingram.bsky.social · 28/12/2025
Truly the template against which all future Ubisoft games were designed
030
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
Not sure of the benefits in real world terms, but having transitions align to rendering frames might make things seem smoother? Like how stable frame pacing makes videogames feel better to play.
110
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
Which chair was it? I’m the only one at the office who doesn’t use an Aeron because it was causing excruciating lower back pain for me. At home I just replaced a pretty decent Steelcase Leap with the LiberNovo Omni, which is crazy comfortable.
000
Andy Ingram @andrewingram.bsky.social · 18/12/2025
Hm, also seems like you can't really use a sticky element as an anchor, it seems to just use the static position rather than the sticky one.
000
Andy Ingram @andrewingram.bsky.social · 18/12/2025
I suppose it's not really related to anchor positioning except to say that I was trying to see if I could make a better version of position sticky using it (spoiler: I couldn't)
100
Andy Ingram @andrewingram.bsky.social · 18/12/2025
cc @una.im @jakearchibald.com in case any of y'all are aware of existing conversations about this?
100
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
Feels like a documentation gap though? Maybe worth enumerating some scenarios like this where batching won’t apply.
000
Andy Ingram @andrewingram.bsky.social · 18/12/2025
Ah hah github.com/streamich/re...
github.com
110
Andy Ingram @andrewingram.bsky.social · 18/12/2025
Oh interesting, I only used mousedown for the repro because using click fired it on the initial mount (which I also found surprising), but I see you corrected for that. I’ll have to see what the equivalent hook from the library we’re using does.
100
Andy Ingram @andrewingram.bsky.social · 18/12/2025
Here you go stackblitz.com/edit/vitejs-... cc @acemarke.dev
stackblitz.com
Clicky outside - StackBlitz
Next generation frontend tooling. It's fast!
100
Andy Ingram @andrewingram.bsky.social · 18/12/2025
I’m indexing on the information you shared and the behaviour I’m seeing that prompted the question. I don’t know *why* I’m not seeing the batching that I expect, just that it’s indeed not batching.
000
Andy Ingram @andrewingram.bsky.social · 18/12/2025
All the examples in that only show batching inside a single callback
100
Andy Ingram @andrewingram.bsky.social · 18/12/2025
That release post is I’m referring to, it only talks about adding support for batching in callbacks in addition to event handlers, not about batching across multiple handlers.
100
Andy Ingram @andrewingram.bsky.social · 18/12/2025
Will have to make a clean example, but the docs don’t say anything about batching stuff in the same tick, just in the same handler (event, setTimeout etc)
100
Andy Ingram @andrewingram.bsky.social · 18/12/2025
So right now the side panel momentarily disappears before reopening, which is ugly. What’s the best way to fix this? cc @danabra.mov
210
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 · 06/12/2025
I think the other reason Relay isn’t more popular is because of the perception that it’s harder to use than urql or Apollo, when the reality is that it’s really not.
020
Andy Ingram @andrewingram.bsky.social · 05/12/2025
I wish CSS layers defining stacking layers rather than cascade layers.
000