Upgrading npm on windows

Had a windows machine which needed to upgrade npm to avoid the whole ^ incompatibility issue. ex:

npm ERR! Error: No compatible version found: minimist@’^0.1.0′
npm ERR! Valid install targets:
npm ERR! [“0.0.0″,”0.0.1″,”0.0.2″,”0.0.3″,”0.0.4″,”0.0.5″,”0.0.6″,”0.0.7″,”0.0.8

Well, I was doing it in the command prompt I was using which was launched as admin for other stuff (since no sudo on windows). So recognizing that the installed version of npm didn’t understand the ^ sign because I listen to nodeup, I typed “npm install -g npm” but got

(a bunch of this type of thing…)
npm WARN unmet dependency which is version 1.0.0
npm WARN unmet dependency C:\Users\jdart\AppData\Roaming\npm\node_modules\npm\no
de_modules\read-installed\node_modules\readdir-scoped-modules requires once@’^1.
3.0′ but will load
npm WARN unmet dependency C:\Users\jdart\AppData\Roaming\npm\node_modules\npm\no
npm WARN unmet dependency which is version 1.3.0
npm ERR! peerinvalid The package npmconf does not satisfy its siblings’ peerDepe
ndencies requirements!
npm ERR! peerinvalid Peer npm-registry-client@3.2.2 wants npmconf@^2.1.0

And finally

npm ERR! System Windows_NT 6.2.9200
npm ERR! command “C:\\Program Files\\nodejs\\\\node.exe” “C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js” “install” “npm” “-g”
npm ERR! cwd C:\Windows\System32
npm ERR! node -v v0.10.5
npm ERR! npm -v 1.2.18
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! C:\Windows\System32\npm-debug.log
npm ERR! not ok code 0

When I tried to “more c:\windows\system32\npm-debug.log”, I found out it didnt’ exist which made me realize my current directory was c:\windows\system32 which ideally should be super protected, so I changed my directory to something not-system-level and ran again successfully. No further testing, YMMV

Posted in Uncategorized | Leave a comment

September Bunkerjs

We’ve been doing an internal JavaScript meetup once a month and there are so many great resources coming out of it, I though I’d reblog for others to see. Hope you enjoy.

Some reviews from Bunkerjs:

“I learned something”
“This will revolutionize the way I do the blog”
*gasp* “Nice”

In beginners corner we went back to basics, talking about Inspect Element, editing css, and breakpoints
Then we showed off Google’s Karma test runner

Next month: John will share Docker

Here are all the links we discussed (there are a ton):

visual editor for 3d graphics – http://threejs.org/editor/
Now that webgl is on ios, delivering high quality 3d graphics from the browser is available. Will we use it? Who knows, but if we have the need, here’s a tool

WebRTC take 2 – https://msopentech.com/blog/2014/08/19/microsoft-google-hookflash-others-co-author-real-time-communications-specification/
WebRtc allows for realtime video/audio native in the web stack, but the v1 api was a Google prototype. The standards bodies are now engaging everyone to take a second pass. Lots of involvement, including Microsoft,

​PDF2svg - http://pramodhkp.github.io/pdf2svg/
Early prototype using Mozilla’s pdf.js that will convert pdf to svg natively in javscript + browser

Knockout punches – ​http://mbest.github.io/knockout.punches/​
interesting plugin emphasizing knockout 3′s new binding flexibility.

Effective unit testing with AMD - http://bocoup.com/weblog/effective-unit-testing-with-amd/
DyKnow has moved its front end code to AMD for extra flexibility and maintainability. This post describes how also to unit test our code

Just nope - https://twitter.com/slexaxton/status/491116246427922432?refsrc=email
Yepnope is no more with full support behind requirejs for conditional module loading

React and web components

Fast ui animations – ​http://www.sitepoint.com/incredibly-fast-ui-animation-using-velocity-js/

Parallel.js -http://adambom.github.io/parallel.js/​
take advantage of all the cores on your machine

Runtime.js – http://runtimejs.org/​
kernel written in javascript. not practical. just cool

Ampersand.js – http://ampersandjs.com/
&yet’s front end framework built over backbone

Authentication in angular – ​https://medium.com/opinionated-angularjs/techniques-for-authentication-in-angularjs-applications-7bbf0346acec​

Make drive – http://blog.humphd.org/introducing-makedrive/
web filesystem experiment

nodebots with visual studio
- http://briangenisio.com/software/2014/08/25/using-visual-studio-to-program-your-nodebot.html​
- https://twitter.com/dtex/status/507297195775639552?refsrc=email

knockout parsely – https://www.npmjs.org/package/knockout.parsley.js
validation library

medium’s css – https://medium.com/@fat/mediums-css-is-actually-pretty-good-b8e2a6c78b06
workflow, process, etc they’ve done to make their css maintainable

Requiring stuff in the browser/console/visual studio
- https://gist.github.com/mathisonian/c325dbe02ea4d6880c4e
- https://chrome.google.com/webstore/detail/requirify/gajpkncnknlljkhblhllcnnfjpbcmebm
- http://visualstudiogallery.msdn.microsoft.com/65748cdb-4087-497e-a394-2e3449c8e61e

Grunt/npm/gulp/bower integration in Visual studio – http://www.hanselman.com/blog/IntroducingGulpGruntBowerAndNpmSupportForVisualStudio.aspx​

Chrome gradient inspector - https://chrome.google.com/webstore/detail/css-gradient-inspector/blklpjonlhpakchaahdnkcjkfmccmdik?utm_content=buffer76696&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer

memory management – https://twitter.com/addyosmani/status/507294505007976448?refsrc=email

centering stuff in css – http://css-tricks.com/centering-css-complete-guide/
- now you know

w3c spec protip - https://twitter.com/jaffathecake/status/509980193654845440?refsrc=email

service workers – https://jakearchibald.github.io/isserviceworkerready/
the future for offline web apps

​​messageformat.js – https://github.com/SlexAxton/messageformat.js/blob/master/README.md
internationalization can be tricky with pluralized messages (ex 1 user, 2 users… but in english, german, french, dutch…)

katex – http://khan.github.io/KaTeX/
khan academy has open sourced their super fast math equation latex parser

es6 generators in v8 – https://twitter.com/andywingo/status/511876619917459458?refsrc=email

Advanced debugging with chrome – https://docs.google.com/presentation/d/17HjGp4pQlNh2WIwKiTcUpDLIuOdkUcRmALFuoytQsjU/preview#slide=id.p
- kind of amazing presentation

transducers in js – http://jlongster.com/Transducers.js–A-JavaScript-Library-for-Transformation-of-Data?utm_content=buffer39c57&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer
- functional programming abstractions

svg animation tool – http://svgcircus.com/
scalable graphics. ex needing a loading animation that scales to the 3x new iphone 6

faker.js – https://www.npmjs.org/package/faker.js
- library to help you generate lots of fake data that still looks and behaves like real

accessible dialogs – http://instructure.github.io/blog/2014/09/25/accessible-dialogs/
from the makers of canvas lms, best practices for your blind users when using dialogs

parcelify – https://github.com/rotundasoftware/parcelify/blob/master/README.md

new font-face spec – https://dev.opera.com/articles/better-font-face/
for loading in custom fonts more easily

open source competitor to chromecast – http://matchstick.tv/home/index.html

using srcset vs picture – http://blog.cloudfour.com/dont-use-picture-most-of-the-time/
using the correct tool for your adaptive designs

Posted in Uncategorized | Leave a comment

On role models and hypocrisy

I don’t know where it started nor why it persists so strongly. I could believe an argument that it makes a great headline and in this age of 24/7 breaking news, such stories are easy money. I could also believe an argument that we are horribly insecure about our faults and when faced with someone that inspires us, we are secretly relieved to find reason to let ourselves off the hook.

Of course I’m talking about when the role model falls. 
What is odd about the scenario is how we got to a place where we expect our sports heroes to be examples of great moral fiber or our political leaders to be without past transgressions. There is a moment when humanity catches up with everyone, but for some reason, our role models are expected to ascend above this.
We have lost the literal sense of the phrase role model and exchanged it for person model or life model where any noted imperfection is a disqualifying mark. 
I can’t say I don’t agree that those in highly influential positions should be held to a higher standard, and I am pleased when the role model does the right thing and disappointed when they inevitably do the wrong thing. That said, I do not think that mistakes – no matter how grave – affect the reality of the role that was once admired. I don’t know why you would celebrate a tech leader’s failed project as the sign they are a fraud. A religious leader’s moral failures, a brilliant mind’s ignorance, an overachiever’s regression to the mean. 
It seems to me to be both more useful and more human to approach these situations with more heartbreak and humility for the fallen. That we should not mourn the death of our heroes but share in the pain of their stumble and root for them to pick themselves up again.
Posted in Uncategorized | Leave a comment


In June of 2007, my wife and I were married. The year or so before that, then, we were planning for the wedding. For those who have not been through this process – or to remind the ones who have- creating such an event is a ton of work and a series of difficult trade offs. The first and most painful trade off, after the date/location, is the guest list.

We wanted our wedding to be a celebration of all the people in our lives that had made us who we were. We also had a budget we could spend. My mother wanted to be able to share the day with her old college roommate. I had a pretty large group of friends from high school. We also had a good size list of college friends. In the end, as you remember, there were a few friends… several actually… that were not invited. I still feel really bad about this as I know how much it would have meant to them to be invited. And I know how much it hurt them not to be.

But I felt I should honor my mom by letting her friend come and the closest members of our extended family. This event was to celebrate the path that brought us together and our families were a huge part of that. The choices were hard, but they were right. And if I had to do them a hundred times, I expect the same results each time.

This came to mind today as I saw a tweet about conference organizers actively seeking out women speakers. I dont organize a conference and every event has different goals, but it seems to me this is very similar. Each conference wants to show off the advances in the field, or put forth a diversity of challenging ideas, or to simply blow attendees minds. And all have a budget for time slots and money. Seems very natural to me that an organizer would want to ensure there was proper representation from each group that makes up the community. The choices are painful and it sucks knowing that there are good friends who will have their feelings hurt, but it’s the right choice.

Posted in Uncategorized | Leave a comment

permissions and hypermedia and discoverable apis

Toward the end of the day today, Alex and I were discussing permissions, usability, and keeping the API dry. The problem is that you have permissions that are part of your app (duh) and these permissions are not the same for every user (duh). Well usability dictates that we should hide unusable actions and unviewable pages (duh). But we want to have a nicely organized API that restfully describes resources. We also want to use that API code for our web tier and we don’t want to have some /classes and /permissions http requests for every web page we render. 

Then I finally realized the connection between hypermedia and discoverable restful apis. All the times I’ve read descriptions of discoverable urls in Apis, all I can hear is “Soap! Wisdl! Auto generated code!” And then I lose interest because that’s not my style. What I miss, though, is that HTML pages have this capability built into them. This is great as it allows links between pages forming the whole web thing, but it also gives a pretty intuitive declaration of your permissions model. So including (or specifically excluding the proper API end points do provide all that discoverability stuff, but it also just lets you w express your permissions model in as intuitive a fashion as you can in your HTML code.

Posted in Uncategorized | 1 Comment

Font face and photos

One of the interesting problems we ran into when using the masonry layout on remember was the effect it had on perceived page load time. The first version naively waited for all images to load before laying out the “bricks” which was pretty unacceptable with the number of user-contributed images we have. If you are unfamiliar with the masonry layout, the engine starts with a block and then places it in the least-tall column. Placing the block increments the column height by the block’s height, so if you don’t know the real height at placement time, you’ll end up with overlapped blocks.

Given this knowledge, the simplest way to overcome this is to know the width and height of the images before loading. If you know how tall an image will be, you can set its dimensions prior to the image loading which adequately avoids our overlapping problem and let’s us load immediately on domready. Implementing thishaws great, but there were some times we were still getting overlapping boxes.

I was able to faithfully reproduce the issue by turning off the cache in my browser, so then it was a matter of logging and break points to determine the cause: fontface. While a remote font is loading, the text does not render and the empty area that serves as a placeholder for the text isn’t the eventual correct height. The first instinct is to point at line-height, but a variable character-width/kerning can easily change the number of lines the text will use and that information is only available when the font has loaded. In my experimenting in Firefox, I wasn’t able to manipulate the placeholder area by changing the font stack. I was hoping it was rendering the text with the fallback font and just hiding it from view. This would have let me choose a font that closely matches the spacing characteristics but simply changing the stack didn’t seem to have much effect on the size of the placeholder white space.

So we’re back at the masonry mechanics where we can safely layout the bricks when we know the height of all the bricks. Unlike the images, waiting on a single font doesn’t seem like it would be so bad. We can just use typekit to load the font which allows us to subscribe to a loaded event where we can trigger layout. What I found, though, is that fontface is prioritized differently than other assets. Fontface as a presentational element gets put at the end of the queue for assets to load over the network. This means it comes after all those user-submitted images we so elegantly sidestepped earlier. I did read that browsers will not download the font till it encounters a CSS rule that used it, but even trying to force it using hacks from Paul Irish’s excellent fontface write up didn’t change the ordering. [todo when not on my iPod: take screenshots of waterfalls]

So in the end, we had to ensure our fonts in the masonry layout were local/synchronously loaded or bypass the load order by only loading images after the font had loaded. The latter strategy did sound like a fun experiment but I’m afraid it’s too brittle for too small a gain, so we chose new fonts. Not the happiest of endings but we were able to avoid waiting for all the images to load prior to showing the page.

Posted in dev | Tagged | 1 Comment

Observations on a car ride

During jsconf2012 Brian Ford urged everyone to go read Thinking, Fast and Slow. I had a 6 hour car ride ahead of me, so I downloaded the audio book and listened to about the first thirD (it’s about 20 hours). So far it’s been incredibly interesting especially since I have a thing for the way we think, etc, but the most fun I’ve had so far has been discussing it with Kathryn the next day in the car.

The basics of the book detail the operations of two styles of thought, how they interact, and when they step in to solve problems. Go read the book to learn about it, but for this discussion’spurposes what you need to know is that “system 1″ is intuitive thinking and can be kind of a jerk. “go to hell” is an emotional outburst that comes from system 1. System 1 is also the system we spend most of our time in, as we drive a car, solve simple math problems, and ehold carry on basic conversation. This is because system 2 is responsible for complex/rational thought that requires extra energy (yes you literally pay attention with glucose) and thus is as lazy as it can be. Finally, system 2 will step in to override system 1 at times, but it can’t step in when it’s already busy doing something else.

So that’s the setup, now for the observations. One of the first observations Kathryn made was that this explains why so many fights occur in the car. When having discussions, you often engage system 2 but when traffic conditions worsen priority shifts over to that task leaving system 1 free reign on the conversation without proper self control.

The second observation is the explanation of the phenomenon we have described as “this sucks – you’re my enemy.” What we mean is when some crisis occurs we have observed you are much more likely to turn on the other person as if it’s their fault for the crisis. Note most of the time, the turning isn’t directly over the crisis but instead over something petty like tone of voice or some super minor inconvenience. This now makes much more sense as in a moment of crisis, your rational self is more likely to be concentrating on solving the crisis instead of stopping system 1 from being a jerk.

My lone observation was more of a connection and a question, but I am really curious to know. at some point in the past year, we were listening to the excellent radio program and they had a theme of loops (http://www.radiolab.org/2011/oct/04/). During this episode, they talked with a woman who at one point in time went into this pattern where she would ask what day it was, note her disappointment in missing her birthday, and proceed to hold the exact same conversation until she basically reset and asked what day it was. The segment is particularly eerie because as long as her daughter gave her the same answers the conversation continued identically as if underneath it all, we are but simple machines responding to inputs. What I was curious about is that knowing system 1 is oftentimes in control of simple conversation, if for some reason system 2 were inhibited, would we all go into a loop like this? Is it merely system 2 stepping in to say “we’ve already asked this question?”

Posted in Uncategorized | Leave a comment