Skip to content

Instantly share code, notes, and snippets.

Avatar

Kurt Roberts kurtroberts

View GitHub Profile
@kurtroberts
kurtroberts / gist:5768cecc052145e8fc34
Created Jun 2, 2015
I remember when Project Managers would pay IA contractors to audit the content on a site, and they'd just give us back a spreadsheet full of links...
View gist:5768cecc052145e8fc34
//Collecting links is a below-the-api job...
//(http://www.forbes.com/sites/anthonykosner/2015/02/04/google-cabs-and-uber-bots-will-challenge-jobs-below-the-api/)
var huntsman = require('huntsman'),
spider = huntsman.spider(),
fs = require('fs'),
out = fs.createWriteStream('example.com.csv');
spider.extensions = [
huntsman.extension( 'recurse' ), // load recurse extension & follow anchor links
@kurtroberts
kurtroberts / gist:ed26aa5a71cd784a153b
Created Jul 7, 2015
First exploration of my "N things about X" article-writing robot
View gist:ed26aa5a71cd784a153b
var summary = require('node-tldr'),
sentiment = require('sentiment'),
opts = require('nomnom')
.option('url', {
abbr: 'u',
help: 'URL to summarize',
required: true
})
.parse();
summary.summarize(opts.url, function(result, failure) {
@kurtroberts
kurtroberts / gist:c7ffb93b0822c07508f3
Created Jul 7, 2015
Create a CSV file with some basic SEO evaluation
View gist:c7ffb93b0822c07508f3
var huntsman = require('huntsman'),
spider = huntsman.spider(),
fs = require('fs'),
opts = require('nomnom')
.option('domain', {
abbr: 'd',
help: 'Domain to scan.',
required: true
})
.option('startUrl', {
@kurtroberts
kurtroberts / test.js
Created Oct 13, 2015
I really thought at the level of abstraction we typically work (Node.js) the idea of "write combining" wasn't going to make a difference. I was wrong.
View test.js
//To understand how I started down this rabbit hole, go here: http://mechanical-sympathy.blogspot.com/2011/07/write-combining.html
var iterations = parseInt(2147483647 / 128);
//Base case, no optimization
function runCaseOne () {
console.time('caseOne');
var i = iterations,
arrayA = [],
arrayB = [],
@kurtroberts
kurtroberts / reverse-proxy.js
Created Dec 24, 2013
For the first useful thing I ever built in node, I hacked together this reverse proxy script so that I could fiddle with front-end code on a remote website more easily. It sits between your computer and the remote site, checking first for files in a folder you specify, then trying a GET request against the site.
View reverse-proxy.js
var http = require('http'),
path = require('path'),
fs = require('fs'),
localPath = "/PATH/TO/LOCAL/FOLDER/",
remoteServer = { host: 'www.example.com',
port: 80
},
mimeTypes = { 'js' : 'text/javascript',
'css' : 'text/css',
'html' : 'text/html',
@kurtroberts
kurtroberts / rg3bot.js
Created Dec 24, 2013
Get yourself banned from twitter in about 3 seconds. Cleaning out more old code that I will never need. This one was from the RP3 -> RG3 conversion.
View rg3bot.js
var twitter = require('ntwitter');
var twit = new twitter({
consumer_key: '',
consumer_secret: '',
access_token_key: '',
access_token_secret: ''
});
twit.stream('statuses/filter', {'track': 'rgiii'}, function(stream) {
@kurtroberts
kurtroberts / lowercase_filenames.pl
Created Dec 24, 2013
For when sloppy coders can't keep their case straight. I never believed this possible, but after contracting with a firm who's name I will not mention for a team, I got back about 200 json files with randomly capitalized names. Despite being very clear we were deploying to an apache2 server on Linux, they tested on their case-insensitive Windows…
View lowercase_filenames.pl
#!/usr/bin/perl -w
opendir DIR, ".";
my @files = grep { $_ ne '.' && $_ ne '..' } readdir DIR;
closedir DIR;
for $file (@files) {
my $lfile = lc($file);
if ($lfile ne $file) {
print $file . "\n";
@kurtroberts
kurtroberts / workDays.js
Created Feb 24, 2016
Fun with Generators
View workDays.js
var getNextDay = function (initialDate) {
initialDate.setDate(initialDate.getDate() + 1);
return initialDate;
},
dayOff = function (day) {
if (day.getDay() == 0 || day.getDay() == 6) {
return true;
}
return false;
View keybase.md

Keybase proof

I hereby claim:

  • I am kurtroberts on github.
  • I am kurtroberts (https://keybase.io/kurtroberts) on keybase.
  • I have a public key ASA70wmzqCJjoErdlX8kpu7lj9CdWPXYcWL_lHdFwa7EIgo

To claim this, I am signing this object:

@kurtroberts
kurtroberts / index.js
Created Nov 12, 2017
One-stop understanding of Promises...
View index.js
//TL;DR - Read the MDN page and skip all the tutorials:
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
//ES6
var x = new Promise((resolve, reject) => {
setTimeout(function () { resolve('test'); }, 5000);
});
x.then((msg) => console.log(msg));
You can’t perform that action at this time.