Visual intuition for the Euclidean algorithm

I have a broader goal of demystifying cryptocurrency, and making it generally useful for ordinary people to do ordinary non-criminal commerce with it. Part of that is improving tooling, and part of that is making the theoretical underbelly of cryptography and cryptocurrency more accessible. Here’s the thing: none of this is complicated. All of it […]

The Cannon Conjugate

Gather round children, and let Daddy tell you a story known in the world of computing as "the leftpad debacle". NPM is the computing equivalent of a gay bathhouse where programmers all gather to exchange diseases (the formal term in computer science is "bugchasing" if you want to look it up). Years ago, a programmer […]

Pitfalls to avoid as a programming noob

tl;dr "Where to I get started learning how to program?" There are 3 correct answers; more detail below: SICP: Structure and Interpretation of Computer Programs, by Abelson and Sussman. There is a video lecture series There is also a book, more or less identical to the lectures, which you can read for free online, either […]

Language Design: When Less is More

Yesterday I was invited to do an interview with the man behind Erlang Punch, Mathieu Kerjouan. Mathieu is a truly great programmer, an absolutely excellent interviewer, and it was a lot of fun to get to do something task-focused with him like this. He asked some pretty broad questions about Erlang as a language, as […]

Ethereum RLP Encoding w/code in Erlang and TypeScript

This is a standard for encoding arbitrary(ish)-depth lists of lists of … of lists of bytestrings, as a single bytestring. -type decoded_data() :: binary() | [decoded_data()]. -spec encode(Data) -> RLP when Data :: decoded_data(), RLP :: binary(). -spec decode(RLP) -> {Data, Rest} when RLP :: binary(), Data :: decoded_data(), Rest :: binary(). Ethereum’s docs are […]

Base64 v. Base58 with code in Erlang and TypeScript

Base64 and Base58 are two algorithms for encoding byte arrays to plain text. I initially assumed these were two instances of the same “Base N” algorithm. This is not the case. These are two fundamentally different algorithms. Base64 is simpler. It treats your byte array as a stream of bytes. It encodes 3 bytes at […]

Aegora.jp: An Explainer

Aegora.jp is a somewhat complicated system in that it directly uses on-chain contract call transactions as its payment method. This means that a sale’s status passes through phases that are governed by actions that occur on the chain which can only be initiated by transactions that are signed by the users and must be verified […]

Alternative Tracks

“How did you go bankrupt?” Bill asked.“Two ways,” Mike said. “Gradually, then suddenly.” Ernest Hemingway, The Sun Also Rises A cascade of financial crises are rushing across the Western world. Gradually Imagine a set of express trains that are all headed toward a single catastrophic, multi-track collision. Each train is heavily damaged already, but the […]

The USD is literally a diffuse, dupable NFT

Fiat currencies have reduced themselves to the level of NFTs. The USD is a perfect example of this. The story is fairly easy to understand. The story of NFTs Some intelligent people realized that smart contracts could be used to register ownership of a given contract by a given public key, and that contract could […]