Skip to content

Instantly share code, notes, and snippets.

View jimmont's full-sized avatar

Jim Montgomery jimmont

View GitHub Profile
@jimmont
jimmont / ReactHTM.html
Created November 16, 2020 07:42
use HTM to reduce work in React apps by removing the need for JSX translation in build processes
<!doctype html>
<html lang="en">
<head>
<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">
<style>
html,body{margin:0;padding:0;min-width:320px;min-height:320px;box-sizing:border-box;background-color:#cf0;}
body{
@jimmont
jimmont / websockets.js
Created July 27, 2020 00:37
http upgrade websocket
/*
running with Deno 1.2
deno run --inspect --allow-net ./websockets.js
*/
import { Application, Router, HttpError, send, Status } from "https://deno.land/x/[email protected]/mod.ts";
import { isWebSocketCloseEvent } from "https://deno.land/[email protected]/ws/mod.ts";
const port = 8123;
const users = new Set();
const app = new Application({state:{users}});
/*
add,remove,length, reverse
{value,next}
*/
class List{
constructor(){
}
}
class Node{
@jimmont
jimmont / jsx-template-transformer.js
Last active February 26, 2020 01:20
transform jsx to tagged template literals
/*
transform JSX to tagged template literals
history:
2019-01-25 initial working draft
https://stackoverflow.com/a/54381294/965666
https://astexplorer.net/#/gist/fdaed19a884dc75fe4a92092826bd635/9bc3c34e276eaf74cc318da9b87bbe0cfd37ff6d
https://astexplorer.net/#/gist/fdaed19a884dc75fe4a92092826bd635/9a47a064fe0734868f8c5c46ceb99de6ebfe3600
@jimmont
jimmont / flat-arbitrary.js
Last active February 22, 2020 18:52
array flat arbitrary
/*
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 gist.github.com 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.
*/
@jimmont
jimmont / amazing.js
Created January 23, 2020 21:14
greatest hits
// I always do this. Always.
Array(4).fill(undefined);
Object.values(Array(6,7,8)).length === Number(Object.keys([7,6,4]).pop()) + 1
@jimmont
jimmont / validations.js
Last active September 18, 2019 17:44
validate email addresses, dates, etc in JavaScript
/*
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
jimmont / the-controls.js
Created June 28, 2018 18:53
SF muni map for code review feedback (and self-improvement)
// see https://www.jimmont.com/sfmuni/
class TheControls extends HTMLElement{
constructor(){
super();
this.attachShadow({mode:'open'});
// {tags: {N: {}...}, taglist: []}
this.data = {};
this.addEventListener('click', this.clicked);
}
clicked(e){
@jimmont
jimmont / zfs-filesystem-basics.md
Last active December 9, 2018 04:56
zfs basic usage notes

late 2018 encrypted disk per https://openzfsonosx.org/wiki/Encryption

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
jimmont / mssql.notes.txt
Last active September 20, 2018 10:52
mssql on macos setup notes
§ install
1. install Homebrew https://docs.brew.sh/Installation.html
2. install Docker
$ brew cask install docker
this places the Docker.app in the Applications folder, and can be launched directly to start the service
3. install mssql per the instructions https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker
$ 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