Skip to content

Instantly share code, notes, and snippets.

View derrickturk's full-sized avatar
💭
(Come in under the shadow of this red rock)

Derrick Turk derrickturk

💭
(Come in under the shadow of this red rock)
View GitHub Profile
@derrickturk
derrickturk / qc_plots.R
Created January 8, 2014 16:49
Here's a simple but useful function for quickly reviewing distributions and missing data. Suitable for preliminary data QC and exploratory analysis.
# (c) 2013 dwt | terminus data science, LLC
# freely licensed for non-commercial use
qc.plots <- function(df, max.levels=25, ask=TRUE, col="white")
{
old.par <- par(ask=ask)
on.exit(par(old.par))
for (var in names(df)) {
vals <- df[[var]]
@derrickturk
derrickturk / anneal.py
Created January 8, 2014 16:52
A simple generic simulated annealing solver, and basic implementations of the "standard" acceptance probability function and exponential-decay temperature schedules.
from random import Random
import math
def anneal(initial, energyfn, candidatefn, acceptancefn, temperaturefn, tmax):
rand = Random()
t = 0
solution = initial
s_best = initial
e_best = energyfn(initial)
@derrickturk
derrickturk / fork_and_pipes.cpp
Created January 8, 2014 17:00
Some didactic example code, intended to help my brother through a poorly-taught "C++" class. I was a little hamstrung by the fact that the class taught (bad C + "new" and "delete" + bad Java) and called it C++...
#include <cstdio>
#include <cstdlib>
#include <csignal>
#include "unistd.h"
#include "sys/wait.h"
#include "sys/types.h"
#include "sys/time.h"
// I can never remember this...
@derrickturk
derrickturk / doggr.py
Created January 29, 2014 21:46
In the game of web scraping, you win... or you die.
from urllib import request
from sys import argv, stdout, stderr
from time import sleep
from random import randrange
import re
def main(argv):
if len(argv) == 1:
try:
with open(argv[0], 'r') as f:
@derrickturk
derrickturk / hsv_scale.R
Last active August 29, 2015 13:56
Handy function for HSV-scale-izing real-valued data.
hsv.scale <- function (var, hmin, hmax=hmin, smin=1, smax=smin, vmin=1, vmax=vmin,
na.col=rgb(0.75, 0.75, 0.75))
{
var.min <- min(var, na.rm=TRUE)
var.max <- max(var, na.rm=TRUE)
h.f <- approxfun(c(var.min, var.max), c(hmin, hmax))
s.f <- approxfun(c(var.min, var.max), c(smin, smax))
v.f <- approxfun(c(var.min, var.max), c(vmin, vmax))
tmp <- var
@derrickturk
derrickturk / iife.R
Created February 6, 2014 00:27
Javascript style "immediately invoked function expressions" plus on.exit for scope guards in R. Cleanup actions get carried out regardless of clean or error exit from block.
(function() {
pdf("example.pdf")
on.exit(dev.off())
plot(some.data)
})()
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
body {
-moz-columns: 20em;
-webkit-columns: 20em;
columns: 20em;
-moz-column-gap: 2em;
@derrickturk
derrickturk / build.bat
Created February 25, 2014 21:43
Dinking around with building windows DLLs with MinGW again. And figured out where the [[gnu::stdcall]] goes.
g++ -std=c++11 -Wall -Wextra -c dlltest.cpp
g++ -shared -static-libgcc -static-libstdc++ -o dlltest.dll dlltest.o -Wl,--add-stdcall-alias
#include <iostream>
constexpr int fac(int n)
{
return n <= 0 ? 1 : n * fac(n - 1);
}
struct [[weenie]] C {
void f() && { std::cout << "dying C's last gasp!\n"; }
void f() & { std::cout << "living, breathing C\n"; }