Skip to content

Instantly share code, notes, and snippets.

@jimweirich
jimweirich / eternal_flame.sng
Created August 8, 2013 05:59
Words/Chords to the Eternal Flame
The Eternal Flame (God Wrote in Lisp)
Bob Kanefsky / Julia Ecklar
F G C
I was taught assembler in my second year of school.
F G C
It's kinda like construction work, with a toothpick for a tool.
F G C Em Am
So when I made my senior year, I threw my code away,
@jimweirich
jimweirich / attrs.rb
Created August 7, 2013 16:18
Trivial non-factory for valid attributes.
require 'date'
# Trivial collection of valid attributes for Active Record objects.
#
# Usage:
#
# emp = Employee.new(Attrs.for(:employee))
#
module Attrs
Attributes = { }
@jimweirich
jimweirich / assertions.rb
Last active December 20, 2015 09:59
Proof of concept for Pre/Post condition assertions based on RSpec/Given
require 'given/natural_assertion'
require 'given/line_extractor'
class Object
def self._Gvn_location_of(block)
eval "[__FILE__, __LINE__]", block.binding
end
end
module Given
@jimweirich
jimweirich / arg_matching_spec.rb
Created July 19, 2013 01:02
Argument matching
require 'rspec/given'
class Array
def ===(other)
size == other.size &&
zip(other).all? { |a, b| a === b }
end
end
describe "Arg Matching" do
@jimweirich
jimweirich / minitest-given-push.sh
Created July 10, 2013 00:34
Can't push minitest-given
$ gem push minitest-given-3.0.0.beta.3.gem
Pushing gem to https://rubygems.org...
You do not have permission to push to this gem.
$
@jimweirich
jimweirich / cpu.rb
Last active December 18, 2015 16:49
Can people run this script and see if it gives accurate count of CPUs on their system. Report results in the comments please. Thanks! Oh! And don't forget to report what kind of system you are running this on (linux, windows, mac, etc.). UPDATE: Revised version that uses the Java runtime if running under JRuby.
require 'rbconfig'
# Based on a script at:
# http://stackoverflow.com/questions/891537/ruby-detect-number-of-cpus-installed
class CpuCounter
def self.count
new.count
end
def count
printf "Latitude? "
latitude_degrees = gets.to_f
latitude = latitude_degrees * Math::PI / 180.0
angular_velocity = 2 * Math::PI / (24 * 60 * 60) # Radians per second
radius_at_equator = 6_371_000 # meters
radius_at_latitude = radius_at_equator * Math.cos(latitude)
@jimweirich
jimweirich / adhoc.sh
Last active July 22, 2017 18:47
Controlling multiple drones with a single Ruby program.
# This script should be run on the drone.
# Change the IP address to be difference
# for each drone on the same ad-hoc network
#
killall udhcpd
ifconfig ath0 down
iwconfig ath0 mode ad-hoc essid ardrone2_070401 channel auto commit
ifconfig ath0 192.168.1.100 netmask 255.255.255.0 up
describe 'EventBus methods cascade' do
Invariant { result.should == EventBus }
context 'clear' do
When(:result) { EventBus.clear }
Then { }
end
context 'publish' do
When(:result) { EventBus.publish('aa123bb', {}) }
@jimweirich
jimweirich / Gemfile
Created May 21, 2013 19:08
Template for creating autonomous drone programs.
source 'https://rubygems.org'
gem 'celluloid'
gem 'celluloid-io'