Skip to content

Instantly share code, notes, and snippets.

@webstrand
webstrand / instanceofvtag.js
Last active April 18, 2024 18:11
Comparing the performance of instanceof against tags
const Benchmark = require('benchmark');
const suite = new Benchmark.Suite;
class Base {
type = "base"
}
class Child extends Base {
type = "child"
}
@webstrand
webstrand / usernetnsenter.c
Last active March 8, 2024 14:41
SUID binary allowing unpriviliged users to enter permitted network namespaces
#define _GNU_SOURCE
#include <stdio.h>
#include <sched.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdint.h>
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
type If = {
kind: 'if'
condition: Expression
then: Expression
else: Expression
}
type Literal = {
kind: 'boolean'
value: boolean
@webstrand
webstrand / json-string-parser.ts
Created December 11, 2023 19:56
JSON string parser that generates minimal garbage by avoiding regex match objects
function parseString(json: string, startIndex: number) {
const Text = /[^\\"]+/y;
const Escapes = /\\+/y;
const Unicode = /[\dA-Fa-f]{4}/y;
let result = "";
for(let textStart = Text.lastIndex = startIndex;;) {
// Scan forward from the lastIndex until we encounter:
// 1. closing quote
// 3. end-of-string
@webstrand
webstrand / proxy-multi-inheritance.ts
Created November 22, 2023 15:20
Using Proxy and extensive abuse of #private we implement multiple inheritance in typescript
function Multi<Left extends new (...args: any[]) => object, Right extends new (...args: any[]) => object, Largs extends any[], Rargs extends any[], Linst extends object, Rinst extends object>(Left: Left & (new (...args: Largs) => Linst), Right: Right & (new (...args: Rargs) => Rinst)): {
new (largs: Largs, rargs: Rargs): Linst & Rinst
} & { [P in keyof Left]: Left[P] } & { [P in keyof Right]: Right[P] } {
let proxy;
class Multi extends (Left as any) {
#bastard: Rinst;
constructor(largs: Largs, rargs: Rargs) {
import { IsoBench } from "iso-bench";
function* createIterable(count) {
for (let i = 0; i < count; i++) {
yield i;
}
}
declare var i: number;
globalThis.i = 0;
@webstrand
webstrand / xdgmenu.bash
Created September 3, 2023 06:08
Bash script to find and launch .desktop files with dmenu (currently broken)
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
shopt -s lastpipe
IFS=':' read -ra data_dirs <<< "${XDG_DATA_HOME:-$HOME/.local/share}${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}";
locale lang_ab country_ab2 charmap | readarray -t locale;
declare -A dictionary;
fd --unrestricted --type file --extension desktop . "${data_dirs[@]/%/\/applications}" --print0 |
@webstrand
webstrand / check-simple.ts
Created July 5, 2023 22:17
Type checking functions
/**
* Type alias resolves to `True` if and only if `U` is the same as `V`, otherwise it resolves to `False`.
* @typeparam U - An arbitrary type
* @typeparam V - An arbitrary type
* @typeparam True - Production when `U` is the same as `V`
* @typeparam False - Production when `U` is not the same as `V`
*/
export type Exact<U, V, True = true, False = false> =
{ <_>(): _ extends U ? 1 : 0 } extends { <_>(): _ extends V ? 1 : 0 }
? True
@webstrand
webstrand / latlon.jq
Created June 22, 2023 16:32
Sort list by distance
def PI: 3.14159265359;
def Radians(deg): deg * (PI / 180);
def Degrees(rad): rad * (180 / PI);
def a: 6378.137; #equitorial radius in km
def b: 6356.752; #polar radius in km
def radius_of_earth(lat1):
(((pow(((a*a)*(lat1 | cos));2))+(pow(((b*b)*(lat1 | sin));2)))/(pow((a*(lat1 | cos));2)+pow((b*(lat1 | sin));2))) | sqrt;
def Distance1(lat1;long1;lat2;long2):
@webstrand
webstrand / object-paths.ts
Created April 20, 2023 17:59
Recursively generate a list of all paths into some object
type StringSerialized<T extends object, Prefix extends string = ""> = T extends Array<any> ? {
[P in keyof T & `${bigint}`]: `-${P}` extends `${bigint}`
? | `${Prefix}${P}`
| StringSerialized<T[P] & object, `${Prefix}${P}.`>
: never
}[keyof T & `${bigint}`] : {
[P in keyof T & string]:
| `${Prefix}${P}`
| StringSerialized<T[P] & object, `${Prefix}${P}.`>
}[keyof T & string];