Skip to content

Instantly share code, notes, and snippets.

View n8henrie's full-sized avatar

Nathan Henrie n8henrie

View GitHub Profile
@n8henrie
n8henrie / build-plugin.sh
Created March 8, 2022 03:48
Convenience script to build a Quicksilver plugin from CLI
#!/bin/bash
#####
# build-plugin.sh
# bash 3.2-compatible convenience script to:
# - search by partial name for a plugin in the `QSPLUGINS` subdirectory
# (default `./QSPlugins`)
# - clean plugin directory
# - clean QS directory
# - `rm -rf /tmp/QS`
@n8henrie
n8henrie / rssi.py
Last active January 26, 2022 15:58
#!/usr/bin/env python3
"""
Use the MacOS `airport` utility to get a running average of the WiFi signal
strength (RSSI).
Python 3.8+, so works with `/usr/bin/python3` on Monterey.
"""
import os
import statistics
@n8henrie
n8henrie / modify_nix_image.sh
Last active October 6, 2021 23:54
Modify a nixos image to use a BTRFS root
#!/bin/bash
# NB: I am no bash pro, so this could be dangerous.
# Please read through it and make sure you double check my work.
# Assuming nixos image nixos-sd-image-21.05pre-git-aarch64-linux.img and sdcard at /dev/sdx
# Example usage: `sudo ./modify_image.sh nixos-sd-image-21.05pre-git-aarch64-linux.img /dev/sdx`
# NB: This will overwrite /dev/sdx!
set -Eeuf -o pipefail
@n8henrie
n8henrie / quick replace.applescript
Created August 13, 2021 13:57
Quicksilver action to run a regex on input text
using terms from application "Quicksilver"
on get direct types
return {"NSStringPboardType"}
end get direct types
on get indirect types
return {"NSStringPboardType"}
end get indirect types
@n8henrie
n8henrie / Open in Editor.js
Last active February 21, 2024 21:26
JXA to open finder selection in MacVim, or default to an empty buffer
#!/usr/bin/osascript -l JavaScript
// For use in Hammerspoon via hs.osascript.javascriptFromFile
//
// Debugging:
// 1. Add a `delay` to the beginning
// 2. Add some `console.log`s
// 3. Run from console as `osascript Open\ in\ MacVim.js`
// 4. Switch to a Finder window before the sleep is done
'use strict';
@n8henrie
n8henrie / permutations.rs
Last active March 24, 2021 17:14
Create all permutations from a collection
#![feature(test)]
/// My naive implementation based on
/// [this javascript implementation](https://gist.github.com/thebopshoobop/b9531ceb67faae0a48a9f4aadb1aed55#file-perms_recursive-js)
/// ([blog post here](https://medium.com/@rwillt/two-very-different-algorithms-for-generating-permutations-412e8cc0039c))
///
/// NB: Runs fine on stable rust, unstable only needed for the benchmarking
///
/// For comparison:
///
/// using [itertools](https://crates.io/crates/itertools):
@n8henrie
n8henrie / Make AppleTV Screensaver.applescript.js
Last active December 3, 2021 19:44
Apple JXA script to create and populate an album with a random sample of favorite photos
#!/usr/bin/osascript -l JavaScript
// Apple JXA script to create and populate an album with a random sample of favorite photos
// Author: @n8henrie
// Rename from .applescript.js to .applescript (.js for GitHub syntax highlighting)
// https://stackoverflow.com/a/11935263/1588795
function getRandomSubarray(arr, size) {
var shuffled = arr.slice(0), i = arr.length, temp, index;
while (i--) {
index = Math.floor((i + 1) * Math.random());
#!/usr/bin/env python3
import argparse
import sys
import typing as t
__author__ = "Benjamin Kane"
__version__ = "0.1.0"
__doc__ = f"""
Pretty-print simple Bash command from one line of stdin
@n8henrie
n8henrie / congress.ipynb
Last active December 20, 2019 04:26
A quick look at congress bills in recent history by unified or divided congress
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
#!/usr/bin/env python3
"""Send files to MacOS trash bin via applescript."""
import os
from pathlib import Path
import sys
import subprocess
from typing import Iterable, Union
def trash(paths: Iterable[Union[str, Path]]) -> int: