Skip to content

Instantly share code, notes, and snippets.

View hamishcampbell's full-sized avatar
🚀
rockets

Hamish Campbell hamishcampbell

🚀
rockets
View GitHub Profile
@hamishcampbell
hamishcampbell / gist:62d4fd39cc231dfcaf66b5390a12fe35
Created May 12, 2020 10:23
QGIS Geometry Generator expression to approximate rock outcroppings
with_variable(
'segment_len',
11, -- the length of each segment
collect_geometries(
array_foreach(
generate_series(
0, length(boundary($geometry)) - @segment_len, @segment_len
),
with_variable('offset_inner',
offset_curve(
@hamishcampbell
hamishcampbell / description.txt
Created March 13, 2019 00:41
Mostly Geocoded NZ Pokie Machine Locations December 2018
Pokie machies by location (Dec 2018), CC-BY DIA NZ from:
https://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Resource-material-Information-We-Provide-All-Venues-and-Numbers-by-Territorial-AuthorityDistrict
Geocoded with addy.co.nz 13th March 2019 by Hamish Campbell
There are a few unfound addresses and no manual checking of other results has been done.
@hamishcampbell
hamishcampbell / SoT2015.md
Created August 7, 2015 23:03
SoT Hackfest API Suff

SoT Hackfest Auckland 2015

Welcome! This is a brief, opinionated guide to getting started building a browser-based web app with RESTful APIs. The intention is to provide a starting point for building stuff for SoT Hackfest 2015, and provides just one approach. It is not the only approach, nor is it necessarily the best approach for a production system, but it's a good way to jumpstart your hack.

Useful references

@hamishcampbell
hamishcampbell / keybase.md
Created December 15, 2014 22:38
Keybase proof

Keybase proof

I hereby claim:

  • I am hamishcampbell on github.
  • I am polemic (https://keybase.io/polemic) on keybase.
  • I have a public key whose fingerprint is DAD5 7EEC 292E 8C9E B5DA 3CF8 63D3 ADE1 5625 3865

To claim this, I am signing this object:

@hamishcampbell
hamishcampbell / polyomino-obfus.py
Created September 7, 2013 01:35
Highly readable Polyomino solution
import sys, itertools
class Polyomino(tuple):
def __hash__(_):return(getattr(_,'',''))or[setattr(_,'',setattr(_,'_',map(min,zip(
*(setattr(_,'p',_.__class__((c[1],m-c[0]-1)for(c)in(_.p))if'p'in(_.__dict__)else(_))
or(getattr(_,'p'))))))or(min(getattr(_,'',hash(tuple(sorted(setattr(_,'p',_.__class__(
[(x-_._[0],y-_._[1])for(x,y)in(_.p)])if(_._[0]or(_._[1]))else(_.p))or(_.p))))),
hash(tuple(sorted(_.p))))))for(m)in(itertools.repeat(max(max(_,key=max)),4))]and(getattr(_,''))
def __eq__(*_):return(1&len(set(map(hash,_))))
def __call__(_,__):return[_.__class__(((__,__),))]if(not(1%__))else(set(itertools.chain(*[set([_.__class__
(_+tuple([a]))for(a)in(set((c[0]+x,c[1]+y)for(c,(x,y))in(itertools.product(
@hamishcampbell
hamishcampbell / polyomino.py
Created September 6, 2013 23:26
Polyomino Reference Source - PyCon 2013
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import sys
class Polyomino(object):
def __init__(self, iterable):
self.squares = tuple(sorted(iterable))
def __repr__(self):
@hamishcampbell
hamishcampbell / sha.js
Last active December 18, 2015 13:59 — forked from wombleton/sha.js
console.log(require('crypto').createHash('sha1').update('blob 14\0Hello, World!').digest('hex'));
$> d4fcfe4d339d4e59d168fdf3c0ad445fa980a7d6
@hamishcampbell
hamishcampbell / gist:4133562
Created November 23, 2012 01:20
Dojo 1.8 / AMD Style Gmaps Loader
/**
* Dojo AMD Google Maps Loader Plugin
*/
define([
"dojo/_base/kernel",
"dojo/topic"
], function(kernel, topic) {
var w = kernel.global;
w._googleApiLoadCallback = function() {
@hamishcampbell
hamishcampbell / polyomino.py
Created June 28, 2012 21:55
Polyomino Solver
# -*- coding: utf-8 -*-
#!/usr/bin/env python
"""Finds n-order Polyominos
https://en.wikipedia.org/wiki/Polyomino
Hamish Campbell <hn.campbell@gmail.com>
http://polemic.net.nz
License: CC-BY 2012, use it for good, not for evil.
"""
@hamishcampbell
hamishcampbell / gist:912757
Created April 10, 2011 21:45
Quick PHP timezone juggling example.
<?php
$timezoneAuckland = new DateTimeZone('Pacific/Auckland');
$timezoneHelsinki = new DateTimeZone('Europe/Helsinki');
$currentTime = new DateTime('now', $timezoneAuckland);
$helsinkiTime = new DateTime('now', $timezoneHelsinki);
printf(
"It is currently %s <br>",
$currentTime->format(DateTime::RSS)
);