Skip to content

Instantly share code, notes, and snippets.

View mourner's full-sized avatar
🔥
making stuff faster

Volodymyr Agafonkin mourner

🔥
making stuff faster
View GitHub Profile
@mourner
mourner / viz.js
Created June 23, 2016 22:51
viz.js
function DebugViz(id, options) {
var canvas = this.canvas = document.getElementById(id);
var ctx = this.ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
}
var padding = 5;
DebugViz.prototype = {
@mourner
mourner / bad-polygons.json
Last active March 17, 2016 16:31
Polygons causing problems in earcut master
{"deviation":0.14022095,"coords":[[[3304,1016],[3264,1032],[3280,1056],[3352,1072],[3400,1024],[3448,1008],[3472,1016],[3480,1056],[3432,1064],[3424,1096],[3392,1128],[3368,1120],[3368,1152],[3392,1192],[3368,1192],[3336,1144],[3352,1192],[3344,1224],[3288,1256],[3328,1336],[3328,1408],[3312,1416],[3312,1480],[3280,1592],[3296,1688],[3256,1736],[3264,1792],[3248,1800],[3240,1864],[3216,1880],[3160,1880],[3136,1864],[3128,1896],[3056,1896],[3048,1864],[3008,1832],[2976,1864],[3040,1896],[3040,1928],[3072,1992],[3040,2032],[3040,2056],[3064,2064],[3096,2040],[3112,1920],[3176,2000],[3192,1992],[3200,1936],[3216,1936],[3208,1992],[3224,2032],[3224,2112],[3200,2192],[3176,2216],[3152,2216],[3144,2248],[3104,2256],[3104,2312],[3080,2304],[3072,2328],[3040,2320],[3016,2360],[2984,2360],[2976,2400],[3048,2416],[3056,2376],[3096,2368],[3104,2344],[3248,2352],[3232,2304],[3272,2304],[3288,2328],[3312,2328],[3384,2264],[3416,2280],[3432,2240],[3496,2248],[3512,2216],[3536,2224],[3560,2264],[3488,2296],[3456,2328],[3416
@mourner
mourner / debug.js
Last active March 1, 2016 15:27
Test
'use strict';
var polyclip = require('./');
var subject = [[3116,3071],[3118,3068],[3108,3102],[3100,3105],[3096,3113],[3099,3121],[3091,3135],[3099,3133],[3105,3144],[3113,3144],[3105,3143],[3117,3157],[3129,3155],[3137,3167],[3152,3177],[3160,3187],[3172,3204],[3174,3195],[3179,3217],[3197,3225],[3189,3217],[3203,3217],[3199,3202],[3186,3188],[3186,3174],[3174,3166],[3165,3145],[3168,3143],[3159,3143],[3151,3118],[3154,3107],[3165,3110],[3174,3105],[3175,3082],[3186,3076],[3178,3089],[3183,3103],[3196,3116],[3181,3105],[3180,3111],[3155,3111],[3173,3130],[3179,3150],[3197,3170],[3199,3178],[3216,3190],[3214,3203],[3235,3219],[3243,3212],[3244,3198],[3246,3208],[3244,3219],[3236,3240],[3237,3249],[3248,3262],[3263,3267],[3327,3313],[3338,3327],[3340,3340],[3351,3349],[3353,3361],[3345,3365],[3355,3387],[3363,3392],[3364,3401],[3375,3413],[3382,3421],[3394,3431],[3404,3433],[3398,3416],[3406,3433],[3409,3422],[3428,3400],[3423,3392],[3446,3377],[3461,3366],[3495,3354],[3506,3343],[3506,3334],[3495,3338],[35
// each top-level message in a file is tag-prefixed (like fields) to differentiate between types
message Data {
oneof data_type {
fixed32 block_size = 1; // byte length of the following block (metadata + features/geometries)
Metadata metadata = 2;
Collection feature_collection = 3;
Collection geometry_collection = 4;
Collection collection_end = 5;
@mourner
mourner / get-trees.cpp
Last active December 17, 2015 02:32
Get all OSM trees into JSON using libosmium
// g++ or clang++ -o get-trees get-trees.cpp -O3 -DNDEBUG -I../libosmium/include -std=c++11 -lz -lpthread
#include <exception>
#include <vector>
#include <iostream>
#include <iomanip>
#include <osmium/handler.hpp>
#include <osmium/io/pbf_input.hpp>
#include <osmium/visitor.hpp>
@mourner
mourner / get-trees.js
Created December 15, 2015 19:28
Get trees from OSM using node-osmium
'use strict';
var osmium = require('osmium');
var file = new osmium.File("../mbtiles/us-west-latest.osm.pbf");
var reader = new osmium.Reader(file, {node: true});
var trees = 0;
process.stdout.write('[');
@mourner
mourner / neural-2layers.js
Created November 30, 2015 20:19
A barebones 2-layer toy neural network in JS.
'use strict';
// ported from http://iamtrask.github.io/2015/07/12/basic-python-network/
const ndarray = require('ndarray');
const ops = require('ndarray-ops');
const matrix = (rows, cols, data) => ndarray(new Float32Array(data || (rows * cols)), [rows, cols]);
const sigmoid = (out, a) => {
'use strict';
var fs = require('fs');
var path = require('path');
function lazyRead(path, chunkFn, done) {
var input = fs.createReadStream(path)
.on('readable', handleReadable)
.on('end', handleEnd);
~/projects/test → npm -v
2.14.4
~/projects/test → npm cache clean
~/projects/test → time npm install eslint
eslint@1.8.0 node_modules/eslint
├── escape-string-regexp@1.0.3
├── object-assign@2.1.1
├── path-is-absolute@1.0.0
├── path-is-inside@1.0.1
├── xml-escape@1.0.0
@mourner
mourner / bundle.js
Last active October 23, 2015 15:30
Visualization of color distance metrics
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
var metrics = require('./metrics');
var len = 25;
var colors = [];
function randomizeColors() {
colors = [];
for (var i = 0; i < 500; i++) colors.push(randomColor());
}