Skip to content

Instantly share code, notes, and snippets.

@mzabriskie
mzabriskie / abort.js
Created March 18, 2015 15:35
axios abort request
/**
* The problem with using Promises for a request API is that Promises
* make it difficult to abort the request. Typically when using XHR
* some factory will wrap the actual XHR, but ultimately will return
* the XHR object.
*
* ```
* var request = performRequest('/user/12345');
* request.abort();
* ```
@mzabriskie
mzabriskie / createXHR.js
Last active August 29, 2015 14:16
Creating cross browser XHR object
function createXHR() {
if (!createXHR.__memoize) {
var factory = [
function () {return new XMLHttpRequest()},
function () {return new ActiveXObject("Microsoft.XMLHTTP")},
function () {return new ActiveXObject("Msxml3.XMLHTTP")},
function () {return new ActiveXObject("Msxml2.XMLHTTP")},
];
var xhr;
@mzabriskie
mzabriskie / notify.js
Created October 21, 2014 16:16
Notification Wrapper
function notify(title, options) {
// Let's check if the browser supports notifications
if (!('Notification' in window)) {
return;
}
function n() {
new Notification(title, options);
}
@mzabriskie
mzabriskie / random-attendee.js
Last active March 6, 2021 16:13
Select random Meetup attendee
// Run this from your browser console on your meetup event page (http://www.meetup.com/AngularJS-Utah/events/183104032/)
(function () {
// Query document for attendees and select a random one
const list = document.querySelector('ul.attendees-list').children,
item = list[Math.floor(Math.random() * list.length)],
name = item ? item.querySelector('h4.text--bold').innerText : 'N/A';
// Remove item so they can only be selected once
item && item.parentNode.removeChild(item);
@mzabriskie
mzabriskie / server.js
Last active August 29, 2015 14:03
Attaching request handling to existing server
/**
* I have seen this a lot lately.
* I assume it's to give priority to the request handler for this module.
* Otherwise why not just add a new listener and leave existing alone?
*/
module.exports.listen = function (server) {
var listeners = server.listeners('request').slice(0);
server.removeAllListeners('request');
server.on('request', function (req, res) {
if (req.url.indexOf('/foo/bar.js') === 0) {
@mzabriskie
mzabriskie / README.md
Last active August 29, 2015 14:02
angular-translate - Issue with `useStaticFilesLoader` along with `registerAvailableLanguageKeys`

Setup

  1. Copy index.html and locale-en.json to the same directory
  2. From this directory run the bash commands below
  3. Open http://127.0.0.1:8080
bower install angular
bower install angular-translate
bower install angular-translate-loader-static-files
@mzabriskie
mzabriskie / Gamepad.md
Last active August 29, 2015 14:02
Discussion for how to best implement Gamepad support

gamepad.js

I haven't been able to find any libraries for interacting with the HTML5 Gamepad API that I really like. This is an attempt to sort out some of my ideas for what I would want out of such a library and ultimately implement it.

Goals

  • Abstract away complexity
    • Manage gamepad support (detection, vender impl, polling, etc.)
    • Make it dead simple for developers to implement
[].slice.call(document.querySelectorAll('tr.paper')).sort(function (a, b) {
a = parseInt(a.querySelector('td:first-of-type span.score').innerHTML);
b = parseInt(b.querySelector('td:first-of-type span.score').innerHTML);
return a > b ? -1 : b > a ? 1 : 0;
}).forEach(function (node) {
node.parentNode.appendChild(node);
});

Keybase proof

I hereby claim:

  • I am mzabriskie on github.
  • I am mzabriskie (https://keybase.io/mzabriskie) on keybase.
  • I have a public key whose fingerprint is 2B8A A1C7 D943 8BB3 7D38 C760 ECF6 90AD 2240 A96B

To claim this, I am signing this object: