Skip to content

Instantly share code, notes, and snippets.

View kballenegger's full-sized avatar

Kenneth Ballenegger kballenegger

View GitHub Profile
@kballenegger
kballenegger / elevatorsaga.js
Last active August 29, 2015 14:13
Quick and dirty elevator algorithm
{
init: function(elevators, floors) {
var idleElevators = [];
var upsRequested = [];
var downsRequested = [];
var goAndSetIndicator = function (elevator, num, index) {
console.log('k: figure out where to go next');
@kballenegger
kballenegger / progress.sh
Created January 21, 2015 21:58
Print progress of mysql sync operation.
#!/bin/bash
PID=$(ps aux | grep mysql-dev-backup-s3 | grep -v grep | awk '{ print $2 }')
# for some stupid reason, stat in our vagrant vms takes `-c format` not `-f`...
ontrap () {
echo
exit 0
}
#!/bin/bash
echo -n "do you accept the tos (type 'y')? "
read confirm
if [[ "$confirm" == "y" ]]; then
irb
else
echo "fail"; exit 1
fo
@kballenegger
kballenegger / init.sh
Last active September 23, 2015 01:18
Docker service lifecycle
#!/bin/bash
cd /repos/api-internal
case "$2" in
pre-start)
git checkout origin/production
docker pull quay.io/kballenegger/api-internal
docker pull quay.io/kballenegger/api-internal-builder
@kballenegger
kballenegger / bst.swfit
Created October 2, 2014 03:34
[wip] binary search tree in swift
// ~Immutable~ Binary Search Tree
class Node<T: Comparable>: Printable {
var left: Node<T>?
var right: Node<T>?
var value: T
init(_ value: T, left: Node<T>? = nil, right: Node<T>? = nil) {
self.value = value
self.left = left
self.right = right
@kballenegger
kballenegger / ack-git-ls-files-wrapper.sh
Created September 5, 2014 18:26
Ack git-ls-files wrapper script.
#!/bin/bash
function realpath { echo $(cd "$(dirname $1)"; pwd)/"$(basename $1)"; }
if git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
args=( "$@" )
# unset last arg
#unset args[$(echo ${#args[@]}-1 | bc)]
unset args[${#args[@]}-1]
# cd into root dir
@kballenegger
kballenegger / deploy.sh
Created August 22, 2014 18:47
Auto-deploy system through a system of etcd locks.
git fetch
# check if a deploy is necessary
checked_out=$(git rev-parse HEAD)
production=$(git rev-parse origin/production)
if [ $checked_out = $production ]; then
echo 'Nothing to deploy. Moving on...'
exit 0
fi
@kballenegger
kballenegger / gist:12891782ef4ed129ef6a
Created August 19, 2014 23:31
Validate addresses automatically via SmartyStreets
POST /bill-pay/payees HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate, compress
Content-Length: 63
Content-Type: application/json; charset=utf-8
FreshPay-Authentication: eyJ1c2VyIjo5MjcyNDQ2MDI1MDQ2NTk0MTQsInRpbWUiOjE0MDU5NDk5NDMsInBlcm1pc3Npb25zIjoiYWxsIiwiYXBwIjoiZnJlc2hwYXktd2ViIn0AB4FBJshQOd19bzDkwG9k3xscgASv9vOPSBRldfSuTzU=
Host: localhost:9977
User-Agent: HTTPie/0.4.0
{
@kballenegger
kballenegger / order-by-relation.sql
Last active August 29, 2015 14:05
Postgres select by most recently used in relation
SELECT payees.*, max(payments.id) AS most_recent_transaction FROM payees
LEFT OUTER JOIN payments ON payments.payee_id = payees.id
WHERE payees.user_id = ?
GROUP BY payees.id
ORDER BY max(payments.id) DESC;
@kballenegger
kballenegger / reindent.bash
Created August 12, 2014 02:04
4-space -> 2-space indentation in entire codebase
find . -name '*.js*' -exec bash -c "ruby -ne 'puts \$_.gsub(/^(( )+)/) {|m| (m.length/2).times.map{|_|\" \"}.join }' <{} >{}.bk && rm -f {} && mv {}.bk {}" \;