Skip to content

Instantly share code, notes, and snippets.

View joekiller's full-sized avatar

Joseph Lawson joekiller

View GitHub Profile
@joekiller
joekiller / README.md
Created September 23, 2016 20:03
Hardware recommendations for Arch Linux Laptop

If you want to run Arch on a Laptop, use pure Intel hardware as much as possible. Especially for WiFi. Next use NVIDIA hardware if you need a discreet video card. AMD support is lacking to say the least.

@joekiller
joekiller / README.md
Last active November 21, 2016 18:43
alias bash profiles based on client names

Say you support multiple clients or multiple projects but don't want everything on your shell at once. This script in your .bashrc file will allow you to automatically create aliases for any directory that has it's own .bashrc file. It starts a new bash shell so no existing variables are overwritten and you can exit when needed.

For example, say you have project or client named superx and another named johndoe. You create a directory superx and johndoe. Within each you pust a custom .bashrc file and optional .superx-secrets and .johndoe-secrets file and then your shell (upon next login) will detect those files and alias them to the parent directory's name. So if I want superx stuff, I just run superx and vice versa for johndoe.

Some references:

http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-environment http://www.linuxjournal.com/content/tech-tip-dereference-variable-names-inside-bash-functions http://stackoverflow.com/questions/3601515/how-to-check-if-a-v

@joekiller
joekiller / zip.clj
Created March 9, 2017 05:21
zip up a target directory
(with-open [zip (ZipOutputStream. (io/output-stream "target/lambda.zip"))]
(doseq [f (file-seq (io/file *compile-path*)) :when (.isFile f)]
(.putNextEntry zip (ZipEntry. (subs (.getPath f) (+ 1 (count *compile-path*)))))
(io/copy f zip)
(.closeEntry zip)))
@joekiller
joekiller / delete_all_object_versions.sh
Last active April 11, 2017 17:50 — forked from weavenet/delete_all_object_versions.sh
Delete all versions of all files in s3 versioned bucket using AWS CLI and jq.
#!/bin/bash
bucket=$1
set -e
echo "Removing all versions from $bucket"
versions=`aws s3api list-object-versions --bucket $bucket |jq '.Versions'`
markers=`aws s3api list-object-versions --bucket $bucket |jq '.DeleteMarkers'`
@joekiller
joekiller / clean-docker.sh
Last active May 9, 2017 16:40
Delete docker images volumes and containers
#!/bin/bash
# !!!!DESTRUCTIVE!!!!
# This will delete all local docker images.
CleanDocker () {
docker ps -aq | xargs docker rm
docker images | awk '{print $1":"$2}' | xargs docker rmi
docker volume prune
}
@joekiller
joekiller / README.md
Last active May 30, 2017 19:52
Minimal Clojurescript aws x-ray lambda cljs-lambda

The basics here are to make sure you include the externs for advanced compliation and then to wrap the S3 client with an AWSXray capture client.

(def S3 (nodejs/require "aws-sdk/clients/s3"))
(def s3-client (S3. (clj->js {:httpOptions {:timeout 10000}})))

vs

(def S3 (nodejs/require "aws-sdk/clients/s3"))
(def AWSXRay (nodejs/require "aws-xray-sdk"))

(def s3-client (.captureAWSClient AWSXRay (S3. (clj->js {:httpOptions {:timeout 10000}}))))

@joekiller
joekiller / README.md
Created July 6, 2017 20:14
nREPL ClojureScript Cursive IDE

Most Cursive IDE nREPL solutions point to the Figwheel approach which good but is a little cumbersome.

You can also use piggieback (which Figwheel also uses).

Update your project.clj as such:

(defproject blah "0.0.1"
  :profiles {:dev {:dependencies [[com.cemerick/piggieback "0.2.2"]]}
                   :repl-options {:nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]}})
@joekiller
joekiller / query_timestamp.sql
Created December 20, 2017 14:54
Query alb_logs via time in AWS athena
-- Setup an AWS Athena Application Load Balancer table via
-- http://docs.aws.amazon.com/athena/latest/ug/application-load-balancer-logs.html
-- Use the following to query between timestamps.
SELECT * FROM "sampledb"."alb_logs"
where date_parse(time, '%Y-%m-%dT%H:%i:%s.%fZ')
between TIMESTAMP'2017-12-20 03:00:00' and TIMESTAMP'2017-12-20 05:00:00'
limit 10;
@joekiller
joekiller / nuke.sh
Created August 21, 2019 14:51
Nuke iam start-pipeline policies
for p in $(aws iam list-policies --query 'Policies[?starts_with(PolicyName, `start-pipeline`) == `true`].Arn' --output text); do
for v in $(aws iam list-policy-versions --policy-arn $p --query 'Versions[?IsDefaultVersion == `false`].VersionId' --output text); do
aws iam delete-policy-version --policy-arn $p --version-id $v
done
aws iam delete-policy --policy-arn $p
done
@joekiller
joekiller / raw_stack.py
Created October 28, 2019 12:51
aws-cdk migrate RawStack to CDK
import yaml
from aws_cdk import core
class RawStack(core.Stack):
def __init__(self, scope: core.Construct, name: str, template_path: str, wrapped_parameters=None,
**kwargs) -> None:
"""import a stack off a path and munge in ssm variables if desired
:param template_path: path to raw stack being imported
:param wrapped_parameters: map of Parameter keys and default values