Skip to content

Instantly share code, notes, and snippets.

@drmikecrowe
drmikecrowe / searchImdb.py
Created January 3, 2020 19:52
Rename ripped directory from ARM based on search
#!/home/mcrowe/Programming/Personal/imdb/.direnv/python-3.7.5/bin/python3
import sys
import imdb
import click
from os import listdir, system, rename
from os.path import isfile, join, getctime, basename
from lxml.builder import E
@drmikecrowe
drmikecrowe / test1-mutation-observer.js
Last active January 6, 2020 16:19
Watch elements as page loads
const targets = ["#top-header", "#main-header"];
const config = {
attributes: true,
attributeOldValue: true,
subtree: true,
childList: true,
};
function logAllEvents(target, myElement) {
@drmikecrowe
drmikecrowe / README.md
Last active January 10, 2020 12:38
Using debug with xstate

For anyone else coming across this and wondering how this works, here's a summary.

NOTE: I'm still learning xstate, so there may be better ways to do this!

Step #1, install debug

debug is a small debugging library that can be used in the console or browser. In the screenshot above, each of the different colors comes from a different debug instance. For example, I instatiate the following in my console application:

const dbgM: debug.Debugger = require('debug')("fsm:master");
@drmikecrowe
drmikecrowe / results.md
Last active January 20, 2020 15:05
Time various loop structures

Base code/idea comes from this blog post

The output:

Testing vanilla:      4.1ms
Testing lodash:      25.4ms -- 518% slower
Testing es6-for-of:   7.3ms --  78% slower
Testing forEach:      6.1ms --  48% slower
Testing map: 9.2ms -- 125% slower
// Available variables:
// - Machine
// - interpret
// - assign
// - send
// - sendParent
// - spawn
// - raise
// - actions
@drmikecrowe
drmikecrowe / index.d.ts
Created May 30, 2020 12:28
index.d.ts for cache-manager
/**
* Instead of manually managing the cache like this:
* function getCachedUserManually(id, cb) {
* memoryCache.get(id, function(err, result) {
* if (err) { return cb(err); }
*
* if (result) {
* return cb(null, result);
* }
*
@drmikecrowe
drmikecrowe / index.d.ts
Created May 31, 2020 13:31
cache-manager index.d.ts types
declare module 'cache-manager/caching' {
/**
* Generic caching interface that wraps any caching library with a compatible interface.
* @param args.store - The store must at least have `set` and a `get` functions.
* @param [args.isCacheableValue] - A callback function which is called
* with every value returned from cache or from a wrapped function. This lets you specify
* which values should and should not be cached. If the function returns true, it will be
* stored in cache. By default it caches everything except undefined.
*/
function caching(args: {
@drmikecrowe
drmikecrowe / machine.js
Last active July 5, 2020 11:16
Generated by XState Viz: https://xstate.js.org/viz
const states = {
IDLE: 'IDLE',
SEARCHING: 'SEARCHING',
};
const searchNotEmptyTarget = {
target: states.SEARCHING,
cond: (_ctx, evt) => evt.search !== '', // && evt.search.length > 3,
actions: assign({ search: (_ctx, evt) => evt.search }),
};
@drmikecrowe
drmikecrowe / machine.js
Last active July 5, 2020 21:34
Generated by XState Viz: https://xstate.js.org/viz
// Available variables:
// - Machine
// - interpret
// - assign
// - send
// - sendParent
// - spawn
// - raise
// - actions
// - XState (all XState exports)
@drmikecrowe
drmikecrowe / machine.js
Last active September 17, 2020 01:24
Generated by XState Viz: https://xstate.js.org/viz
const PMachineOptions = {
guards: {
IS_FETCH_NEEDED: function (ctx) {
return !ctx.podcast.loaded;
},
IS_FETCHED_ALREADY: function (ctx) {
return ctx.podcast.loaded;
},
IS_SUBSCRIBE_NEEDED: function (ctx) {
return !ctx.currentDevice.isSubscribed(ctx.podcast);