Skip to content

Instantly share code, notes, and snippets.

View thraxil's full-sized avatar

Anders Pearson thraxil

View GitHub Profile
View Jenkinsfile
// Sandbox approvals that you will need (at least):
// staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods plus java.lang.Object[]
// staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.lang.Iterable int
// java.lang.Object[]
// staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods plus java.util.List java.lang.Object
// check for required parameters. assign them to the env for
// convenience and make sure that an exception is raised if any
// are missing as a side-effect
View lecleaner.py
#!/usr/bin/env python3
import os.path
import os
from datetime import datetime, timedelta
from pathlib import Path
BASE = "/etc/letsencrypt/"
View intro.md

I'm originally from Maine (for non-Americans, that is the very Northeastern tip of the US. Basically Canada. Americans will naturally associate it with Lobsters, Potatoes, and Stephen King). My parents were serious hippies who got into the "homesteading" movement and built a log cabin in the middle of the woods. So my early childhood was spent with no electricity or running water miles from the nearest neighbors. We eventually rejoined civilization and I mostly grew up in the small town of Dexter, but finished high school even further north at the Maine School of Science and Mathematics. I went to Bates College (a small liberal arts school still in Maine) majoring in

View keybase.md

Keybase proof

I hereby claim:

  • I am thraxil on github.
  • I am thraxil (https://keybase.io/thraxil) on keybase.
  • I have a public key ASDrIp2mKRBpb-cdXfc2ndFlG_wewh1wKr-f5yLI59aNuwo

To claim this, I am signing this object:

@thraxil
thraxil / yearly.go
Created January 2, 2018 16:37
yearly music link script
View yearly.go
package main
import (
"bufio"
"fmt"
"log"
"os"
"strings"
"github.com/thraxil/bcscrape"
View layout.cpp
void ofApp::draw(){
ofSetColor(ofColor::white);
ofNoFill();
const int size = 20;
const int qs[7] = {0, 1, -1, 0, 1, -1, 0};
const int rs[7] = {-1, -1, 0, 0, 0, 1, 1};
for (int i = 0; i < 7; i++) {
int q = qs[i];
View wardenclyffe.diag
{
browser -> mediathread [label = "GET /explore/redirect?..."];
browser <-- mediathread [label = "302 Location: http://wardenclyffe/mediathread/?..."];
browser -> wardenclyffe [label = "GET /mediathread/?nonce=..uni=.."];
wardenclyffe => wardenclyffe [label = "check credentials"];
wardenclyffe -> postgresql [label = "get/create user/session"];
wardenclyffe <-- postgresql [label = "user/session"];
browser <-- wardenclyffe [label = "upload form"];
browser -> wardenclyffe [label = "POST /mediathread w/ video file"] {
View pillar_update.py
#!/usr/bin/env python
import json
import os
import subprocess
import tempfile
import yaml
VAULT_BIN = "/usr/local/bin/vault"
VAULT_PATH = "secret/salt/pillar_data"
View ctl.markdown

The CTL Surveillance State

(for servers and applications)

Metrics and Monitoring at CTL

Once upon a time, we had a couple Dell servers living in the Mezzanine. All of our applications just ran on them.

We had a wiki page to keep track of which applications were running on which server, etc. the "Master Server Grid":