Skip to content

Instantly share code, notes, and snippets.

View HarlemSquirrel's full-sized avatar

Kevin McCormack HarlemSquirrel

View GitHub Profile
@HarlemSquirrel
HarlemSquirrel / refresh_aws_mfa_creds.rb
Created June 8, 2021 16:04
Refresh AWS MFA credentials
#! /usr/bin/env ruby
##
# Retrieve MFA credentials using the default profile and saving them to the mfa profile.
# Old credentials are removed in this process.
#
require 'json'
AWS_CREDS_FILE_PATH = File.join(ENV['HOME'], '.aws/credentials')
@HarlemSquirrel
HarlemSquirrel / docker-compose.yml
Last active July 3, 2022 14:35
Valheim Server Docker Compose file
# https://github.com/sorisum/valheim-server-docker
version: "3.9"
services:
valheim:
image: lloesche/valheim-server
volumes:
- /mnt/valheim:/config
- valheim_data:/opt/valheim
ports:
- "2456-2458:2456-2458/udp"
@HarlemSquirrel
HarlemSquirrel / pre-commit
Last active January 4, 2022 17:58
A pre-commit file for Ruby on Rails applications
#!/bin/bash
#
# A set of commands to run as pre-commit hooks for git.
#
# Save this to .git/hooks/pre-commit and make executable to enable
#
# This will run whenever we run `git commit`.
# To skip this, add `-n` or `--no-verify` flag.
#
@HarlemSquirrel
HarlemSquirrel / OpenLDAPClient.java
Created December 11, 2020 22:49
Example doing paged search with UnboundID Java SDK and OpenLDAP
import com.unboundid.ldap.sdk.LDAPConnection;
import com.unboundid.ldap.sdk.LDAPException;
import com.unboundid.ldap.sdk.LDAPSearchException;
import com.unboundid.ldap.sdk.SearchResult;
import com.unboundid.ldap.sdk.SearchResultEntry;
import com.unboundid.ldap.sdk.SearchRequest;
import com.unboundid.ldap.sdk.SearchScope;
import com.unboundid.ldap.sdk.controls.SimplePagedResultsControl;
import com.unboundid.util.ssl.SSLUtil;
import com.unboundid.util.ssl.TrustAllTrustManager;
@HarlemSquirrel
HarlemSquirrel / diff_filter.sh
Created December 5, 2020 19:36
Filter a command like rubocop to look for issues only on modified lines.
#!/bin/bash
##
# Filter a command like rubocop to look for issues only on modified lines.
#
# Inspired by http://takemikami.com/2018/01/30/RubocopPullRequestCI.html
#
BASE_REMOTE=origin
BASE_BRANCH=master
@HarlemSquirrel
HarlemSquirrel / thingiverse-api-examples.js
Last active May 1, 2022 12:44
Thingiverse API Examples using JavaScript
// https://www.thingiverse.com/developers/rest-api-reference
/*******************************************************************************
* The headers needed for authenticating with the API.
* Get the SECRET_TOKEN using the browser tools of Firefox or Chrome:
* 1. Open the browser tools with F12 or ctrl+shift+i
* 2. Navigate to the Network tab
* 3. Reload a Thingiverse page
* 4. Locate a and select a request to api.thingiverse.com
* 5. Find the request headers and copy the token next to Authorization: Bearer
@HarlemSquirrel
HarlemSquirrel / thread_issue_demo.rb
Last active September 23, 2020 19:17
Reproduce ActiveLdap thread-safe issue
##
# This can reproduce https://github.com/activeldap/activeldap/issues/186
#
# Uses OpenLDAP Docker container
# docker run -p 1389:389 --name activeldap-test --detach osixia/openldap
#
require 'active_ldap'
class User < ActiveLdap::Base
@HarlemSquirrel
HarlemSquirrel / dn_issue_demo.rb
Created August 5, 2020 02:55
A demonstration of the DN and base issue detailed in activeldap/activeldap#185
##
# A demonstration of the DN and base issue detailed in
# https://github.com/activeldap/activeldap/issues/185
# Due to how requires are handled, we need to do some directory
# trickery to require our local copy of the source code.
base_dir = File.expand_path(File.dirname(__FILE__))
top_dir = File.expand_path(File.join(base_dir, ".."))
lib_dir = File.join(top_dir, "lib")
$LOAD_PATH.unshift(File.join __dir__, 'lib')
@HarlemSquirrel
HarlemSquirrel / thread_concurrency_limit_demo.rb
Created April 20, 2020 01:05
Ruby thread concurrency limit demo
# The total number of threads we want to all to run at the same time
concurrent_thread_limit = 4
# The total number of threads to run for this demo
total_thread_count = 13
@threads = []
##
# Print the status of all threads to the console
#
@HarlemSquirrel
HarlemSquirrel / type_on_wayland.py
Created February 5, 2020 00:20
Sample test sending keys on Wayland from string to emulate typing.
import sys
import time
# https://pypi.org/project/evdev/
import evdev
string = 'We are typing this 1!'
with evdev.UInput() as ui:
escape = False