Skip to content

Instantly share code, notes, and snippets.

@jabney
jabney / font-awesome.json
Created May 22, 2015 03:57
Font Awesome JSON Entity Reference
{"cc": "", "bookmark": "", "venus-mars": "", "arrow-circle-o-down": "", "comment-o": "", "long-arrow-left": "", "arrow-right": "", "delicious": "", "chevron-circle-left": "", "bullhorn": "", "outdent": "", "jpy": "", "drupal": "", "hdd-o": "", "hand-o-left": "", "pinterest": "", "plane": "", "question": "", "child": "", "circle-o": "", "italic": "", "meanpath": "", "subway": "", "google-plus": "", "angle-up": "", "star": "", "star-half-empty": "", "facebook-official": "", "youtube-square": "", "rss": "", "toggle-off": "", "list-ol": "", "dot-circle-o": "", "copyright": "", "user": "", "key": "", "minus-square-o": "", "mobile": "", "table": "", "columns": "", "bolt": "", "fighter-jet": "&
import os
import re
import gzip
import base64
import json
from glob import glob
from argparse import ArgumentParser
from KnoDB.crawler.scc import case_parser
from KnoDB.crawler import bcca
@jabney
jabney / binary-search.js
Last active May 6, 2017 02:04
Binary search with comparator
// The default comparator is for any values that can be
// compared with '==', '<', '<=', '>', '>='.
function defaultComparator(candidate, target) {
if (target < candidate) {
return -1
} else if (target > candidate) {
return 1
} else {
return 0
}
@jabney
jabney / keyframeInterpolateBinary.js
Created May 6, 2017 15:42
keyframeInterplation function using binary search
function keyframeInterpolate(keyframes, time, timing, lib) {
const first = 0
const last = keyframes.length - 1
// Clamp time to [0, 1]
time = Math.max(Math.min(time, 1), 0)
if (!Array.isArray(keyframes) || !keyframes.length) {
return lib.zero()
}
@jabney
jabney / PriorityQueue.js
Last active September 17, 2017 17:53
A heap-based priority queue in JavaScript
// PriorityQueue.js MIT License © 2014 James Abney http://github.com/jabney
(function(ex) {
'use strict';
// ---------------------------------------------------------------
// PriorityQueue Constructor
// A heap-based priority queue.
// ---------------------------------------------------------------
ex.PriorityQueue = function PriorityQueue(compare) {
var compare = compare || function(a, b) { return a < b; },
@jabney
jabney / micro-reselect.js
Last active January 22, 2020 20:25
micro-reselect: memoize a function based on the state passed to it (mimics reselect npm module)
/**
* Implement a simplified createSelector function mimicking the reselect module.
*
* Memoizes the result of a function called with a state object as its argument.
* The given function is only called when state values change.
*/
/**
* A resolver returns a value from a state object (key/value pairs).
*
@jabney
jabney / micro-react-redux.js
Last active January 22, 2020 20:27
micro-react-redux: a minimal implementation of react-redux style provider and connect function
/**
* Minimal implementation of react-redux style provider and connect function.
*/
import React, { useState, useEffect, useContext } from 'react'
const StoreContext = React.createContext(null)
/**
* Wraps root component for providing store context, e.g.,
*
@jabney
jabney / multithreaded-pi.cpp
Last active January 22, 2021 23:36
Calculate PI using Leibniz algorithm spread across multiple threads
#include <algorithm>
#include <chrono>
#include <iomanip>
#include <iostream>
#include <numeric>
#include <thread>
#include <vector>
using namespace std;
@jabney
jabney / array-view.ts
Last active May 9, 2022 14:36
An experimental view that can iterate over a subset of an array
/**
* An experimental view that can iterate over a subset of an array.
* - Not unit tested, there are undoubtedly bugs.
*/
"use strict";
const clamp = (min: number, max: number, value: number) => {
return Math.min(max, Math.max(min, value));
};
@jabney
jabney / timer-cache.ts
Created May 9, 2022 14:39
An example of class composition with a timed value cache
interface IValueCache<T> {
get: () => T;
invalidate: () => void;
}
/**
* A simple cache that invalidates based on a timer. Every access of
* the value will refresh the timer.
*
* Even this simple class can be broken up into useful pieces and then