Skip to content

Instantly share code, notes, and snippets.

@garthk
garthk / annotations.py
Last active September 3, 2024 07:01
Remove annotations from scripts so they work on Python 3.6
from __future__ import annotations
import ast
import sys
from pathlib import Path
__all__ = ["remove_annotations"]
class AnnotationRemovalTransformer(ast.NodeTransformer):
@garthk
garthk / layout_python_hatch.sh
Created August 30, 2024 11:46
layout_python_hatch: direnv config plugin for python projects using hatch
# shellcheck shell=sh enable=all
# ~/.config/direnv/lib/layout_python_hatch.sh
# direnv config plugin for hatch
# https://direnv.net
fail() {
[ "$#" != "0" ] || set -- FAIL
echo >&2 "$@"
return 1
}
@garthk
garthk / apple-load-keychain.plugin.zsh
Created August 29, 2024 08:02
ZSH plugin to load SSH keys from your macOS keychain
if [[ -o login && -o interactive ]]; then
ssh-add -q --apple-load-keychain
fi
@garthk
garthk / brew.plugin.zsh
Created August 29, 2024 07:56
ZSH plugin for Homebrew in /usr/local
# WARNING: requires macos_paths.plugin.zsh
typeset -x HOMEBREW_PREFIX=$(brew --prefix)
typeset -x HOMEBREW_CELLAR=/usr/local/Cellar
typeset -x HOMEBREW_REPOSITORY=/usr/local/Homebrew
infopath=(/usr/local/share/info "${infopath[@]}")
manpath=(/usr/local/share/man "${manpath[@]}")
path=(/usr/local/bin /usr/local/sbin "${path[@]}")
@garthk
garthk / macos_paths.plugin.zsh
Created August 29, 2024 07:51
ZSH plugin for macOS paths
typeset -xUT PATH path :
typeset -xUT MANPATH manpath :
typeset -xUT INFOPATH infopath :
eval "$(/usr/bin/env -i PATH= MANPATH= INFOPATH= /usr/libexec/path_helper -s)"
@garthk
garthk / xdg.plugin.zsh
Last active December 30, 2024 06:02
ZSH plugin for XDG Base Directory Specification environment variables
if case $(uname) in
Linux)
XDG_CONFIG_DIRS=/etc/xdg
XDG_BIN_HOME=~/.local/bin
XDG_CACHE_HOME=~/.cache
XDG_DATA_DIRS=/usr/local/share:/usr/share
XDG_CONFIG_HOME=~/.config
XDG_DATA_HOME=~/.local/share
XDG_RUNTIME_DIR=/run/user/$(id -u)
XDG_STATE_HOME=~/.local/state
@garthk
garthk / demo.go
Last active February 21, 2022 22:50
Propagating OpenTelemetry trace context through the HTTP to GRPC gateway to the request handlers
package demo
import (
"context"
"net/http"
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/propagation"
@garthk
garthk / README.md
Created February 18, 2022 22:37
/usr/share/dict/wordle

dict wordle

A dump taken 2022-02-19 of the NY Times version of the Wordle dictionary, suitable for installation as /usr/share/dict/wordle.

@garthk
garthk / example.ex
Created February 17, 2021 21:37
Forging span links using OpenCensus and Honeycomb
@doc """
Forge links between spans.
Preferred, but not supported by our reporter:
:PARENT_LINKED_SPAN
|> :oc_span.link(link_trace_id, link_span_id, %{})
|> :oc_trace.add_link(span_ctx)
... but that's ok, [Honeycomb can link using the attributes of extra spans][send-links].
@garthk
garthk / flash_leds_on_boot.py
Created January 30, 2021 06:55
Flash LEDs on boot #lca2021
# Flash configured LEDs on boot.
import aiko.led
import time
import binascii
DURATION_MS = 100
COLOURS = ["e40303", "ff8c00", "ffed00", "008026", "004dff", "750787"]
GAMMAS = [v for v in binascii.a2b_base64(b"".join([
# Overkill, but I wanted the orange to look orange.