Skip to content

Instantly share code, notes, and snippets.

View johncmunson's full-sized avatar

John Munson johncmunson

View GitHub Profile
View prepare-commit-msg.sh
#!/bin/bash
#
# Inspects branch name and checks if it contains a Jira ticket number (i.e. ABC-123).
# If yes, commit message will be automatically prepended with [ABC-123].
#
# Useful for looking through git history and relating a commit or group of commits
# back to a user story.
#
View asyncRetry.js
const getRandomBool = () => Math.random() >= 0.5
const getJitterMultiplier = (min: number, max: number): number => {
const percent = (Math.random() * (max - min) + min) / 100
return getRandomBool() ? 1 + percent : 1 - percent
}
const asyncRetry = async (fn, opts = {}) => {
const defaultOpts = { retries: 5, interval: 100, exponential: false, jitter: false }
opts = { ...defaultOpts, ...opts }
@johncmunson
johncmunson / accumulatedDebounce.js
Created July 28, 2020 17:57
Debounce a function, with the option to accumulate args
View accumulatedDebounce.js
export function debounce(delay, callback, accumulateData) {
let timeout = null
let data = []
return function () {
if (accumulateData) {
const arr = []
for (let i = 0; i < arguments.length; ++i) {
arr.push(arguments[i])
}
data.push(arr)
View 2020-07-28.zshrc
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH="/Users/epzio/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
View elm-language-client-vscode-error-output.txt
[Info - 2:32:46 PM] Loading Elm tree-sitter syntax from ../.vscode/extensions/elmtooling.elm-ls-vscode-0.10.2/server/out/tree-sitter-elm.wasm
[Info - 2:32:47 PM] Found 1 elm.json files for workspace /Users/epzio/PhotoGroove
[Info - 2:32:47 PM] Found 1 unique elmWorkspaces for workspace /Users/epzio/PhotoGroove
[Info - 2:32:47 PM] Starting language server for folder: file:///Users/epzio/PhotoGroove
[Info - 2:32:47 PM] Elm version 0.19.1 detected.
[Info - 2:32:47 PM] Reading elm.json from /Users/epzio/PhotoGroove/elm.json
[Info - 2:32:47 PM] 2 source-dirs and test folders found
[Info - 2:32:47 PM] Found 35 files to add to the project
[Info - 2:32:47 PM] Adding /Users/epzio/PhotoGroove/src/PhotoGroove.elm
[Info - 2:32:47 PM] Adding /Users/epzio/.elm/0.19.1/packages/elm/browser/1.0.2/src/Browser.elm
View ternarySwitchAssignment.js
// Sometimes we do cool stuff like this...
let tacoType = hasQueso ? 'supreme' : 'normal'
// Or this in our markup...
`ng-class="isActive && 'md-primary'"`
// Or this to set default values...
this.color = config.color || 'blue'
// Sometimes though we'd like to have more
@johncmunson
johncmunson / promise-concurrency.js
Created September 27, 2019 16:09
Throttling concurrent API calls
View promise-concurrency.js
const pMap = require('p-map')
const Chance = require('chance')
const chance = new Chance()
const userIds = [ 52, 84, 71, 66, 12, 39, 18, 99, 7, 48 ]
// Simulate a network call
const getUser = async (id) => {
await new Promise(resolve => setTimeout(resolve, 1000))
@johncmunson
johncmunson / app.js
Created February 8, 2018 07:28 — forked from hagino3000/app.js
JSON-RPC for node (express)
View app.js
/**
* Module dependencies.
*/
var express = require('express');
var rpcMethods = require('./methods.js');
var app = module.exports = express.createServer();
// Configuration
@johncmunson
johncmunson / import-export-snippets.cson
Created February 16, 2017 09:11
Import/Export snippets
View import-export-snippets.cson
'default import':
'prefix': 'impDefault'
'body': 'import ${1:defaultMember} from \'${2:module-name}\''
'named import':
'prefix': 'impNamed'
'body': 'import { ${1:namedMember} } from \'${2:module-name}\''
'export default':
'prefix': 'expDefault'
'body': 'export default ${1:name}'
'export':
@johncmunson
johncmunson / snippet-snippet.cson
Created February 16, 2017 09:09
A snippet for quickly creating other snippets.
View snippet-snippet.cson
'snippet block':
'prefix': 'snippet'
'body': """
\'${1:Snippet Name}\':
\'prefix\': \'${2:Snippet Shortcut}\'
\'body\': \'${3:Snippet}\'
"""