About:

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

Website:

Specializations:

Incoming Links:

Outgoing Links:

Subscribe to RSS:
Lower bounds on generic types enable richer subtyping and value creation, contrasting with upper bounds and union types in programming languages like Sorbet and Scala.
Writing blog posts has been hindered by persistent bugs in Sorbet, leading to a cycle of fixing issues rather than completing content.
Effective 'shipped emails' can be improved through clear subject lines, bullet points, and structured content to enhance readability for busy readers.
The text discusses the historical context and development of Sorbet, a type checker for Ruby. It explains the reasons for its development, the challenges faced, and the evolution of its syntax. The author also talks about the appe...
The text discusses using Sorbet and the need to make the interface depend on an abstract method instead of an instance variable. It provides a solution and discusses worse alternatives to solve the problem.
The author discusses the limitations of text input on mobile devices compared to computer keyboards, highlighting the slower speed and lack of precision. They question the impact of these limitations on productivity and creativity...
Instruments.app on macOS can record file system activity, providing an alternative to strace on Linux. It helps trace a process to see which global config files it's reading, making it easy to figure out when a program works diffe...
The author discusses using a wireless keyboard with his iPhone to turn it into a laptop replacement for travel. He explains the software and apps he uses to make this setup workable and the benefits and limitations of this setup.
The text discusses the bug squash interview, a unique and effective software engineering interview style that reflects everyday software development, is fun, and allows candidates to self-assess their progress. It is especially us...
Sorbet does not allow generic methods to have non-generic default arguments. There are a couple of alternatives to this restriction, including removing the default and adding another method, declaring an overloaded method, or usin...
The text discusses a trick for using generic methods to get around some of the limitations that invariant type members in generic classes carry. It explains the problem and provides a solution using type_parameters.
The author prefers Ruby's case/when syntax to the new pattern matching syntax with case/in. The case/when syntax is less brittle to modifications and less prone to merge conflicts. The author lists the current limitations of Sorbe...
The text discusses the issue of abstract singleton class methods in Sorbet, a type checker for Ruby. It explains the problems with abstract singleton class methods and suggests alternatives to using them. The author also compares ...
The text discusses how constructors work in object-oriented languages, specifically Ruby and Java. It delves into the implementation of Class#new in Ruby and the Java bytecode. It also explores how typed, object-oriented languages...
The text discusses inheritance in Ruby, focusing on the < operator, the singleton class, and the relationship between classes and singleton classes. It also explains the include and extend operators and their differences. The auth...