Skip to content

Instantly share code, notes, and snippets.

Avatar

terribleplan terribleplan

View GitHub Profile
View keybase.md

Keybase proof

I hereby claim:

  • I am terribleplan on github.
  • I am terribleplan (https://keybase.io/terribleplan) on keybase.
  • I have a public key ASA0bPA5AWyDbDuJlm_CmOxE9Hc_ubKRKRaKGzTGAgdH_go

To claim this, I am signing this object:

@terribleplan
terribleplan / Dockerfile
Last active Dec 16, 2018
Archive team tumblr docker
View Dockerfile
FROM ubuntu:16.04
WORKDIR /app
RUN \
apt update && \
apt upgrade -y && \
apt install -y curl python python-dev python-pip git-core libgnutls30 libgnutls-dev lua5.1 liblua5.1-0 liblua5.1-0-dev bzip2 zlib1g zlib1g-dev flex autoconf && \
pip install --upgrade seesaw && \
git clone https://github.com/ArchiveTeam/tumblr-grab.git && \
cd tumblr-grab && \
./get-wget-lua.sh && \
View audio.js
//Constant helpers
const octave = (hz, octave) => Math.pow(2, octave) * hz;
//Constants
const NOTES = (() => {
const NOTES = {
C: 16.35,
"C#": 17.32,
D: 18.35,
"D#": 19.45,
@terribleplan
terribleplan / osx-for-hackers.sh
Last active Sep 30, 2016 — forked from brandonb927/osx-for-hackers.sh
OSX for Hackers: Yosemite/El Capitan Edition. This script tries not to be *too* opinionated and any major changes to your system require a prompt. You've been warned. Also, please don't email me about this script, my poor inbox...
View osx-for-hackers.sh
#!/bin/sh
# Alot of these configs have been taken from the various places
# on the web, most from here
# https://github.com/mathiasbynens/dotfiles/blob/master/.osx
# Set the colours you can use
black='\033[0;30m'
white='\033[0;37m'
red='\033[0;31m'
@terribleplan
terribleplan / stripe.js
Created Aug 1, 2016
CC/Paypal Fee Calculator
View stripe.js
const FIXED_FEE = 30; //The number of cents you are charged per transaction
const PERCENTAGE_FEE = .029; //The percentage of the transaction your processor will take in addition to the fixed fee
/**
* This function calculates how much you need to charge your customer to recoup the cost of transaction fees
*
* @param targetPrice The target number of cents you want to earn
* @return The number of cents that you want to actually charge the customer, including fractions of a cent
*/
const calculateFee = (targetPrice) => (targetPrice + FIXED_FEE) / (1 - PERCENTAGE_FEE;
@terribleplan
terribleplan / ABOUT.md
Last active Aug 29, 2015
/r/dailyprogrammer [217]
View ABOUT.md

Here is a near-ideal, overly complex, ECMA6 solution to #217. This solution is less than ideal in 3 ways:

  1. There are 2 instances when the input is looped over entirely due to the separation of parsing logic and the logic that builds the initial index. This could be fixed, but shouldn't really since the concerns are wholly separate. Theoretically this also allows for pluggable inputs (who knows, maybe in one you don't need to loop to parse the input). I don't consider the parsing in the complexity for my solution.
  2. My solution does not follow l->r t->b insertion order, except at the very beginning. To fix this there could be a binary search for an insertion position within the index the node is moving to, creating some sort of meta order to the index contents. (I may fix this if I get bored). This is potentially weird because once pile size parity is reached the increase pattern is always going to be th
View gist:d398921d575b6c21ad11
#!/bin/bash
docker rm $(docker ps -a -q) && docker rmi $(docker images -q) && docker-compose build
View crc64.c
/* crc64.c -- compute CRC-64
* Copyright (C) 2013 Mark Adler
* Version 1.4 16 Dec 2013 Mark Adler
*/
/*
This software is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages
arising from the use of this software.
View gist:c9033e963b0019cf81f7
//I'll probably turn this into an actual plugin at some point, but for now this is a simple way to compile handlebars templates statically
grunt.registerMultiTask('render-handlebars', function () {
var done = this.async();
var inputFile = this.data["inputFile"],
outputFile = this.data["outputFile"],
removeInput = !!(this.data["removeTemplate"] || false),
templateName = this.data["templateName"] || "index";
try {