Smart Contracts, Luke, and Music
A recruiter for DFinity, a nonprofit cryptocurrency company working in Haskell, reached out to me the other day. I did some research, read their whitepaper. The tech is pretty clever and interesting,...
View ArticlePlayground Programming
Every now and then, I have a small idea about a development environment feature I’d like to see. At that point, I usually say to myself, “make a prototype to see if I like it and/or show the world by...
View ArticleAlgebraic and Analytic Programming
The professor began my undergrad number theory class by drawing a distinction between algebra and analysis, two major themes in mathematics. This distinction has been discussed elsewhere, and seems to...
View ArticleThe Plan
Last September, I decided that it was time to get a programming job again. After two months of trying to find paid work (of any kind, $10 would have been great!) as a composer, I realized that it’s...
View ArticleConstructions on Typeclasses, Part 1: F-Algebras
This post is rendered from literate Haskell. I recommend doing the exercises inline, so use the source. > {-# LANGUAGE DeriveFunctor > , DeriveFoldable > , DeriveTraversable > ,...
View ArticleHow GADTs inhibit abstraction
Today I want to talk about this snippet: This program ought to be well-behaved — it has no recursion (or recursion-encoding tricks), no undefined or error, no incomplete pattern matches, so we should...
View ArticleDI Breakdown
I’m having a philosophical breakdown of the software engineering variety. I’m writing a register allocation library for my current project at work, referencing a not-too-complex algorithm which,...
View ArticleComputably Uncountable
We are all familiar with Cantor’s diagonal argument that proves there exist infinite sets which are “larger” than the set of natural numbers. In this post I will show that we can express this argument...
View ArticleSentences and Paradigms
As our understanding progresses, what once were rigid distinctions tend to become blurred. Hence, I am fascinated by the pervasiveness and stability of the three programming language paradigms:...
View ArticleNew Languages
It has been some time since I learned a new programming language. Perhaps Haskell has me so firmly entrenched in “desirable properties” that any new language I look at either looks like another...
View ArticleMy paradigm is better than your paradigm
On twitter I participated in the short snarky exchange: @stevedekorte – Threads sharing state by default is like variables being global by default. @luqui – state is like globals :-) @stevedekorte –...
View ArticleThe “Whole Program” Fallacy
This StackOverflow question has generated a buzz of zealous reactions in the Haskell community. Here are the important bits of the question: I often find this pattern in Haskell code: options :: MVar...
View ArticleSearchable Data Types
A few years ago, Martín Escardó wrote an article about a seemingly-impossible program that can exhaustively search the uncountably infinite "Cantor space" (infinite streams of bits). He then showed...
View ArticleProgramming for a culture approaching singularity
In 2001, Ray Kurzweil published his inspiring, controversial essay The Law of Accelerating Returns. I acknowledge that the essay sometimes seems far-fetched, and perhaps some details are overly (or...
View Article