Skip to content

Instantly share code, notes, and snippets.

View jondlm's full-sized avatar

Jon de la Motte jondlm

  • Stripe
  • Portland, OR
View GitHub Profile
@jondlm
jondlm / find-up-module.bash
Created July 27, 2022 21:47
little script to debug node module resolution
#!/usr/bin/env bash
if [ -z "$1" ]; then
echo 'first arg should be module to search up for'
exit 1
fi
BLUE=$(tput setaf 4)
GREEN=$(tput setaf 2)
RED=$(tput setaf 1)
@jondlm
jondlm / diff_recursive.php
Last active July 18, 2021 02:37
Recursive array diff php
<?php
/*
* Recursively diff two arrays. This function expects the leaf levels to be
* arrays of strings or null
*/
function diff_recursive($array1, $array2) {
$difference=array();
foreach($array1 as $key => $value) {
if(is_array($value) && isset($array2[$key])){ // it's an array and both have the key
$new_diff = diff_recursive($value, $array2[$key]);
@jondlm
jondlm / kdebug.bash
Last active February 20, 2019 09:24
Kubernetes Fuzzy Helper Scripts
#!/usr/bin/env bash
# vim: set syntax=sh:
set -e
if ! hash kubectl 2>/dev/null; then echo "Please install \`kubectl\` before running this command (https://kubernetes.io/docs/tasks/tools/install-kubectl/)"; exit 1; fi
if ! hash fzf 2>/dev/null; then echo "Please install \`fzf\` before running this command (https://github.com/junegunn/fzf#installation)"; exit 1; fi
selection=`kubectl get pods --all-namespaces | grep -v 'NAMESPACE' | fzf --header "Select a pod..."`
namespace=`echo "$selection" | awk '{ print $1 }'`
pod=`echo "$selection" | awk '{ print $2 }'`
@jondlm
jondlm / README.md
Last active January 3, 2018 05:59
React shallow render lifecycle breakdown

React introduced shallow rendering in 0.13. This is an excellent feature that I wish was included earlier in React. It aims to solve the problem of unit testing components without going through a real, or jsdom mocked, DOM. I couldn't find any info online about what lifecycle events it actually fires. So I did some testing of my own. To reproduce, put component.js and test.js into a folder and run node test.js.

TLDR; shallow rendering only invokes the following lifecycle hooks (in order):

  1. getDefaultProps
  2. getInitialState
  3. componentWillMount stops here until re-render
  4. componentWillReceiveProps
  5. shouldComponentUpdate
  6. componentWillUpdate
@jondlm
jondlm / ensure-outlook.bash
Created December 18, 2017 18:34
Somtimes I forget to open Outlook in the morning, this helps as a cron task
#!/usr/bin/env bash
# vim: set syntax=sh
ps aux | grep -v "grep" | grep "Microsoft Outlook" > /dev/null
outlook_ret=$?
day=`date +%u`
# Make sure it's a weekday and Outlook is running
if [ "$day" -ge 1 -a "$day" -le 5 -a "$outlook_ret" -gt 0 ]; then
osascript -e 'display notification "Please start Outlook" with title "Nag Bot"'
@jondlm
jondlm / xmodmap.md
Last active September 13, 2017 12:57
Xmodmap swap caps lock and ctrl

Create a file, like ~/.xmodmap and paste the following in it:

!
! Swap Caps_Lock and Control_L
!
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
@jondlm
jondlm / express-headers.js
Last active April 25, 2017 18:04
A little node server that logs the most recent request and response headers
const express = require('express')
const app = express()
const util = require('util')
app.get('*', function (req, res) {
process.stdout.write('\033c')
console.log('Request headers:')
console.log(util.inspect(req.headers, { colors: true }))
res.send('test')
@jondlm
jondlm / git-stuff.md
Last active October 18, 2016 15:52
Some useful git stuff

Git Stuff

A collection of git utilities and scripts I've found useful at least once.

Aliases

List the 30 most recent branches you've committed to.

brr = for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)'

Keybase proof

I hereby claim:

  • I am jondlm on github.
  • I am jondlm (https://keybase.io/jondlm) on keybase.
  • I have a public key ASC_5JYWh3CFrnJz3NXg7TvFiSOro4iFH_34JiJARHnMGQo

To claim this, I am signing this object: