Articles

If you like what I write, consider subscribing to the web feed.

The intricacies of implementing memoization in Ruby
A long time ago, I wrote a memoization library for Ruby. It was not easy, but I learned a great deal in the process. In this article, I am share these learnings and showing you how deep the memoization rabbit hole goes.
Nov 2024
The complete guide to implementing equality in Ruby
Ruby is one of the few programming languages that gets equality right. Nonetheless, equality in Ruby is not straightforward: there is #==, #eql?, #equal?, #===, and more. In this article, I will take you through all forms of equality in Ruby and how to implement them.
May 2022
Using a modal lexer for parsing sublanguages
How do you write a lexer for print "one plus two is ${1+2}";? The interpolation makes this tricky, as the string forms a sublanguage that is different from the main language. To make things worse, interpolation can be nested. Textbook lexers won’t cut it, and we need something stronger. Enter modal lexers.
Mar 2022
Drive change by writing structured proposal documents
In any collaborative environment, opportunities for change often arise. When such an opportunity presents itself, write up a structured proposal document describing how to tackle this opportunity. With this document, a decision on whether or not to implement the proposal can be made quickly and confidently.
Jul 2021
Horizontally scrolling multi-column layout: a retrospective
On wide screens, a column of text often needs a considerable amount of whitespace to the left and to the right. I experimented with CSS’ multi-column layout to use screen real estate more efficiently. While I ended up quite liking the aesthetic, usability problems and spotty browser support make this unfortunately an impractical approach.
Jun 2021
Using Lenses to build complex React forms in a type-safe way
Lenses enable building complex forms quickly and with confidence. Lenses themselves are simple, but they provide significant benefits when used with React forms with Type­Script, reducing the change of mistakes and speeding up the feedback loop.
Nov 2020