Skip to content

Instantly share code, notes, and snippets.

@evnm
evnm / gitm
Last active December 21, 2015 01:28
A Git maintenance script. Prunes remote-tracking branches on origin and performs a deep repack on the repository.
#! /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 / gist:5695408
Last active December 18, 2015 00:18
Notes on Steve McConnell's "Managing Technical Debt" keynote presentation at the 2013 International Workshop on Managing Technical Debt

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 / README.md
Created November 11, 2015 21:19
README for a hypothetical stream-consumption command-line tool

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:2127168
Created March 19, 2012 21:18 — forked from marcel/gist:2100703
giftube – Generates an animated gif from a YouTube url.
#!/usr/bin/env ruby
# giftube – Generates an animated gif from a YouTube url.
#
# Usage:
#
# giftube [youtube url] [minute:second] [duration]
#
# ex.
#
@evnm
evnm / app.js
Created October 30, 2011 23:48
A Node.js daemon for achieving TTL behavior of files within a Dropbox directory
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) {
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 / array-sum-example
Created September 24, 2011 05:36
Java vs Scala 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 { _ + _ })
@evnm
evnm / gist:1164076
Created August 23, 2011 01:23
git crunk
[alias]
crunk = checkout -b regrettable-late-night-coding-session
@evnm
evnm / gist:1143421
Created August 13, 2011 03:00
My new screensaver
yes 123482736951872309587349057348056239146823756892376589237469236759034285709238470192384723975634895763894567981234902042387509324875093246709126374093476509137649023187409213865092386549034137849127340983729084172309487129037490182374901823740981273094817239041234740213 | lolcat
;; Originally from stevey, adapted to support moving to a new directory.
;; http://stackoverflow.com/questions/384284/can-i-rename-an-open-file-in-emacs
(defun rename-file-and-buffer (new-name)
"Renames both current buffer and file it's visiting to NEW-NAME."
(interactive
(progn
(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
(buffer-file-name)))))))