Skip to content

Instantly share code, notes, and snippets.

@duggan
duggan / Code.gs
Created Mar 6, 2021
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
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 Oct 20, 2017
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 Oct 19, 2017
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 Feb 3, 2017
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 Dec 19, 2016 — 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 Dec 22, 2015
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 Oct 12, 2015
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 Aug 29, 2015
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