Skip to content

Instantly share code, notes, and snippets.

@duggan
duggan / Code.gs
Created March 6, 2021 15:03
Google Apps Script to check whether a HTTP endpoint is available, send a notification to an email address, and silence after three consecutive mails. A notification is also sent when the service becomes available again.
View Code.gs
var properties = PropertiesService.getScriptProperties();
var service = "MyService"
var url = "http://example.com";
var email = "you@gmail.com";
function parseDate(date_string) {
return new Date(Date.parse(date_string)).toISOString();
}
@duggan
duggan / hacker.py
Created May 23, 2019 11:26
Hacker Sangiovese 2018
View hacker.py
#!/usr/bin/env python3
import binascii
content = ''
with open('hacker.txt') as f:
content = f.read().splitlines()
line = ''.join(content)
n = 8
lines = [line[i:i+n] for i in range(0, len(line), n)]
@duggan
duggan / glow.ino
Created October 20, 2017 13:12
Arduino. Fading an LED in and out to produce a glow effect via the PWM pins.
View glow.ino
/* Fading an LED in and out to produce a glow effect
via the PWM pins.
*/
int timer = 10;
int pin = 3;
int val = 0;
void setup(){
pinMode(pin, OUTPUT);
@duggan
duggan / controller.py
Created October 19, 2017 18:36
Radio Gate Controller
View controller.py
import signal
import time
import logging
import RPi.GPIO as GPIO
from collections import deque
from threading import Thread, Lock, Event
from twilio.rest import Client
from blink1_pyusb import Blink1
DRY_RUN = True
@duggan
duggan / configure.sh
Created February 3, 2017 16:13
A shell script for configuring Mesos/Storm via environment variables in Docker
View configure.sh
#!/usr/bin/env bash
#
# Write a Storm configuration from environment variables.
#
# Environment variables namespaced with `MESOS_STORM_`
set -o errexit
set -o nounset
@duggan
duggan / pre-commit
Last active December 19, 2016 15:32 — forked from hartfordfive/pre-commit
Git pre-commit hook to validate JSON files
View pre-commit
#!/bin/bash
# Comments:
# 1. You must add execution rights to this file (chmod u+x pre-commit)
# 2. You need to have the 'jq' package installed to parse the json
if [ "$(command -v jq )" == "" ] ; then
echo "jq required for pre-commit hook $0"
exit 1
fi
View barricade.config
files:
"/tmp/barricade.sh" :
mode: "000700"
owner: root
group: root
source: <Your Barricade install.sh URL>
"/opt/elasticbeanstalk/tasks/taillogs.d/barricade.conf" :
mode: "000755"
owner: root
@duggan
duggan / Podcache.md
Last active December 22, 2015 17:47
Back up podcasts with metadata from a feed URL. Progress indicator and resuming.
View Podcache.md

Podcache

Back up podcasts with metadata from a feed URL. Progress indicator and resuming. Hacky, only really tested against FeedBurner/libsyn feeds.

When you run it, you get a directory named after the podcast with a list of mp3 files and metadata.json files.

tree /mnt/backups/podcast/
/mnt/backups/podcast/
@duggan
duggan / inventory.py
Created October 12, 2015 15:01
Present Terraform tfstate data as an Ansible inventory
View inventory.py
#!/usr/bin/env python
import sys
import os
import json
import argparse
import collections
__description__ = """Ansible Dynamic Inventory for Terraform."""
__epilog__ = """
@duggan
duggan / purge.py
Last active August 29, 2015 14:25
Delete bucket objects and remove them from CloudFlare's cache, parallellised on prefixes.
View purge.py
#!/usr/bin/env python
"""
Depends on boto and pyflare (install with `pip install boto pyflare`).
usage: purge.py [-h] -b BUCKET [-p PREFIX] -z ZONE [-d]
Parallellized S3 object and CloudFlare cache purger.
optional arguments:
-h, --help show this help message and exit