(limit (perception iota) iota -> truth)

Support me on Patreon

Resume Portfolio Contact Github LinkedIn Instagram

A place for friends

Hi, I'm John, and this is my website.

This will be the record of my sabbatical, hopefully concluding in some approximation of what is, or a permanent working holiday in Tokyo.

Please see my contact above for business inquiries.

Articles & writing

<2024-01-18 Thu> "The Soft Bigotry of Low Expectations"


Figure 1: OK Loomer

The Techno-Optimist is quite the conflicted character, somehow being a superposition of enlighted philanthropists, venture capital golddiggers, self-aggrandizing memers, Ada Lovelace and Bertrand Russell. Simultaneously a champion for progress, not in the here and now, but also not one of those thousand yard stare Effective Altruists you keep hearing about. Here in the land of optimistic outlook, the techno-capital machine creates no pollution, lets the market be free, and manifests post-scarcity levels of abundance. Also, criticism is for losers, smoke some crack or something.

However, as Hegel's dialectic informs us, forms exist through their inherent contradictions. Stronger forms descend of their ancestors, rid …

read more

<2023-09-01 Fri> Make software simple again

This article is an annotated reading list that tracks tools for better understanding how software is made and run on machines. It will be loaded with a lot of my own wacky opinions of how bad software and computers are, since it is my main motivation for constantly looking for more of these materials.

More specifically, I want to understand why the engineering distance between a machine and the practical applications it performs is so inordinately large. We have excellent, high-level programming languages with appropriate primitives to build world-scale systems, but God forbid you want to talk to a graphics device and have it do a cool trick you just thought up, or create your own programming language, or any number of applications that involve negotiating with some platform.

Smalltalk, all the way back in the 1980s, did solve all the problems related to bootstrapping a complete programming system from bare metal, and you could inspect any layer of that solution with the same exact tools you use to write applications. Why can't we do that today? Why can't we create a closed abstraction of a machine that any platform or language can use?

I lay the blame with our development tools being inadequate for understanding a complete system as a whole, from hardware & platforms to the software that runs on them. Any programmer should be able to spend an afternoon in any programming language and be able to have a small kernel program that can file your taxes and send HTTP requests on nearly anything that can run code. However, we often get stuck in what is the right language not for the application we are making, but rather how this language can eventually target some CPU, operating system, VM hypervisor, container framework, web browser, game console, and so on. Even when you do have merely adequate tools for development, they often grow legs and run far away from your language of choice, ask you to suffer hours of tutorials or documentation that doesn't generalize, or bring all their 50+ year old friends to give you some light reading.

Considering our platform is a fine problem to have, but in the end it …

read more


Created: 2024-02-03 Sat 15:55