Skip to content

Instantly share code, notes, and snippets.

@heuristicfencepost
heuristicfencepost / geb1.pl
Created July 10, 2012 06:49
GEB MIU system in various languages
# Simple implementation of the productions for the MIU system
open INFILE,"<",$ARGV[0];
while(<INFILE>) {
chomp;
next if $_ =~ /#.*/;
print "$1IU\n" if $_ =~ /^(.+?)I$/;
print "M$1$1\n" if $_ =~ /^M(.+)$/;
print "$1U$2\n" if $_ =~ /^(.*)III(.*)$/;
print "$1$2\n" if $_ =~ /^(.*)UU(.*)$/;
@heuristicfencepost
heuristicfencepost / redcar.sh
Created April 24, 2012 05:36
Shell script for starting redcar using rvm
# Load RVM into a shell session *as a function*
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
# First try to load from a user install
source "$HOME/.rvm/scripts/rvm"
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
# Then try to load from a root install
source "/usr/local/rvm/scripts/rvm"
@heuristicfencepost
heuristicfencepost / nonblocking_controller.rb
Created February 21, 2012 05:36
Controller and model implementations for non-blocking Sieve of Eratosthenes implementation
class Controller < UntypedActor
def initialize
@models = 0.upto(3).map do |idx|
model = Actors.actorOf { SieveNonblocking::Model.new }
model.start
model
end
# Seed models with a few initial values... just to get things going
@heuristicfencepost
heuristicfencepost / sieve_actor.rb
Created January 6, 2012 02:34
Implementation of Sieve of Eratosthenes using actors, JRuby and Akka
require 'java'
require 'lib/akka-actor-1.2.jar'
require 'lib/scala-library.jar'
java_import 'akka.actor.Actors'
java_import 'akka.actor.UntypedActor'
java_import 'akka.actor.UntypedActorFactory'
module Sieve
@heuristicfencepost
heuristicfencepost / comprehension1.clj
Created November 26, 2011 01:16
Code samples for blog post on list comprehensions
(defn euclidean [x y] (Math/sqrt (+ (Math/pow x 2) (Math/pow y 2))))
(println (for [
[x,y]
[[1,2],[2,3],[3,4]]
:when (> (euclidean x y) 3.0)]
[(euclidean x y),(Math/toDegrees (Math/atan (/ y x)))]))
@heuristicfencepost
heuristicfencepost / akka_sample1.rb
Created September 13, 2011 02:15
Sample Ruby code for working with Akka in JRuby
require 'java'
require 'akka-actor-1.2-RC6.jar'
require 'scala-library.jar'
java_import 'akka.actor.UntypedActor'
java_import 'akka.actor.Actors'
# Start with something simple. Implement the actor as a distinct
# class and start it up within the Akka runtime.
@heuristicfencepost
heuristicfencepost / add_employee_data.clj
Created September 2, 2011 22:44
Clojure and Ruby apps to populate mock user data into a Cassandra database and then retrieve it
; Populate data for a set of random users to a Cassandra instance.
;
; Users consist of the following set of data:
; - a username [String]
; - a user ID [integer]
; - a flag indicating whether the user is "active" [boolean]
; - a list of location IDs for each user [list of integer]
;
; User records are keyed by username rather than user IDs, mainly because at the moment
; we only support strings for key values. The Cassandra API exposes keys as byte arrays
@heuristicfencepost
heuristicfencepost / antitails.hs
Created August 3, 2011 03:04
Implementations of "tails" function in Data.List as well as a vaguely related function
antitails x = reverse (foldr f1 [] x) ++ [""]
where f1 newchar acc = [[newchar]] ++ (map (newchar:) acc)
@heuristicfencepost
heuristicfencepost / generate_random_data.rb
Created July 27, 2011 07:05
Scripts for computing max and min values for a field in MongoDB
require 'yaml'
def generate_random_name(len)
1.upto(len).map { (65 + (rand 26)).chr }.join()
end
NUM_AUTHORS=10000
AUTHOR_NAME_LENGTH=24
POSTS_PER_AUTHOR=100
MAX_PAGE_VIEWS_PER_POST=2000
@heuristicfencepost
heuristicfencepost / ThriftCassandraClient.scala
Created May 25, 2011 04:53
Experiments in interacting with Cassandra via Thrift
package org.fencepost.cassandra
import scala.collection.JavaConversions
import org.apache.thrift.protocol.TBinaryProtocol
import org.apache.thrift.transport._
import org.apache.cassandra.service._
import org.apache.cassandra.thrift._
object ThriftCassandraClient {