Skip to content

Instantly share code, notes, and snippets.

View HarlemSquirrel's full-sized avatar

Kevin McCormack HarlemSquirrel

View GitHub Profile
@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
@HarlemSquirrel
HarlemSquirrel / haproxy.cfg
Created November 29, 2018 02:27
HAProxy config with SSL for OctoPi Raspbian Stretch
# /etc/haproxy/haproxy.cfg
global
maxconn 4096
user haproxy
group haproxy
daemon
log 127.0.0.1 local0 debug
# Default SSL material locations
ca-base /etc/ssl/certs
@HarlemSquirrel
HarlemSquirrel / PKGBUILD
Created September 15, 2018 06:01
ArchLinux PKGBUILD for rocm-opencl
# Maintainer: Kevin McCormack <[email protected]
pkgname=rocm-opencl
pkgver=1.2.0
pkgverdate=2018090737
pkgrel=2
_debfile=rocm-opencl_${pkgver}-${pkgverdate}_amd64.deb
pkgdesc="ROCm Platform Runtime: Closed source opencl"
arch=('x86_64')
url="https://github.com/RadeonOpenCompute/ROCm"
license=('EULA')
@HarlemSquirrel
HarlemSquirrel / install_hydrapaper_u18.04.sh
Last active February 2, 2021 19:26
Install HydraPaper on Ubuntu 18.04
#!/bin/bash
# Install HydraPaper on Ubuntu 18.04
# No super user access required if flatpak is installed
# HarlemSquirrel.github.io
# Install flatpak
sudo apt install -y flatpak gnome-software-plugin-flatpak
# Add flathub repo for the current user
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
@HarlemSquirrel
HarlemSquirrel / 50unattended-upgrades
Created August 28, 2018 22:53
Raspbian Unattended Upgrades
// /etc/apt/apt.conf.d/50unattended-upgrades
// Unattended-Upgrade::Origins-Pattern controls which packages are
// upgraded.
//
// Lines below have the format format is "keyword=value,...". A
// package will be upgraded only if the values in its metadata match
// all the supplied keywords in a line. (In other words, omitted
// keywords are wild cards.) The keywords originate from the Release
// file, but several aliases are accepted. The accepted keywords are:
// a,archive,suite (eg, "stable")