Skip to content

Instantly share code, notes, and snippets.

@barretts
barretts / check_undefined_methods.rb
Last active June 26, 2025 00:36
ruby check for undefined method calls
#!/usr/bin/env ruby
# Simple undefined method checker
# This script looks for potential undefined method calls by checking:
# 1. Method calls on objects that might not have those methods
# 2. Common patterns that could indicate undefined methods
# 3. Caching previous results to highlight new findings
require 'find'
require 'json'
@barretts
barretts / openMeetingsHammerspoon.lua
Last active May 23, 2025 18:01
automatically open meeting links for calendar events in the next 5 minutes using Hammerspoon
local lastOpenedLink = nil
local lastOpenedTime = 0
function openMeetingLink(link)
local now = os.time()
if link and (link ~= lastOpenedLink or now - lastOpenedTime > 600) then
hs.urlevent.openURL(link)
lastOpenedLink = link
lastOpenedTime = now
else
@barretts
barretts / undirectedGraphNodeComponents.js
Last active March 31, 2025 23:08
turning interview questions into learning opportunities
/*
Given n, i.e. total number of nodes in an undirected graph numbered
from 1 to n and an integer e, i.e. total number of edges in the
graph. Calculate the total number of connected components in the graph.
A connected component is a set of vertices in a graph that are linked
to each other by paths.
O(E^2 log E)
mine un-sorted: 15421ms
mine un-sorted and Set nodes: 41ms
@barretts
barretts / getAppliedJobInfo.js
Created March 26, 2025 03:29
get applied job information from LinkedIn
function extractJobs(linkedInResponse) {
const jobs = [];
const jobElements = linkedInResponse?.data?.data?.searchDashClustersByAll?.elements?.[0]?.items || [];
const jobDetails = linkedInResponse?.included || [];
jobElements.forEach(({ item }) => {
const entityUrn = item?.["*entityResult"];
if (!entityUrn) return;
@barretts
barretts / muteAllDiscordChannels.js
Created March 15, 2025 21:51
mute all discord channels "Until I turn it back on"
// expand all folders before running and
// zoom out so all guild icons are visible
function extractAndProcessIds() {
const elements = document.querySelectorAll('[data-list-item-id^="guildsnav___"]');
const uniqueIdsArray = Array.from(elements)
.map(el => el.getAttribute('data-list-item-id').replace('guildsnav___', ''))
.filter(id => !isNaN(id))
.reduce((acc, id) => {
@barretts
barretts / index.ts
Last active March 6, 2025 18:31
convert diarized automatic speech recognition output to SRT subtitle file
#!/usr/bin/env ts-node
/**
* Used this Huggingface space to create a JSON formatted file
* https://huggingface.co/spaces/Xenova/whisper-speaker-diarization
*
* https://huggingface.co/onnx-community/whisper-base_timestamped
* https://huggingface.co/onnx-community/pyannote-segmentation-3.0
* https://huggingface.co/pyannote/segmentation-3.0
*/
@barretts
barretts / get_AMI_last_used_date.ps1
Created February 28, 2024 21:57
get all AMIs in a region and collect their last used date information valid from 2017 on
$amiInfo = aws ec2 describe-images --owners self --query 'Images[*].{ImageId:ImageId, CreationDate:CreationDate, Name:Name}' --output json | ConvertFrom-Json
$amiResults = @()
# $count = $amiInfo.Length;
# Write-Host "getting data for $count AMIs"
foreach ($ami in $amiInfo) {
$amiId = $ami.ImageId
$creationDate = $ami.CreationDate
@barretts
barretts / CallWhenDone.ps1
Created September 16, 2021 18:38
trigger webhook when command is finished
function CallWhenDoneFunc {
$mergedCmd = $args -join " "
Invoke-Expression $mergedCmd
# use content in payload for discord instead of text
$hookUrl = "https://hooks.slack.com/services/yoururlgoeshere"
$content = "Finished $mergedCmd"
$payload = [PSCustomObject]@{
text = $content
}
@barretts
barretts / Delete_roletouser_Duplicates.sql
Last active August 18, 2020 19:29
mysql fetch loop rows delete duplicates without primary keys
DELIMITER ;;
DROP PROCEDURE IF EXISTS Delete_roletouser_Duplicates;;
CREATE PROCEDURE Delete_roletouser_Duplicates()
BEGIN
DECLARE lmt INT DEFAULT 0;
DECLARE done INT DEFAULT 0;
DECLARE _role_id CHAR(36);
#!/usr/bin/python3
# Usage
# 0 * * * * /home/badguy90/bin/change_detection.py
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import difflib
import hashlib