Our optimizers need a rethink

Thoughts on how compiler and database optimizers should evolve in the future, focusing on predictability and guarantees instead of smarts and heroics

On leaving my last job

Notes on why I left the Swift team at Apple, with some reflections for job seekers and junior people.

My first and last Strange Loop

Thoughts, feelings, some personal history and musings on Strange Loop as an event, an experience and as an idea.

TFW UBSan flags a dynamic type error inside Clang

Recently, I turned on UBSan for a fledgling work project. It went a little more sideways than I was expecting.

Zig-style generics are not well-suited for most languages

A discussion of some of the downsides of Zig's implementation of generics, and why other programming languages should think super hard before adopting a similar system.

Experience Report: 6 months of Go

A report of my positive and negative experiences with Go after using it for 6 months at work.

A compiler's users (part 1)

A discussion of different developer tools which (can) build on top of a compiler, and how those affect compiler design.

Not Rocket Science (Meeting Edition)

An argument for why you should have a written agenda and minutes for meetings that you organize. Loosely inspired by Graydon Hoare's "Not Rocket Science rule of Software Engineering."

Scope Sets as a PiƱata for Name Resolution

An introduction to Flatt's "Bindings as Sets of Scopes", with discussion on why scope sets are great, how they could be helpful for implementing name resolution for languages without macros, and what a name resolution library based on scope sets could look like.

Are tagged unions overrated?

A discussion on the benefits and drawbacks on tagged unions and ML-style pattern-matching, originally intended as a response to Nelson Elhage's Tagged unions are overrated.

Don't Snark

An argument against snarky comments, even tongue-in-cheek ones, in programming communities, suggesting an approach to actively steer a discussion with varying opinions in a more productive direction.

An opinionated beginner's guide to Haskell in mid-2019

Guidelines on learning and using Haskell: covers editor integration, CI, library choices, application architecture, debugging, profiling and addresses some common concerns.

Principled Ad-Hoc Polymorphism

An informal survey of the design space for ad-hoc polymorphism in a programming language.

10 Commandments: Compiler in Haskell Edition

In spring 2018, I took the Cornell CS 4120/4121 course on compilers. Our team chose to implement the compiler in Haskell; this is the post-mortem report. It assumes some Haskell knowledge.

Language Zoo

A future history of programming languages.

Many Numbers

A bedtime story about ordinal numbers.

Alice's Adventures with Project Euler

After her adventures in the strange and esoteric Wonderland, Alice was in a bad mood. She refused to venture outside, lest she fall into a rabbit hole again. Instead, she would sit in front of the computer all day, reading all there was to read on the internet. One of her favourite pastimes was to read about mathematics...