Podcast: The Roman Rapist Mindset, measuring your goals and why Euclid’s parallel copy procedure breaks (answer: I did it incorrectly)

This started as one of my Euclid videos, and ended up being an interesting conversation over an entire range of topics. The Euclid parallel copy question got answered, at 01:37:34. The first two hours or so are about the Euclid series as a whole, explaining the idea and what my plans are with the series. […]

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 […]

Diaries of a non-consensual JavaScript developer, episode 2: my grand scheme to make my code style more readable has failed mildly

From https://gitlab.com/DoctorAjayKumar/sidekick/-/commit/8ac7cd86892882f57f84e5043041a0ed1bd55c95 my grand scheme to make my code style more readable has failed mildly did you know that javascript is retarded Idea: transform async function foo_doo(bar: baz, quux: quuz, buzz: fuzz) : Promise<fuzz> { … } into async function foo_doo(bar : baz, quux : quuz, buzz : fuzz) : Promise<fuzz> { … } I […]

Diaries of a non-consensual JavaScript developer, episode 1: dumdum JS object pointer logic

As part of an elaborate S&M fantasy roleplay, I have over the last handful of months been forced to spend significant time developing a real commercial project in JavaScript and TypeScript. During this period, I have learned quite a lot about both languages and how they work. And I’m going to share what I have […]

Angry dragon problems: when great floods happen, it’s time to overthrow the emperor

Let’s start with debunking the narrative that “dragons are a myth”. The liberal media would have you believe that the Welsh, the Japanese, the Chinese, the Greeks, and even the Eskimos independently invented identical myths about giant fire-breathing reptiles who live inside bodies of water and are the source of chaos in the world. Right. […]

Erlang: How to browse ZX/Erlang source files on Windows

Windows is a profoundly annoying development platform for non-MS languages and a fairly rare deployment target so it doesn’t really get much in the way of attention or tooling. The smoothest Erlang experience on Windows so far is running applications via Vapor (a GUI frontend for ZX), but that depends on applications being developed and […]

Erlang: Writing a Tetris clone Part 3 – Gameplay rules, final features and deployment

The third video in this series moves on with implementation of gameplay rules, scoring, the “next” preview window and packaging and deploying the game using ZX as a shortcut. Writing this is a lot of fun. As of this video the game part is finished, but there are a few things such as high score […]

Erlang: Writing a Tetris clone Part 2 – Gameplay mechanics

Last night I was able to make the second video in my series about implementing a Tetris clone in Erlang. Yay! In this video I start where I left off in the first video where I had ended with a data abstraction to represent the play field (called the “well” in Tetris lingo), a data […]

Erlang: Writing a Tetris clone Part 1 – Data types and basic GUI display

Over the last few days I wrote an Erlang implementation of the classic puzzle game Tetris and decided to do a few videos to explain how it works and why. This is part one of a three-part series. Data types and basic GUI display [this page] Gameplay mechanics Gameplay rules, final features, and deployment This […]