Skip to main content
The Bike Shed

458: Learning Typescript with Aji Slater

42 min episode · 2 min read
·

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.

Know someone who'd find this useful?

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.

Browse all The Bike Shed transcripts →

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 — Free

Keep Reading

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

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 Digest

No credit card · Unsubscribe anytime