Skip to content

Instantly share code, notes, and snippets.


Emily Strickland emilyst

View GitHub Profile
emilyst / yt-dlp-config
Last active October 8, 2022 23:01
View yt-dlp-config
# /usr/local/bin/docker run --name "yt-dlp" --rm -v "/volume1/Media/Clips:/downloads:rw" jauderho/yt-dlp:latest --config-locations /downloads/yt-dlp-config
--batch-file /downloads/to-download.txt
--match-filter 'original_url!*=/shorts/'
View 20-quiet-printk.conf
# /etc/sysctl.d/20-quiet-printk.conf
kernel.printk = 3 3 3 3
emilyst / 0.docker-compose.yml
Last active November 19, 2022 19:58
Current docker-compose.yml for my Mastodon instance, and associated files. CUSTOMIZE FOR YOUR PURPOSES. PROVIDED AS-IS. This is just a (probably dated) version of what I happen to use, and it's jank as hell.
View 0.docker-compose.yml
version: "3"
image: postgres:15
container_name: mastodon-postgres
restart: unless-stopped
- internal

Image stacking is a collection of related techniques used in astrophotography which all use multiple images taken by a camera to achieve a more detailed photo than would otherwise be possible. I’ve talked about image stacking in the past, but I hand-waved the statistical parts a bit. In this post, I want to dig into those mathematical details so that you understand why image stacking actually works.

But first, I’ll tell a story about thermometers. We’ll come back to image stacking after that.

Let’s imagine you’re a scientist, and you need to know the temperature of the room you’re in to within a tenth of a degree in order to run an experiment. You dutifully order a super expensive NIST-traceable thermometer online, but on the day it arrives, you open the box only to discover that you got a hundred cheap alcohol thermometers instead.

The expensive thermometer would have done the job to within a hundredth of a degree, but now it’s too late to wait for a new one to arrive, and all you have are these che

emilyst / 99-usb-cdrom.rules
Last active March 17, 2023 07:42
Description for getting MakeMKV working on Synology with DSM 7 using jlesage/makemkv via Docker Compose
View 99-usb-cdrom.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="", ATTRS{idProduct}=="", GROUP="cdrom", MODE="0666"
emilyst / mash.rb
Created September 15, 2019 20:01
Flatten a hash's structure in a somewhat naive way
View mash.rb
#!/usr/bin/env ruby
class Hash
def mash(prefix=nil)
reduce({}) do |a, (k,v)|
case v
when Hash then a.merge(v.mash(k.to_s + '_'))
else a.merge({ "#{prefix}#{k}" => v })
emilyst / video2gif-filtergraph-diagram.txt
Last active April 26, 2019 01:40
Diagram of video2gif filtergraph
View video2gif-filtergraph-diagram.txt
( input )
│ fps │
emilyst /
Created March 19, 2019 03:44
This doesn't work either
#!/usr/bin/env python3
import objc
from Foundation import (
emilyst /
Created March 19, 2019 03:39
This doesn't work
#!/usr/bin/env python3
import threading
# from multiprocessing import Pool
# from multiprocessing import Process
class EventLoopThread(threading.Thread):
def __init__(self):
super(EventLoopThread, self).__init__()
emilyst /
Created March 11, 2019 17:51
Log sleep/wake notifications on macOS
from AppKit import NSWorkspace, \
NSWorkspaceWillSleepNotification, \
NSWorkspaceDidWakeNotification, \
NSObject, \
from PyObjCTools import AppHelper
class NotificationHandler(NSObject):