Skip to content

Instantly share code, notes, and snippets.

Tom McKenzie grrowl

Block or report user

Report or block grrowl

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
grrowl /
Created Oct 22, 2019 — forked from kura/
Updated version of - + Forwards a list of known ports from localhost to a host
if [[ $# -lt 2 ]]
echo "Usage: port-forward HOST REMOTE_PORT [LOCAL_PORT]";
grrowl /
Created Jan 11, 2019
Show AC wattage and battery drain (for bitbar)
# <bitbar.title>ac-wattage</bitbar.title>
# <bitbar.version>1.0</bitbar.version>
# <>Tom McKenzie</>
# <>grrowl</>
# <bitbar.desc>Shows the currently AC Charger wattage, if any.</bitbar.desc>
# Get SPPowerDataType
powerdata=$(system_profiler SPPowerDataType)
connected=$(echo "$powerdata" | grep 'Connected:' | awk 'END{print $2}')
View collect-windows.applescript
tell application "Finder"
-- get desktop dimensions (dw = desktop width; dh = desktop height)
set db to bounds of window of desktop
set {dw, dh} to {item 3 of db, item 4 of db}
end tell
tell application "System Events"
repeat with proc in application processes
tell proc
repeat with win in windows
grrowl / apache-plex-reverse-proxy.vhost
Created Jan 8, 2018 — forked from hazcod/apache-plex-reverse-proxy.vhost
Apache2 reverse proxy vhost configuration for Plex. Rerquires modules ssl, proxy, wstunnel
View apache-plex-reverse-proxy.vhost
ServerSignature Off
ServerTokens Prod
<VirtualHost *:80>
# This VirtualHost redirects everything to HTTPS on port 443.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
  • when should this compacter run?
    • every n actions added (compactEvery)
    • when history is at n length (highWaterMark, compactAtLength)
  • can the function signal when it should?
    • run the compacter every time
    • needs a private state (below) or
    • getCompacter({ n, highwater }) => compactingDispatcher()

we can compactingReducer, basically searches the last 50 actions for "stop" or

grrowl /
Last active Nov 20, 2016 — forked from christophermanning/
Voronoi Diagram with Force Directed Nodes and Delaunay Links

Created by Christopher Manning


Nodes are linked to nodes in neighboring cells. The cell's color is a function of its area.

The white lines are the Delaunay triangulation and the purple cells are the Voronoi diagram.


grrowl / Signature.js
Created Nov 19, 2016
React component to provide ed25519 key generation, signing and verification
View Signature.js
import React, { Component, PropTypes } from 'react'
import elliptic, { eddsa as EdDSA } from 'elliptic'
function toHex(arr) {
return elliptic.utils.toHex(arr).toUpperCase()
function fromHex(hex) {
return elliptic.utils.toArray(hex, 'hex')
grrowl /
Created Jun 2, 2016 <branch to review> [<base branch>]
if [ -z "$*" ]; then echo "Usage: [review branch] [case compare branch]"; exit 0; fi
echo "Checking out $REVIEW_BRANCH"
grrowl / githubDelayedMerge.user.js
Created May 10, 2016
GitHub: click anywhere on the "merge message" (with disabled button) and it'll wait until the button enables and click it for you.
View githubDelayedMerge.user.js
(function () {
function handleLoaded() {
var butan = document.querySelector('.merge-message .btn[disabled]')
var checkTimer;
if (butan) {
butan.parentElement.addEventListener('click', function handleClick(event) {
if (checkTimer) {
grrowl /
Created Apr 27, 2016
Google Docs script to automate Twitter posting
// source:
function autoTweet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("schedule"); // This must match the sheet name!
var rows = sheet.getRange("A:D").getValues();
var titleList = [], newValues = [],
response, doc, title;
var twitterCallback = function(rowIndex, err, result) {
You can’t perform that action at this time.