Skip to content

Instantly share code, notes, and snippets.

View gist:1164076
[alias]
crunk = checkout -b regrettable-late-night-coding-session
@evnm
evnm / array-sum-example
Created Sep 24, 2011
Java vs Scala array sum example
View array-sum-example
// Java.
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
System.out.println(sum);
// Scala (ignoring arr.sum).
println(arr reduceLeft { _ + _ })
View gist:1323401
Programming, when stripped of all the circumstantial irrelevancies
is nothing more and nothing less than "very effective thinking
so as to avoid unmastered complexity, to very vigorous
separation of your many different concerns".
-- Edsger Dijkstra
@evnm
evnm / app.js
Created Oct 30, 2011
A Node.js daemon for achieving TTL behavior of files within a Dropbox directory
View app.js
var Log = require('log'),
log = new Log('info'),
DropboxClient = require('dropbox').DropboxClient,
dropbox = new DropboxClient("api_key", "api_secret",
"access_token", "access_token_secret");
/**
* Returns a function that checks the mtime of all files within dir
* and deletes any that are older than ttl.
*/
function checkForAndRmExpiredItems(dir, ttl) {
@evnm
evnm / gist:2127168
Created Mar 19, 2012 — forked from marcel/gist:2100703
giftube – Generates an animated gif from a YouTube url.
View gist:2127168
#!/usr/bin/env ruby
# giftube – Generates an animated gif from a YouTube url.
#
# Usage:
#
# giftube [youtube url] [minute:second] [duration]
#
# ex.
#
@evnm
evnm / README.md
Created Nov 11, 2015
README for a hypothetical stream-consumption command-line tool
View README.md

scat

A stream consumption tool.

Status: Vaporware

Why?

In 2015, stream-processing is the it-girl of software architecture. This sub-field is driven forward by a growing number of

@evnm
evnm / gist:5695408
Last active Dec 18, 2015
Notes on Steve McConnell's "Managing Technical Debt" keynote presentation at the 2013 International Workshop on Managing Technical Debt
View gist:5695408

Slides: http://www.sei.cmu.edu/community/td2013/program/upload/TechnicalDebt-ICSE.pdf

Business vs Technical viewpoints

  • Business staff tends to be optimistic about debt
  • Technical staff tends to be pessimistic about debt (religious and aesthetic)
  • These attitudes are often not conscious
  • Debt is a tool, neither inherently good nor bad

Short- vs Long-term debt

  • Short: violating coding standards, "we'll write these unit tests after we ship"
@evnm
evnm / gitm
Last active Dec 21, 2015
A Git maintenance script. Prunes remote-tracking branches on origin and performs a deep repack on the repository.
View gitm
#! /bin/sh
# A Git maintenance script.
set -e
root=`git rev-parse --show-toplevel`
echo "Performing maintenance tasks on Git repository in ${root}..."
git fetch
git remote prune origin
git repack -a -d --depth=250 --window=250
@evnm
evnm / test_changed
Last active Dec 28, 2015
A Ruby script that runs tests with Pants for all projects that have been modified in the current working tree.
View test_changed
#!/usr/bin/env ruby
#
# Run tests for all projects that have been modified in the Birdcage,
# relative to HEAD.
#
# For example, if you've edited files in three projects, this script will
# run tests serially for these three projects in one command.
print "Determining which files have been changed..."
$stdout.flush
@evnm
evnm / gcb
Last active Dec 29, 2015
A fuzzy `git checkout`.
View gcb
#! /bin/sh
# A fuzzy `git checkout`.
match=`git rev-parse --abbrev-ref --branches="*$1*"`
case `wc -w <<< "$match" | tr -d ' '` in
"0") echo "error: '$1' did not match any branch." 2>&1 ;;
"1") git checkout $match ;;
*) echo "error: '$1' is ambigious among:\n$match" 2>&1
esac