Skip to content

Instantly share code, notes, and snippets.

View yocontra's full-sized avatar

contra yocontra

View GitHub Profile
@yocontra
yocontra / slitscan.pde
Created May 27, 2012 22:54
Processing slitscan
import processing.video.*;
MovieMaker movie;
boolean rec;
int n;
int varZero;
int prevN;
int prevZero;
int numPixels;
int prevPixels;
@yocontra
yocontra / EventEmitter.coffee
Created May 20, 2012 19:57
Tiny browser/node EventEmitter implementation in coffeescript
class EventEmitter
constructor: ->
@events = {}
emit: (event, args...) ->
return false unless @events[event]
listener args... for listener in @events[event]
return true
addListener: (event, listener) ->
@yocontra
yocontra / xmlhttprequest.js
Created May 16, 2012 10:49
Tiny XMLHTTPRequest shim
var ids = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP", "Msxml2.XMLHTTP.4.0"];
if (typeof XMLHttpRequest === "undefined") {
for (var i = 0; i < ids.length; i++) {
try {
new ActiveXObject(ids[i]);
window.XMLHttpRequest = function() {
return new ActiveXObject(ids[i]);
};
break;
} catch (e) {}
@yocontra
yocontra / mock.coffee
Created May 15, 2012 18:02
dermis view mock
define
effect: "fade"
construct: -> # anything before render
render: require("templates/mock")
destruct: -> # clean up here
@yocontra
yocontra / stuff.coffee
Created April 30, 2012 03:53
Number of seconds to pretty date
prettySeconds = (secs) ->
days = Math.floor secs / 86400
hours = Math.floor (secs % 86400) / 3600
minutes = Math.floor ((secs % 86400) % 3600) / 60
seconds = ((secs % 86400) % 3600) % 60
out = ""
out += "#{days} days " if days > 0
out += "#{hours} hours " if hours > 0
out += "#{minutes} minutes" if minutes > 0
out += " #{seconds} seconds" if seconds > 0 and days <= 0
@yocontra
yocontra / native.cc
Created April 24, 2012 08:12
Emitting events from a native node/v8 module
/*
You need to mix EventEmitter into MyObject from the JS end before you can emit/listen for events
*/
bool MyObject::Emit(const char *event, int argCount, Handle<Value> emitArgs[])
{
HandleScope scope;
//Format arguments to pass to v8::Function
int nArgCount = argCount + 1;
Handle<Value> *nEmitArgs = new Handle<Value>[nArgCount];
@yocontra
yocontra / stuff.coffee
Created April 24, 2012 07:59
Tiny window.location parser javascript/coffee-script
parseLocation = ->
out = {}
for key in window.location.search.substring(1).split "&"
pair = key.split "="
out[pair[0]] = pair[1]
return out
@yocontra
yocontra / stuff.coffee
Created April 24, 2012 07:58
Real function throttle javascript/coffee-script
# Most throttles are actually just delays
# This will only call the function if it hasn't been triggered in (delay)ms
throttle = (fn, delay) ->
return fn if delay is 0
timer = false
return ->
return if timer
timer = true
setTimeout (-> timer = false), delay unless delay is -1
fn arguments...
@yocontra
yocontra / stuff.coffee
Created April 24, 2012 07:56
Tiny cookie getter/setter javascript/coffee-script
cookie = (name, value) ->
if name and value
document.cookie = "#{name}=#{value};"
return value
else
out = {}
for cookie in document.cookie.split ";"
pair = cookie.split "="
out[pair[0]] = pair[1]
return (if name? then out[name] else out)
@yocontra
yocontra / stuff.coffee
Created April 24, 2012 07:55
Tiny DOMReady javascript/coffee-script
# DOM ready
window.ready ?= (fn) ->
fire = ->
unless window.ready.fired
window.ready.fired = true
fn()
return fire() if document.readyState is "complete"
# Mozilla, Opera, WebKit