Skip to content

Instantly share code, notes, and snippets.

View jrburke's full-sized avatar

James Burke jrburke

View GitHub Profile
@jrburke
jrburke / styles.less
Last active May 17, 2017 06:10
Prevent Atom 1.17 docks from animating their toggle buttons
/*
Choose Atom, Stylesheet... menu to add these to your local style overrides.
These styles only work on the .left and .bottom toggle buttons, but should
be straightforward to copy the .left selectors and adjust for other edges.
*/
.atom-dock-toggle-button:not(.atom-dock-toggle-button-visible) .icon {
opacity: 1;
transition: unset;
}
@jrburke
jrburke / gist:9101268
Created February 19, 2014 20:51
npm once

I have a node project. I want to use npm once to fetch a dependency, but from then on, do not depend on the npm registry. The packages installed may need to be compiled/built on different operating systems, not all the packages are pure JS.

I do not want an npm mirror, as I do not need all of npm. I just need the specific versions of the packages I need in my project. I would always set dependency versions to exact version numbers, and would explicitly do version upgrades when I needed. My ideal work flow:

mkdir project-node_modules
cd project-node_modules
mkdir node_modules

# install a bunch of packages, but only in source form, no building
@jrburke
jrburke / gist:7896791
Last active February 11, 2024 23:18
Manual main switching
// For any third party dependencies, like jQuery, place them in the lib folder.
// Configure loading modules from the lib directory,
// except for 'app' ones, which are in a sibling
// directory.
requirejs.config({
baseUrl: 'lib',
paths: {
app: '../app'
}
@jrburke
jrburke / gist:7455354
Last active February 11, 2024 23:18
Use of IDs instead of URLs for HTML resources

Design forces:

  • ECMAScript (ES) Module Loader API is coming. The ES module ID syntax are strings that are just treated as string IDs and not paths.
  • Existing JS module experience in CommonJS/Node/AMD worlds of using module IDs that are resolved to a URL/path for fetching.
  • Better package managers are coming for front end web apps. These package managers install assets by IDs not by paths.
  • For front end code, baseURL + moduleID + '.js' is likely the default ID-to-URL resolution, but other declarative config could be possible for browser-based ES Module Loaders. Examples of useful declarative config in this area are the problems solved via common AMD loader config

So it will be common in JS code to use string IDs, and not URLs to refer to dependency resources.

With the coming of web components and custom elements, it will be possible for a custom element to depend on other custom e

@jrburke
jrburke / clock.patch
Created October 4, 2013 05:22
Clock patch
diff --git a/apps/clock/Makefile b/apps/clock/Makefile
index e17f42e..78e8465 100644
--- a/apps/clock/Makefile
+++ b/apps/clock/Makefile
@@ -1,9 +1,16 @@
-# We can't figure out XULRUNNERSDK on our own; it's complex and some builders
-# may want to override our find logic (ex: TBPL), so let's just leave it up to
-# the root Makefile. If you know what you're doing, you can manually define
-# XULRUNNERSDK and XPCSHELLSDK on the command line.
-ifndef XPCSHELLSDK
@jrburke
jrburke / gist:6585693
Created September 16, 2013 19:53
Sync logcats
// When doing a regular imap sync (this one is set to 20 seconds):
I/GeckoDump( 473): LOG: cronsync-main: wake locks acquired: [object MozWakeLock] for account IDs: 0
I/Gecko ( 473): WLOG: cronsync: received an alarm via a message handler
I/Gecko ( 473):
I/Gecko ( 473): WLOG: cronsync: ensureSync called
I/Gecko ( 473):
I/GeckoDump( 473): LOG: email oncronsyncstart: 0
I/Gecko ( 473): WLOG: syncDateRange: 1379030400000 null
I/Gecko ( 473): WLOG: Skewed DB lookup. Start: 1379055600000 Fri, 13 Sep 2013 07:00:00 GMT End: null null
@jrburke
jrburke / build.js
Last active February 11, 2024 23:19
Building a file with external dependencies that could be from AMD, node, or globals.
//run in node to do the build
var requirejs = require('requirejs'),
fs = require('fs'),
depsRegExp = /\/\*DEPENDENCIES\*\//,
globalMapRegExp = /\/\*GLOBALMAP\*\//,
shimmer = fs.readFileSync('shimmer.js', 'utf8'),
wrapStart = fs.readFileSync('wrap.start', 'utf8');
// You could generate these with code if you want a dynamic build script
_waitForTransitionEnd: function(cardId) {
var client = this.client;
client.waitFor(function() {
var condition = false;
client.executeScript(
function() {
var Cards = window.wrappedJSObject.require('mail_common').Cards,
card = Cards._cardStack[Cards.activeCardIndex],
cardNode = card && card.domNode;
@jrburke
jrburke / gist:6444081
Created September 4, 2013 23:14
Crude tracer
// Optionally log all calls done to prototype methods. Uncomment this
// section to get traces when trying to debug where flow gets stuck.
Object.keys(Email.prototype).forEach(function(key) {
var desc = Object.getOwnPropertyDescriptor(Email.prototype, key);
if (!desc.get && !desc.set && typeof Email.prototype[key] === 'function') {
var oldMethod = Email.prototype[key];
Email.prototype[key] = function() {
var args = Array.prototype.slice.call(arguments, 0).map(function(arg) {
return String(arg);
@jrburke
jrburke / gist:6374043
Created August 29, 2013 03:46
sending message to worker
worker.postMessage({
type: 'cronsync',
uid: undefined,
cmd: 'alarm',
args: ['accountidhere', intervaltime]
});
//example call
worker.postMessage({