Skip to content

Instantly share code, notes, and snippets.

View aalin's full-sized avatar

Andreas Alin aalin

  • Peru
View GitHub Profile
#pragma once
#include <glm/glm.hpp>
template<typename T>
class Tween {
public:
Tween(float speed = 1.0)
: _value(T()),
_target(T()),
@aalin
aalin / pre-commit
Created August 9, 2017 09:10
Run prettier on staged files
#!/bin/bash
prettier=$(npm bin)/prettier
git diff --cached --name-status src/ | while read -r status filename; do
# skip deleted files
if [[ "$status" == "D" ]]; then continue; fi
if [[ "$filename" =~ \.jsx?$ ]]; then
"$prettier" --single-quote --no-bracket-spacing --write "$filename" || exit 1
@aalin
aalin / gradient.js
Last active September 22, 2017 11:47
function lerp(a, b, t) {
return a + t * (b - a);
}
function mix(a, b, t) {
return a.map((v, i) => lerp(v, b[i], t));
}
function clamp(x, min, max) {
if (x < min) { return min; }
@aalin
aalin / lsformat.rb
Created November 29, 2016 22:11
Format files in a table like ls
require 'io/console'
require 'pp'
files = Dir["*"].sort
MAX_COLUMNS = 9
MAX_COLUMNS.downto(1) do |i|
columns = files.each_slice(i).map { |x| Array.new(i) { |n| x[n] } }
rows = columns.transpose
#!/usr/bin/env ruby
require 'shellwords'
FIELDS = %w(artist album name duration spotify\ url).map { |x| "#{x} of current track" }.join(' & "\\n" & ')
SCRIPT =<<EOF
tell application "Spotify"
#{FIELDS}
end tell
'use strict';
const fs = require("fs");
function leftPad(str, length, chr) {
str = str.toString();
if (str.length >= length) {
return str;
}
# Put this in your project root and create a symlink from ~/.tmuxinator/projectname.yml
name: <%= File.basename(path, '.*') %>
root: <%=
begin
File.dirname(File.readlink(path))
rescue
puts "#{path} should be symlinked from your project root."
exit 1
end
@aalin
aalin / prepare-commit-msg
Last active October 16, 2015 14:28
Git hook for adding issue numbers to commits
#!/usr/bin/env ruby
filename = ARGV[0]
branch_name = `git rev-parse --abbrev-ref HEAD`
issue = branch_name[/^[A-Z]+-\d+/]
if issue
contents = File.read(filename)
File.write(filename, "#{ issue }:\n#{ contents }")
end
var debugArgsPatch = (object, property) => {
if (typeof object[property] !== 'function') {
throw `Object does not have the function ${property}`;
}
var origFunc = object[property];
object[property] = (...args) => {
console.log(`Call ${property}:`, args);
var ret = origFunc.apply(object, args);
@aalin
aalin / blamify.rb
Created March 2, 2015 19:01
Git blame with different colors depending when each line was changed. Darker = older, lighter = newer.
require 'shellwords'
class Blamify
PORCELAIN_COMMIT_HASH_RE = /^(?<hash>\h{40})\s/
PORCELAIN_LINE_RE = /^\t(?<line>.*)$/
COLORS = (237..255).to_a # Greyscale gradient
def initialize(filename)
@filename = filename
end