Skip to content

Instantly share code, notes, and snippets.

View quinncomendant's full-sized avatar

Quinn Comendant quinncomendant

View GitHub Profile
@quinncomendant
quinncomendant / Capabilities to Drive Improvement.md
Created August 3, 2024 18:27
Capabilities to Drive Improvement (Appendix A from “Accelerate: The Science of Lean Software and DevOps”)

Capabilities to Drive Improvement

Appendix A from Accelerate: The Science of Lean Software and DevOps

Continuous Delivery Capabilities

  1. Use version control for all production artifacts. Version control is the use of a version control system, such as GitHub or Subversion, for all production artifacts, including application code, application configurations, system configurations, and scripts for automating build and configuration of the environment.
  2. Automate your deployment process. Deployment automation is the degree to which deployments are fully automated and do not require manual intervention.
  3. Implement continuous integration. Continuous integration (CI) is the first step towards continuous delivery. This is a development practice where code is regularly checked in, and each check-in triggers a set of quick tests to discover serious regressions, which developers fix immediately. The CI process creates canonical builds and packages th
@quinncomendant
quinncomendant / post-receive
Last active May 13, 2023 05:14
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 deploy-production main`.
#!/usr/bin/env bash
#
# git post-receive hook to deploy releases via git push.
#
# @see https://gist.github.com/quinncomendant/6605356f8e5db92e657902303f10aaf3
# @author Quinn Comendant <[email protected]>
# @version 2023-05-12
# Config
sitedir="/path/to/deploy/location";
@quinncomendant
quinncomendant / cpu-threshold-alert-microsoft-edge
Last active September 18, 2022 14:40
Detect if Microsoft Edge has been using more than 90% CPU continuously.
#!/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
<?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 <[email protected]>
* @since 28 Jan 2019 16:38:38
@quinncomendant
quinncomendant / convert-hms-to-s.php
Created November 2, 2021 19:02
Convert Period of Time values (e.g., 1h15m30s) to seconds. Converts all values in stdin and sends to stdout.
#!/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 February 13, 2021 00:16
Downloads a chrome extension matching ExtensionID to ~/src/chrome-webstore-{ExtensionID}
#!/usr/bin/env bash
#
# Quinn Comendant <[email protected]>
# 29 Sep 2017 16:09:21
#
# Functions
#
@quinncomendant
quinncomendant / Autosave.js
Created September 3, 2019 07:55
Autosave module makes it easy to save and load form values in localStorage.
//
// 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 09:58
This is Peter Samuel’s script, adapted to prepend a X-AuthUser header for mail sent via mailchannels.com
#!/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

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 March 3, 2023 01:42
Instructions to install dnscrypt-proxy via Homebrew on macOS

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. If you don't already have Homebrew installed, install it by copy–pasting the following line in Terminal app and press enter/return key. Wait for the command to finish.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. Install dnscrypt-proxy by running:
brew install dnscrypt-proxy