Skip to content

Instantly share code, notes, and snippets.

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


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 /
Created Nov 11, 2015
README for a hypothetical stream-consumption command-line tool


A stream consumption tool.

Status: Vaporware


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

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 / 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) {
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 / 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];
// Scala (ignoring arr.sum).
println(arr reduceLeft { _ + _ })
View gist:1164076
crunk = checkout -b regrettable-late-night-coding-session
evnm / gist:1143421
Created Aug 13, 2011
My new screensaver
View gist:1143421
yes 123482736951872309587349057348056239146823756892376589237469236759034285709238470192384723975634895763894567981234902042387509324875093246709126374093476509137649023187409213865092386549034137849127340983729084172309487129037490182374901823740981273094817239041234740213 | lolcat
View rename-file-and-buffer.el
;; Originally from stevey, adapted to support moving to a new directory.
(defun rename-file-and-buffer (new-name)
"Renames both current buffer and file it's visiting to NEW-NAME."
(if (not (buffer-file-name))
(error "Buffer '%s' is not visiting a file!" (buffer-name)))
(list (read-file-name (format "Rename %s to: " (file-name-nondirectory
View dropbox-node-0.2.0-example.js
dropbox.getAccessToken(email, password, function (err) {
if (err) return console.error('Error: ' + err)
dropbox.getAccountInfo(function (err, data) {
if (err) return console.error('Error: ' + err)
console.log(data.display_name + ', ' +