Skip to content

Instantly share code, notes, and snippets.

Solving environment /

Scott H. Hawley drscotthawley

Solving environment /
View GitHub Profile
drscotthawley /
Last active Aug 30, 2022
SLURM cluster usage tracker Discord bot
#! /usr/bin/env python3
SLURM usage tracker Discord bot by drscotthawley & rom1504
Requires external file token_channel.csv to connect to Discord
Syntax of that file should be:
drscotthawley /
Last active Aug 30, 2022
Realtime oscilloscope in 20 lines of Python, via soundcard & OpenCV
import numpy as np
import cv2
import soundcard as sc # Get it from
imWidth, imHeight = 1024, 512 # screen size
def draw_wave(screen, mono_audio, xs, title="oscilloscope", gain=5):
screen *= 0 # clear the screen
ys = imHeight/2*(1 - np.clip( gain * mono_audio[0:len(xs)], -1, 1)) # the y-values of the waveform
pts = np.array(list(zip(xs,ys))).astype( # pair up xs & ys
cv2.polylines(screen,[pts],False,(0,255,0)) # connect points w/ lines
cv2.imshow(title, screen) # show what we've got
drscotthawley /
Last active May 31, 2022
Implementation of 1cycle learning rate schedule, but without
import numpy as np
def get_1cycle_schedule(lr_max=1e-3, n_data_points=8000, epochs=200, batch_size=40, verbose=0):
Creates a look-up table of learning rates for 1cycle schedule with cosine annealing
See @sgugger's & @jeremyhoward's code in fastai library:
Wrote this to use with my Keras and (non-fastai-)PyTorch codes.
Note that in Keras, the LearningRateScheduler callback ( only operates once per epoch, not per batch
So see below for Keras callback
drscotthawley / Gamepad_Eyes_OSC.pde
Last active Apr 19, 2022
"Gamepad" Input example for Wekinator, e.g. for Xbox 360 controller
View Gamepad_Eyes_OSC.pde
// Gamepad_Eyes_OSC: demo of using game controller for OSC input.
// Uses the two thumb-sticks and either the left or right bumper buttons.
// Peter Lager maintains the Game Control Plus library (for Processing),
// which provides control data for joysticks and other game controllers
// ...such as my Xbox 360 controller.
// This is a quick mash-up using Lager's Gcp_gamepad animated eyes example code,
// (which is in the GCP library: In Processing, go to File > Examples..., then Contributed Libraries > Game Control Plus)
// and Rebecca Fiebrink's Simple_Mouse_DraggedObject_2Inputs example code for Wekinator.
drscotthawley /
Last active Dec 10, 2021 Greenscreen effect without a physical green screen, via OpenCV and Python
#! /usr/bin/env python
''' Greenscreen effect without a physical green screen
This performs background subtraction, and sets the background to "green" for use with "key frame" video editing software
Author: Scott Hawley,
Python, NumPy and OpenCV
I got these via Macports, but Homebrew, etc. work.
drscotthawley / WebAudioFreqGain.html
Last active Nov 24, 2021
WebAudio OSC Output for use with Wekinator
View WebAudioFreqGain.html
<html> <head>
<title>WebAudio OSC Output Example - 2 Variables</title>
<!-- By Scott Hawley @drscotthawley. Modified from
No additional license restrictions are introduced with these modifications; the automata/osc-web site gives no license info.
Thus as far as this author is concerned: "unlimited license": feel free to use & modify in any way you wish! -->
<h2>WebAudio OSC Output Example - 2 Variables</h2>
drscotthawley / Tabular_Spotify.drawio.svg
Created Nov 8, 2021
my svg file of tabular data model
View Tabular_Spotify.drawio.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
drscotthawley / grpc.patch
Last active Oct 19, 2021
Patch for GRPC to work with tensorflow, created from main grpc/ directory
View grpc.patch
diff --git a/src/core/lib/gpr/ b/src/core/lib/gpr/
index 561276f0c2..1af0935e1f 100644
--- a/src/core/lib/gpr/
+++ b/src/core/lib/gpr/
@@ -40,7 +40,7 @@
#include <time.h>
#include <unistd.h>
-static long gettid(void) { return syscall(__NR_gettid); }
+static long sys_gettid(void) { return syscall(__NR_sys_gettid); }
drscotthawley /
Created Jun 2, 2021
change webcam settings in realtime
#!/usr/bin/env python3
# Do violence to the Logitech C920s webcam settings in realtime
# To annoy your Zoom-mates by constantly changing the image
from pynput.keyboard import Listener
import os, sys
import random
import time
drscotthawley /
Last active Jan 25, 2021
Swaps Validation set with a section of Training set, given a value for k
# In case you didn't think to add k-fold cross-validation until late in your
# ML project,...
# This is built for a situation where datasets are arrays of, say, images.
def kfold_swap(train_X, train_Y, val_X, val_Y, k):
Swaps val with a section of train, given a value for k
"Duct tape" approach used to "retro-fit" k-fold cross-validation while minimally
disturbing the rest of the code, while avoiding reloading data from disk and
keeping RAM use manageable. (e.g. np.append() is bad b/c it would copy all of train)