Skip to content

Instantly share code, notes, and snippets.

View kriskowal's full-sized avatar

Kris Kowal kriskowal

View GitHub Profile
@kriskowal
kriskowal / gist:f25c81725f0d5c98d41c1e6b7ee8f8fe
Created October 19, 2020 18:48
Debugging a zip library refactor. The bug was a uint32 where a uint16 belonged.
00000000: 504b 0304 0a00 0000 0000 3514 5151 849e PK........5.QQ..
^^^^ ^^^^ LOCAL_FILE_HEADER
^^^^ version 10
^^^^ bitFlag
^^^^ compression method
^^^^ ^^^^ date
00000010: e8b4 0e00 0000 0e00 0000 0900 0000 6865 ..............he
^^^^ crc32
^^^^ ^^^^ compressed size (14)
^^^^ ^^^^ uncompressed size (14)
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({}, {
compartment
.import('./main.js')
.then(({ namespace: main }) => {
// …
});
import 'ses';
lockdown();
let compartment = new Compartment();
compartment.evaluate(code);
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
kriskowal / assemble.js
Created May 15, 2020 00:59
Compartment assembler demonstration.
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.name}/${pkg.version}`;
if (pkg.dependencies != null) {
20 points above the monkey
A Dearth of Crosswalks (via ahuster)
Angry Brain Explosion (via fudco)
Anonymous
Apparently Music? (via ahuster)
Awsomosis
Bad Math
Banned Name (via ahuster)
Bdemonic Devices
Betrayed by the Bagel (via ahuster)
@kriskowal
kriskowal / uber-to-agoric.md
Last active May 10, 2022 22:51
Uber to Agoric

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
kriskowal / inc.sh
Last active March 28, 2020 17:08
shell memo
#!/bin/bash
# Very slow build step.
sleep 5
jq .+1
@kriskowal
kriskowal / edlin.lobster
Created February 4, 2020 18:29
Line editor
import std
import color
import vec
let fontsize = 40
let cursor = xy{ 4, fontsize }
let cursor_hz = 2
fatal(gl_window("edlin", 800, 800))