Skip to content

Instantly share code, notes, and snippets.

View Bondifrench's full-sized avatar

Dominik Dumaine Bondifrench

View GitHub Profile
@Bondifrench
Bondifrench / BssAnimations.js
Created November 16, 2017 22:58
Animations in Mithril and BSS
https://flems.io/#0=N4IgzgpgNhDGAuEAmIBcIAW94AcyoHoCBXAOxwGsBzAOlgHsBbAgIzDAAEBGGgBhoBMrdjQBWYEABoQAMwCWMCagDaoUgENGENCBpZGUKSAalEpnSAC+ktZu3oxE6SbPwdRAAQsPcsB+KQSB7qfvAYEB5UUPQs6lAeAG7qAE5y6iwwHjL0yV7sADqknix07AAUAJTBSEh+yRBUxFApHpAwCDl+AO5yYa3wAJ5QcqRUhcUeGCHBpAMesOweOMn0OBDJg8FJCumZXRhysBg+dRDqSOMEHlkrjB5hEbDEyfWmXitdkMl+cow4MFpTOp4HJ6KQaJdrgBJeDBKBgeiTaZgDA5MLqUi1SIQUjrYHIG5MDykHKMOJLFZrDZyCBgSH3KawrrqOYDejEeYY-yQLw0FiwDyiAKw6ZdaDxaYlWKwagrMhIADC9GiyUKJQWYDKAHJ9FAtZJefztQBiLgCADMWoqFTVpU1WqQcgS+sK1xYro8ngAJBjfviTsFJtAqfdEbB6v71B4KBABjJknYZn6QWCZkEPZ44giPPUZOscbAIr0vBADpiGREwIXcWAIaRrjQfaRkxBtQIwPqPMAPdd40xULz6GVeBUaPAE6QwNlkoxteOMWBmogAJplAC0AFZeDgAB4VK2SHuhgclIdcUfzyfT2day+L-GrkdWj2WG31jw0HD0MC9UGkbXpAiUDEIgz7vny9A7gAylMSD0F02q8B4SECAkXQePsvQQGBDZGlqmGgW+b6FCYYCwmRKR+AAvB4ygALqFCRYJkTmOJIOsHg0ZUnEAHxdh6jA0K87HJGUcFPIC8AQUgAwGsoR43o6zpHtcExTH4STARAADyMitBAsLwIi9TwM89ZRlQOJ4ogQSwM07AaFoGG9McUbLBA8g7sgKmelcVKgkERlwtE6HTh4ZxgHMATqJZzl9BgAxUlWqQ4LCwwxiWIU+QA1F4Pk0AhWrmrwaE4dc5V6NqxWlW+5UVVA2pbgApGVdVjo1vAtbVd
@Bondifrench
Bondifrench / browserify_for_webpack_users.markdown
Created October 26, 2017 05:21
browserify for webpack users

browserify for webpack users

There's been a strange explosion in misinformation about browserify recently, particularly in comparisons to webpack.

Generally speaking, most of this confusion stems from how webpack is more willing to pull features into its core to ease discoverability while browserify is more likely to push features out to userland instead.

I think that longer-term, separability has more benefits from a maintenance and

@Bondifrench
Bondifrench / simplified-redux.js
Created October 10, 2017 22:00
Mithril - Redux - Localstorage
https://flems.io/#0=N4IgZglgNgpgziAXAbVAOwIYFsZJAOgAsAXLKEAGhAGMB7NYmBvEAXwvW10QICsEqdBk2J4A9GIAEAeQBOkuHGL40AMVpQAJgAoA5AEFqxCPV0VJyXQGUMANxhnJugOqyIjR7oAytDJt0AugCUADpoQkqShsb0kgC8ksBhkpI29tpBSWgpKbIwxACustnAktQYcDCITmkOkqzJ9Y0Uru4w2rYYUAUwmY25+UUlZRVVTq0e5p3dME3ZcykUPn4ZWTmSeYXFiSOV1d6+-gtzDWhhEcSSGEYmaHAAJPGSWPhKedgZYef0kVi0mjAoI8Ei83jBsK9ymhtGACuEYtClBhGOZrgi+vMIGBtFcbvR8OVKvEEi43B5JBj1kjGPhpj0nmjbrSuj1GqcBltstSYGF2Ds6WNdAAJGAAT0kxEIMDyunqqLxd3uoTO4R+l1oTxhFAA5kF4gA+SQADwNkmx2u0RqCyu+d0utggMAA7sDJAUAA6aZGzOKGv4AoH4LAYd0wuEK7T+wGUjaDbZYbT9JyaCC2fBOgC0AEYAAw5-DEaj4d0YAAsREB9mM5V0SYoCd07rMugAKqL3bMlAUwGArmhNAo7LN3Lplet63pGEbiBh3vhNAAjIMYLPp7N5ogAVnwC+1GYXUGuAGt18WMABmRxrdaSAXVKNQZkzJOLegQNDugrEe-p9yEfTEMQsh6AKji0NoHpeiiUQKvgEy9GOOSsIhiwNguX7EPiKZLiWABMQaEJe5ilPQ1BQBA1BHqsL5up63o4tETK1BkFJJqwco1EOo51mhGFYRAOEYPhWCEVekikeRlHUfM6yQfRMEIvgyw6HqKH1BxBx+Nx8zKshXxoA6zr3NojI-Eqy6hsapovHk-bStomi0NQBQ4AwO7-KK5hWqxKoSJKw5YJ+eSSNqMxlP8PKYAqDwWWG8K3CZCoxliOKmWgBKjMSnH2LKMYpFATldFYmGyBg2owK8+QAJKMA2UEYI4D7GUET70oh7GAkSKW
@Bondifrench
Bondifrench / Screener.js
Created September 29, 2017 07:17
Range filter proto
var stream = m.stream
var levels = {
5: 'Daycare or Kindergarten',
12: 'Primary',
16: 'Secondary',
18: 'Senior Secondary'
};
var App = {
age: stream(0),
@Bondifrench
Bondifrench / tooltip.js
Created September 22, 2017 06:25 — forked from StephanHoyer/tooltip.js
tooltip component
'use strict';
function noop(){}
var contentView = noop;
var elPos = { left: 0, bottom: 0};
var tooltip = {
show: function(content, options) {
return function(event) {
@Bondifrench
Bondifrench / PCA.js
Created June 19, 2017 04:26
Principal component analysis in JS
/*
http://bl.ocks.org/ktaneishi/9499896#pca.js
*/
var PCA = function(){
this.scale = scale;
this.pca = pca;
function mean(X){
// mean by col
var T = transpose(X);
@Bondifrench
Bondifrench / PromiseSeries.js
Last active May 17, 2017 00:05
if you have a list of functions that return promises, that should be applied in sequence
//Thanks @JAForbes
const chain = (p, f) => p.then(f)
const zero = Promise.resolve()
const series = xs => xs.reduce(chain, zero)
series([ getX, getY, getZ ]).then( z => ... )
@Bondifrench
Bondifrench / tabs.js
Created May 12, 2017 13:48
Ideas to avoid switch statements when choice of components
const notImplemented = { view: () => m("div", "Not implemented") };
const components = {
"WaveForm": sineBody,
"WebsocketSource" wssBody
};
// ...
return m(".card-body", m(components[vnode.attrs.type] || notImplemented, vnode.attrs));
// or
m('.card-body',
@Bondifrench
Bondifrench / miniFP.js
Created May 11, 2017 04:58
Javascript minimal FP library as declared by @JAForbes
const toMaybe = x => x == null ? [] : x
const fromMaybe = (a, Ma) => Ma.concat( a ).pop()
const Just = x => [x]
const Nothing = []
const isJust = Ma => Ma.length > 0
const T = a => f => f(a)
const I = x => x
const K = a => () => a
@Bondifrench
Bondifrench / FileReader.js
Created May 4, 2017 13:21
Using Mithril 1.0 and the HTML5 FileReader API
const chosenTab = stream(tabs[0])
const rawData = stream();
const load = cb => f => {
const r = new FileReader()
r.readAsText(f)
r.onloadend = data => cb({ success: true, data } )
r.onerror = data => cb({ success: false, data })
}