Skip to content

Instantly share code, notes, and snippets.

View tivac's full-sized avatar
💭
👋🏻🙃

Pat Cavit tivac

💭
👋🏻🙃
View GitHub Profile
@tivac
tivac / setWithImplicitPriorities.js
Created December 4, 2015 08:07
Setting nested objects that maintain order into Firebase
var traverse = require("traverse");
// Traverse object, calculate priority at each level
// so order is maintained (barf barf barf)
traverse(obj).forEach(function(value) {
if(this.isRoot) {
priority = 0;
return;
}
@tivac
tivac / sizes.md
Created October 9, 2015 22:35
Comparing size of falcor with & without rx.js
513,045 falcor.js
278,833 falcor.min.js
276,966 falcor-norx.js
161,130 falcor-norx.min.js
 98,226 falcor.js.gz
 57,624 falcor-norx.js.gz
 54,552 falcor.min.js.gz
 32,932 falcor-norx.min.js.gz
@tivac
tivac / reporter.js
Last active August 29, 2015 14:07
Sweetie.js, an experiment in tiny test-runner creation
var sweetie = Sweetie.globalize(),
output = "",
start = Date.now(),
failures, passed;
sweetie.run(function(status, test, args) {
if(status === "finish") {
output += "\n\nTests completed in " + (Date.now() - start) + "ms";
return JS.reply({
@tivac
tivac / trumpet.js
Created September 30, 2013 22:09
Experimenting with substack's node-trumpet project
/*jshint node:true */
"use strict";
var fs = require("fs"),
path = require("path"),
trumpet = require("trumpet"),
Uri = require("jsuri"),
tr = trumpet();
tr.pipe(process.stdout);
@tivac
tivac / watcher.js
Created September 17, 2013 07:53
Example of a very simple file watcher task in dullard.
/*jshint node:true */
"use strict";
var Gaze = require("gaze").Gaze,
gaze;
// done is ignored
module.exports = function(config, done) {
gaze = new Gaze("**/*");
@tivac
tivac / wombat.css
Created September 3, 2013 07:57
Wombat color scheme for brackets (color reference at http://tivac.com/wombat/). Still needs some work
.cm-s-wombat {
line-height: 1.3em;
font-family: "Consolas", "Bitstream Vera Sans Mono", "DejaVu Sans Mono", "Monaco", Courier, monospace;
}
.cm-s-wombat.CodeMirror {
background: #242424;
color: #F6F3E8;
/* text-shadow: 0 -1px 1px #242424; */
}
@tivac
tivac / source-maps.js
Created July 1, 2013 21:15
Trying to get escodegen's source-map generation to work
var esprima = require("esprima"),
esmangle = require("esmangle"),
escodegen = require("escodegen"),
src = "var fooga = \"wooga\";\n\nconsole.log(fooga);\n\nfooga += 1;",
ast, result;
ast = esprima.parse(src, {
loc : true,
tokens : true,
@tivac
tivac / plugin-lazy-images.js
Last active December 17, 2015 13:19
Image lazy-loader
/*jshint browser:true, yui:true */
YUI.add("plugin-lazy-images", function(Y) {
"use strict";
var plugins = Y.namespace("GW2.Plugins"),
LazyImages;
LazyImages = Y.Base.create("lazyImages", Y.Plugin.Base, [], {
// Y.Base lifecycle fns
initializer : function() {
@tivac
tivac / extension-view-classer.js
Created February 4, 2013 23:49
Y.App doesn't stick classes onto view containers by default, which seems kinda bonkers to me
/*jshint browser:true, yui:true */
YUI.add("extension-view-classer", function(Y) {
"use strict";
var ViewClasser = function() {};
ViewClasser.prototype = {
initializer : function() {
this._viewClasserHandle = Y.Do.before(this._addViewClasses, this, "render", this);
},

Wondered what would happen if we tried to be more efficient about variable referencing. Turns out to not be a size savings after gzip, but might be infinitesimally faster to execute due to removing two property lookups.

Original:

document.documentElement.className = document.documentElement.className.replace(/(\s|^)no-js(\s|$)/, '$1' + 'js' + '$2');

121, gzips to 96 (20% smaller)

Compressed: