Skip to content

Instantly share code, notes, and snippets.

View nackjicholson's full-sized avatar

Will Vaughn nackjicholson

View GitHub Profile
@nackjicholson
nackjicholson / toss.el
Last active August 31, 2021 18:18
T.O.S.S.
(defun toss ()
(/ (* (/ (/ (* complexity operating-cost)
work-to-turn-off)
1000.0)
(+ security-risk accountability-risk))
(* (/ active-users total-possible-users)
(* total-possible-users future-growth))))
;; CLUES 1.0
(let ((complexity 3.0)
@nackjicholson
nackjicholson / .zshrc
Last active October 13, 2020 00:10
My old vi keybindings ZSH Prompt config
bindkey -v
bindkey "^R" history-incremental-search-backward
# zle vi mode indication
# http://pawelgoscicki.com/archives/2012/09/vi-mode-indicator-in-zsh-prompt/
setopt PROMPT_SUBST
vim_ins_mode="-- INSERT --"
vim_cmd_mode=""
vim_mode=$vim_ins_mode
@nackjicholson
nackjicholson / hbase_trouble.org
Last active October 11, 2019 22:05
HBASE trouble

Restarting a dead service on a node

https://aws.amazon.com/premiumsupport/knowledge-center/restart-service-emr/

hbase regionserver logs were saying they were timing out talking to hdfs ports. This led us to a problem with the “datanode” service, and that above blog about restarting services is how we restarted that service.

Just looking through these will help to find what’s broken. var/logs tmp

"""
tkentrycomplete.py
A Tkinter widget that features autocompletion.
Created by Mitja Martini on 2008-11-29.
Updated by Russell Adams, 2011/01/24 to support Python 3 and Combobox.
Updated by Dominic Kexel to use Tkinter and ttk instead of tkinter and tkinter.ttk
Licensed same as original (not specified?), or public domain, whichever is less restrictive.
"""
@nackjicholson
nackjicholson / enhanced_json_encoder.py
Created June 9, 2019 04:52
json encoder for dataclass instances and enum and times.
class EnhancedJSONEncoder(json.JSONEncoder):
def default(self, o):
if is_dataclass(o):
return asdict(o)
if isinstance(o, Enum):
return o.name
if isinstance(o, time):
return o.strftime("%H:%M")
return super().default(o)
@nackjicholson
nackjicholson / events.py
Last active May 13, 2019 16:39
snippet of python to verify SNS signatures in flask app.
import json
import logging
from base64 import b64decode
from datetime import datetime, timezone
from urllib.request import urlopen
from M2Crypto import X509
from flask import Blueprint, request, jsonify
from werkzeug.exceptions import BadRequest, Unauthorized
@nackjicholson
nackjicholson / getf1db_howto.md
Last active November 17, 2018 20:41
Get the F1DB
brew install pgloader
brew install mysql@5.7
brew services start mysql@5.7
brew link mysql@5.7 --force

curl -LO http://ergast.com/downloads/f1db.sql.gz
gunzip -k f1db.sql.gz
@nackjicholson
nackjicholson / gist:acdd07215690dd093b45f838853a080c
Created November 12, 2018 00:09
single line string parse a csv
>>> import csv
>>> s = '"Yes, this line",can be, parsed as csv'
>>> list(csv.reader([s]))[0]
['Yes, this line', 'can be', ' parsed as csv']
>>>
@nackjicholson
nackjicholson / s3_utils.py
Last active January 7, 2023 14:26
s3 list paginator tricks.
import boto3
s3_client = boto3.client('s3')
def list_dirs(bucket, prefix):
""" Yield direct child folders of the given prefix.
"""
@nackjicholson
nackjicholson / retriable.py
Last active October 1, 2018 17:51
Retriable class decorator, which would allow declaration time AND runtime resetting of decorator properties.
import time
from functools import wraps, update_wrapper
def scaled_retries(attempts, sleeptime, sleepscale):
scaled_sleeptime = sleeptime
for attempt_no in range(attempts):
yield attempt_no + 1, scaled_sleeptime
scaled_sleeptime *= sleepscale