Skip to content

Instantly share code, notes, and snippets.

Avatar

Quinn Comendant quinncomendant

View GitHub Profile
@quinncomendant
quinncomendant / post-receive
Last active Nov 29, 2022
Use this script as `deploy.git/hooks/post-receive` in a bare git repo (`git init --bare`) on a server to deploy application files with, e.g., `git push production main`.
View post-receive
#!/usr/bin/env bash
#
# git post-receive hook to deploy releases via git push.
#
# @see https://gist.github.com/quinncomendant/6605356f8e5db92e657902303f10aaf3
# @author Quinn Comendant <quinn@strangecode.com>
# @version 2022-09-21
# Config
sitedir="/path/to/deploy/location";
@quinncomendant
quinncomendant / cpu-threshold-alert-microsoft-edge
Last active Sep 18, 2022
Detect if Microsoft Edge has been using more than 90% CPU continuously.
View cpu-threshold-alert-microsoft-edge
#!/usr/bin/env bash
# Microsoft Edge on macOS sometimes will get stuck using 100% CPU endlessly, requiring a relaunch to stop.
# See issue at https://techcommunity.microsoft.com/t5/discussions/edge-browser-100-cpu-requires-force-quit-macos-mojave-and-v91-0/m-p/2441462/highlight/true#M48074
#
# This script will display a macOS notification if Microsoft Edge has been using more
# than 90% CPU continuously for more than 10 minutes. It only checks the main
# Microsoft Edge process, not the Microsoft Edge Helper processes.
#
# Save it to ~/bin/cpu-threshold-alert-microsoft-edge
View timezone-functions.php
<?php
/*
* Set timezone used internally by PHP. See full list at https://www.php.net/manual/en/timezones.php
*
* @access public
* @param string $tz Timezone, e.g., America/Mexico_City
* @return
* @author Quinn Comendant <quinn@strangecode.com>
* @since 28 Jan 2019 16:38:38
@quinncomendant
quinncomendant / convert-hms-to-s.php
Created Nov 2, 2021
Convert Period of Time values (e.g., 1h15m30s) to seconds. Converts all values in stdin and sends to stdout.
View convert-hms-to-s.php
#!/usr/bin/php
<?php
$content = trim(file_get_contents('php://stdin', 'r'));
preg_match_all('/\b((?:[\d]+h)?(?:[\d]+m)?(?:[\d]+s))\b/i', $content, $matches, PREG_PATTERN_ORDER);
foreach ($matches[1] as $PTtime) {
$start = new DateTime();
$end = clone $start;
$end->add(new DateInterval(sprintf('PT%s', strtoupper($PTtime))));
$elapsed = $end->getTimestamp() - $start->getTimestamp();
$content = preg_replace(sprintf('/\b%s\b/', $PTtime), $elapsed, $content);
@quinncomendant
quinncomendant / chrome-webstore-dl.sh
Created Feb 13, 2021
Downloads a chrome extension matching ExtensionID to ~/src/chrome-webstore-{ExtensionID}
View chrome-webstore-dl.sh
#!/usr/bin/env bash
#
# Quinn Comendant <quinn@strangecode.com>
# 29 Sep 2017 16:09:21
#
# Functions
#
@quinncomendant
quinncomendant / Autosave.js
Created Sep 3, 2019
Autosave module makes it easy to save and load form values in localStorage.
View Autosave.js
//
// Maintain state of form values across page loads with localStorage.
//
// eslint-disable-next-line no-unused-vars
var Autosave = (function ($) {
'use strict';
//
// Options
//
@quinncomendant
quinncomendant / qmail-queue-wrapper.pl
Created May 24, 2018
This is Peter Samuel’s script, adapted to prepend a X-AuthUser header for mail sent via mailchannels.com
View qmail-queue-wrapper.pl
#!/usr/bin/perl -w
#
# $Id: qmail-queue-wrapper.pl,v 1.3 2007/03/06 14:55:09 psamuel Exp $
#
# qmail-queue wrapper program.
#
# This program should be used when you wish to manipulate a mail
# message BEFORE it is placed in the queue. Possible uses include:
#
# - header rewriting
View Informal contractions.md

A list of contractions from divinewrite and a regex to find and eradicate the more unseemly from your documents (remember to use a case-insensitive search).

Regex to catch both the “least formal” and “less formal” contractions:

\b((could|how|might|must|should|that|what|when|where|why|would|it)n?['‘’](d|ll|re|ve)|why['‘’]s|we['‘’](d|re|ve|ll)|s?he['‘’](s|d|ll)|(where|how|when|who)['‘’](s)|(who|you|it)['‘’](d)|(they|who)['‘’](ll|ve)|(might|must)n['‘’]t|i'd)\b

Least formal

Regex to catch these:

@quinncomendant
quinncomendant / install-dnscrypt-proxy.md
Last active Jul 19, 2022
Instructions to install dnscrypt-proxy via Homebrew on macOS
View install-dnscrypt-proxy.md

Prevent DNS leaks on macOS by using dnscrypt-proxy. dnscrypt-proxy is available for installation via Homebrew, and comes configured to use OpenDNS servers. After installing, dnscrypt-proxy will always run in the background and encrypt all your DNS queries:

  1. Open Terminal.app (press Command+Space and type terminal and hit return).
  2. Run in Terminal app: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" and press enter/return key. Wait for the command to finish.
  3. Run in Terminal app: brew install dnscrypt-proxy and press enter/return key. Wait for the command to finish.
  4. Run a DNS leak test: click the Standard test and ensure all DNS servers are owned by opendns.com.
@quinncomendant
quinncomendant / Analytics.inc.php
Last active Sep 7, 2017
Class for server-side submission of data to Google Analytics
View Analytics.inc.php
<?php
/*
* Analytics.inc.php
*
* Class for server-side submission of data to Google Analytics.
* TODO: Would be better to save the request to a queue to process submissions in the background. Currently, requests are blocked until the POST to GA completes or timeout is reached.
*
* @author Quinn Comendant <quinn@strangecode.com>
* @version 1.0
* @since 24 Aug 2014 15:35:43