Skip to content

Instantly share code, notes, and snippets.


Isak Sky isaksky

View GitHub Profile
isaksky / letter_combos.rb
Created Nov 28, 2011
Ruby: All letter combinations of length n
View letter_combos.rb
LETTERS = (65..90).collect{|char_code| char_code.chr}
def letter_combos length, accum = nil
return accum if length == 0
return accum || LETTERS if length == 1
combos = (accum || LETTERS).product(LETTERS).inject([]) {|combos, product|
combos << product.first + product.last}
letter_combos(length - 1, combos)
isaksky / gist:1861043
Created Feb 18, 2012
HTTP fetch breaks
View gist:1861043
require 'uri'
require 'net/http'
# From
# Does not fully work!
def fetch(uri_str, limit = 10)
# You should choose a better exception.
raise ArgumentError, 'too many HTTP redirects' if limit == 0
response = Net::HTTP.get_response(URI(uri_str))
isaksky / gist:1861104
Created Feb 18, 2012
View gist:1861104
def self.get_response_following_redirects orig_uri, requests_limit = 15
raise "Input must be an absolute URI." unless orig_uri.is_a?(URI::Generic) && orig_uri.absolute?
uri = orig_uri
requests_made = 0
while requests_made <= requests_limit
response = Net::HTTP.get_response uri
requests_made += 1
case response
when Net::HTTPSuccess
// How to win. Script for
// Using a script manager, e.g., this thing:
// Replace cities_close_enough array with what is close enough for you.
// Drop this in ~/.js/
var loc = $(this).text();
var city = loc.substring(0,loc.indexOf(','));
var cities_close_enough = ['Palo Alto', 'Mountain View', 'Sunnyvale', 'Stanford'];
View cartesian_product.rb
def ghetto_cartesian_product colls
if colls.empty?
colls.first.reduce([]) do |memo, e|
rest = colls.drop 1
tails = ghetto_cartesian_product(rest).map do |tail|
[e].concat tail
memo.concat tails
isaksky /
Created Jul 18, 2012
Script to install rbenv and ruby-build
# Check out rbenv into ~/.rbenv.
git clone git:// .rbenv
# Add ~/.rbenv/bin to your $PATH for access to the rbenv command-line utility.
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
# Add rbenv init to your shell to enable shims and autocompletion.
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
isaksky / gist:3854955
Created Oct 8, 2012
set/access multiple keys
View gist:3854955
update_in = (obj, keys, value) ->
node = obj
while true
key = keys.shift()
if keys.length > 0
node[key] = {} unless node[key]?
node = node[key]
node[key] = value
View gist:4541357
function video_info {
ffprobe -v quiet -print_format json $1 -show_streams
View gist:4666169
task :foo do
puts "foo"
task :bar => "foo" do
puts "bar"
task :baz do
puts "baz"
View gist:5059818
var process = Process.Start(new ProcessStartInfo("foo.exe"));