Jake Zimmerman
A collection of blog posts about programming, software, types, programming languages, Sorbet, Vim, Markdown, and more.
- Posts
- 117 from 6 May 2014 to 21 Jan 2026
- Posting
- now and then (3 in the last year)
- Kind
- personal blog
- Feed
- https://blog.jez.io/atom.xml
2026 1
2025 4
2024 8
- What if typing on phones was fast?
- Approximating strace with Instruments.app
- Using my iPhone as a travel laptop
- Bug squash: An underrated interview question
- Generic methods cannot have non-generic defaults in Sorbet
- A trick for invariant generics in Sorbet
- Old vs new case statement in Ruby
- Abstract singleton class methods are an abomination
2023 15
- Why don’t constructors have override checking?
- Inheritance in Ruby, in pictures
- A trick for generic constructors in Sorbet
- It’s okay to work on tiny projects
- Only return nil if given nil
- Ruby’s Conditional Send is not Safe Navigation
- ActiveSupport’s Concern, in pictures
- Driving Bazel with fzf
- Why Sorbet needs T.let(…, T::Boolean)
- Every type is defined by its intro and elim forms
- Typing klass.new in Ruby with Sorbet
- Ruby’s private keyword is weird
- Problems typing equality in Ruby
- Making Sorbet more incremental
- Runtime type checking is great
2022 17
- Gripes with RSS after one week
- Moving to excerpt-only for feeds
- My workflow for hand-drawn diagrams
- Some Old Sorbet Compiler Notes
- Don’t bury the lede in technical docs
- Tips for large-scale codemods
- Read more →
- Control Flow in Sorbet is Syntactic
- Parse Error Recovery in Sorbet: Part 4
- With types, seeing is believing
- Is tree-sitter good enough?
- What would a type-aware Rubocop look like?
- T::Enum Pros & Cons
- Parse Error Recovery in Sorbet: Part 3
- Parse Error Recovery in Sorbet: Part 2
- Parse Error Recovery in Sorbet: Part 1
- Sorbet, Generics, and Parametricity
2021 4
2020 12
- GC.compact in Pictures
- Mimicking Opaque Types in Sorbet
- Questioning self in Ruby
- Singletons and Flow-Sensitive Typing
- Fast While Loops in Ruby
- Another Look at Typed Array Access
- Types Make Array Access Faster
- Exploring Ruby with clangd
- Linkers & Ruby C Extensions
- Search Down the Stack
- Sorbet Does Not Have FixMe Comments
- Intersection Types in Sorbet are Surprisingly Common
2019 8
2018 8
2017 11
2016 4
2015 11
2014 14
- Google Chrome: A Memory Hog
- Ruby Virtualenvs
- Vim as a Man Page Viewer
- The Joys of the Craft
- Using Multiple Git Remotes
- Using Google OAuth2 for CMU Authentication
- Offline LaTeX Development
- Solarized LaTeX Listings
- A LaTeX Homework Template
- Setting up MobaXterm for SSH on Windows
- Molokai: An iTerm2 Color Scheme
- HPSTR: An Octopress Theme
- Adding a Network Printer to a Linux Server
- Shiny New Octopress Blog