Skip to content

Instantly share code, notes, and snippets.

@tcaddy
tcaddy / Gemfile
Created January 9, 2024 23:50
getport.io Webhook validation in Ruby
source "https://rubygems.org"
gem "functions_framework", "~> 1.4"
@tcaddy
tcaddy / README.md
Created August 29, 2022 01:55
BirdNet Pi Setup

Overview

This is an explanation of my BirdNET-Pi (https://birdnetpi.com/) hardware installation.

Details

The idea is to have minimal hardware outdoors (a microphone) and keep the rest indoors where it is easier to manage and keep climate controlled. I had an existing CAT5 cable running from my computer area to an outdoor telco box. It was used for an old DSL install. I used the telco box to house a CAT5-to-XLR adapter and most of an XLR omnidirectional lavalier microphone, with the tip of

@tcaddy
tcaddy / ping_gateway.sh
Last active September 23, 2020 19:53
ping_gateway
#!/bin/sh
# See https://serverfault.com/a/31179
gateway=$(route -n | grep 'UG[ \t]' | awk '{print $2}')
echo "Pinging Gateway IP: $gateway"
echo "Press CTRL + C to cancel"
ping $gateway
@tcaddy
tcaddy / folderify_mp3s.rb
Created August 20, 2020 20:57
Put mp3s in folders based on id3 tags for artist and album. Create filenames based on disk #, track #, and title from id3 tags.
#!/usr/bin/env ruby
begin
require 'fileutils'
require 'id3tag'
require 'pry'
class FolderifyMp3s
REGEX = /\(|\)|\/|\\/.freeze
def call
@tcaddy
tcaddy / example.rb
Created October 25, 2019 18:12
GMail usage example
callback = lambda do |result, err|
if err
# handle error
else
require_relative './mail'
mail = ::CheckEmail::Mail.new(result)
end
end
@tcaddy
tcaddy / .gitconfig
Created May 9, 2018 18:10
dot files
# This is Git's per-user configuration file.
[user]
# Please adapt and uncomment the following lines:
name = Firstname Lastname
email = user@domain.com
[color]
ui = auto
[rebase]
autosquash = true
[alias]
@tcaddy
tcaddy / freeze_benchmark.rb
Last active October 12, 2017 19:52
Benchmark String#freeze
#!/usr/bin/env ruby
# Based on http://blog.honeybadger.io/when-to-use-freeze-and-frozen-in-ruby/#reducing-object-allocations
# but for Ruby 1.9.3
require 'benchmark'
class FreezeBenchmark
NORMAL = 'NORMAL'
FROZEN = 'FROZEN'.freeze
def self.init(n = 100000)
@tcaddy
tcaddy / script.bat
Last active May 23, 2017 15:19
BAT file to copy files and make a ZIP archive
@ECHO OFF
SET CURRENTDIR="%cd%"
SET DIRTOZIP="%TEMP%\_A%time::=.%"
MKDIR %DIRTOZIP%
CD %DIRTOZIP%
COPY /B /V /Z "source" "destination"
set FILETOZIP="%DIRTOZIP%\*"
@tcaddy
tcaddy / aes-128-ecb.rb
Created March 8, 2017 16:15
Ruby AES-128-ECB encryption / decryption example. This was written to interface with a 3rd party that required string parameters to be encrypted the following way: Rinndael cipher, Electronic Code Block mode (ECB), no padding, encrypted buffer should be padded with spaces such that its length is divisible by 32.
# setup some input parameters
encrypted_decrypted = 'some string to encrypt or decrypt'
action = :encrypt # set to :encrypt or :decrypt
secret_key = 'abc123' # define shared secret key here
# encryption / decryption code...
cipher = OpenSSL::Cipher.new('AES-128-ECB')
if action == :decrypt
cipher.key = [secret_key].pack('H*')
cipher.padding = 0
@tcaddy
tcaddy / ping_gateway.ps1
Last active November 30, 2016 04:00
PowerShell Script to ping the gateway constantly at intervals below 1000 milliseconds so that flaky wireless connections stay alive.
# This script will let you ping in intervals less than 1 second
$ip4_gateway = (Get-WmiObject -Class Win32_IP4RouteTable | where { $_.destination -eq '0.0.0.0' -and $_.mask -eq '0.0.0.0'} | Sort-Object metric1 | select nexthop).nexthop
$target = $ip4_gateway # target host
$interval = 200 # in milliseconds
$ping=New-Object System.Net.NetworkInformation.ping
function Ping-It() {
$success = 0 # initialize as zero
$failure = 0 # initialize as zero
$cumaltive_time = 0 # initialize as zero