Skip to content

Instantly share code, notes, and snippets.

View zackdever's full-sized avatar

Zack Dever zackdever

View GitHub Profile
@zackdever
zackdever / gist:8701478
Created January 30, 2014 02:23
arc diff off another diff
taken directly from https://sites.google.com/a/khanacademy.org/forge/for-developers/code-review-policy/using-phabricator
Advanced topic: Dependent Phabricator reviews
Say you have an upstream called master, and a feature branch F1, and a second change that depends on F1, (call it F2).
git checkout master
git checkout -b F1
# work work
git commit -a
arc diff
@zackdever
zackdever / latency.txt
Created December 3, 2019 05:23 — forked from jboner/latency.txt
Latency Numbers Every Programmer Should Know
Latency Comparison Numbers (~2012)
----------------------------------
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns 14x L1 cache
Mutex lock/unlock 25 ns
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000 ns 3 us
Send 1K bytes over 1 Gbps network 10,000 ns 10 us
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD
@zackdever
zackdever / html2csv.js
Created April 26, 2013 03:09
converts an html table to a csv string, and makes it available as a file download
function convertTableToCsv(tableSelector) {
return _.map($(tableSelector + ' tr'), function(row) {
return _.map($(row).find('th, td'), function(datum) {
return datum.textContent.replace(/,/g, '');
}).join(',');
}).join('\n');
}
// to download
var data = convertTableToCsv('#mytable');
@zackdever
zackdever / gist:dce4edd205ea12db89124a411859f329
Created September 12, 2016 19:04
racey results from clojure.core.memoize
(require '[clojure.core.memoize :as memo])
(defn calc [x] x)
(def memo-calc (memo/ttl calc {} :ttl/threshold 13))
(filter #(not= "ok" %)
(for [x (range 100000)]
(if (nil? (memo-calc "abc"))
(println "Result was nil!")
function r() {
return Math.random() * 100;
}
var lineData = function() {
return [
[0, r()],
[20, r()],
[40, r()],
[60, r()],
def debug_dict(self, debug_message, data_dict):
import logging
info = '%s\n' % debug_message
for k, v in sorted(data_dict.iteritems()):
info += '%s: %s\n' % (k, v)
logging.debug(info)
@zackdever
zackdever / gist:5051462
Created February 27, 2013 20:35
make room for large numbers in nvd3.js charts
// http://stackoverflow.com/a/13472375/962091
// may also need to make room on the chart itself, maybe something like:
// chart.margin({left: 10});
d3.select('.nv-y.nv-axis > g').selectAll('g');
@zackdever
zackdever / alias
Created February 21, 2013 00:36
when creating an arc paste (http://www.phabricator.com/docs/phabricator/article/Arcanist_User_Guide.html), automatically copy the address to the cilpboard on os x
alias arcpaste='arc paste | copyarcpaste'
@zackdever
zackdever / imageFader.js
Created October 18, 2012 20:52
simple JavaScript image fader
var bgImgs = [
'/images/foo.png'
, '/images/bar.png'
, '/images/foobar.png'
];
$(function () {
if (bgImgs.length > 1) {
var bgImage = $('#bgImage')
, index = 0