Robert Balicki
@statisticsftw.bsky.social
760 followers 460 following 570 posts
Creator of Isograph https://github.com/isographlabs/isograph. Check out my talk at GraphQL conf! https://youtu.be/sf8ac2NtwPY?si=jkljEacLsxStFfjg Pinterest, previously Relay team at Meta
Posts Media Videos Starter Packs
Reposted by Robert Balicki
New blog post: Cancelling async #rustlang!

This is a written version of my talk at #RustConf 2025, where I talk about the joys and sorrows of future cancellations in Rust, with lessons from our work at @oxide.computer. Includes a video of the talk as well. Check it out!
Cancelling async Rust ꞏ sunshowers
Correctness in the face of cancellations: a written version of my talk at RustConf 2025.
sunshowers.io
Reposted by Robert Balicki
@statisticsftw.bsky.social remember when I said we couldn’t query atproto with GraphQL?

Well @slices.network might have just changed that!

I’d use Isograph in a heartbeat with atproto.
That's enough for now, but expect more threads in which I do a deep dive on all of the other awesome features that we shipped in v0.4!
So go for it! Give Isograph a try! Star the repo! Join the discord! isograph.dev/discord
It's just another way in which Isograph allows you to improve performance (fetch less data) while improving developer experience (and velocity!)

Thank you Patryk Wałach for putting in an absolutely heroic amount of work on pointers over the course of a year 🤩
But even in its current state, it enables something very unique: the ability to define a "GraphQL resolver" locally. This allows you to iterate on features before adding it to the actual schema, at which point, you're restricted by the "no backwards incompatible changes" rule.
- server execution (another way to get rid of the network waterfall!)
- support for abstract pointer types

And so much more!
And this is just the beginning! There are several improvements that are planned:
- starting the network request when the query is normalized, instead of when the component renders
- inlining the selection set, i.e. to get rid of the network waterfall
Why might you do this? Well, you might imagine that there are thousands of suspects. So, fetching a bunch of fields on each of them, only to throw all but one of them away, is incredibly wasteful.

So, split this up into multiple queries and save on bandwidth and on server costs!
They're defined extremely similarly to client fields! Except instead of returning an arbitrary value, you return a link to another GraphQL object.
This release introduces client pointers, which were the biggest missing primitive in Isograph! Client pointers are like client fields that return a link to another object, and off of which you can select additional fields.

Here, we select fields off of the dirtiestDodger pointer
Next — a new primitive! Isograph apps are composed of client fields, which are functions from graph data to an arbitrary value. You can't select anything off of client fields, i.e. they are "leaves."

SuspectsCard and DirtiestDodgerCard are client fields in this example.
🙌 Thank you Vadim Evseev for refactoring the Isograph compiler and adding our caching layer, which allowed us to ship such a performant VSCode extension so easily 😎 (but more on that in another thread)
And this is just the start! We spent the last year laying the groundwork for future improvements. So expect a bunch of other features, like autocomplete, surfacing errors, etc. to be fast follows.
First up: the VSCode extension.

Without the VSCode extension, working with Isograph literals feels like manipulating magic strings. But with syntax highlighting, go to definition, and hover info — the VSCode makes it easy to form a mental model of the structure of your app.
Isograph is a framework for building data driven apps that are stable and performant out of the box, all while providing great DevEx.

This release drastically improves DevEx, and includes new primitives that allow you to build even more feature-rich, performant apps.
sograph 0.4 has been released!! Importantly, this includes the official release of the VSCode extension! It includes new primitives! And it includes so much more!

Let's talk about the VSCode extension and client pointers, and save the rest for another thread 😎
Reposted by Robert Balicki
GraphQL @graphql.org · Sep 10
#GraphQLConf murder mystery - who shot
@statisticsftw.bsky.social?!!
(photo credit: @tazsingh.com)
What are your Gluttony Goals
Reposted by Robert Balicki
as they say, "if you improve performance by 20%, you did something smart. If you improve performance by 20x, you stopped doing something stupid."
Criterion benchmark showing a 1800% improvement in throughput
And yes, that hook was called conditionally. Basically, that would have to be done across two components, but there's a plan to improve the DevEx (basically @required support)