Skip to content

Instantly share code, notes, and snippets.

@sstephenson
sstephenson / let.tcl
Created March 17, 2011 14:04
Lexical scoping in Tcl
#!/usr/bin/env TEST=1 tclsh
# Lexical scoping in Tcl
proc let {block args} {
try {
set captured_vars [uplevel [list capture [block args]]]
set all_var_names [uplevel {info vars}]
foreach var [block args] value $args {
uplevel [list catch [list unset $var]]
> package = stitch.createPackage({ paths: ['basecamp-mobile/lib'] })
> package.findRequires(function(err, requires) { console.log(requires) })
> [ 'cinco/application',
'cinco/date_time',
'cinco/collection',
'cinco/util',
'basecamp/collections/collection',
'basecamp/models/comment',
'basecamp/models/company',
'basecamp/models/milestone',
@sstephenson
sstephenson / gist:771090
Created January 8, 2011 19:41
Automatic *.test host resolution in OS X
$ sudo su -
# mkdir /etc/resolver
# cat > /etc/resolver/test
nameserver 127.0.0.1
port 2155
^D
^D
$ brew install dnsmasq
$ dnsmasq --port=2155 --no-resolv --address=/.test/127.0.0.1
$ ping foo.test
@sstephenson
sstephenson / nodette.coffee
Created December 23, 2010 23:26
Sandboxed CommonJS module contexts for Node
{Script} = process.binding 'evals'
natives = process.binding 'natives'
Path = require 'path'
FS = require 'fs'
globals = {
Buffer, process, console,
setTimeout, clearTimeout,
setInterval, clearInterval
@sstephenson
sstephenson / back_forward.js
Created December 13, 2010 21:55
How to detect whether a hash change came from the Back or Forward button
var detectBackOrForward = function(onBack, onForward) {
hashHistory = [window.location.hash];
historyLength = window.history.length;
return function() {
var hash = window.location.hash, length = window.history.length;
if (hashHistory.length && historyLength == length) {
if (hashHistory[hashHistory.length - 2] == hash) {
hashHistory = hashHistory.slice(0, -1);
onBack();
var dom = require("jsdom/jsdom/level2/core").dom.level2.core;
var browser = require("jsdom/jsdom/browser");
exports.createWindow = function() {
var bom = browser.browserAugmentation(dom);
var window = browser.windowAugmentation(dom);
for (var key in bom) window[key] = bom[key];
return window;
}
require "coffee-script"
require "benchmark"
Benchmark.bmbm do |x|
x.report("evaluate") do
100.times { CoffeeScript.evaluate "a = 1" }
end
end
window.addEventListener "DOMContentLoaded", ->
body = $ "body"
canvas = $ "#canvas"
chalkboard = $ "#chalkboard"
close = $ "#close"
ledge = $ "#ledge"
lightswitch = $ "#lightswitch"
output = $ "#output"
shade = $ "#shade"
share = $ "#share"
// Safari
var f = function() {}, ks = [];
f.prototype = {};
for (var k in f) ks.push(k);
ks // => ["prototype"]
;; How to unfuck html-helper-mode.
(add-hook 'html-helper-mode-hook
'(lambda ()
(auto-fill-mode nil)
(set (make-local-variable 'indent-line-function)
'sgml-indent-line)
(define-key html-helper-mode-map (kbd "RET") 'newline-and-indent)
(define-key html-helper-mode-map (kbd "TAB") 'indent-for-tab-command)))