Skip to content

Instantly share code, notes, and snippets.


Kevin McCormack HarlemSquirrel

View GitHub Profile
HarlemSquirrel / find_present.rb
Created Nov 8, 2021
Enumerable#find_present extension for Rails
View find_present.rb
require 'rails'
# Return the first value from the block that evalues to present.
# objects = [ nil), ' '), 'Matz')]
# objects.find_present(&:name) # => "Matz"
module Enumerable
def find_present(&block)
each do |item|
result = yield(item)
View refresh_aws_mfa_creds.rb
#! /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 / docker-compose.yml
Last active Aug 30, 2021
Valheim Server Docker Compose file
View docker-compose.yml
version: "3.9"
image: lloesche/valheim-server
- /mnt/valheim:/config
- valheim_data:/opt/valheim
- "2456-2458:2456-2458/udp"
HarlemSquirrel / pre-commit
Last active Feb 2, 2021
A pre-commit file for Ruby on Rails applications
View pre-commit
# 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 /
Created Dec 11, 2020
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 /
Created Dec 5, 2020
Filter a command like rubocop to look for issues only on modified lines.
# Filter a command like rubocop to look for issues only on modified lines.
# Inspired by
HarlemSquirrel / thingiverse-api-examples.js
Last active Jan 2, 2021
Thingiverse API Examples using JavaScript
View thingiverse-api-examples.js
* 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
* 5. Find the request headers and copy the token next to Authorization: Bearer
HarlemSquirrel / thread_issue_demo.rb
Last active Sep 23, 2020
Reproduce ActiveLdap thread-safe issue
View thread_issue_demo.rb
# This can reproduce
# Uses OpenLDAP Docker container
# docker run -p 1389:389 --name activeldap-test --detach osixia/openldap
require 'active_ldap'
class User < ActiveLdap::Base
HarlemSquirrel / dn_issue_demo.rb
Created Aug 5, 2020
A demonstration of the DN and base issue detailed in activeldap/activeldap#185
View dn_issue_demo.rb
# A demonstration of the DN and base issue detailed in
# 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 / thread_concurrency_limit_demo.rb
Created Apr 20, 2020
Ruby thread concurrency limit demo
View thread_concurrency_limit_demo.rb
# 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