There are famously two hard things in computer science : cache invalidation, naming things, and off-by-one errors. Arguably, naming things is the hardest because there's an element of subjectivity. Cache invalidation is hard because of complexity, but at least incoherence is objectively measurable. Off-by-one errors are as easy to fix as they are to make, only hard to reliably avoid. However,…
I am leading the software development of Endo at Agoric and printing bricks for my kids. I seek to make a web platform that works for its users and empowers individuals to share with and serve each other, without the imposition of false rents like unavoidable advertising or surveilance. This is my now page .
borkborkborkbork.com In the Before Times, Corbin , Rix , Tor , and I were so energized by Roguelike Celebration , we swore a fool’s oath in the presence of Github’s Octocat that we would make a Roguelike and talk about it at a future Roguelike Celebration. To that end we have done much and achieved little. But, as we understand it, striving to make games that nobody in their right mind would…
Basic Binary Board Book is available for purchase on Amazon! full page What follows is an explanation for parents and lifelong learners. Digits # The word digit has accumulated a lot of meanings. On the one hand, digit means finger. With the other hand, there are 10 digits. The hands of a clock point to numbers from 1 to 12. The hand of a compass points to numbers from 0 to 359. Although computers…
P(1): a data P(2): a datum P(3): a data P(1): esthetics P(2): aesthetics P(3): æsthetics P(4): esthetics P(1): octopuses P(2): octopi P(3): octopodes P(4): ok"top'uh'deez P(5): ˈɒktəpədiːz P(6): octopuses P(1): syllabuses P(2): syllabi P(3): syllabontes P(4): sil'uh"bont'eez P(5): ˈsɪləbɒntiːz P(6): syllabuses P(1): a finite state automata P(2): a finite state automaton P(3): a finite state…
Any fool knows you can use git archive to generate a .tar ball from any tree or subtree. git archive HEAD:path/to/root | tar tf - But, Git has no mechanism for ingesting a tar . However, Git does have the plumbing to make this easy, and is a testament to the expressivity of the JISH stack. Let us begin as we always begin. #!/bin/bash set -ueo pipefail This program reads a tarball from stdin ,…
My work at Agoric is the care and feeding of a project called Endo that provides solutions for some important problems with JavaScript and the open web . With Endo, some of our objectives are to: restore agency to users, encourage fearless coöperation among users and services, enable applications to defend their own integrity, in their interaction with other parties and even their own…
The web has made incredible strides since the day I wrote my first <FONT> tag. In the intervening years, the platform has risen to make everything worth doing relatively easy. Putting a card in the middle of a web page is now trivial. Event handling is uniform across all browsers. No one worries about cyclic references between the DOM and JavaScript closures. The platform has absorbed jQuery.…
The JISH stack is the extraordinary combination of bash , git , and jq . Jq gIt + baSH ------ JISH The JISH stack has three precepts and many tenets: Give unto bash chonky long-lived pipelines. Give unto jq data and math. Give unto git temporary files and transactions. Be wary of the maximum command line argument length. Repeat after me: bash does not support arrays † . Bash supports file…
On the first day of Yule, Tolkien gave to me, One ring to rule them all . On the second day of Yule, Tolkien gave to me, Two glowing trees , And one ring to rule them all. On the third day of Yule, Tolkien gave to me, Three elven rings , Two glowing trees, And one ring to rule them all. On the fourth day of Yule, Tolkien gave to me, Four Hungry Hobbits , † Three elven rings, Two glowing trees, And…
Why only string-named own enumerable data properties? JavaScript has a tremendous number of different constructs for enumerating the properties of an object, with different semantics of what subset they choose to enumerate: — @erights I have largely duplicated Mark Miller’s table for my own reference, and now yours: Operation P NE STR SYM output for (... in ...) P STR k* Object.keys STR [k*]…
The Basic Binary Board Book is for small people who aspire to one day count in binary from 0 to F. Now in Color! Getting your own copy takes two steps: Buy the PDF Order a Print of the PDF ( Pint Size Productions ships only within the United States.)
I have a bit of good news and bad news. Friday, April 3, was my last day at Uber. Monday, April 6, was my first day at Agoric. I started at Uber 5½ years ago, on the dispatch system. I joined Tom Croucher’s team, which focused on common frameworks for marketplace systems, with Jake Verbaten, Russ Frank, and spiritually Matthew Esch. When I arrived, the scaffolding and frameworks were in place. I…
At tengwar.3rin.gs you will find a transcriber for the elvish languages that J.R.R. Tolkien created and appear in Lord of the Rings , The Hobbit , The Silmarillion , and other works of his “Legendarium”. I would advise you to pay an expert to check your work before imprinting a transcription on metal or your own flesh. This is a good tool for doing a first-approximation transcription and does not…
Escape from Peruácru Island is a short interactive adventure on a tropical island in a child’s imagination. The game is open source and uses the bespoke Kni JavaScript interactive fiction engine. As originally posted to Patreon .
Reposted (riposted?) and dated around the time of original publication to my social media stream from the before times. Dedicated to Adam Solove who said “Yes!”, “Oh, no!”, and “Please stop!” at all the right moments. For the record, I have dared Adam to tell the fates of the istari who went east and presumably communed with the dragon maiar who resisted Morgoth’s corruption. We three beings of…
In 1905, Albert Einstein gave us a Special Theory of Relativity that unified the concepts of space and time in a single physical model. Einstein spent a great deal of time worrying about how one can exchange mass and energy. In software, we worry a lot about trading space and time. For software, memory is laid out over space, and a process will run over the course of time. We divide time between…
This article is a place holder. I, at some point, must find some time to tell you all about a useful complication to the Sleater-Tarjan splay tree that allows the collection to emit the same change events (added value at index or removed value at index) as the equivalent sorted array, but without the cost of shifting a very large array. A splay tree can only modify the root node, so both inserting…
This document is intended to explain how promises work by building a promise library incrementally and reviewing all of its major design decisions. This is intended to leave the reader at liberty to experiment with variations of this implementation that suit their own requirements, without missing any important details. Suppose that you're writing a function that can't return a value immediately.…
The following data overlays pitches in equal temperament (a piano tuned to be equally out of tune regardless of which key you use as the root of your chords, the fundamental), against frequencies that are harmonics of the fundamental. Harmonics that are closer to the left will tend to be more pleasing to the ear (consonant, as opposed to dissonant). Every time you overlay two frequencies, it…
In 2010, I created an online map of J.R.R. Tolkien’s Middle-earth as was depicted in The Hobbit and The Lord of the Rings . The map includes layers in both English and Elvish and provides notes for various points of interest. The material is open source and I would be delighted to take an understudy to someone interested in improving upon this aging website. The labels are, where possible, in the…
I'll be holding a little party at my terminal for the holidays. Please join me by running the following command in your shell. (( while true ; do echo - en " 033 [ 31 m." > & 2 ; echo ; done ) | ( while read line ; do echo - en " 033 [ 32 m." ; done ))
Last week, Josh Lewis—friend, former Apple colleague, and Lex Luthor hairstyle enthusiast —got me thinking about fiction on Twitter . Then, Ryan Paul pointed out that he had written an article about Twitter fiction already. Here’s the idea. Let’s (and by “us”, I mean everyone) reenact The War of the Worlds , on the Internet, for Halloween! CBS ran the Orsen Welles War of the Worlds radio program…
During my brief whirlwind experience working at Apple right out of college, I may have done some very thorough Garage Band testing for a Mac OS software update. Many of my colleagues may have contributed. They may have included Josh Lewis (tenor), Jonathan Deutsch (guitar), Phil Holland, Carol Leong (alto, as Carol Le), Michael Foquette (narrator), Damien Soresso (narrator), Andrew Wooster (beep…
I am an intrinsically motivated person. Being intrinsically motivated poses certain challenges for employment. When I was matriculating into college, I assumed that my only shot at getting a job and keeping it would be to get a degree in Computer Science and go work on Starcraft IV at Blizzard Entertainment. When I was graduating from college, my prospects had expanded, but I still applied for a…
I no longer recall when I made this, but I was still in high school. I drew these by hand, scanned them, blurred, and boosted the contrast until the outlines were solid, then filled the cells digitally. I used PowerPoint to add the background gradients and export as GIF. Compuserve was still enforcing the GIF patent at the time and PowerPoint was the only tool I had that could make a GIF. This is…