Skip to content

Instantly share code, notes, and snippets.

View bengl's full-sized avatar
💭
Set your status

Bryan English bengl

💭
Set your status
View GitHub Profile

Keybase proof

I hereby claim:

  • I am bengl on github.
  • I am bengl (https://keybase.io/bengl) on keybase.
  • I have a public key whose fingerprint is 37D2 6669 8039 4F22 43B7 FF45 145D 4E0D 7970 799A

To claim this, I am signing this object:

@bengl
bengl / exportedFunction.js
Created August 10, 2016 18:49
tern annotations?
// tern: const Thing = require('./thing.js')
/**
* @param {Thing} thing
*/
module.exports = function (thing) {
thing.foo();
}
@bengl
bengl / commits.js
Last active August 29, 2015 14:27
Analyse the commits on node core to see how many are doc-only, etc.
/**
* Plop this in your node git repo and run:
*
* $ node commits.js [num of commits you want to analyse (default 1000)]
*/
var exec = require('child_process').exec;
function gitDiffTree(commit, recursive, cb) {
exec('git diff-tree --name-only --no-commit-id ' + (recursive ? '-r ' : '') + commit, function(err, data) {
@bengl
bengl / hamgear.md
Last active June 9, 2016 06:00
ham / amateur radio gear list for nodeconf
@bengl
bengl / extendedpromise.js
Created February 16, 2015 23:57
You can't extend promises in node 0.12.0
function ExtendedPromise (resolver) {
Promise.call(this, resolver)
}
require('util').inherits(ExtendedPromise, Promise)
ExtendedPromise.__proto__ = Promise
new ExtendedPromise(function (resolve) {
resolve(1)
}).then(console.log)
# hundreds of lines like this...
info attempt registry request try #1 at 14:45:50
http request GET https://registry.npmjs.org/media-typer/
info attempt registry request try #1 at 14:45:50
http request GET https://registry.npmjs.org/mime-types/
info attempt registry request try #1 at 14:45:50
http request GET https://registry.npmjs.org/mime-db/
info attempt registry request try #1 at 14:45:50
http request GET https://registry.npmjs.org/util-extend/
info attempt registry request try #1 at 14:45:50

Populating npm caches with BitTorrent

NOTE: This concept has probably been covered before, so if anyone can point me in the direction of some prior art, that would be great.

This past June, I attended NodeConf for the first time. While it was an amazing event, and I've love to go next year, it wasn't without its hiccups. In particular, all the sessions involved some npm install, and with hundreds of programmers on a small pipe to the internet, this became rather tiresome rather quickly.

First of all, cheers to everyone involved in setting up npm registry mirrors at the event (npm, Inc. and others). This worked out reasonably well, but often the mirrors were just slightly out of date, which was problematic because many instructors were updating their course material in real-time.

This sort of situation seems like it can be relatively common, so lots of solution ideas came from this. Here is one such solution.

Keybase proof

I hereby claim:

  • I am bengl on github.
  • I am bengl (https://keybase.io/bengl) on keybase.
  • I have a public key whose fingerprint is F2FE 3552 09D6 F280 BF6A B807 FE32 AE04 E6BF 5E9E

To claim this, I am signing this object:

@bengl
bengl / camera.js
Created October 1, 2014 04:05
simple webcam thing for tessel
var tessel = require('tessel');
var camera = require('camera-vc0706').use(tessel.port['A']);
var notificationLED = tessel.led[3];
camera.on('error', function(err) {
console.error(err);
});
camera.on('ready', function() {
@bengl
bengl / maybePromisify.js
Created June 12, 2014 01:11
Promisify if it calls a callback, pass through if it returns a promise.
// non-`Promise.defer()` version of https://github.com/petkaantonov/bluebird/issues/159#issuecomment-38348877
var Promise = require('bluebird');
function maybePromisify(fn, ctx){
return function() {
var args = Array.prototype.slice.call(arguments);
return new Promise(function(fulfill, reject){
args.push(function(err, result){
if (err)