Skip to content

Instantly share code, notes, and snippets.

View ricokahler's full-sized avatar
💭
recovering from burnout

Rico Kahler ricokahler

💭
recovering from burnout
View GitHub Profile
@ricokahler
ricokahler / memoIgnoringFunctions.js
Last active September 19, 2019 05:12
React.memo but it ignores functions changes
import React, { memo, useMemo, useLayoutEffect, useRef } from 'react';
import objectHash from 'object-hash';
import _partition from 'lodash/partition';
import _fromPairs from 'lodash/fromPairs';
/**
* an HOC that uses `React.memo` to memoize component expect it ignores changes
* to functions while also keeping those functions up-to-date somehow
*/
function memoIgnoringFunctions(Component, propsAreEqual) {
@ricokahler
ricokahler / index.js
Last active May 23, 2020 22:57
color2k in one file
import parseToRgba from '@color2k/parse-to-rgba';
export { default as parseToRgba } from '@color2k/parse-to-rgba';
// taken from:
/**
* Parses a color in hue, saturation, lightness, and the alpha channel.
*
* Hue is a number between 0 and 360, saturation, lightness, and alpha are
* decimal percentages between 0 and 1
*/
@ricokahler
ricokahler / register.js
Created September 4, 2020 00:48
register function
const path = require('path');
require('@babel/register')({ extensions: ['.js', '.ts', '.tsx'] });
const args = process.argv.slice(2);
if (args[0] === '--') {
const filename = args[1];
// require relative to the root
require(path.resolve(__dirname, '../', filename));
}
@ricokahler
ricokahler / README.md
Created June 11, 2021 21:50
another proof of turning completeness — 4 years later

there's a somewhat older github issue in the typescript repo that made the observation that typescript was turning complete

linked was also a proof via implement a turing machine within the typesystem.

that proof no longer works, and with the addition of template literal types, there comes a much more straightforward way to do this. that's what this is — a proof that typescript's type system is turning complete, 4 years later

see [here](https://www.typescriptlang.org/play?#code/PTAEGUBUCUEkDkDioCyBBesAKBVAMmpLAPLyiTHF7gBQALgJ4AOApqAGICWATgM50AeSKBYAPOiwB2AE16h+3TpIDmAPlABeciPFTZoAAYASAN5KAZi26gcAX1MKly2wdAB+G6ABcoAOS-6ZjZoFgBbAHsANxYuPkFhMQkZOUcVdS0E3WTDBzpFFXszSUtrO1cPHG8-AMDWUBDovhYBSsS9FLyndM827P8aUHdqgarWrP1fAEZfUAAfPwAGAMGKkZ9jEwarXmaQiOjY-hbVVULDwRxTgxpatjwAQyPMpP1UtU0OHiOtpqET2-qYSiLAeTx0Lw6+XeWh+OwEe2