Skip to content

Instantly share code, notes, and snippets.

@dyoder
dyoder / fun-with-do.coffee
Created November 27, 2012 00:44
Using do to create a rich function
# None of the various "private" functions or data structures used by our robot function are exposed.
# The function just magically returns a robot for the given host.
robot = do ->
_makeRobot = require "robotstxt"
_userAgent = "Mozilla/5.0 (compatible; Googlebot/2.1)"
robots = {}
(host) -> robots[host] ?= _makeRobot "http://#{host}/robots.txt", _userAgent
@dyoder
dyoder / cascading-test.coffee
Created November 5, 2012 22:03
Test for cascading events ...
testify "A bus with cascading events fires them all", (test) ->
bus = new Bus
flag = false
bus.on "foo", ->
bus.event "bar"
process.nextTick ->
test.assert.ok flag
test.done()
bus.on "foo", ->
bus.on "bar", -> flag = true
@dyoder
dyoder / add.rb
Created October 16, 2012 03:14
Getting spot instances with fog ...
def provision_server
if options[:spot]
request = compute.spot_requests.create(
:price => price, :instance_count => 1,
:tags => {"Name" => generate_server_name},
:region => region, :flavor_id => flavor, :image_id => image,
:security_group_ids => security_group, :key_name => keypair)
server = nil
Fog.wait_for { server = compute.servers.get(request.reload.instance_id) }
server
@dyoder
dyoder / example.coffee
Created October 9, 2012 18:20
CoffeeScript Function Arguments
foo
bar: "monday"
baz: 7
->
"omg, this works"
# meanwhile ...
foo
@dyoder
dyoder / y-combinator.coffee
Created October 3, 2012 05:04
CoffeeScript is good at lambda calculus
# λf.(λg.f (g g)) (λg.f (g g))
Y = (f) -> ((g) -> f((x) -> g(g)(x)))((g) -> f((x) -> g(g)(x)))
# ß-reduction of Y: λf.(λg.g g) (λg.f (g g))
X = (f) -> ((g) -> g((x) -> g(x)))((g) -> f((x) -> g(g)(x)))
# applied to factorial ... this returns 720
X((f) -> (x) -> if x is 1 then 1 else x * f(x - 1))(6)
@dyoder
dyoder / event-wrapper.coffee
Created September 20, 2012 21:25
Event wrapper
_emit = EventEmitter.prototype.emit
EventEmitter.prototype.emit = ->
console.log arguments[0]
_emit(arguments)
@dyoder
dyoder / extend.rb
Created September 9, 2012 20:18
Class and instance methods in Ruby
module FooMethods
def bar
"bar"
end
end
class Foo
extend FooMethods
@dyoder
dyoder / navtab.coffee
Created September 9, 2012 19:01
conditional strings
for id,tab of tabs
results.push @html.div
class: "tab-content"
content: @html.div
class: "tab-pane fade in" + ((" active" if tab.active?) or "")
id: id
content: tab.content
@dyoder
dyoder / schema.coffee
Created September 7, 2012 20:58
schema sans resource and media type info
queue_list:
extends: {$ref: "#resource"}
mediaType: media_type("queue_list")
additionalProperties: { $ref: "#queue"}
queue:
type: "object"
properties:
name: { type: "string" }
pending: { type: "integer" }
@dyoder
dyoder / output-buffering.txt
Created September 4, 2012 20:20
interactive shell output buffering ...
<3: start workers
- Starting (46105): workers.events
- Starting (46106): workers.config
- Starting (46108): workers.integrity
- Starting (46109): workers.analytics
- Starting (46110): workers.health
- workers.analytics is running.
- workers.health is running.
- workers.config is running.