Skip to content

Instantly share code, notes, and snippets.


Kris Kowal kriskowal

View GitHub Profile
kriskowal / gist:f25c81725f0d5c98d41c1e6b7ee8f8fe
Created Oct 19, 2020
Debugging a zip library refactor. The bug was a uint32 where a uint16 belonged.
View gist:f25c81725f0d5c98d41c1e6b7ee8f8fe
00000000: 504b 0304 0a00 0000 0000 3514 5151 849e PK........5.QQ..
^^^^ version 10
^^^^ bitFlag
^^^^ compression method
^^^^ ^^^^ date
00000010: e8b4 0e00 0000 0e00 0000 0900 0000 6865 ..............he
^^^^ crc32
^^^^ ^^^^ compressed size (14)
^^^^ ^^^^ uncompressed size (14)
View compartment-dependency.js
const dependency = new Compartment({}, {}, {
resolveHook: (moduleSpecifier, moduleReferrer) =>
resolve(moduleSpecifier, moduleReferrer),
importHook: async moduleSpecifier => {
const moduleLocation = locate(moduleSpecifier);
const moduleText = await retrieve(moduleLocation);
return new ModuleStaticRecord(moduleText, moduleLocation);
const application = new Compartment({}, {
View compartment-import.js
.then(({ namespace: main }) => {
// …
View lockdown.js
import 'ses';
let compartment = new Compartment();
View async-composition-2020.js
function *count(n) {
for (let i = 0; i < n; i++) {
yield i;
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
const asyncForEach = async (values, callback) => {
kriskowal / assemble.js
Created May 15, 2020
Compartment assembler demonstration.
View assemble.js
import 'ses';
import { resolveNode, makeNodeImporter } from './node.js';
const { values, entries } = Object;
// gathers all the packages in a lockfile into a flat representation keyed by
// name and version.
const gather = (pkg, map, location) => {
const key = `${}/${pkg.version}`;
if (pkg.dependencies != null) {
View band-names.txt
20 points above the monkey
A Dearth of Crosswalks (via ahuster)
Angry Brain Explosion (via fudco)
Apparently Music? (via ahuster)
Bad Math
Banned Name (via ahuster)
Bdemonic Devices
Betrayed by the Bagel (via ahuster)

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 wrote a tool for verifying that JSON schema evolution remained backward-compatible, did some weird stuff to automatically mix the middleware stack, and wrote a thing to balance load across Node.js processes more fairly than the Linux kernel. I don’t believe any of that work made it to production, really, but for those six months, I learned how to operate global dispatch while I was on-call for 24 hours once a month and developed a bald spot.

I then got on board a new Distributed Systems Group under Matt Ranney’s guidance and many of the folks I’ve been working with to this day. Matt had designed a DHT based on the S

kriskowal /
Last active Mar 28, 2020
shell memo
# Very slow build step.
sleep 5
jq .+1
View edlin.lobster
import std
import color
import vec
let fontsize = 40
let cursor = xy{ 4, fontsize }
let cursor_hz = 2
fatal(gl_window("edlin", 800, 800))
You can’t perform that action at this time.