Skip to content

Instantly share code, notes, and snippets.

View SleepingInsomniac's full-sized avatar

Alex Clink SleepingInsomniac

View GitHub Profile
@SleepingInsomniac
SleepingInsomniac / find_resistance.rb
Created October 21, 2024 23:56
Find the desired *target* resistance based on the available resistors
#!/usr/bin/env ruby
@series = [1, 2.2, 3.3, 4.7, 5.6, 6.8, 8.2].reverse
@multiples = [1, 10, 100, 1000, 10_000, 100_000].reverse
# Find the desired *target* resistance based on the available resistors
def find_resistance(target, resistors = [])
@multiples.each do |m|
next if m > target
@SleepingInsomniac
SleepingInsomniac / earth.cr
Created April 21, 2023 15:17
Calculate the angle between two GPS locations on earth
#!/usr/bin/env crystal
struct Point3(T)
def self.radians(degrees)
degrees * Math::PI / 180.0
end
def self.degrees(radians)
radians * 180.0 / Math::PI
end
@SleepingInsomniac
SleepingInsomniac / save-chat.bookmarklet
Created April 11, 2023 15:54
Safari bookmark script to download a chatGPT chat
javascript:(function() {
var chatgptContent = document.querySelector('main > div > div > div').innerHTML;
var pageTitle = document.title.replace(/[^a-zA-Z0-9\s]/g, "").replace(/\s+/g, "_");
var styles = '';
for (var i = 0; i < document.styleSheets.length; i++) {
var styleSheet = document.styleSheets[i];
try {
if (styleSheet.cssRules) {
for (var j = 0; j < styleSheet.cssRules.length; j++) {
styles += styleSheet.cssRules[j].cssText;
@SleepingInsomniac
SleepingInsomniac / fisr.cr
Created February 25, 2022 04:28
Fast Inverse Square Root
require "benchmark"
n = 100.0
# From Quake 3 arena
def fast_inverse_sqrt(num : Float32)
i = uninitialized Int64
x2 = uninitialized Float32
y = uninitialized Float32
@SleepingInsomniac
SleepingInsomniac / pre-commit.rb
Created November 11, 2020 17:53
A `.git/hooks/pre-commit` hook for running rubocop and other checks
#!/usr/bin/env ruby
require 'shellwords'
require 'pty'
$stdout.sync = true
RUBOCOP = "/Users/alex/.rvm/gems/ruby-2.7.1@zweb/wrappers/rubocop -c .rubocop.yml"
proj_root = File.expand_path(File.join(__dir__, '..', '..'))
#!/usr/bin/env ruby
require 'digest/sha1'
require 'json'
def path(*parts)
File.join(Dir.pwd, *parts)
end
bundle_paths = {
@SleepingInsomniac
SleepingInsomniac / dup_music.rb
Created March 28, 2020 14:52
Move music duplicates to a different location for deletion
#!/usr/bin/env ruby
require 'digest/sha1'
require 'json'
require 'fileutils'
Dir.chdir("/Users/alex/Library/Mobile\ Documents/com\~apple\~CloudDocs/Music/")
search_dir = "library"
trash_dir = "/tmp/duplicates/"
@SleepingInsomniac
SleepingInsomniac / finddup.rb
Last active February 21, 2019 17:15
Find file duplicates on your system
#!/usr/bin/env ruby
require 'fileutils'
require 'set'
require 'digest/md5'
require 'json'
require 'optparse'
VERSION = '1.0.0'
APP = 'finddups'
@SleepingInsomniac
SleepingInsomniac / moon.rb
Created February 18, 2019 04:48
the moon
#!/bin/env ruby
"🌕🌖🌗🌘🌑🌒🌓🌔".chars.cycle.tap do |m|
loop { sleep 0.1 and print "\r#{ m.next }" }
end
@SleepingInsomniac
SleepingInsomniac / curl_stream_dl.rb
Created February 7, 2019 16:06
Parse curl command and download stream
#!/usr/bin/env ruby
require 'http'
class ArgVCurlParser
def initialize(argv_array)
@argv_array = argv_array
parse(@argv_array)
end