Skip to content

Instantly share code, notes, and snippets.


Kurt Roberts kurtroberts

View GitHub Profile
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: '',
port: 80
mimeTypes = { 'js' : 'text/javascript',
'css' : 'text/css',
'html' : 'text/html',
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: ''
});'statuses/filter', {'track': 'rgiii'}, function(stream) {
kurtroberts /
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…
#!/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 / gist:a5c630792e786313e0e1
Last active Jul 3, 2018
When only the least elegant solution will do...
View gist:a5c630792e786313e0e1
//I have made a lot of nice things with PHP. But this isn't one of them.
if (!function_exists('lets_confuse_strings_and_symbols')) {
function lets_confuse_strings_and_symbols ($funny_function_name) {
return eval($$funny_function_name);
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...
var huntsman = require('huntsman'),
spider = huntsman.spider(),
fs = require('fs'),
out = fs.createWriteStream('');
spider.extensions = [
huntsman.extension( 'recurse' ), // load recurse extension & follow anchor links
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
summary.summarize(opts.url, function(result, failure) {
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 / fortune500.txt
Last active Jun 7, 2019
Check a list of sites to see if they are Google Mobile friendly.
View fortune500.txt
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:
var iterations = parseInt(2147483647 / 128);
//Base case, no optimization
function runCaseOne () {
var i = iterations,
arrayA = [],
arrayB = [],
kurtroberts /
Last active Jul 3, 2018
Understanding Integers and Performance in JS

Understanding Integers and Performance in JS

This is just an interactive node session, not really a code snippet.

But it's pretty instructive.

Implicit Casting

kroberts-macpro:~ kroberts$ node
> 23|0
You can’t perform that action at this time.