RSSAmplifier

Blog

Jake Zimmerman

A collection of blog posts about programming, software, types, programming languages, Sorbet, Vim, Markdown, and more.

blog.jez.ioRSS feed ↗10 posts

Latest posts

Bugs Block Blogs

When writer's block is actually the weight of the bugs you're papering over.

Mechanical tips to improve shipped emails

I end up giving the same mechanical feedback on ~every shipped email draft I read. These are some simple tips for making a shipped email useful to busy readers.

Why have lower bounds on generics?

Lower bounds expand the list of ways to create a value of that type. They behave similar to union types in that regard, but they fill a particular niche that only they can fill, relating to subtyping.

Past, Present, and Future of Sorbet Type Syntax

A discussion of how Sorbet's type syntax came to be, the problems it solves, and how it could improve.

Typing instance variables in mixins

Sorbet does not (yet?) have "abstract instance variables" for use inside abstract modules, but abstract methods are a close approximation.

What if typing on phones was fast?

What more would be possible if text input on phones was as fast and precise as text input on keyboards?

Approximating strace with Instruments.app

The other day I learned that Instruments.app can record file system activity on macOS!

Using my iPhone as a travel laptop

A while back I picked up a tiny, folding, wireless keyboard to turn my phone into a passable laptop replacement when traveling. It's already incredible, and only one or two features are missing from iOS which would make it really amazing.

Bug squash: An underrated interview question

I love bug squash interviews.

Generic methods cannot have non-generic defaults in Sorbet

Sorbet does not allow generic methods to have non-generic default arguments. The best alternative is to split the method into two methods, with one implemented by calling the other with the default value.