I hereby claim:
- I am jasoncrawford on github.
- I am jasoncrawford (https://keybase.io/jasoncrawford) on keybase.
- I have a public key whose fingerprint is 4AAB 4EB9 28FB 0CF1 045B 8BCC 5491 0264 6F74 0339
To claim this, I am signing this object:
These are some Twitter utilities, written directly against their API. | |
Credentials are required. Sign up for a Twitter developer account. | |
To run these scripts, ensure the BEARER_TOKEN is in the environment. E.g., put it in a .env file and run with foreman. |
// Generates “correct horse battery staple”-style password: xkcd.com/936 | |
// Usage: node pwdgen.js <file> | |
// File should contain common words, one per line. | |
// Params: | |
var minWordLength = 4; | |
var desiredEntropyBits = 30; | |
var fs = require('fs'); | |
var crypto = require('crypto'); |
var util = require('util'); | |
var extendable = require('./extendable'); | |
// AppError is an error constructor that inherits from Error but is more easily extendable. | |
// You can inherit from it using 'extend' just like with Backbone constructors: | |
// | |
// var SpecialError = AppError.extend({ | |
// name: 'SpecialError', | |
// initialize: function (foo, bar) { | |
// this.message = foo + " " + bar + "!"; |
var fs = require('fs'); | |
var _ = require('underscore'); | |
var csv = require('csv'); | |
var Twitter = require('twitter'); | |
function die(error) { | |
console.error('fatal error'); | |
if (error) console.error('error', error); | |
if (error.stack) console.error('stacktrace', error.stack); | |
process.exit(-1); |
Verifying that +jasoncrawford is my openname (Bitcoin username). https://onename.io/jasoncrawford |
I hereby claim:
To claim this, I am signing this object:
var Backbone = require('backbone'); | |
// Flash /////////////////////////////////////////////////////////////////////////////////////////// | |
// The flash is a way for one controller to pass a small amount of information to the next | |
// controller, through a navigation event. | |
// | |
// The flash holds arbitrary parameters, and is cleared by the router after each navigation event. | |
var flash = exports.flash = { | |
params: {}, |
var relationEvents = ['add', 'change', 'remove', 'reset', 'sort', 'destroy', 'request', 'sync']; | |
var Model = exports.Model = Backbone.Model.extend({ | |
hasMany: { | |
// Subclasses can override to set relations like this: | |
// | |
// key: function () { return new Collection([], options); }, | |
}, | |
hasOne: { |
var repl = require('repl') | |
var vm = require('vm'); | |
var _; | |
var server = repl.start({ | |
eval: function (cmd, context, filename, callback) { | |
try { | |
var match = cmd.match(/^\((.*)\n\)$/); | |
var code = match ? match[1] : cmd; |
var mongoose = require('mongoose'); | |
// Workaround for the fact that chai-as-promised isn't working with Mongoose promises: | |
// https://github.com/domenic/chai-as-promised/issues/30 | |
mongoose.Query.prototype.qexec = function () { | |
return Q.npost(this, 'exec', arguments); | |
} | |
mongoose.Model.qcreate = function () { | |
return Q.npost(this, 'create', arguments); |