Skip to content

Instantly share code, notes, and snippets.

View jimmont's full-sized avatar

Jim Montgomery jimmont

View GitHub Profile
@jimmont
jimmont / customelements.js
Last active December 10, 2016 00:04
create new things and stuff
/* this last updated 2016 Dec 9
v1 available:
2016 Nov in WebKit, Safari Tech Preview
2016 Chrome 54
curious when this lands on ios/macos
Chrome devtools show shadow DOM by default
Safari devtools must enable it in elements by selecting the icon
@jimmont
jimmont / raspbian.pi
Last active September 21, 2017 22:48
## 2017 Sept RPi 3
serial gpio to USB requires editing `config.txt` on sdcard, see the following
http://elinux.org/RPi_Serial_Connection
https://raspberrypi.stackexchange.com/questions/44427/how-to-connect-a-raspberry-pi-3-to-usb-tty-cable
## older, older models
https://www.raspberrypi.org/downloads/raspbian/
download the image then expand the archive and:
function unthrottle(it){
cancelAnimationFrame(it.index);
it.node.removeEventListener(it.type, it.throttle);
return it;
}
/**
* @param {object} it defines what to throttle, requires 3 properties:
* @param {string} it.type event name
* @param {Node} it.node DOM element
@jimmont
jimmont / debugiOS.app
Last active January 28, 2016 03:36
launch cordova iOS emulator then debug in Safari with a single alias
/*
based on https://gist.github.com/bwdolphin/e7de2d0a21914708bd9a
setup:
open /Applications/Utilities/Script Editor
edit and save
System Prefs > Security & Privacy > [Privacy tab] > Accessibility in left sidebar
-> add [+] this new app (NOTE must repeat this addition every time the app/script is saved/changed to avoid security errrors)
run (eg in the terminal):
% cordova run ios && open ./path/to/debugiOS.app/
@jimmont
jimmont / styleRulesForElementList.js
Created December 30, 2015 08:50
return the styles for elements
function styleRulesFor(elementList){
var el, i, out = [], allRules, getMatchedCSSRules, getComputedStyle = window.getComputedStyle;
if(!(getMatchedCSSRules=window.getMatchedCSSRules)){
// this is very slow
allRules = function(){
// setup when needed
var rules = [], i = 0, sheet, styleSheets = el.ownerDocument.styleSheets;
while(sheet = styleSheets[i++]){
rules.push.apply(rules, sheet.rules||[]);
};
@jimmont
jimmont / interruptMePlease.ino
Last active November 9, 2015 00:46
bean bike cycling project
/*
Bean Loader v 1.9.3 build 1219
Arduino v 1.6.5
previous problem:
when I input via D5 using a reed switch (cyclometer head+mount)
and smack the sensor with a magnet it often increments by a step of 5 or so,
so too much suggesting the interrupt occurs several times instead of the expected single hit
for that pass of the magnet by the reed switch
@jimmont
jimmont / LICENSE.txt
Last active August 29, 2015 21:35 — forked from tnightingale/LICENSE.txt
Christchurch 2010 Timeline
The MIT License (MIT)
Copyright (c) 2014 TODO
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
@jimmont
jimmont / paginate.js
Created April 16, 2015 20:33
paginate
.directive('paginateThis', function(paginate, $parse, $location){
return {
restrict: 'A',
link: function (scope, elem, attr){
function mapOnToModel(res){
var p = scope.paginate
, _esp = JSON.stringify( res.options.query )
, _sort = JSON.stringify( res.options.sort )
;
@jimmont
jimmont / sortable.js
Created April 16, 2015 18:54
sort it out in angular
/**
* @ngdoc directive
* @name sortable
* @restrict A
*
* @description
* setup an object on the scope for handling a list: sorting, filtering, etc
* NOTE that track by statements must go at the end of the expression, after the orderBy statement
*
* @example
@jimmont
jimmont / extend.js
Created January 14, 2015 23:03
Extend something, experimental alternative to SomeClass.prototype = AnotherClass() then extend further.
function extend( proto, template ){
var prop;
for(prop in template){
try{
if( typeof(template[prop]) === 'function' ){
// relay arguments, using predefined functions where possible
proto[ prop ] = proto[ prop ] || (function(prop){
return function(){ return this._xhr[ prop ].apply(this._xhr, arguments); };
})(prop);
continue;