Skip to content

Instantly share code, notes, and snippets.

@msepcot
msepcot / sqlserver.rb
Created August 28, 2012 14:59
Force a string to identify itself as non-UTF8 (used with ActiveRecord::ConnectionAdapters::Sqlserver::Quoting)
module ActiveRecord
module ConnectionAdapters
module Sqlserver
module Quoting
def quote(value, column = nil)
case value
when String, ActiveSupport::Multibyte::Chars
if column && column.type == :integer && value.blank?
nil
elsif column && column.type == :binary
@msepcot
msepcot / license.rb
Created September 5, 2012 16:26
Look through gems and group by license
# encoding: UTF-8
require 'securerandom'
require 'fileutils'
dir = "tmp/#{SecureRandom.hex(4)}_gems"
gems = `bundle exec gem list`.split
licenses = {
'Apache 2.0' => [],
'MIT' => [],
@msepcot
msepcot / branches.sh
Last active June 27, 2016 21:03
Bash script to output a list of git branches sorted by last commit date, include last commit author's name.
#!/bin/bash
$(git fetch --prune)
for branch in $(git branch -r); do
if ([ "$branch" == "origin/HEAD" ] || [ "$branch" == "origin/master" ] || [ "$branch" == "origin/develop" ] || [ "$branch" == "->" ] || [[ "$branch" =~ origin\/[0-9]+\.[0-9](\.[0-9])?$ ]]); then
continue
fi
printf "$(git log $branch -n1 --pretty=format:"%an (%ad): $branch" --date=short)\n";
done | sort
@msepcot
msepcot / enumerable-deep_find.rb
Created May 22, 2013 18:35
Add deep_find ability to Enumerable to recursively search for a Hash key. Returns the first key found.
module Enumerable
def deep_find(key)
if respond_to?(:key?) && key?(key)
self[key]
else
found = nil
find { |*a| v = a.last; found = v.is_a?(Enumerable) ? v.deep_find(key) : nil }
found
end
end
require 'dfp_api'
require 'httparty'
require 'oauth2'
CLIENT_ID = 'MY CLIENT ID'
CLIENT_SECRET = 'MY CLIENT SECRET'
NETWORK_CODE = 'MY NETWORK CODE'
dfp = DfpApi::Api.new({
authentication: {
@msepcot
msepcot / craigslist-greatschools.rb
Last active November 4, 2015 19:43
Script to add GreatSchools scores to Craigslist listings.
#!/usr/bin/env ruby
require 'active_support/all'
require 'gmail'
require 'great_schools'
require 'nokogiri'
require 'open-uri'
require 'sqlite3'
def db
@msepcot
msepcot / AppleTV
Last active September 21, 2015 19:34
AppleTV and AppleTVSimulator config settings for poco.
#
# $Id: //poco/1.4/build/config/AppleTV#2 $
#
# AppleTV
#
# Build settings for tvOS, using Apple's tvOS SDK
#
#
# General Settings
@msepcot
msepcot / CallDirectoryHandler.swift
Created April 15, 2017 06:05
Exploring the CallKit blocking feature
//
// CallDirectoryHandler.swift
// SelectiveHearing.BlockEveryone
//
// Created by Michael Sepcot on 4/14/17.
// Copyright © 2017 Michael Sepcot. All rights reserved.
//
import Foundation
import CallKit
@msepcot
msepcot / FadeableButton.swift
Last active September 6, 2017 06:05
Implement Mail.app's filter button in code
//
// FadeableButton.swift
// Octomino
//
// Created by Michael Sepcot on 9/5/17.
// Copyright © 2017 Head Down Development. All rights reserved.
//
import UIKit
@msepcot
msepcot / TheFatedSky.rb
Created December 7, 2018 20:40
The Fated Sky: A Lady Astronaut Novel, Chapter 16 cypher text.
PLAINTEXT = %w(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
CRYPTTEXT = %w(E L P H A N T B C D F G I J K M O Q R S U V W X Y Z)
input = "Cj qarmkjra sk ykuq gers gassaq, C ei waeqcjt iy ngctbs rucs lus hk jks beva e lqe kj. Cn yku waqa baqa, C wkugh sefa yku cjsk sba teqhaj ikhuga ejh gaej kvaq sba skiesk lahr rk sbes er yku skkf ia nqki labcjh, iy nepa wkugh la mqarrah cjsk sba nqetqejs tqaaj gaevar wcsb aepb sbqurs.".upcase
input.split("").each do |character|
if position = CRYPTTEXT.find_index(character)
print PLAINTEXT[position]
else
print character