Skip to content

Instantly share code, notes, and snippets.


Sam Thorogood samthor

View GitHub Profile
View viz-observer.js
// This is now a library:
// ... source on GitHub:
// ... package on npm:
samthor /
Created Oct 27, 2020
Major changes in Node

Major Node Changes

This document is a short list of changes in Node.js' major releases. It does not cover point releases, just e.g., v13, v14 and so on.


  • NPM 7 #35631
  • Throw On Unhandled Rejections #33021
    • If you create a Promise without a catch handler, or use a top-level await, a failure will cause your program to crash by default
View active-element.js
* @param {!Element=}
* @return {!Array<!Element>} containing focused element, deepest first
function getActive(t = document.activeElement || document.body) {
if (t.activeElement) {
t = t.activeElement;
if (t.shadowRoot) {
return [...getActive(t.shadowRoot), t];
View notes.html
Copyright 2020 Google LLC.
Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at
Unless required by applicable law or agreed to in writing, software
View wrap.go
package loggerwrap
import (
View post-eleventy-build.js
let configured = false;
let finished = false;
const methodsToCall = [];
function setup() {
const Eleventy = require("@11ty/eleventy");
const originalWrite = Eleventy.prototype.write;
Eleventy.prototype.write = async function(...args) {
const out = await originalWrite.apply(this, args);
samthor / logcat
Last active Jan 29, 2020
Better logcat
View logcat
#!/usr/bin/env python
import logging
import subprocess
import re
import sys
import datetime
RE_SPACES = re.compile('\s+')
samthor / css-modules-plugin.mjs
Last active Apr 26, 2020
CSS Modules plugin for Rollup
View css-modules-plugin.mjs
import fs from 'fs';
// as per
export default function cssModules() {
return {
name: 'css-modules',
async load(id) {
if (!id.endsWith('.css')) {
samthor / crush
Last active Jun 6, 2019
Helpers to compress PNG images
View crush
command_exists() {
type "$1" &> /dev/null
for X in "$@"; do
if [ ${X: -4} == '.png' ]; then
if command_exists zopflipng; then
zopflipng "$X" "$X"
View .bash_functions
# Useful bash functions. This is sourced by the environment file.
# These are available to scripts, but you shouldn't use them in scripts if you
# want them to be portable.
# Usage: pathremove /path/to/bin [PATH]
# Eg, to remove ~/bin from $PATH
# pathremove ~/bin PATH
function pathremove {
local IFS=':'