Skip to content

Instantly share code, notes, and snippets.

View alexrudy's full-sized avatar

Alex Rudy alexrudy

View GitHub Profile
@alexrudy
alexrudy / pushover.py
Last active November 5, 2023 14:45
Send yourself a notification via pushover.
#!/usr/bin/env python
#
# pushover.py
# Send yourself notifications via https://pushover.net
# Just set your pushover user ID to PUSHOVER_USER_ID
# and your application API token to PUSHOVER_API_TOKEN
# then call this script with the message you want to
# send::
#
# $ make test; pushover.py "make test finished!"
@alexrudy
alexrudy / matplotlib-fonts-osx.md
Last active July 12, 2022 13:16
Adding custom fonts to Matplotlib on OS X

How to add custom (or system) fonts to matplotlib on OS X

Matplotlib expects to find .ttf fonts on your system. Newer versions of OS X use .dfont files. Converting them is easy, and putting them in a proper font path is also easy. The user font path on OS X is ~/Library/Fonts/, and matplotlib will find fonts here.

  1. First, install what you'll need:
  • matplotlib
  • fondu (port install fondu, or brew install fondu)
  1. Then find your desired font file. For system font files, the easiest way to do this is in the FontBook application. You can open FontBook in your utlities folder. Then select your font of choice, right click on it, and select "Show in Finder". You'll need to know where it is. Many system fonts are in places like /System/Library/Fonts/...
  2. Move to your user's font directory ~/Library/Fonts/.
  3. Use fondu to convert the OS-X specific font file (ends with .dfont) to .ttf.
@alexrudy
alexrudy / parallel-demo.py
Created June 18, 2022 00:45
Parallelism Demo
"""
Python parallelism demo
Run this file with `python parallel-demo.py` to see how different
parallelism strategies fare with different kinds of parallism.
This requires aiohttp (pip install aiohttp) and requests (pip install requests)
Two environment variables control behavior:
"""
PPA - Progress Parallel Apply
A quick tool for parallel apply in python using multiprocessing.
"""
import functools
import multiprocessing as mp
from typing import Dict, Iterable, NamedTuple, Optional, Tuple, Union
#!/usr/bin/env sh
# Check missing references extension for proper functioning.
set +ex +o pipefail
DOCS=$(dirname $(dirname $0))
# Test first by writing the missing references file
git checkout $DOCS/conf.py
git checkout lib
@alexrudy
alexrudy / docker-postgres
Created December 31, 2017 03:02
Spin up Postgres in a docker container.
#!/usr/bin/env sh
docker run --rm --name local-postgres -e POSTGRES_PASSWORD=$(op get item "local postgres" | jq -r '.details.password') -d -p 5432:5432 -v "$HOME/Documents/postgres/data:/var/lib/postgresql/data" postgres
@alexrudy
alexrudy / stripkeys.py
Created August 21, 2017 18:57
Quick python command to strip and insert AWS keys into SQL files.
#!/usr/bin/env python
import click
import re
import os
import contextlib
@contextlib.contextmanager
def backup_file(file, mode='w', replace=False):
"""Open a backup file for writing"""
@alexrudy
alexrudy / things.applescript
Last active July 21, 2017 13:37
Things.app basic CLI
def resample_spectrum(source_wavelength, source_spectrum, destination_wavelengths, destination_resolution):
"""Resample a spectrum to a new wavelength grid, possibly degrading the spectrum's resoltuion.
:param source_wavelength: The source wavelength array.
:param source_spectrum: The source spectrum array.
:param destination_wavelengths: The destination wavelength array.
:param destination_resolution: The destination resolution.
:returns: The resampled spectrum.
This function is definitely valid for making a spectrum worse. Doing anything else is questionable.
function setup_OSIRIS {
export OSIRIS_ROOT=$1
export OSIRIS_WROOT=${2:-$OSIRIS_ROOT}
# Location of data files
export OSIRIS_DRP_DATA_PATH=$OSIRIS_WROOT/data/
# Set the queue directory for any pipelines started by this user
export DRF_QUEUE_DIR=$OSIRIS_WROOT/drf_queue