Skip to content

Instantly share code, notes, and snippets.

Avatar

Alexis Gallagher algal

View GitHub Profile
@algal
algal / plot_cm.py
Created Sep 9, 2020
Plot a confusion matrix in scikitlearn from data not from an estimator
View plot_cm.py
# This uses scikit learn internals, since the sk public API requires you to pass
# in an estimator and sometimes you just want to pass in the some data you'd
# use to calculate a raw CM
def plot_cm(y_true,y_pred,labels):
from sklearn.metrics._plot.confusion_matrix import ConfusionMatrixDisplay
sample_weight = None
normalize = None
include_values = True
@algal
algal / SFUSDCalendar.md
Created Aug 29, 2020
To use an SFUSD Gmail account to subscribe to a non-SFUSD Google Calendar
View SFUSDCalendar.md

Subscribing to a Google Calendar from an SFUSD Google Account

SFUSD Google accounts can only send and receive emails from SFUSD teachers, so they cannot receive calendar invitations from normal gmail accounts, like the gmail accounts of their parents. So you cannot invite them to join a calendar as usual.

Here's a workaround.

In the normal gmail account:

  1. Create the calendar to share from a normal gmail account.
  2. Go to Calendar Settings / General
@algal
algal / excel_parseDates.vba
Last active Sep 5, 2020
please god why aren't these predefined?
View excel_parseDates.vba
' Expects a datetimestr in the format "YYYYMMDD" with - or / or no separator
' Parses independently of local region, unlike VBA.DateTime.DateValue()
' Known-good on Excel for Mac Version 16.4
Function parseYYYYMMDD(dateTimeStr As String) As Date
Dim normalized As String
normalized = VBA.Strings.Trim(dateTimeStr)
normalized = VBA.Strings.Replace(dateTimeStr, "/", "")
normalized = VBA.Strings.Replace(normalized, "-", "")
View KeyDict.py
from typing import Dict, List, Tuple
def makeKeyDict(items:List[Tuple]) -> Dict:
"Gives a list of tuples (a,b), returns a dict mapping a to set of b"
d = {}
for (a,b) in items:
d[a] = set([b]).union(d.get(a,set()))
return d
def findKeysWithMultipleValues(keydict) -> List:
@algal
algal / DataFrameFromMD5.py
Created Jul 28, 2020
Read file paths, names, hashes into a data frame
View DataFrameFromMD5.py
from fastai2.vision.all import * # to get L
import pandas as pd
def readMD5file(md5path:Path) -> pd.DataFrame:
"""
Generate MD5 output file by doing a search like:
find /home/jupyter/data/foldersToAdd/ -iname '*jpg' -print0 | xargs -0 -n 100 md5sum >> /home/jupyter/data/foldersToAdd.md5.out
@algal
algal / addWideMargins.bash
Created Jul 15, 2020
Add wide margins to a PDF for annotations
View addWideMargins.bash
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "usage: $0 PDF_filename..."
echo
echo "This script takes a PDF file as command line arguments,"
echo "and generates a new, landscape-formatted PDF file, where every "
echo "page has very large margins which may be useful for editorial notes"
echo
echo "Requires: pdfjam"
echo
@algal
algal / ReverseH2.swift
Last active Jun 22, 2020
Deno and Swift scripts to reverse H2 headers in text
View ReverseH2.swift
#!/usr/bin/swift
/*
Reads stdin, requiring UTF8-encoded text.
Parses it as initial text followed by a sequence of H2 markdown blocks.
Prints to stdout the initial text plus the H2 blocks in reversed order.
*/
import Foundation
@algal
algal / colorize-emacs.bashsource
Last active Sep 26, 2020
Setting up truecolor (24 bit color) in emacs in the terminal, under iTerm2
View colorize-emacs.bashsource
# sourcing this file will define a bash functions that
# tries to run subsequent calls to emacs with 24 bit color.
#
# It sets TERM to xterm-24bit if we're running in iTerm2
# and we've created a user-local terminfo record for xterm-24bit
#
# This will cause emacs to use 24 bit color only when it will work,
# inside or outside of tmux
#
# details: https://gist.github.com/XVilka/8346728
@algal
algal / fixssh-forwarding.el
Created Feb 20, 2020
Within emacs, fix ssh agent forwarding, which breaks in long-running tmux sessions
View fixssh-forwarding.el
;; The purpose of this file is to define the function `fixssh-in-tmux`,
;; which attempts to fix ssh agent forwarding when it breaks within
;; a tmux session
;; from https://github.com/magnars/s.el/blob/master/s.el
(defun fixssh--s-match (regexp s &optional start)
"When the given expression matches the string, this function returns a list
of the whole matching string and a string for each matched subexpressions.
If it did not match the returned value is an empty list (nil).
@algal
algal / California-time.bash
Created Oct 7, 2019
print the time in California, in RFC 2822 format
View California-time.bash
#!/bin/bash
# prints California time, on macOS or Ubuntu 18
exec env TZ='America/Los_Angeles' date -R
You can’t perform that action at this time.