Skip to content

Instantly share code, notes, and snippets.

@Gerst20051
Gerst20051 / shuffle_array_fairness.py
Created April 30, 2024 17:35
Shuffle Array Fairness
import random
unshuffled_array = [1, 2, 3, 4, 5]
def shuffle_array_v1(arr):
output = []
count_of_items_in_arr = len(arr)
while count_of_items_in_arr:
random_index = random.randint(0, count_of_items_in_arr - 1)
item = arr[random_index]
@Gerst20051
Gerst20051 / secret_meetings.rb
Created April 25, 2024 21:44
Secret Meetings
# /*
# There are N people
# Some subset of the N people know the secret
# There are M meetings which are encoded as subsets of the N people
# There is a total order over the meetings that tells you the order in which they occur
# When people meet they share the secret
# Calculate the set of people who know the secret after all the meetings
# */
@Gerst20051
Gerst20051 / resume.json
Created March 5, 2023 08:18
JSON Resume
{
"basics": {
"name": "Andrew Gerst",
"label": "Senior Software Engineer"
}
}
@Gerst20051
Gerst20051 / flatten.js
Last active November 3, 2023 01:19
Flatten JS Object Keys
function flatten(obj) {
const result = {};
for (const key of Object.keys(obj)) {
if (typeof obj[key] === 'object') {
const nested = flatten(obj[key]);
for (const nestedKey of Object.keys(nested)) {
result[`${key}.${nestedKey}`] = nested[nestedKey];
}
} else {
result[key] = obj[key];
@Gerst20051
Gerst20051 / watch.command.sh
Last active November 17, 2022 05:32
Bash Watch Command
# execute commands at a specified interval of seconds
function watch.command {
# USAGE: watch.commands [seconds] [commands...]
# EXAMPLE: watch.command 5 date
# EXAMPLE: watch.command 5 date echo 'ls -l' echo 'ps | grep "kubectl\\\|node\\\|npm\\\|puma"'
# EXAMPLE: watch.command 5 'date; echo; ls -l; echo; ps | grep "kubectl\\\|node\\\|npm\\\|puma"' echo date 'echo; ls -1'
local cmds=()
for arg in "${@:2}"; do
echo $arg | sed 's/; /;/g' | tr \; \\n | while read cmd; do
cmds+=($cmd)
@Gerst20051
Gerst20051 / gitlab-graphql-console-script.js
Last active August 19, 2022 23:05
GitLab GraphQL Console Script
(async () => {
const gitlabHost = window.location.host;
const gitlabUser = 'andrew';
const workingDirPath = '~/Desktop';
const snippetDirName = 'gitlab-snippets';
const getSnippetInfoForIds = async ids => {
const rawResponse = await fetch(`https://${gitlabHost}/api/graphql`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
@Gerst20051
Gerst20051 / github-gpg-key-setup.sh
Created July 24, 2022 12:38
Automate GitHub GPG Key Setup
#!/usr/bin/env sh
# ASCII: http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Create%20Github%20GPG%20Key
# SOURCE: https://gist.github.com/Gerst20051/
function double_echo {
echo && echo
}
function newline {
@Gerst20051
Gerst20051 / docker-setup.sh
Last active September 26, 2022 18:24
Automate Docker Setup Script
#!/usr/bin/env sh
# ASCII: http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Docker%20Setup%20Script
# SOURCE: https://gist.github.com/Gerst20051/bf1341448bd43f430761c1f8150fb1b7
function double_echo {
echo && echo
}
function newline {
@Gerst20051
Gerst20051 / macmini-preprovision-script.sh
Last active July 24, 2022 12:22
MacMini Preprovision Script
#!/usr/bin/env sh
# ASCII: http://patorjk.com/software/taag/#p=display&f=Graffiti&t=MacMini%20Preprovision
# SOURCE: https://gist.github.com/Gerst20051/1028d2ed1ca8de80afe5144e5188c745
playbook_repo_name='MacMini-Ansible-Playbook'
playbook_repo_url="[email protected]:Gerst20051/$playbook_repo_name.git"
playbook_repo_directory="$HOME/$playbook_repo_name"
secrets_repo_name='Ansible-Playbook-Secrets'
secrets_repo_url="[email protected]:Gerst20051/$playbook_repo_name.git"
@Gerst20051
Gerst20051 / github-ssh-key-setup.sh
Last active July 24, 2022 12:32
Automate GitHub SSH Key Setup
#!/usr/bin/env sh
# ASCII: http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Create%20Github%20SSH%20Key
# SOURCE: https://gist.github.com/Gerst20051/3add6fe949b7eef6b4957e5b7d3707c6
github_ssh_key_directory=${1:-~/.ssh}
github_ssh_key_name=${2:-github_ed25519}
email_address=$3 # optional param - this will be prompted for if not provided
if [ $# -gt 0 ] && (($# < 2 || $# > 3)); then