Programming avant-garde
✏ 2024-10-31 ✂ 2024-10-31Programmers know the giants who laid our technological foundations, such as Donald Knuth, John McCarthy, Niklaus Wirth, Edsger Dijkstra, Ken Iverson, Leslie Lamport, Guido van Rossum, Fabrice Bellard, and Linus Torvalds. Their work stood the test of time and became mainstream.
On the shoulders of these giants stands the next generation of explorers who are finding new ways of thinking about programming. This article mentions four less-known programmers and thinkers whose work interests me and who I consider programming avant-garde.
Edward Kmett
Edward Kmett is a household name in the Haskell community. He authored over a hundred Haskell packages and is best known for his work on the lens package. Lenses transformed the Haskell ecosystem, giving Haskellers a new, powerful language for expressing data manipulation based on a coherent mathematical structure John Wiegley’s Putting Lenses to Work talk is an excellent introduction to the topic. .
Edward is one of the rare people interested in applying decades-old mathematical insight to everyday programming. He is a board member of the Topos Institute—a non-profit organization that bridges advanced mathematics and science.
Edward is a regular guest at ZuriHac, the biggest Haskell hackathon in the world. He hosts an unofficial conference track, scribbling diagrams on a whiteboard for hours and enthusiastically explaining something to half a dozen nodding disciples.
If you want to learn more about Edward and his work:
- Watch his Stop Treading Water talk, where he gives compelling arguments for seeking better tools for solving problems and practical advice on how to keep them sharp. He explains how to become a genius consultant and why many stupid mathematicians are better than one smart mathematician.
- Watch Edward’s videos on YouTube. His live coding skills are awe-inspiring.
- Read his blog, The Comonad.Reader. Heavy stuff.
- Watch the
Across the Kmettverse with Edward Kmett
episode of the Functional Futures podcast.
Casey Muratori
Casey Muratori is a software engineer who knows how to build software that doesn’t suck. He credits many of his insights to his apprenticeship at RAD Game Tools company and interaction with Jeff Roberts and John Miles.
In 2014, Casey started the Handmade Hero project to live-stream the development of a game engine in C from scratch for education and later reflection. The audience response was overwhelming: hundreds of people attribute their career starts to Casey’s streams. The project spawned the Handmade Movement, a community of programmers who enjoy building great software from scratch The suckless tools project has a similar philosophy but is grounded in the UNIX ecosystem.. Currently, Casey distills the treasure trove of knowledge buried in hundreds of Handmade Hero episodes into a course on performance-aware programming.
Casey also recorded many insightful talks:
- Immediate-Mode gui presents a surprisingly simple gui library design.
- The thirty million lines of code problem estimates the number of lines of code required to render text in a browser and proposes a way to cut this number.
- The Only Unbreakable Law argues that Conway’s law is the only real law in software architecture.
- Designing and Evaluating Reusable Components proposes criteria for evaluating library designs.
If you want to learn more about Casey’s journey, listen to episode 27 of the Game Engineering podcast and episode 62 of the Corecursive podcast.
Aaron Hsu
Aaron Hsu is a computer scientist who researches approaches to writing, teaching, and thinking about software engineering. He started his path as a Scheme enthusiast, but his views changed significantly when he discovered the apl programming language and fell in love with the array programming paradigm.
Aaron’s most inspiring work is Co-dfns, a self-hosted apl compiler that runs on gpu. This project excites me for several reasons:
- It’s the first compiler that runs entirely on gpu.
- Aaron wrote the compiler in a data-parallel style using arrays as the primary data abstraction tool. The source code has no branching, loops, or recursion.
- The first version of the code was so concise that it fit on a t-shirt. Later versions became quite a bit longer (and the parser is longer still), but the code is surprisingly compact.
The following resources cover more of Aaron’s work and views:
- His dissertation, A data parallel compiler hosted on the gpu, describes the compiler and the algorithms it employs in detail.
- The Design Patterns vs. Anti-patterns in apl talk offers a fresh perspective on practices commonly accepted in computer science and engineering.
- In episode 19 of the Arraycast podcast, Aaron talks about his journey to programming and beyond.
Bret Victor
Bret Victor is an interface designer with a unique perspective on computing. He started his career as an electrical engineer and worked on musical equipment. After a few years in the industry, he found his true calling—designing machine-human interfaces.
Bret doesn’t consider himself a software engineer, but he wrote a lot of fine software for his design experiments. These experiments resulted in talks that became folklore; these talks move you deeply and make you yearn for better tools.
- The Future of Programming is my favorite Bret’s talk. It’s a theatrical performance that drives home a sad point: technology changes fast, but human minds don’t.
- In Inventing on Principle, Bret explains the principle that guides his work—creators need an immediate connection to the thing they create—and gives a few jaw-dropping applications of this principle. The Media for Thinking the Unthinkable talk presents more inspiring examples My favorite fragment is a demo of the programming environment for the Nile programming language visualizing a Bezier curve rasterizer. .
- Stop Drawing Dead Fish demonstrates tools to make digital art using computational media.
- The Drawing Dynamic Visualizations talk shows intuitive tools for creating complex data visualizations.
Currently, Bret focuses on building Dynamicland, an interactive physical environment for idea exploration powered by the Realtalk operating system. He talks about his path in episode 109 of the Catalyst podcast. His website, worrydream.com, links to his other projects and essays A Brief Rant on The Future of Interaction Design is one of my favorites; I find the interface of modern phones deeply unsatisfying. Magic Ink is also a classic. .
Many more programmers deserve to be on that list, including Mike Acton, who popularized and democratized data-oriented design; Leonardo de Moura, the author of z3 smt solver and the Lean theorem prover; and Andrew Kelley, the designer of the Zig programming language. I didn’t cover their work in detail to keep the article short.
These people inspire me to find my path in computing. They remind me to seek a deeper meaning in my daily work and focus on things that make a difference instead of treading water. And they show how diverse, deep, and interesting our profession can be.