Skip to content

Instantly share code, notes, and snippets.

import { globSync, existsSync, readFileSync } from "node:fs";
import { join } from "node:path";
import { execSync } from "node:child_process";
// List of bad actors, from https://www.wiz.io/blog/shai-hulud-2-0-ongoing-supply-chain-attack
const pkgs = {
"02-echo": "0.0.7",
"@accordproject/concerto-analysis": "3.24.1",
"@accordproject/concerto-linter": "3.24.1",
function getDescription() {
return `
<p>
Use the sx/sy sliders to adjust the x/y scale of our unit circle,
and use the shx/shy sliders to adjust the x/y shear components. The
code will generate three points on the circle (aqually spaced
angularly), transform those using the slider parameters, then
construct a covariance matrix, calculate the eigenvalues and
eigenvectors, and use those to determine what the ellipse looks
like that we get when we transform the entire circle according
@Pomax
Pomax / download.md
Last active June 10, 2025 06:15
A script for automatically downloading all your Glitch projects, and their associated CDN assets
#include "Adafruit_seesaw.h"
#include <seesaw_neopixel.h>
#include <Joystick.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SS_SWITCH 24 // this is the pin on the encoder that connects to the momentary switch
#define SEESAW_BASE_ADDR 0x36 // I2C address, starts with 0x36
#define SCREEN_WIDTH 128 // OLED display width, in pixels
const { abs, log } = Math;
const log10 = (v) => log(v) / log(10);
const XMLNS = "http://www.w3.org/2000/svg";
const element = (tag, attributes = []) => {
const e = document.createElementNS(XMLNS, tag);
Object.entries(attributes).forEach(([key, value]) => set(e, key, value));
return e;
};
const set = (e, key, value) => e.setAttribute(key, value);
/**
* This is a function for use with JSON.stringify(input, sortedObjectKeys, number)
* that ensures that object keys are sorted in alphanumerical order.
*/
export function sortedObjectKeys(_, data) {
// Ignore primitives.
if (data === null) return null;
if (typeof data !== "object") return data;
// Also ignore iterables, which are type "object" but should not be sorted.
@Pomax
Pomax / tangents.pde
Last active June 11, 2021 18:43
This sketch illustrates the inner and outer tangents between two circles
int dim;
ArrayList<Circle> circles;
boolean moving = false;
/**
* simple (x,y) point class
*/
class Point {
float x, y;
(function buildTagFunctions(global) {
// Just enough tags to generate all the client content
const tags = [
`a`,
`button`,
`div`,
`footer`,
`h1`,
`h2`,
`li`,
@Pomax
Pomax / task-timer.js
Last active March 1, 2019 00:06
A JS taskrunner with timeout capability
/**
* A resolver class that will run the function
* passed as `startWaiting`, with a concurrent
* timeout running that will trigger the
* `timeoutFunction` function after a specific
* number of milliseconds.
*
* This timeout can be paused using `.pause()`,
* which will return a promise that can be
* `await`ed to effect a non-blocking "pause".
@Pomax
Pomax / tree.js
Created April 7, 2016 23:46
A silly but effective JS tree datastructure
/**
* Basic tree implementation.
*/
function Tree(value) {
this.value = value || false;
this.parent = false;
this.children = [];
};
Tree.prototype = {