Jason Kuhrt
banner
kuhrt.me
Jason Kuhrt
@kuhrt.me
Software artisan. Ex @the-guild.dev prisma Dialogue littleBits. Creator Graffle Molt Paka Nexus. In an alternate universe ⊻ Coureur de Bois, Architect, Athlete, Lego Master Builder.

👨‍💻 https://github.com/jasonkuhrt
I've joined @heartbeatchat.bsky.social as a founding engineer! It is my privilege to be among their first engineering hires joining to take a platform already changing lives to the next level. It's cool too that they're using @prisma.io, @effect-ts.bsky.social, and other great tech. Here we go! 🎉 🧑‍💻
Heartbeat | Bring your community together
Host conversations, events, content, and more on your own domain. Heartbeat gives you the building blocks to create a perfectly personalized online community.
heartbeat.chat
December 15, 2025 at 4:23 PM
Just dropped a seasonal ish update on my Graffle project, recapping some recent happenings and looking forward a bit. Ended up actually being a pretty productive few months :)

github.com/graffle-js/g...

#graphql
Autumn '25 🍂 Status Update · graffle-js graffle · Discussion #1479
Here is my seasonal update on Graffle, the Autumn '25 edition 🍂. The previous one was the Winter '25 update. Winter/Spring/Summer Retrospective Since the last update, I was busy with Polen while co...
github.com
December 12, 2025 at 4:51 PM
Thanks @zed.dev and Kyle Barton for github.com/zed-industri.... Zed just got ahead of VSCode here where this functionality is only available after an extension has been installed. Great work! #typescript
Implement pretty TypeScript errors by KyleBarton · Pull Request #42494 · zed-industries/zed
Closes #7844 This change uses tree-sitter highlights as a method of showing typescript errors prettily, keeping regex as simple as possible: It covers three main areas: Diagnostics Diagnostics a...
github.com
November 27, 2025 at 4:31 AM
Working on Optics for Kit. Aiming to drop all traitable get/set/update ops on data structures meaning those that can be provided via polymorphic traits e.g. `Optic.at(...)` works for e.g. tuples or structs while `Optic.ix(...)` works for e.g. arrays or records. github.com/jasonkuhrt/k...
feat(optic): Rewrite optics module per README spec · Issue #117 · jasonkuhrt/kit
Rewrite the Optic module based on the design spec below. This supersedes #115. Optic Optics are composable abstractions for reading and updating data structures. This module provides optics at two ...
github.com
November 27, 2025 at 2:36 AM
Just shipped type-safe regex in @wollybeard/kit using Arkregex ⚡ github.com/jasonkuhrt/k.... Arkregex comes from the great David Blass who is also working on @arktype.io. What a great quality of life improvement, thanks David! #types #regexp #typescript
November 25, 2025 at 2:46 AM
Flo end is a complex command doing quite a few things. It now has a dry run to help gain confidence before carrying out its slew of side effects.

Learn more at: github.com/jasonkuhrt/f... #claude #cli #fish #workflow
November 24, 2025 at 4:24 PM
Consolidating some stuff in Kit such that type and value level lens will also have a superset JSONPath syntax and this obviates the need for something like Obj.get from kit too. #typescript #jsonpath #fp #lens

github.com/jasonkuhrt/k...
feat!: Lens expressions with JSONPath-aligned syntax · Issue #86 · jasonkuhrt/kit
Research References RFC 9535: JSONPath - Official JSONPath specification JSONPath - XPath for JSON - Original JSONPath proposal jq Manual - jq language reference jq vs JSONPath comparison - Analysi...
github.com
November 23, 2025 at 7:11 PM
Feels like we’re at the point now with Siri where it’s just pure brand damage for Apple. At least in our home Siri on HomePods are a daily joke, total ineptitude. Privacy aside, if only I could have them IO with my Claude account. #siri #apple
November 15, 2025 at 5:24 PM
Reposted by Jason Kuhrt
Watch @schickling.dev introduce LiveStore, a new local-first data layer designed to simplify the creation of high-performance, native-grade web apps by automatically syncing data with reactive SQLite and event sourcing

Full Video: youtu.be/h5Bs0vEka5U
November 13, 2025 at 2:01 AM
Reposted by Jason Kuhrt
Today on the pod, Daniel Rosenwasser & Jake Bailey reveal what's coming in TypeScript 6 & 7! Learn about ES2024 defaults, the new Go compiler, and smarter DOM typings.

share.transistor.fm/s/ad05eae6

#typescript
What's Coming in TypeScript 6/7 | Daniel Rosenwasser | Jake Bailey | Ep 43B | TypeScript.fm - The Friendly Show for TypeScript Developers | Episode 43
Daniel Rosenwasser and Jake Bailey join the two fools to talk about what's coming soon in TypeScript 6 and 7. What changes should developers expect? What might the new compiler API look like? How is the...
share.transistor.fm
November 13, 2025 at 3:49 PM
Thanks to @colelawrence.com I today discovered ampcode.com. Reading their changelog (at /news) and getting excited. There are some great ideas here (I'm excited to read other devs' prompt flows), pace of change appears breakneck, and they're removing paper cut after paper cut that I've ...
Amp
A frontier coding agent engineered to maximize what’s possible with today’s latest models—autonomous reasoning, comprehensive code editing, and complex task execution.
ampcode.com
November 13, 2025 at 5:51 AM
Hoping to make it to the first @effect-ts.bsky.social meetup in NYC next week! Looking for a few nights low key lodging, like couch surfing 🛋️, if you or someone you know might be up for the very random act of hosting this Canadian please DM me! 🙏🏻🫶 luma.com/ihoo6kxy?tk=...
Effect NYC Meetup #1 · Luma
Join us for the Effect Meetup in NYC! Who should attend: Engineers building production-grade applications in TypeScript Anyone building or exploring modern,…
luma.com
November 13, 2025 at 2:11 AM
Cool to see this @grain.social. This year I migrated off of Instagram to my personal website kuhrt.me/capturing. But I do enjoy a healthy social experience. Maybe that's what Grain is/will be/remain as :). I am sceptical that pretty much any social platform of sufficient "success" (scale) will ...
Capturing – Kuhrt
Images by Jason Kuhrt
kuhrt.me
November 12, 2025 at 7:08 PM
Thanks for that poetry, Claude. ✨

#ai #types #rust #scala
November 11, 2025 at 11:51 PM
On design: Thinking of 'One obvious way' versus 'expressiveness' (e.g. Python versus Ruby), not as a dichotomy but as a continuum, have the expressiveness AND then allow layering on the 'obvious way' for <thing> ([mono]repo, package, file, block, ...). In other words when designing an interface, ...
November 9, 2025 at 5:58 PM
I would appreciate a TypeScript LSP MCP, Claude Code could turn a laborious non-deterministic process (easily 1+ minutes on large code bases) of identifier renames into a few seconds deterministic process. For now I try to do that for Claude but steals some degree of flow from me.
November 9, 2025 at 4:58 PM
Thank you LambaTest for becoming Graffle's first recurring monthly sponsor ❤️! I couldn't be more delighted 🍻. Check them out at www.lambdatest.com.
November 1, 2025 at 12:22 AM
I’m looking for my next opportunity 👨‍💻, short/long contracts or part/full time. My experience is 15 years across the stack and architecture often focused on open source and next generation developer tooling, libraries, frameworks in the TypeScript space. If your company or project is ...
October 27, 2025 at 7:17 PM
TIL! How subtle is that, damn. Seems like a good candidate for a lint rule.
learned something new in #TypeScript today. an arrow function is only analyzed as a never-returning call if it has an explicit annotation on the variable name (distinct from a return type on the arrow function)
github.com/microsoft/Ty...
github.com/microsoft/Ty...
October 27, 2025 at 2:44 AM
Musing over an idea I'm calling "Autotest" to scratch my own itch that marries JSDoc tests into generated test files with comprehensive support across types and terms (values). Would you use this? Thoughts? github.com/jasonkuhrt/k...
Autotest: Vitest plugin for automated testing at type and term levels · Issue #60 · jasonkuhrt/kit
Autotest A Vitest plugin for automated testing at the type and term levels. Workflow (once) You register AutoTest Vitest plugin (once) You add a .autotest.ts file adjacent to a .ts file you want to...
github.com
October 27, 2025 at 12:00 AM
I've been making big strides with Graffle the past couple weeks, such as around the static builder and support for variables, docs, and type level string parser. Accordingly I revamped docs to cover everything one should need to know about these features. Here's a rundown:
October 25, 2025 at 6:24 PM
Recent improvements to github.com/jasonkuhrt/flo:
- project selection (default is cwd)
- interactive project and issue selection via list
- flo start/end aliases for flo/flo rm
- polish like flo end cd'ing back to project
GitHub - jasonkuhrt/flo: GitHub issues → Git worktrees → Claude context. Create worktrees from GitHub issues with automatic Claude setup.
GitHub issues → Git worktrees → Claude context. Create worktrees from GitHub issues with automatic Claude setup. - jasonkuhrt/flo
github.com
October 25, 2025 at 4:16 PM
So last month I gave two talks at GraphQL Conf in Amsterdam and it was a lot of fun and challenge for me but unfortunately a glitch means my talk on Polen (polen.js.org) will never see the light of day, though my shorter talk on Graffle (graffle.js.org) will.
October 25, 2025 at 3:54 PM
I've seen lots of agentic workflow tools popping up this year. I started my own called flo github.com/jasonkuhrt/flo :) -- Starting simple but will iterate over time. So far combines use of Claude Code, GitHub issues, Git worktrees, and some naming conventions.
October 19, 2025 at 5:41 AM
I am excited for voidzero.dev/posts/announ... and will begin using it this week on some of my projects (more on that soon). Thanks @vite.dev @vitest.dev etc. and all the peeps involved reaching this point. Every tool in the chain scratches an itch I have.
Announcing Vite+
Introducing Vite+, a unified toolchain for JavaScript.
voidzero.dev
October 15, 2025 at 6:22 PM