Skip to content

Instantly share code, notes, and snippets.

@garthk
garthk / xdg.plugin.zsh
Created August 30, 2023 21:55
zsh XDG directory specification environment variables plugin
XDG_DATA_DIRS=/usr/local/share:/usr/share
XDG_CONFIG_DIRS=/etc/xdg
case $(uname) in
Linux)
XDG_CONFIG_HOME="$HOME/.config"
XDG_CACHE_HOME="$HOME/.cache"
XDG_DATA_HOME="$HOME/.local/share"
XDG_STATE_HOME="$HOME/.local/state"
XDG_RUNTIME_DIR="/run/user/$(id -u)"
@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.
@garthk
garthk / bundler.py
Created December 18, 2020 05:23
Poetry Lambda bundler
#!/usr/bin/env python3
"""
Bundle the converter.
Inspiration: https://github.com/python-poetry/poetry/pull/2682
"""
from argparse import ArgumentParser
from contextlib import contextmanager
@garthk
garthk / PASTE_ME.exs
Last active November 5, 2020 19:08
Watch all Phoenix.LiveView and LiveComponent handle_event callbacks
(fn gl ->
:dbg.stop_clear()
repr = fn
%Phoenix.LiveView.Socket{} -> "socket"
v -> inspect(v)
end
{:ok, _} =
:dbg.tracer(
@garthk
garthk / lv_call_time.ex
Last active October 13, 2020 02:51
LiveView call time
defmodule LVCallTime do
@moduledoc """
Best used sparingly.
LVCallTime.start()
:timer.sleep(:timer.seconds(20))
LVCallTime.dump()
LVCallTime.stop()
or just
@garthk
garthk / troubleshooting.exs
Created October 1, 2020 04:46
Watch Elasticsearch.post/3 et al
:dbg.stop_clear()
{:ok, _} =
:dbg.tracer(
:process,
{fn
{:trace, pid, :call, {mod, fun, args} = call}, stacks ->
mfa = Exception.format_mfa(mod, fun, Enum.count(args)) |> Pretty.inspect(label: ":call")
Smuggle.dump({mod, fun, args}, wrapper: :gfm)
stack = Map.get(stacks, pid, [])
@garthk
garthk / troubleshooting.exs
Created September 9, 2020 07:23
Watch Phoenix.PubSub.broadcast/2 calls from your context with :dbg
{:ok, _} =
:dbg.tracer(
:process,
{fn
{:trace, pid, :call, {mod, fun, args} = call}, stacks ->
mfa = Exception.format_mfa(mod, fun, Enum.count(args))
stack = Map.get(stacks, pid, [])
if match?({Phoenix.PubSub, :broadcast, _}, call) do
Pretty.inspect(stack, label: "broadcast stack")