Skip to content

Instantly share code, notes, and snippets.

Dougal Campbell dougalcampbell

Block or report user

Report or block dougalcampbell

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@dougalcampbell
dougalcampbell / haproxy.cfg
Created Jun 15, 2018
Let's Encrypt renewal with haproxy
View haproxy.cfg
# The key bit is the 'bind' statement in the frontend
frontend https-in
# match the filename here to your $HAPCERTFILE
bind 10.0.0.1:443 ssl crt /etc/haproxy/certs/combined.pem
reqadd X-Forwarded-Proto:\ https
# acl, use_backend, and other statements...
acl srv_host_1 hdr(host) -i mydomain.com
@dougalcampbell
dougalcampbell / wxrsplit.pl
Created Mar 1, 2016
A perl script to split WordPress WXR export files into multiple, smaller files
View wxrsplit.pl
#!/usr/bin/perl -w
#
# wxrsplit - Split a WordPress WXR file into multiple output files, each
# with a maximum filesize.
#
# NOTE: Because this tool attempts to keep items intact within each output
# file, it is possible to exceed the specified max filesize. Comments are
# contained within a post item, so a post with many comments could
# conceivably generate a very large item size. There probably is not a
# practical way around this.
@dougalcampbell
dougalcampbell / .bashrc
Created Feb 15, 2016
Set terminal title in bash
View .bashrc
# set title of current terminal
function _set_term_title() {
echo -ne "\033]0;${1}\007"
}
alias trmtitle=_set_term_title
@dougalcampbell
dougalcampbell / multilinestrings.js
Created Jul 30, 2014
Multiline strings in JavaScript
View multilinestrings.js
/**
* See: https://github.com/isaacs/node-tap/blob/master/bin/tap.js#L65
*/
console.log({/*
This is a multiline string.
That is, a single string, spread out over many lines,
without the need to escape quotes or end-of-line
characters.
@dougalcampbell
dougalcampbell / keybase.md
Last active Sep 15, 2019
Keybase verification
View keybase.md

Keybase proof

I hereby claim:

  • I am dougalcampbell on github.
  • I am dougalcampbell (https://keybase.io/dougalcampbell) on keybase.
  • I have a public key whose fingerprint is 9692 F34E 074B 52B9 919F 9180 A9A9 336D F0C4 0C65

To claim this, I am signing this object:

@dougalcampbell
dougalcampbell / toType.js
Created Dec 10, 2013
Really get an object's type in JavaScript
View toType.js
function toType(obj) {
var systype = ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1];
if (systype === "Object") {
/**
* See if this is a custom user type, a la:
* function Foo() {}
* foo = new Foo();
* toType(foo); // returns "Foo"
* toType(Foo); // returns "Function"
*/
@dougalcampbell
dougalcampbell / tabifytextareas.js
Created Nov 12, 2013
Bookmarklet: allow tabs in textareas (requires jQuery) Create a toolbar bookmark with this code. Click it when you want to be able to use tabs in a textarea.
View tabifytextareas.js
javascript:$(document).delegate('textarea', 'keydown', function(e) { var keyCode = e.keyCode || e.which; if (keyCode == 9) { e.preventDefault(); var start = $(this).get(0).selectionStart; var end = $(this).get(0).selectionEnd; $(this).val($(this).val().substring(0, start) + "\t" + $(this).val().substring(end)); $(this).get(0).selectionStart = $(this).get(0).selectionEnd = start + 1; }});void(0);
@dougalcampbell
dougalcampbell / NeoPixelTest.ino
Created Oct 31, 2013
Example of driving an Adafruit NeoPixel Ring with the Digispark Arduino-compatible board
View NeoPixelTest.ino
#include <Adafruit_NeoPixel.h>
#define PIN 1
#define STRIPSIZE 16
// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
@dougalcampbell
dougalcampbell / ds-duino.ino
Created Sep 10, 2013
Digispark and nodejs - talking to the Digispark Arduino-compatible microcontroller via USB with the node-hid library
View ds-duino.ino
/*
* Accept control commands via USB.
*
* Commands start with '!' and end with '.'
* Commands have three parts: action, pin, value: !AAPPVV.
*
* E.g. '!01p101.' is DigitalWrite, Pin1, value = 1
*
* Note: This is currently *very* crude. Much improvement could be made.
* I think the use of strncpy is eating a lot of memory. Refactor?
@dougalcampbell
dougalcampbell / hsl2rgb
Last active Dec 22, 2015
For future reference... The W3C-suggested algorithm for converting HSL color to RGB. In the funky ABC pseudo-code. http://www.w3.org/TR/2011/REC-css3-color-20110607/#hsl-color
View hsl2rgb
HOW TO RETURN hsl.to.rgb(h, s, l):
SELECT:
l<=0.5: PUT l*(s+1) IN m2
ELSE: PUT l+s-l*s IN m2
PUT l*2-m2 IN m1
PUT hue.to.rgb(m1, m2, h+1/3) IN r
PUT hue.to.rgb(m1, m2, h ) IN g
PUT hue.to.rgb(m1, m2, h-1/3) IN b
RETURN (r, g, b)
You can’t perform that action at this time.