Sign in

TOM

@subtlegradient.bsky.social
83 followers 237 following 63 posts

Maker of things that do stuff since the 90’s. Mostly frontend. Previously @coinbase @godaddy @facebook @mootools

PostsRepliesMedia
TOM @subtlegradient.bsky.social · 31/01/2025
yes.
010
TOM @subtlegradient.bsky.social · 30/01/2025
got so much wacky tech shenanigans waiting in the wings to dump on ya all soon, OSS style it’ll be grand
010
TOM @subtlegradient.bsky.social · 18/01/2025
Shipped the world’s first(?) realtime streaming subscription based react server rerenderer infra for native mobile It’s like next.js app router, but for realtime streaming live views instead of a single fire and forget server render pass dramatically pushing the state of the art forward
000
TOM @subtlegradient.bsky.social · 14/01/2025
Fixed already: github.com/expo/expo/bl...
github.com
000
TOM @subtlegradient.bsky.social · 14/01/2025
Is your middle initial O? Because that would be AOKay
000
TOM @subtlegradient.bsky.social · 14/01/2025
expo/fetch doesn’t seem to be able to let go of connections when the server just keeps streaming stuff forever 😰 I’ll try again with react-native-fetch-api
100
TOM @subtlegradient.bsky.social · 31/12/2024
yes Feels like we’ve gone way way way too far down the wrong path. But all efforts to correct it have failed RIP Paper
020
TOM @subtlegradient.bsky.social · 31/12/2024
DUDE!!! AI making everything animate all the things by default will seriously raise the bar for product expectations wen React Native tho 🥺
000
TOM @subtlegradient.bsky.social · 31/12/2024
Instead of the default worst case scenario; your phone gets hot and runs out of battery and uses all your data and the app crashes Instead of that, I’m inverting the failure case. Worst case scenario, everything dangerous evaporates and you see some stale data for a few seconds
000
TOM @subtlegradient.bsky.social · 31/12/2024
Defensive programming, pit of success style I’m playing with seriously dangerous tech. One screw up and the memory leaks will melt your phone Let’s just assume that we’re going to screw this up somehow So I’m inverting the failure case
100
TOM @subtlegradient.bsky.social · 16/12/2024
low expectations are ALSO all stick and no carrot. When people expect something to be slow, they get confused and upset when it’s too fast. It’s like a video game controller that’s too light, feels cheap and broken. Gotta add a little bit of fake weight to important stuff so that it feels right
000
TOM @subtlegradient.bsky.social · 16/12/2024
high expectations are all stick, zero carrot Nobody is delighted when an app opens fast. We tolerate slow starting apps we love. We loathe slow starting apps we need. Making an app start fast is not a moment to celebrate (as a user). But it is a huge moment to celebrate as a dev team.
000
TOM @subtlegradient.bsky.social · 13/12/2024
we are so the same for real
010
TOM @subtlegradient.bsky.social · 12/12/2024
crazy how much modern react code looks like the quick and dirty one file prototypes I used to make back in 2006 I miss `with` 🥺
000
TOM @subtlegradient.bsky.social · 12/12/2024
threading the needle between control freaking and a chaos freaking
000
TOM @subtlegradient.bsky.social · 12/12/2024
@sebmarkbage.calyptus.eu will spend 10 years thinking about a problem space and carefully invent a clever solution My role is to observe and connect. I see the implications of where he’s going and how it can be applied in reality today
000
TOM @subtlegradient.bsky.social · 12/12/2024
finally realizing that I’m not really an inventor. I’m an applicator As a super double observer, I can learn and understand anything. Then once I know and understand, there’s rarely anything left to invent. I see the implications and applications. Then do the obvious
100
TOM @subtlegradient.bsky.social · 09/12/2024
published @double-observer/react-client to npm It’s react-client from the react repo with minor tweaks to support React 18 & React 19 + exhaustive TS types
010
TOM @subtlegradient.bsky.social · 07/12/2024
IRC 2007 was legendary Was so sad when Twitter stole the IRC community
020
TOM @subtlegradient.bsky.social · 07/12/2024
Log debugging for finding the problem. Debugger debugging for solving the problem. Breadth first. Then depth
000
TOM @subtlegradient.bsky.social · 07/12/2024
Yes! at Facebook in 2012 I hooked nodejs up to the debugger api of our mobile apps and automated Step Into to log every line of code executed and then diffed the logs to determine root causes of performance regressions
020
TOM @subtlegradient.bsky.social · 07/12/2024
@egghead.io please let me buy stickers of all your graphics. I love them so much. SO MUCH cc @joelhooks.com
010
TOM @subtlegradient.bsky.social · 07/12/2024
I finally archived some of my favorite repos. After ignoring it since 2009, it was finally time to admit that I’ll never finish that MooTools n-way data binding library 😔
110
TOM @subtlegradient.bsky.social · 07/12/2024
yeah. I’m going to just do it Sometimes ya just gotta do the thing you like to do
000
TOM @subtlegradient.bsky.social · 06/12/2024
Ok, I admit it. I’m building a js framework again It’s RSC for RN with manual bundling of client components Generative native ui in production! I’m probably not going to open source it this time, or maybe 🤔 Only goal is ludicrous product perf. Like 27 out of 10. 11 ain’t enough
000
TOM @subtlegradient.bsky.social · 06/12/2024
You’re the one on the left?
000
TOM @subtlegradient.bsky.social · 06/12/2024
Blocking someone should instantly hide their posts
000
TOM @subtlegradient.bsky.social · 06/12/2024
What’s the abstract corollary to the concept of “attention to detail”? Details are sensory. But that’s just half of observation. The other half is indirect abstract implications and relationships If someone is good at that, what is it called?
000
TOM @subtlegradient.bsky.social · 03/12/2024
I hope so! Celebrating hard work is great. We need more of that
050
TOM @subtlegradient.bsky.social · 03/12/2024
decent frame rate
010
TOM @subtlegradient.bsky.social · 03/12/2024
this should be a gif 🥺
110
TOM @subtlegradient.bsky.social · 03/12/2024
Thabks for summing up what’s happening here. I’m trying to align my personal vocabulary and standards with the the cool kids 😅
010
TOM @subtlegradient.bsky.social · 03/12/2024
Hybrid CSR + RSC React Native app (Yes, we are using RSC in react native in production. Hoping to adopt Expo Router soon)
010
TOM @subtlegradient.bsky.social · 30/11/2024
Precisely. Thabks!
000
TOM @subtlegradient.bsky.social · 26/11/2024
Would have been less confusing and upsetting to people had version numbers used something other than a dot as a delimiter. But here we are 🤷‍♂️
010
TOM @subtlegradient.bsky.social · 26/11/2024
Remember how long it took them to embrace hashtags
000
TOM @subtlegradient.bsky.social · 26/11/2024
What’s the TinyBase + React Native story these days? 🤔
100
TOM @subtlegradient.bsky.social · 22/11/2024
getting some totally random layout bugs on The New Architecture 😰 Going to have to pause it and focus on real product development for a bit. I’ll try The New Architecture after 77 lands 🥺
000
TOM @subtlegradient.bsky.social · 21/11/2024
I do have one gen-pr-summary.sh script that dynamically builds a prompt to generate a PR summary for me. That’s the only personal tooling that I’ve needed in the past few months
000
TOM @subtlegradient.bsky.social · 21/11/2024
Eventually, I’ll get around to adding my own/commands and stuff but so far I’m doing great with just using @zed.dev’s /file feature to drop in random markdown files
100
TOM @subtlegradient.bsky.social · 21/11/2024
I’ve been thinking about building some kind of AI tool kit that works the way my brain works. But @zed.dev is already just so convenient that I’m not feeling that pain anymore.
100
TOM @subtlegradient.bsky.social · 21/11/2024
The biggest problem with generative AI is the generative part. They talk way too much. But I find that I excel in collaboration with them when I spend the majority of my time iterating on a very detailed prompt and regenerating their response over and over again, instead of having a conversation
000
TOM @subtlegradient.bsky.social · 21/11/2024
Most of my hand coding these days is essentially imposing my own aesthetics on code that was generated based on Ludacrisly verbose specs that I wrote up
010
TOM @subtlegradient.bsky.social · 21/11/2024
Given accurate interface, specification and high-level product specification the code can usually be thrown away and regenerated from scratch over and over and over again until it looks reasonably close to what I want and then I’ll make a few minor tweaks to match my aesthetics
000
TOM @subtlegradient.bsky.social · 21/11/2024
now I spend the majority of my attention reasoning about the product specification and the types and the code kind of takes care of itself
100
TOM @subtlegradient.bsky.social · 21/11/2024
But nowadays, typescript gives me 95% of that same play style of programming. feels like I’m interacting with something real. But that only works if the types are correct so
110
TOM @subtlegradient.bsky.social · 21/11/2024
I used to do most of my programming at runtime. I would do the absolute minimum necessary to “close the loop “that would get something running in an environment where I could interact with it at runtime in a de bugger, and then through design the system interactively in a real environment
100
TOM @subtlegradient.bsky.social · 21/11/2024
I like to start off with Ludacrisly verbose syntax that is impossible to misunderstand We can always get cute and clever with it later or even better never
000
TOM @subtlegradient.bsky.social · 21/11/2024
I love using data structures and interfaces that make it simple and easy and elegant to make random changes later on in such a way that invalid states are unpresentable
000
TOM @subtlegradient.bsky.social · 21/11/2024
the best diffs are red
010