Skip to content

Instantly share code, notes, and snippets.

Avatar

Ben Buckman benbuckman

View GitHub Profile
@benbuckman
benbuckman / elevators.js
Created Jul 20, 2012
Elevator dispatch algorithm in javascript
View elevators.js
/*
Elevator algorithm
by Ben Buckman, for a job interview process 7/18/12
*/
// == INSTRUCTIONS ==
// Iterate through the elevators list and return the elevator that is:
// closest, AND
// moving in the right direction (or idle),
// - [ben] this could mean 2 things:
View php: output to downloaded csv.php
<?php
// force download of CSV
// simulate file handle w/ php://output, direct to output (from http://www.php.net/manual/en/function.fputcsv.php#72428)
// (could alternately write to memory handle & read from stream, this seems more direct)
// headers from http://us3.php.net/manual/en/function.readfile.php
header('Content-Description: File Transfer');
header('Content-Type: application/csv');
header("Content-Disposition: attachment; filename=FILENAME.csv");
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
@benbuckman
benbuckman / intercept-stdout.js
Created May 20, 2012 — forked from pguillory/gist:729616
Hooking into Node.js stdout, pipe stdout to telnet
View intercept-stdout.js
var _ = require('underscore'),
util = require('util');
// intercept stdout, passes thru callback
// also pass console.error thru stdout so it goes to callback too
// (stdout.write and stderr.write are both refs to the same stream.write function)
// returns an unhook() function, call when done intercepting
module.exports = function interceptStdout(callback) {
var old_stdout_write = process.stdout.write,
old_console_error = console.error;
@benbuckman
benbuckman / ca10-results.rb
Last active Nov 11, 2018
CA-10 vote tally watcher (Nov 2018, Josh Harder vs Jeff Denham)
View ca10-results.rb
#! /usr/bin/env ruby
require 'net/http'
require 'json'
# Periodically check the vote tallies in CA-10
# (Nov 2018 midterms, Jash Harder vs Jeff Denham)
class CA10Checker
URL = 'https://api.sos.ca.gov/returns/us-rep/district/10'
@benbuckman
benbuckman / logged-bash-script-example.sh
Created Jul 29, 2013
tee stdout to log inside bash script
View logged-bash-script-example.sh
#! /bin/bash
# concept from http://stackoverflow.com/a/3403786/267224
#############
# log to file
LOGFILE=/home/user/log/script.log
exec > >(tee -a $LOGFILE)
exec 2>&1
############
@benbuckman
benbuckman / pig-latin.js
Created Jul 20, 2012
Pig Latin Interpreter in javascript/node.js
View pig-latin.js
/*
Pig Latin interpreter
by Ben Buckman, July 20 2012
Rules:
- All words beginning with a consonant have their first letter moved to the end of word followed by 'ay'.
Example: Hello -> Ellohay
- All words beginning with a vowel have their first letter moved to the end moved to the word followed by 'hay'.
Example: Another -> Notherahay
@benbuckman
benbuckman / 1-process-uncaughtException.js
Last active Dec 22, 2015
Catching uncaught exceptions with node v0.10.13
View 1-process-uncaughtException.js
// this catches the error (good) but still crashes (bad)
// was process.uncaughtException already deprecated?
// (shouldn't have been yet - http://nodejs.org/api/process.html#process_event_uncaughtexception)
process.on('uncaughtException', function(error) {
return console.error("CAUGHT uncaughtException", error);
});
throw new Error("A big error!");
@benbuckman
benbuckman / 1--messed-up-scope.coffee
Last active Dec 21, 2015
Surprising scoping confusion with coffeescript constructors
View 1--messed-up-scope.coffee
_ = require 'lodash'
class CrazyParentView
events:
'mousedown .thing': ->
class CrazyChildView extends CrazyParentView
constructor: ->
@benbuckman
benbuckman / results-docusign-sentinel.log
Last active Dec 16, 2015
Testing/understanding various node.js redis-sentinel implementations
View results-docusign-sentinel.log
Using test hash test-sentinel-662038
sentinel client [no role] [no port] got 'end' { '0': undefined, '1': undefined, '2': undefined, '3': undefined }
sentinel client [no role] [no port] got 'connect' {}
sentinel client master 5379 got 'ready' {}
---- knock 1 ----
1 Set? true
1 check integrity: all good
---- knock 2 ----
2 Set? true
2 check integrity: all good
View test-getters.js
function Client(){
this.subClient = new SubClient();
};
function SubClient(){
this.numConnections = 0;
this.status = 'OK';
};
// getting error,
// TypeError: Invalid property. A property cannot both have accessors and be writable or have a value, #<Object>