458: Learning Typescript with Aji Slater
Episode
42 min
Read time
2 min
Topics
Relationships, Artificial Intelligence, Software Development
AI-Generated Summary
Key Takeaways
- ✓Type Checker as Code Finder: Type checkers primarily reveal code you forgot to write—null checks, error handling, edge cases—rather than just catching type mismatches. This reframing helps developers see compilation errors as helpful reminders of missing logic, not annoying obstacles to overcome.
- ✓Gradual TypeScript Adoption Ladder: Start with basic consistency checking (no strict mode), then enable null safety features, progress to domain modeling with rich types, and finally use types for pair-programming conversations. Teams should advance one level at a time to maintain buy-in and avoid overwhelming developers.
- ✓Type Assertion Strategy: Use "as unknown" to upcast any type to the universal ancestor, enabling temporary workarounds during exploration. However, grep and remove these assertions before committing—they're scaffolding tools for learning boundaries, not production code. Strict mode enforcement through commit hooks helps maintain discipline.
- ✓LLM Pairing for Syntax: Claude and ChatGPT excel at translating intent into TypeScript syntax and explaining unfamiliar patterns. Ask for explanations of generated code to learn the underlying concepts, similar to how pair programming reveals not just solutions but the reasoning behind discovering those solutions.
What It Covers
Aji Slater and Joel Kenville explore learning TypeScript as Ruby developers, discussing mental models for type systems, strategies for gradual adoption, and how to view the compiler as a collaborative partner rather than an obstacle.
Key Questions Answered
- •Type Checker as Code Finder: Type checkers primarily reveal code you forgot to write—null checks, error handling, edge cases—rather than just catching type mismatches. This reframing helps developers see compilation errors as helpful reminders of missing logic, not annoying obstacles to overcome.
- •Gradual TypeScript Adoption Ladder: Start with basic consistency checking (no strict mode), then enable null safety features, progress to domain modeling with rich types, and finally use types for pair-programming conversations. Teams should advance one level at a time to maintain buy-in and avoid overwhelming developers.
- •Type Assertion Strategy: Use "as unknown" to upcast any type to the universal ancestor, enabling temporary workarounds during exploration. However, grep and remove these assertions before committing—they're scaffolding tools for learning boundaries, not production code. Strict mode enforcement through commit hooks helps maintain discipline.
- •LLM Pairing for Syntax: Claude and ChatGPT excel at translating intent into TypeScript syntax and explaining unfamiliar patterns. Ask for explanations of generated code to learn the underlying concepts, similar to how pair programming reveals not just solutions but the reasoning behind discovering those solutions.
Notable Moment
The team implements a commit hook that blocks changes to files unless they're converted to strict mode, creating an automated ratcheting mechanism that gradually increases type safety across the codebase without requiring a massive upfront conversion effort.
Episode Transcript
Hello, and welcome to another episode of The Bike Shed, a weekly podcast from your friends at Thoughtbot about developing great software. I'm Joel Kenville. And today, I'm joined by fellow Thoughtbotter, Adi Slater. Patty. And together, we're here to share a bit of what we've learned along the way. So, Anji, what's new in your world? Yeah. I think the most exciting thing that's new in my world is on a personal project. I've been playing a little bit with Ruby two d. Do you know anything about that? No. Is that like a graphics library to do, like, two d graphics? Yeah. It is. So I had been watching and looking into folks doing, computer and generative art with things like Processing, which is a Java platform, and p five JS, which obviously runs in the browser, and was getting super jealous that there wasn't anything like that with my favorite language, Ruby. And so I first went to Dragon Ruby, which is a game engine, but it is very specifically for creating games and the community around that. Like, everything is is built up around building games, and some really great projects are coming out of there. But it's also a subset of Ruby, so it's not the entire language because it's a new interpreter all its own to do what it has to do. So I started looking around for other alternatives. Ruby not really known for creating images and animations, but there is a project, Ruby two d, that has a, like, drawing loop in the same way that processing does, and I can interact with it with Ruby. And it's been a lot of fun kind of exploring that, and I'm looking forward to keep playing with it and seeing where the limits are and, like, where it can push them. So we typically write Ruby in the context of a web server. And the web is sort of unique in that you're tied to that request response cycle. The requests are typically very short lived. How is working with Ruby in a, like, two dimensional graphics setting maybe change the way you think about a program? Getting used to the idea of a game loop or an animation loop in Ruby was really different. Like you said, we're usually thinking about a request response or maybe it's a script. It runs something from beginning to end to completion instead of looping over again and again and again to update a Canvas sort of situation. So that was definitely something to wrap my head around, the use of things like more global variables, even if they aren't specifically global variables, but having a global state and these other things that are generally a no no in the web world that are just sort of table stakes or they're how it works in in that sort of idea. Ruby two d is a little different than Dragon Ruby in that the state isn't passed in …
Get the full transcript (6,974 words) + summary by email — free
One-time email with the complete transcript and AI summary of this episode. No account needed.
One email, no spam. We’ll also show you what SignalCast does.
You just read a 3-minute summary of a 39-minute episode.
Get The Bike Shed summarized like this every Monday — plus up to 2 more podcasts, free.
Pick Your Podcasts — FreeKeep Reading
More from The Bike Shed
506: The Muppet Software Team
Jul 14 · 38 min
Latent Space
METR’s Joel Becker on exponential Time Horizon Evals, Threat Models, and the Limits of AI Productivity
Feb 27
More from The Bike Shed
505: What is a “principal” or “staff” engineer?
Jul 7 · 34 min
Sean Carroll's Mindscape
343 | Tom Griffiths on The Laws of Thought
Feb 9
Books, tools, and gear mentioned in this episode
SignalCast may earn commission on purchases via these links.
Tools
by Microsoft
“Aji Slater and Joel Kenville explore learning TypeScript as Ruby developers, discussing mental models for type systems, strategies for gradual adoption, and how to view the compiler as a collaborative partner rather than an obstacle.”
- ChatGPTRecommended
by OpenAI
“Claude and ChatGPT excel at translating intent into TypeScript syntax and explaining unfamiliar patterns. Ask for explanations of generated code to learn the underlying concepts, similar to how pair programming reveals not just solutions but the reasoning behind discovering those solutions.”
- ClaudeRecommended
by Anthropic
“Claude and ChatGPT excel at translating intent into TypeScript syntax and explaining unfamiliar patterns. Ask for explanations of generated code to learn the underlying concepts, similar to how pair programming reveals not just solutions but the reasoning behind discovering those solutions.”
More from The Bike Shed
We summarize every new episode. Want them in your inbox?
Similar Episodes
Related episodes from other podcasts
Latent Space
Feb 27
METR’s Joel Becker on exponential Time Horizon Evals, Threat Models, and the Limits of AI Productivity
Sean Carroll's Mindscape
Feb 9
343 | Tom Griffiths on The Laws of Thought
The Changelog
Jan 30
Natural born SaaS killers (Friends)
a16z Podcast
Jan 30
“Anyone Can Code Now” - Netlify CEO Talks AI Agents
The TWIML AI Podcast
Jan 29
The Evolution of Reasoning in Small Language Models with Yejin Choi - #761
Explore Related Topics
This podcast is featured in Best Cybersecurity Podcasts (2026) — ranked and reviewed with AI summaries.
Read this week's AI & Machine Learning Podcast Insights — cross-podcast analysis updated weekly.
You're clearly into The Bike Shed.
Every Monday, we deliver AI summaries of the latest episodes from The Bike Shed and 192+ other podcasts. Free for one show.
Start My Monday DigestNo credit card · Unsubscribe anytime