Skip to content

Instantly share code, notes, and snippets.


Jim Montgomery jimmont

View GitHub Profile
jimmont / ReactHTM.html
Created Nov 16, 2020
use HTM to reduce work in React apps by removing the need for JSX translation in build processes
View ReactHTM.html
<!doctype html>
<html lang="en">
<meta charset="utf-8" >
<meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">
<title>use HTM to reduce work in React apps</title>
<meta name="description" content="example using HTM with React to replace JSX and reduce work">
jimmont / websockets.js
Created Jul 27, 2020
http upgrade websocket
View websockets.js
running with Deno 1.2
deno run --inspect --allow-net ./websockets.js
import { Application, Router, HttpError, send, Status } from "";
import { isWebSocketCloseEvent } from "";
const port = 8123;
const users = new Set();
const app = new Application({state:{users}});
View linkedlist.js
add,remove,length, reverse
class List{
class Node{
jimmont / jsx-template-transformer.js
Last active Feb 26, 2020
transform jsx to tagged template literals
View jsx-template-transformer.js
transform JSX to tagged template literals
2019-01-25 initial working draft
jimmont / flat-arbitrary.js
Last active Feb 22, 2020
array flat arbitrary
View flat-arbitrary.js
Write some code, that will flatten an array of arbitrarily nested arrays of integers into a flat array of integers. e.g. [[1,2,[3]],4] -> [1,2,3,4].
Your solution should be a link to a gist on with your implementation.
When writing this code, you can use any language you're comfortable with. The code must be well tested and documented. Please include unit tests and any documentation you feel is necessary. In general, treat the quality of the code as if it was ready to ship to production.
Try to avoid using language defined methods like Ruby's Array#flatten or JavaScript's Array.flat.
View amazing.js
// I always do this. Always.
Object.values(Array(6,7,8)).length === Number(Object.keys([7,6,4]).pop()) + 1
jimmont / validations.js
Last active Sep 18, 2019
validate email addresses, dates, etc in JavaScript
View validations.js
take an approach leveraging the platform implementation's internal parser for things to validate,
if it works in these on the user-experience side confirm the input is as-intended
possibly by entering the same value twice or similar user-controlled validation
email and date validation is too complex for pattern matching;
function validEmail(email=''){
var $0, url, isValid = false, emailPatternInput = /^[^@]{1,64}@[^@]{4,253}$/, emailPatternUrl = /^[^@]{1,64}@[a-z][a-z0-9\.-]{3,252}$/i;
jimmont / the-controls.js
Created Jun 28, 2018
SF muni map for code review feedback (and self-improvement)
View the-controls.js
// see
class TheControls extends HTMLElement{
// {tags: {N: {}...}, taglist: []} = {};
this.addEventListener('click', this.clicked);
jimmont /
Last active Dec 9, 2018
zfs basic usage notes

late 2018 encrypted disk per

create new encrypted disk
plug in device
$ diskutil list
important to be absolutely certain of the device
$ sudo zpool create -f -o ashift=12 -O compression=lz4 -O casesensitivity=sensitive -O atime=off -O normalization=formD -O encryption=on -O keylocation=prompt -O keyformat=passphrase NAMEOFIT /dev/disk####
will interactively prompt for passphrase
next time importing plug in the device
jimmont / mssql.notes.txt
Last active Sep 20, 2018
mssql on macos setup notes
View mssql.notes.txt
§ install
1. install Homebrew
2. install Docker
$ brew cask install docker
this places the in the Applications folder, and can be launched directly to start the service
3. install mssql per the instructions
$ sudo docker pull microsoft/mssql-server-linux:2017-latest
4. run the image, check the status
$ sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_PID=Developer' -e 'MSSQL_SA_PASSWORD=<password>' -p 1433:1433 --name mssql0 -d microsoft/mssql-server-linux:2017-latest