Skip to content

Instantly share code, notes, and snippets.

View bremac's full-sized avatar

Brendan MacDonell bremac

  • Sight Machine
  • San Francisco, California
View GitHub Profile
@bremac
bremac / ideas.coffee
Created May 30, 2011 13:47
Hal-baked ideas on Injectors. All legal but unusual coffee-script
inspect = (o) ->
alert(JSON.stringify(o))
# GWT-style module injection
class Module
constructor: (m) ->
@extend(m)
extend: (m) ->
for k, v of m
@bremac
bremac / tpl.js
Created July 8, 2011 14:35
Minimal template processor in JS.
var template = function(ctx, tpl) {
var accum = [], idx = 0;
while (true) {
var start = tpl.indexOf('{{', idx);
if (start < 0) break;
var end = tpl.indexOf('}}', start);
if (end < 0) break;
var str = tpl.slice(start+2, end);
@bremac
bremac / handlers.py
Created January 20, 2012 00:23
Django Piston Example
from piston.handler import BaseHandler
from models import Apple
class AppleHandler(BaseHandler):
exclude = () # Ensure that the ID is shown.
allowed_methods = ('GET', 'POST', 'PUT', 'DELETE')
model = Apple
@bremac
bremac / workerqueue.py
Created March 12, 2012 06:52
Handling client requests with workers using gevent
import gevent
from gevent.event import AsyncResult
import gevent.pool
import gevent.queue
class WorkerQueue(object):
def __init__(self):
self.group = gevent.pool.Group()
self.q = gevent.queue.Queue()
@bremac
bremac / _tags
Created October 12, 2013 07:03
Logical expression evaluator in OCaml
true: use_menhir
@bremac
bremac / captive-network.sh
Last active February 3, 2018 23:45
Captive demonstration network for IPSec using Linux network namespaces.
#!/bin/bash
# USAGE:
# captive-network <setup|pingall|xterms|restart|teardown>
#
# captive-network setup create the topology
# captive-network pingall check connectivity between nodes
# captive-network xterms launch one terminal per node
# captive-network restart delete and recreate the topology
# captive-network teardown delete the topology
@bremac
bremac / pyemailping.py
Created September 15, 2014 01:32
Check an email address in python
#!/usr/bin/python
import smtplib
import dns.resolver
def get_mx_records(domain):
try:
records = dns.resolver.query(domain, "MX")
preferred = sorted(records, key=lambda r: r.preference)
@bremac
bremac / timezone-safety.diff
Created October 3, 2014 01:07
One approach to timezone safety issues in pg_partman
diff --git a/sql/functions/apply_constraints.sql b/sql/functions/apply_constraints.sql
index 4afaa83..c0c5303 100644
--- a/sql/functions/apply_constraints.sql
+++ b/sql/functions/apply_constraints.sql
@@ -3,6 +3,7 @@
*/
CREATE FUNCTION apply_constraints(p_parent_table text, p_child_table text DEFAULT NULL, p_analyze boolean DEFAULT TRUE, p_debug boolean DEFAULT FALSE) RETURNS void
LANGUAGE plpgsql
+ SET timezone = 'UTC'
AS $$
@bremac
bremac / PKGBUILD
Last active August 29, 2015 14:13
xfstk PKGBUILD
# Maintainer: Artem Grunichev <[email protected]>
# Contributor: Brendan MacDonell <[email protected]>
pkgname=xfstk
pkgver=1.7.3
pkgrel=2
pkgdesc="Updater for Intel SoC firmware over USB using the DNX protocol"
arch=('i686' 'x86_64')
url="http://xfstk.sourceforge.net"
license=('LGPL')
@bremac
bremac / netem.sm
Last active October 2, 2015 20:44
Throttle a single port to emulate a bandwidth-constrained network
#!/bin/sh -eux
iface=lo
host=127.0.0.1/32
port=80
netem_rule="delay 150ms 10ms loss 0.5%"
upstream_rule="rate 500kbit"
downstream_rule="rate 2mbit"
upstream=1:11