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 / 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 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
dougalcampbell /
Created Mar 1, 2016
A perl script to split WordPress WXR export files into multiple, smaller files
#!/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 / .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 / multilinestrings.js
Created Jul 30, 2014
Multiline strings in JavaScript
View multilinestrings.js
* See:
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
dougalcampbell /
Last active Sep 20, 2019
Keybase verification

Keybase proof

I hereby claim:

  • I am dougalcampbell on github.
  • I am 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 / toType.js
Created Dec 10, 2013
Really get an object's type in JavaScript
View toType.js
function toType(obj) {
var systype = ({})\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 / 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 / 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 / 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 / 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.
View hsl2rgb
l<=0.5: PUT l*(s+1) IN m2
ELSE: PUT l+s-l*s IN m2
PUT l*2-m2 IN m1
PUT, m2, h+1/3) IN r
PUT, m2, h ) IN g
PUT, m2, h-1/3) IN b
RETURN (r, g, b)
You can’t perform that action at this time.