Skip to content

Instantly share code, notes, and snippets.


Graeme Yeates megawac

  • Clearpath Robotics
  • Waterloo, Ontario
View GitHub Profile
megawac /
Created Jan 16, 2018
megawac / board-solver.js
Last active Jul 27, 2016
rough sudo code for emkay
View board-solver.js
function checkSquare(matrix, i, j) {
return columnValid(matrix, i) && rowValid(matrix, j)
function solvePuzzle(boardMatrix) {
(i, j) = selectFirstUnfilled(boardMatrix)
matrix = boardMatrix.clone()
matrix[i, j] = red
megawac / hack-debounce.js
Created Jun 29, 2015
log if debounce isn't called
View hack-debounce.js
function hackyDebounce(func, wait, options) {
var called = false;
var debounced = _.debounce(function() {
called = true;
func.apply(this, arguments);
}, wait, options);
return function() {
debounced.apply(this, arguments);
if (!called) {
console.log("It wasn't called");
from twisted.internet import reactor
from twisted.web.server import Site
from twisted.web.resource import Resource
import json, hmac
from hashlib import sha1
from blinker import signal
class WebhookServer(Resource):
megawac / .travis.yml
Created May 5, 2015
NIM travis.yml file
View .travis.yml
language: C
- gcc
# Install nim
- git clone -b master git:// --depth 1
- cd Nim
- git clone -b master --depth 1 git://
- cd csources && sh
- cd ..
megawac /
Created Feb 7, 2015
marionette-travis script
npm install -g grunt-cli
npm install
npm dedupe
if [[ -n "$UNDERSCORE" ]]
npm install underscore@"$UNDERSCORE"
View sort-index.js
function sortedIndex(array, value, iterator, pivot) {
var low = 0,
high = array.length,
target = iterator(value);
while (low - pivot < high) {
var mid = (((low + high) >>> 1) + pivot) % array.length;
if (iterator(array[mid]) < target) low = mid + 1;
else high = mid;
return low;
View index.html
<!DOCTYPE html>
<link href="//" rel="stylesheet" type="text/css" />
<script src="//"></script>
<meta charset="utf-8">
<title>JS Bin</title>
<div id="qunit"></div>

Javascript log Function

Every time I start a new project, I want to pull in a log function that allows the same functionality as the console.log, including the full functionality of the Console API.

There are a lot of ways to do this, but many are lacking. A common problem with wrapper functions is that the line number that shows up next to the log is the line number of the log function itself, not where log was invoked. There are also times where the arguments get logged in a way that isn't quite the same as the native function.

This is an attempt to once and for all document the function that I pull in to new projects. There are two different options:

  • The full version: Inspired by the plugin in HTML5 Boilerplate. Use this if you are writing an application and want to create a window.log function. Additionally,
megawac / gist:8355978
Last active Jan 2, 2016
IE textNode throws error
View gist:8355978

So far I've tested this in

IE 10 win8
IE 9 win7
IE 8 emulated by IE9 win7

Consider the following:

var x = document.createElement('div');