Skip to content

Instantly share code, notes, and snippets.

@tomgidden
tomgidden / update_dns
Created November 30, 2022 13:18
Low-dependency bash script to upsert/delete current Droplet public and private IPs in DigitalOcean DNS
#!/bin/bash
STATE=$1
TOKEN=$2
TOKEN=${TOKEN:-$DIGITALOCEAN_TOKEN}
HOSTNAME=$(hostname)
PRIVATE_IP_BASE=10.123.
PRIVATE_DOMAIN=internal.example.com
@tomgidden
tomgidden / lyap-ansi.py
Last active March 12, 2022 11:40
2D Lyapunov in Python using ANSI terminal colors
#!/usr/bin/env python3
import math
from sys import stdout
import shutil
w,h = shutil.get_terminal_size()
a0 = 3.0
a1 = 4.0
#!/usr/bin/env python
from sys import exit
try:
import paho.mqtt.client as mqtt
except ImportError:
exit("This example requires the paho-mqtt module\nInstall with: sudo pip install paho-mqtt")
import blinkt
@tomgidden
tomgidden / rename files by date
Created December 31, 2021 12:27
Rename files with 01Feb2020 format dates to 2020-02-01 for better sorting
rename 'use Time::Piece;s/(\d+)(\w{3})(20\d{2})/Time::Piece->strptime("$3-$2-$1", "%Y-%b-%d")->ymd/e' *.pdf
@tomgidden
tomgidden / switch1.js
Last active July 24, 2021 14:12
Experimenting with functional(ish) switch-like statements in Javascript.
// After writing this, I found
// https://codeburst.io/alternative-to-javascripts-switch-statement-with-a-functional-twist-3f572787ba1c
// which was almost identical to what I'd done.
//
// It's slow, though, but fine for small ones.
/*
const result = _switch(testValue)
.case(predicateFn, resultFn)
@tomgidden
tomgidden / pwdcolor.zsh
Last active July 18, 2021 15:06
macOS zsh change Terminal color based on current working directory
PWDCOLORS_PATH=~/.pwdcolors
PWDCOLOR=
# macOS Terminal color change based on current PWD
# by Tom Gidden <[email protected]>, July 2021
#
# This is a bit grotty and untested. Any improvements _very_ welcome.
#
# Ideally, Apple would bolt this functionality into Terminal.app,
@tomgidden
tomgidden / Deskjet2710_1200dpi.ppd
Created December 15, 2020 16:31
macOS DeskJet 2710 PPD file hacked to allow for 1200dpi on matte coated paper
*PPD-Adobe: "4.3"
*% PPD created by ipp2ppd (v2:Jun 6 2020)
*FormatVersion: "4.3"
*FileVersion: "2.0"
*LanguageVersion: English
*LanguageEncoding: ISOLatin1
*PSVersion: "(3010.000) 0"
*LanguageLevel: "3"
*FileSystem: False
*cupsVersion: 2.0
@tomgidden
tomgidden / auto_master
Created September 24, 2020 09:05
automount setup for Catalina
#
# Automounter master map
#
+auto_master # Use directory service
#/net -hosts -nobrowse,hidefromfinder,nosuid
/home auto_home -nobrowse,hidefromfinder
/Network/Servers -fstab
/- -static
/nfs auto_nfs -nobrowse,nosuid,soft,noowners,bg,intr,nfc
@tomgidden
tomgidden / flattenUnflattenTree.js
Created August 28, 2020 00:16
Turns an Object-based tree into a list of tuples (dot-separated) and back. Basically a recursive Object.entries() and Object.fromEntries()
// Alternatively, look at https://stackoverflow.com/questions/15690706/recursively-looping-through-an-object-to-build-a-property-list/53620876#53620876
// and https://stackoverflow.com/questions/15690706/recursively-looping-through-an-object-to-build-a-property-list
/* Converts a potentially deep tree into a list of tuples.
* eg. {a:{b:{c:1,d:2}},e:{f:3},g:4} → [['a.b.c',1],['a.b.d',2],['e.f',3],['g',4]]
*/
const flattenTree = (tree) => {
const recurse = (newentries, entries, path) => (
entries.reduce( (a, [k,v]) => {
@tomgidden
tomgidden / vino setup
Created July 22, 2020 16:40
Set up headless Vino on nVidia Jetson Nano, JetPack 4.4
gsettings set org.gnome.Vino disable-background true
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino authentication-methods "['vnc']"
gsettings set org.gnome.Vino require-encryption false
gsettings set org.gnome.Vino vnc-password `echo -n mypassword | base64`
## Isn't this meant to work?
#nmcli connection show
#dconf write /org/gnome/settings-daemon/plugins/sharing/vino-server/enabled-connections "['60db8415-f429-4dcf-88bf-5180daee1199','67359432-bfb9-3163-94c7-fa58a5aa4d49']"