Skip to content

Instantly share code, notes, and snippets.

Jonny Buchanan insin

Block or report user

Report or block insin

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View package.ts
import * as path from ''
export { path }
insin / .babelrc-default
Last active Jul 14, 2018
babel-plugin-add-module-exports bug repro
View .babelrc-default
"presets": [
"plugins": [
insin / checkLogins.js
Last active Jul 13, 2018
Check your saved Firefox logins against the Pwned Passwords API (run in Tools → Web Developer → Browser Console)
View checkLogins.js
function sha1(input) {
let converter = Components.classes['']
converter.charset = 'UTF-8'
let data = converter.convertToByteArray(input)
let ch = Components.classes[';1']
ch.update(data, data.length)
let hash = ch.finish(false)
insin / userChrome.css
Last active Mar 4, 2018
userChrome.css for some aspects of the Firefox >= 57 UI which can't be tweaked via regular config
View userChrome.css
@namespace url(;
/* Remove the gap to the left of the title tab bar */
#TabsToolbar hbox.titlebar-placeholder[type="pre-tabs"] {
display: none !important;
/* Remove the buttons on the right of the location bar */
#page-action-buttons {
display: none !important;
insin / updatePasswords.js
Last active Jun 10, 2019
Mass update Firefox passwords (run in Tools → Web Developer → Browser Console) -
View updatePasswords.js
function updatePasswords() {
let oldPassword = prompt('Old password:')
if (!oldPassword) return
let loginManager = Components.classes[';1']
let matchingLogins = loginManager.getAllLogins().filter(l => l.password === oldPassword)
let matchCount = matchingLogins.length
if (matchCount === 0) return alert('No matching logins found')
insin / index.css
Last active Nov 8, 2017
Flexbox layout fun
View index.css
html {
height: 100%;
body {
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
height: 100%;
margin: 0;

To run the example:

npm install -g nwb
react run example.js --auto-install
View getLatestVersion.js
import spawn from 'cross-spawn'
import ora from 'ora'
* Get the latest version of a package from npm.
export function getLatestVersion(pkg, cb) {
let spinner = ora(`Checking for latest version of ${pkg}`).start()
let npm = spawn('npm', ['dist-tag', 'ls', pkg, '--no-progress'], {stdio: ['ignore', 'pipe', 'inherit']})
let stdout = ''
insin / board.js
Last active Apr 5, 2019
Using CSS transition & transform to move a component:
View board.js
import React from 'react'
import {render} from 'react-dom'
let Board = React.createClass({
getInitialState() {
return {
x: 150,
y: 150,
insin / utils.js
Created Nov 10, 2016
Redux duck utils
View utils.js
// Matches the naming convention for functions which select from Redux state
const SELECTOR_NAME_RE = /^get[A-Z]/
* Creates a function which creates same-named action dispatchers from an object
* whose function properties are action creators, passing along any arguments.
* Function properties whose names start with "get" will be ignored, as these
* are assumed to be selectors by convention.
* Also makes the dispatch function itself available.
* (If this was Java, it'd be a class named ActionDispatcherFactoryFactory).
You can’t perform that action at this time.