(Jason) Gedge
banner
gedge.ca
(Jason) Gedge
@gedge.ca
he/him

👨‍💻 Unemployed, exploring everything.
🎼 Currently building https://github.com/thegedge/m8t
📽️ Live coding here: https://www.twitch.tv/thegedge
🕸️ Subscribe to my feed @ https://gedge.ca
📈 Be a little better each day
I'll keep it for now, because switching is no small effort. I may even keep it around for just setting up the foundational stuff, but I think fast-moving things are best served by something else (e.g., volta for JS)
November 12, 2025 at 4:37 PM
`react-curse` is the lightest there. The package itself under 100 kB, but its true total size is large because a dependency on `react-reconciler`. And for what? So you can write `<MyCoolThing blah={1} />`?

I'ma (hopefully) save you all from that madness by building on top of core language features.
November 11, 2025 at 4:37 PM
Jokes aside, I _am_ hoping to bring something new by using async generators as the core for UI updates. I doubt anything else will be much different, beyond a much smaller package size (with deps, in MB):

* @opentui/core = 142
* ratatui-ts = 12
* terminosaurus = 12
* ink = 5.7
* react-curse = 1.8
November 11, 2025 at 4:34 PM
Yes — I know, I know — we have things like ink, react-curse, blessed, ratatui-ts, terminosaurus, and opentui, to name a few. They're a dime a dozen.

I'm having fun, though. Let me have fun 🖖
November 11, 2025 at 4:34 PM
November 11, 2025 at 4:17 PM
If you're curious what it looks like, roughly this:

```
export const MateLogo = async function* (viewport: Observable<Size>) {
for await (const { width } of viewport) {
if (width < 80) {
yield logoSmall;
} else {
yield logoLarge;
}
}
} satisfies ComponentFunction;
```

🥲
November 9, 2025 at 6:34 PM
And now we're responsive! Not amazing — for example, things flicker because we don't track which parts of the screen to change and instead erase most of it — but we're headed there :)
November 9, 2025 at 6:31 PM
Technically an hypothesis...
November 8, 2025 at 3:41 PM
It's been a lot of fun to do this though. Currently tying up my implementation of something akin to a flex box on the web, and it feels good when you switch to `alignItems: "center"` and it works without any tweaking!
November 7, 2025 at 7:28 PM
Features of the IKEA age:
• Everything is 💩, but polished enough to hide that
• Way too much choice, but regarded as "A Good Thing"
• $5 tasteless meals
• Vapid prefabs → little individuality because everything's the same
• You regularly think "do I even like this?"
• Rich elite rarely purchases
November 7, 2025 at 6:38 PM
I don't comprehend how "giving a single human 1 trillion USD is how we succeed" is a thought that could go through any head 🤯

As you said though, this is insane and out of touch, so trying to rationalize anything here is a waste of my energies. These people are fiercely selfish and anti-human.
November 7, 2025 at 6:15 PM
Anyways, message to all engineering directors, VPs, and CTOs: stop trying to be so-called "thought leaders" on LinkedIn and just, you know, build a team and culture that fosters great engineers, which in turn is going to help you build a great product. Most of you are bad at that. kthxbye
November 5, 2025 at 5:05 PM
I can't tell you how many times I've surfaced critical things during the act of writing code. I can proactively make good choices in the micro that lead to high-quality software. I can still think about the macro too. The best results I've seen is from engineers that work in both.
November 5, 2025 at 5:05 PM
Here's my thesis: sure, writing boilerplate code sucks, but if we disengage too much from the process of writing code, we'll ONLY know our systems from the perspective of a customer, and not from a builder, which will make us less effective at providing customer value in the long-term.
November 5, 2025 at 5:05 PM