I built #Wordle in pure #TypeScript types. No runtime - the type checker runs the whole game 🟩🟨 ➡️ sandroroth.com/blog/wordle-...
Sandro
@sandroroth.com
Software Developer based in Switzerland 🇨🇭 🔗 sandroroth.com 🔗 tinytip.co
I built #Wordle in pure #TypeScript types. No runtime - the type checker runs the whole game 🟩🟨 ➡️ sandroroth.com/blog/wordle-...
#TIL For the #React compiler `Foo.useBar()` is a hook call but `foo.useBar()` isn't, the object has to be named in PascalCase. playground.react.dev#N4Igzg9grgTg...
I've been working on this post for a while now. It's about why I think the productivity boost LLMs offer for developers is regularly and severely overestimated. joshcollinsworth.com/blog/product...
LLMs and performative productivity
It's worth asking whether LLMs are actually making us more productive at all—and if so, what we might be sacrificing in return.
joshcollinsworth.com
Eleventy Notes turns 3 today 🎂 🥳 The first version shipped on February 7th, 2023 and it's come a long way since then, lots of new features and improvements over the years. Thanks to everyone using it and helping make it better 🙌
Eleventy Notes
A simple, lightweight, and flexible note-taking template for Eleventy.
eleventy-notes.sandroroth.com
> I made a serious mistake. The regex failed to capture the numbers and titles, and all 24 files were renamed to the same filename, causing 23 files to be overwritten. I'm very sorry - this data loss cannot be undone through normal means Thanks Claude Code for deleting my files 🤦♂️
Just launched Unfortunate Transitions 👻 A little puzzle game where you're a poltergeist eliminating your cheerful housemate through indirect means. Built with #XState, with actor code visible in-game. ➡️ unfortunate-transitions.sandroroth.com
Just launched Unfortunate Transitions 👻 A little puzzle game where you're a poltergeist eliminating your cheerful housemate through indirect means. Built with #XState, with actor code visible in-game. ➡️ unfortunate-transitions.sandroroth.com
🧩 Code Puzzle, a little side project I made. Each level gives you a JS snippet split into pieces. Arrange them in the right order with drag and drop to solve the puzzle. ➡️ code-puzzle.sandroroth.com Built with #React and #XState
Neat CSS game by @sandroroth.com: “CSS Selectors Playground” selectors.sandroroth.com
CSS Selectors Playground
selectors.sandroroth.com
Today on the pod, major TS ecosystem updates: TypeScript Go gets biggest nightly update yet, Rspack announces new Rslint linter, Bun 1.2.21 features 500x faster postMessage, plus Next.js 15.5 has typed routing! share.transistor.fm/s/0304855f #typescript
TypeScript Go Nightly Improvements, Rslint Announced, and Big Bun Updates | News | Ep 32 | TypeScript.fm - The Friendly Show for TypeScript Developers | Episode 32
News of the week of August 18, 2025: one of the biggest nightly updates for TS Go, Rspack team announces a new linter, the new minor Bun release is pretty major, and Next.js 15.5 features typed routing...
share.transistor.fm
Finally found a way to archive interesting blog posts. From RSS into Readwise Reader → Download via Reader API → Extract content as Markdown → Create Markdown file with Frontmatter → Move into Obsidian Vault → Create table with Obsidian Base 🚀
Model-based testing with XState helps you test your app more thoroughly without writing every test by hand. You define the model, add test code for states and events, and XState generates the rest. Here, I’m running over 60 tests from just one model. 🚀 #testing #xstate #statemachine
My interactive playground for CSS selectors now uses @tanstack.com Start + Router. I also redesigned the homepage and added a few more selectors. Do you miss a selector? #css #react #tanstack
CSS Selectors Playground
selectors.sandroroth.com
Using string union types for handling translations not only autocompletes the keys but also provides their default English translations. This helps you understand what to translate and identifies available dynamic values. TypeScript is incredibly powerful! 🚀 #TypeScript #i18n
React Component Composition with polymorphism is quite tricky. You loose type-safety and it's easy to break a11y. The `as` prop is probably the worst (slow type checking + ambiguous props). `asChild` hurts readability and introduces additional nesting. Is @ariakit.org's `render` approach the best?