Skip to content

Instantly share code, notes, and snippets.

View gavinblair's full-sized avatar

Gavin Blair gavinblair

View GitHub Profile
@gavinblair
gavinblair / post.md
Created November 28, 2013 16:11
QRapt
@gavinblair
gavinblair / post.md
Last active December 29, 2015 15:59
qrpong
@gavinblair
gavinblair / post.md
Created November 27, 2013 17:52
gifmirror
@gavinblair
gavinblair / post.md
Last active December 29, 2015 13:29
gifparty

gifparty

A gifparty is something I just made up right now. I guess it's like a youtube party, but with gifs.

This app will pull in gifs from a Google spreadsheet, display each for 10 seconds. It continually checks the spreadsheet for updates and adds new gifs to the end of the queue.

Make your own gifparty

@gavinblair
gavinblair / post.md
Last active December 29, 2015 13:29
PenEquity Woodland Vote

DeForest City?

City Council voted August 27th, 2013 on whether to clear a woodland to build a mall (they voted YES). Before the vote, I attempted to raise some awareness about the issue by building PenEquity Woodland Vote - it uses an Open Council API to turn your address into the correct Ward number, then compares it to a spreadsheet that knows which councillor is planning on voting YES or NO.

Technology used:

PenEquity Woodland Vote

@gavinblair
gavinblair / plugin.js
Created November 22, 2013 16:04
Pattern for creating a JavaScript plugin, from http://codereview.stackexchange.com/a/21147
(function(ns){
//private scoping
var privVar = '...';
function priv(){...}
//expose a function
ns.myFunc = function(){...};
}(this.myLib = this.myLib || {}));
@gavinblair
gavinblair / gist:7344513
Created November 6, 2013 21:35
domain access - add this after the $databases settings in sites/default/settings.php
/**
* Add the domain module setup routine.
*/
include DRUPAL_ROOT . '/sites/all/modules/domain/settings.inc';
@gavinblair
gavinblair / currentfunction.py
Created October 9, 2013 20:32
Sublime Text plugin to display the current function in the status bar. I put it in %APPDATA%/Sublime Text 2/Packages/currentfunction/
import sublime, sublime_plugin
class FunctionInStatusListener(sublime_plugin.EventListener):
def on_deactived(self, view):
view.erase_status('function name')
def on_close(self, view):
view.erase_status('function name')
@gavinblair
gavinblair / gruntfile.js
Created October 3, 2013 19:01
gruntfile.js so far
module.exports = function(grunt){
var theme = 'mytheme';
var timestamp = grunt.template.today("yyyymmddhMMss");
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today() %> */\n'
},
build: {
@gavinblair
gavinblair / gist:6212885
Last active December 20, 2015 23:29
Open Council Strike Force

Open Council

Are you interested in bringing transparency to our city council?

The Project

When it comes to voting time, the only information most people have to help make their decision is what the politicians say about themselves and each other. This is not ideal, because the average citizen neither trusts politicians, nor has access to the information that they can use to make informed decisions.

Open Council will make council proceedings readily available to citizens, hopefully moving them to contact city council members with their thoughts, and make more informed choices when voting in municipal elections. This includes: