Skip to content

Instantly share code, notes, and snippets.


Jim Kang jimkang

View GitHub Profile
jimkang /
Last active Apr 5, 2020
Simple script for getting markdown files in a certain date range (assuming the files use a common Zettelkasten naming convention in which every file starts with YYYY-MM-DD).
if [[ ! $start ]] && [[ ! $end ]]; then
printf "Usage: ./tools/ [start string] [end string]\nEnd string is optional.\n\nExample: To get filenames that come after 2020-03 (anywhere in March) but before 2020-03-29 (assuming files follow this naming convention):\n./tools/ 2020-03 2020-03-29\n";
exit 1;
jimkang /
Created Dec 2, 2019
Because I always forget
import pickle
import json
data = pickle.load(open('file.pkl', 'rb'))
out_file = open("out.json", "w")
jimkang / static-ease-values.js
Created Nov 13, 2019
Get static cubic easing values. I just ran these in the Node REPL to get the numbers.
View static-ease-values.js
var { easeCubic } = require('d3-ease')
var { range } = require('d3-array')
range(0, 1, 0.05).map(easeCubic).map(n => n.toFixed(2)).join(';')
jimkang / noise.html
Last active Sep 4, 2019
Perlin noise SVG filter
View noise.html
<svg width="40" height="40" viewBox="0 0 100 100"
<filter id="displacementFilter">
<feTurbulence type="fractalNoise" baseFrequency="0.75"
numOctaves="2" result="turbulence" stitchTiles="stitch"/>
<rect id="noise-square" width="40" height="40"
style="filter: url(#displacementFilter)"/>
jimkang / faux-wood-grain-border.css
Created Sep 4, 2019
Kinda crappy but amusing faux wood grain border with `border-image`
View faux-wood-grain-border.css
.box {
border-image: repeating-linear-gradient(40deg, hsl(30, 50%, 15%), hsl(20, 50%, 30%), hsl(25, 40%, 20%) 8px) 60;
jimkang / floor-to-beginning-of-day.js
Created Aug 15, 2019
Function that floors a date to the beginning of that day (12:00 AM or 00:00).
View floor-to-beginning-of-day.js
function floorToBeginningOfDay(date) {
return new Date(date.toLocaleDateString());
jimkang / eventlistener.js
Created Jul 11, 2019
Basic addEventListener and removeEventListener, in case I need it later
View eventlistener.js
var eventListeners = {
eventName: []
function addEventListener(type, listener) {
var listeners = eventListeners[type];
if (listeners) {
jimkang / extract-from-a-wikipedia-table.js
Last active Jun 21, 2019
Extracting content from a Wikipedia table
View extract-from-a-wikipedia-table.js
// Run this in the console when you have a Wikipedia page open.
// First, get the wikitable element you want and add an id of `main-table` to it.
// Then:
var rows = document.querySelectorAll('#main-table tr');
var extracted = [];
function extractFromRow(row) {
if (row.children.length > 2) {
let event = {
yearsFromNow: row.children[1].textContent.replace(/\n/g, '').replace(/\[note \d+\]/g, ''),
jimkang /
Last active Aug 16, 2019
Example of replacing placeholders in multiple files with sed
# Assuming $title and $name are read from input.
# ...
# Escaping space characters is only necessary within the shell script.
# If you're running the find...sed command directly in the shell, you don't need to escape spaces.
cleanedtitle="${title// /\\ }"
# Replace the placeholders with the title (with escape characters inserted).
jimkang /
Created Dec 18, 2018
rsync flags that allow you to not have to ask for privileges
rsync -a $(HOMEDIR) $(USER)@$(SERVER):$(SERVERDIR) --exclude node_modules/ --omit-dir-times --no-perms
You can’t perform that action at this time.