Skip to content

Instantly share code, notes, and snippets.

View aprice's full-sized avatar

Adrian Price aprice

View GitHub Profile
@aprice
aprice / RemoveWin10Garbage.ps1
Created September 5, 2019 18:12
PowerShell script to remove Windows 10 bloatware crap
Import-Module AppX
Import-Module Dism
$AppsList = "Microsoft.Bing" , "Microsoft.BingFinance" , "Microsoft.BingMaps" , "Microsoft.BingNews"`
, "Microsoft.BingSports" , "Microsoft.BingTravel" , "Microsoft.BingWeather" , "Microsoft.Camera"`
, "microsoft.microsoftskydrive" , "Microsoft.Reader" , "microsoft.windowscommunicationsapps"`
, "microsoft.windowsphotos" , "Microsoft.XboxLIVEGames" , "Microsoft.ZuneMusic"`
, "Microsoft.ZuneVideo" , "Microsoft.Media.PlayReadyClient", "Microsoft.WindowsMaps"`
, "Microsoft.XboxApp", "SpotifyAB.SpotifyMusic", "king.com.CandyCrushFriends"`
, "king.com.CandyCrushSaga"
@aprice
aprice / every.go
Created June 5, 2018 19:41
Execute a function on a ticker.
package every
import (
"context"
"time"
)
// Every executes fn every d until ctx is canceled. Note that the first execution will not be until time.After(d).
func Every(ctx context.Context, d time.Duration, fn func()) {
t := time.NewTicker(d)
@aprice
aprice / mrclean.sh
Created November 30, 2017 20:22
Simple utility for showing/cleaning up kitchen test instances that may have been forgotten.
#!/bin/bash
# Usage:
# mrclean - list kitchen instances in all cookbooks
# mrclean destroy - destroy kitchen instances in all cookbooks
# Update to your cookbook path
CBDIR=$HOME/chef-repo/cookbooks
for c in $CBDIR/*; do
echo $(basename $c)
@aprice
aprice / tf.sh
Created November 28, 2017 19:40
Terraform helper script for workspace-per-environment model
#!/bin/bash
cmd=$1
shift
env=$1
shift
terraform workspace select $env || exit_error "failed to select workspace $env"
case $cmd in
# Custom command: plan -> outfile, confirm, apply outfile
planapply)
@aprice
aprice / busboy.go
Created August 11, 2017 15:07
busboy cleans up after Chef nodes terminated in EC2 by listening for CloudWatch termination events on an SQS queue.
package main
import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
"log"
"os"
"time"
@aprice
aprice / password.go
Last active May 10, 2017 14:39
Simple, secure, best-practices password storage in Go.
package password
import (
"bytes"
"crypto/rand"
"crypto/sha256"
"fmt"
"bufio"
"errors"
"io"
@aprice
aprice / collator.go
Last active April 26, 2017 19:30
Simple, un-typed fan-in/fan-out result collator. Easy to customize for type safety.
type Collator struct {
results chan interface{}
errors chan error
wg *sync.WaitGroup
}
func NewCollator() *Collator {
return &Collator{
results: make(chan interface{}),
errors: make(chan error),
@aprice
aprice / aws_peers.go
Last active April 7, 2017 19:07
Get the list of IP addresses of instances in the same ASG, excluding this instance
package config
import (
"errors"
"io/ioutil"
"net/http"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/autoscaling"
@aprice
aprice / makefile
Last active January 8, 2023 16:53
Full base Golang makefile for developers and Jenkins. Handles installing tools, formatting, linting, cross-compilation, installation, and packaging for distribution.
# This file is intended as a starting point for a customized makefile for a Go project.
#
# Targets:
# all: Format, check, build, and test the code
# setup: Install build/test toolchain dependencies (e.g. gox)
# lint: Run linters against source code
# format: Format the source files
# build: Build the command(s) for target OS/arch combinations
# install: Install the command(s)
# clean: Clean the build/test artifacts
@aprice
aprice / benchwc.sh
Created September 16, 2016 19:28
Compare golang benchmarks between working copy and pristine
#!/bin/bash
# Usage: benchwc.sh "path/to/package" "-build flags"
# e.g. benchwc.sh ./mypkg "-cpu=1,2,4 -tags=debug -benchtime=2s"
DIR=${1:-.}
BFLAGS=$2
git stash save || exit 1
cd $DIR && go test -run=^$ -bench=. -benchmem $BFLAGS | tee old.out
git stash pop || exit 1
cd $DIR && go test -run=^$ -bench=. -benchmem $BFLAGS | tee new.out
benchcmp old.out new.out | tee comparison.out