Skip to content

Instantly share code, notes, and snippets.

View tsnow's full-sized avatar

Tim Snowhite tsnow

  • Palantir
  • Washington, DC
View GitHub Profile
-module(chat_client).
-compile(export_all).
register_nickname(Nickname) ->
Pid = spawn(chat_client, handle_messages, [Nickname]),
message_router:register_nick(Nickname, Pid).
unregister_nickname(Nickname) ->
message_router:unregister_nick(Nickname).
# -*- encoding: utf-8 -*-
Gem::Specification.new do |s|
s.name = "gherkin"
s.version = "2.5.2"
s.authors = ["Mike Sassak", "Gregory Hnatiuk", "Aslak Hellesøy"]
s.description = "A fast Gherkin lexer/parser based on the Ragel State Machine Compiler."
s.summary = "#{s.name}-#{s.version}"
s.email = "[email protected]"
s.homepage = "http://github.com/cucumber/gherkin"
@tsnow
tsnow / rubylay-emsgay.rb
Created December 14, 2011 18:55
rubygems ignores prereleases when using the ~> requirement
module Gem
class Requirement
OPS = { #:nodoc:
"=" => lambda { |v, r| v == r },
"!=" => lambda { |v, r| v != r },
">" => lambda { |v, r| v > r },
"<" => lambda { |v, r| v < r },
">=" => lambda { |v, r| v >= r },
"<=" => lambda { |v, r| v <= r },
@tsnow
tsnow / reextconf.sh
Created April 22, 2012 22:49
Reinstall all gems with extensions
for j in `gem list | awk '{ print $1 }'`; do
gem specification $j |
ruby -ryaml -e 'b=YAML::load(ARGF); a=b.instance_variable_get(:@ivars)["extensions"]; puts a if !a.empty?; exit (!a.empty? ? 0 : 1)' &&
gem pristine $j;
done
@tsnow
tsnow / README.markdown
Created July 19, 2012 15:38
How to compile Gitx

How to compile Gitx:

  1. Open GitX.xcodeproj in XCode.
  2. Switch scheme from cli-tool to GitX.
  3. Press ⇧⌘R (shortcut for: Product > Build For > Running).
  4. Press ⇧⌘2 to open the Organizer.
  5. Open the DerivedData folder shown in the Organizer window. (For example: ~/Library/Developer/Xcode/DerivedData/GitX-fpvndnywvssxinenuifhoszinvmk)
  6. Run the GitX.app located in {FOLDER}/Build/Products/Debug/GitX.app
# This controller's job is to exchange twitter credentials for Shortmail credentials
class TwitterReverseAuthController < ApplicationController
# First, let's make our own subclass of RuntimeError
class Error < RuntimeError; end
def api_key_exchange
# Here are our required parameters. If any are missing we raise an error
screen_name = params.fetch(:screen_name) { raise Error.new('screen_name required') }
token = params.fetch(:oauth_token) { raise Error.new('oauth_token required') }
secret = params.fetch(:oauth_secret){ raise Error.new('oauth_secret required') }
@tsnow
tsnow / Gvoice.txt
Created September 4, 2012 00:54
Pager duty trick
Tip: Make your phone ring when you aren't at
work and an alert is sent so you wake up
instead of sleeping through it.
Create a Google Voice number with your
taximagic google apps account. Add your cell phone
as a forwarding number. Edit the phone in settings,
go to the advanced options, a
nd set it to *not* ring during business hours.
@tsnow
tsnow / git log.sh
Created September 5, 2012 20:23
Better Git Logs
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
1.9.3p253 :001 > require 'ripper'
=> true
1.9.3p253 :002 > class A
1.9.3p253 :003?> class B
1.9.3p253 :004?> end
1.9.3p253 :005?> def self.Fart
1.9.3p253 :006?> end
1.9.3p253 :007?> end
=> nil
1.9.3p253 :008 > Ripper.sexp('A.B')
@tsnow
tsnow / littlest_twitter_term_Counter.sh
Created September 25, 2012 15:45
counting twitter terms / Counting via stream in perl
#!/bin/sh
# from: http://blog.isaach.com/2011/12/littlest-twitter-term-counter.html
curl -d "track=$TERM" -u$USERNAME:$PASSWORD -s -o - \
https://stream.twitter.com/1/statuses/filter.json \
| perl -e '$|++; while (<>) {m/\{/ and $i++ and print qq{\r$i}}'