1. Jan 22nd, 2012

    Rounded Corners 323 – New scrollbar

    Cheatsheet JSRef is a slick, alternative MDN Javascript documentation viewer

    Red/green I’m curious to try this out. Sam Stephenson:

    What if diff highlighting were flipped—green for removed lines and red for added lines? Code is debt. Removing it should be a celebration.

    Oops Fun read about cutesy error messages: Oops! I ruined your life. :)

    Scrollbar Form letter for newly acquired startups.

    Snatched 365 days in the life of an outdoor bike in NYC. Related, “who pinched my ride?

    QotD DevOps Borat:

    Is not metaprogramming if you are still understand it after 2 week.

  2. Jan 21st, 2012

    Rounded Corners 322 – Wat

    UX An interesting look at usability, and how real users don’t play along with how the software was ‘designed to be used’. On the Usability of Codecademy.

    Property of Keep this in mind, a JavaScript Object is not a true Hash/Map. But also read the first comment about ES5′s Object.create and ES6.

    What a difference A telling comparison, if you ask me. The Ninety-Nine Problems written in Java, Scala, Clojure and Haskell.

    Wat Hilarious five minute talk about some lesser known Ruby and JS WTFs.

    All the time Garann Means:

    Have you ever noticed how frequently people follow “I’m going to work from home” with “so I can get some work done”?

    QotD isaacs:

    JS is just like Perl in so many ways. Super ugly, super useful, huge prolific community, and version 6 will never happen.

  3. Jan 20th, 2012

    Rounded Corners 321 – Appendix.js

    Scale The Amazon whitepaper on running MongoDB on AWS is full of good info. Nothing earth shattering, just not anything you want to learn the trial & error way.

    Yields Interesting read about co-routines, generators and JavaScript: Why coroutines won’t work on the web.

    Worth repeating Life would be simpler if GET, PUT and DELETE were all, always, idempotent.

    Uptime Turns out morning people and nightowls show different brain function:

    “In morning people their cortical excitability actually decreased throughout the day. It was highest in the morning and lowest in the evening,” said Tamm. “It was the opposite for evening people; their brain activity was highest at 9 p.m.”

    :w Useful? Probably not. Geek cool? Oh, yeah! Vim on the iPad.

    So true Art Taylor:

    I have two new rules. 1) If your application is slow, add caching. 2) If your application is buggy, remove caching.

    QotD Majd Jack Taby:

    Appendix.js – You can take it out, and it won’t make a difference

  4. Jan 14th, 2012

    Rounded Corners 320 – Magic view components

    Magic view components For developers who like bindings, this comparison of 10 JavaScript MVC-like frameworks is a good place to start.

    Moar info Even though Zombie.js is a test tool, designed for people who write tests, you’ll be surprised how many people report issues without including a test case (hint: almost all). Or for that matter, how many bug reports are untestable. Kind of depressing. Maybe I should start linking to this page.

    Vim Loving ctrlp - Fuzzy file, buffer, mru and tag finder for Vim

    Intuitive The Quiz Daniel Kahneman Wants You to Fail. A great read on why intuition fails us so often (not just politicians).

    QotD Kent Beck:

    doing good engineering is not primarily making good decisions, it’s seeking good feedback which lets you quickly discard bad decisions

  5. Jan 14th, 2012

    Rounded Corners 319 – Twelve factor

    12 steps  Heroku’s twelve-factor app, a methodology for building software-as-a-service apps, is a great read:

    This document synthesizes all of our experience and observations on a wide variety of software-as-a-service apps in the wild. It is a triangulation on ideal practices app development, paying particular attention to the dynamics of the organic growth of an app over time, the dynamics of collaboration between developers working on the app’s codebase, and avoiding the cost of software erosion.

    Impress your boss Case study: How & why to build a consumer app with Node.js

    Non blocking On the performance impact of loading JavaScript with insertBefore and async=true.

    Think small Interesting tidbit from Small teams are dramatically more efficient than large teams:

    QSM found another explanation for the huge cost differential between small and large teams. The defect rate for the large teams was five times greater than for the small teams.

    /bin/sh To boldly go where no SQL has gone before: Relational shell programming.

    QotD Coda Hale:

    You don’t “beat the CAP theorem”. You “build distributed systems that don’t suck miserably”. At best.

  6. Jan 8th, 2012

    Rounded Corners 318 – Legacy browsers

    Pipes Enough people retweeted this that I guess it’s worth a second mention: on when to use stdout and when to use stderr.

    Stylish Profiling CSS. Stuff I didn’t know and a nice preview of Opera’a CSS profile, soon to be re-imagined in WebKit.

    Drool Dreadnot is an uber-geek-sexy continous deployment tool. Maybe an overkill for what I need, still got to give it a look over.

    OOPs This is quite a comprehensive overview of objects in JavaScript. JavaScript is based on objects, not so much classes, which some people find easier to grasp and others don’t. It also has some “interesting” design decisions. So it’s always good to have another exploration of object, prototype and friends.

    Legacy es6-shim is, and I quote, an “ECMAScript 6 (Harmony) compatibility shims for legacy JavaScript engines”, where “legacy” is likely whatever browser you’re using right now.

    QotD UX Yoda:

    User error it may be. But your responsibility it is.

  7. Jan 7th, 2012

    Rounded Corners 317 – Usage report

    Best Atari games to never exist

    Handy This reference for HTML5 compatibility on the various mobile and tablet browsers.

    Promising Writing asynchronous control flow with promises.

    Adjustable Because HTML5 Boilerplate is already too complicated, you’ll probably want to use Initializr to bootstrap your bootstrap. While you’re at it, check out the new responsive template that adjusts to different screen resolutions. Awesome golden ratio black magic included.

    Fourth place NetCraft reports Nginx over-taking Microsoft in the active site market share category, though trailing Apache by quite a distance. The surprising part was fourth place, and no you can’t download and install it yourself: the Google Web server.

    And … According to IE6 Countdown, IE6 usage in the US dropped below 1%, reaching 7.7% usage world wide. Most of which seems to come from China. Bonus point, IE7 usage is half that of IE6, so twice as safe to dismiss.

    QotD brianlmoon:

    OH: “Everyone knows you don’t go full REST. It kills careers.”


  8. Jan 3rd, 2012

    Rounder Corners 316 – might build

    Pushing it It feels like everyday there’s something new to learn about jQuery. This time, how to use jQuery’s pushStack.

    Exposed Speaking of, jQuery-inlog help you trace all the magic that happens when you’re chaining calls.

    Vroom When your code feels slow, bust out some V8 Performance Tuning Tricks.

    Innovate Learn something new while watching movie posters: How Netflix gets out of the way of innovation:

    Here’s the key insight. It’s the things you don’t do that make the difference. You don’t add innovation to a company culture, you get out of its way.

    Locked A good explanation of MongoDB’s write lock performance and the improvements brought by 2.0′s lock-with-yield.

    Size queen How big are typical commits on (open source or not) project? Developer Belief vs. Reality: The Case of the Commit Size Distribution.

    QotD David Beazley:

    If I ever write a packaging tool, I’m going to call it “might”. Users will type things like “might install”, “might build”, etc.

  9. Jan 2nd, 2012

    Rounder Corners 315 – sed ${1}q

    Mixology Pretty neat trick (especially for ampersand snobs) using two different font faces to the same text with CSS’s unicode-range.

    Pegged Quoting from the PEG.js docs:

    PEG.js is a simple parser generator for JavaScript that produces fast parsers with excellent error reporting.

    I think it’s the simplest parser generator I got the chance to use. Simple and fun to use.

    Hooked Using Hook.io, Paxos (in 0.8.6) and multicast DNS to build more reliable systems.

    Logged Redis tips: persistence-only slaves and the slowlog.

    Expressive Death match: Donald Knuth vs Doug McIlroy. Which one do you identify with more?

    Sexy Busting the psuedo-science behind sex differences in the brain:

    On the other hand, research findings about sex differences have been distorted and exploited by nonscientists to an extraordinary degree—perhaps second only to research on weight loss.

    QotD Greg Brockman:

    Web programming is the science of coming up with increasingly complicated ways of concatenating strings.

  10. Dec 28th, 2011

    Graphite charts without the Graphite app

    Graphite is kind of insane to setup, in particular all the nonsense around Cairo and PyCairo. What. A. Pain. But the back-end (Carbon and Whisper) is easy to setup and works as advertised.

    So I decided to see if I can use D3 to draw SVG charts directly from the Whisper files generated by the Graphite back-end (Carbon).

    Famout last words.

    But it worked. Good enough for playing with charts, and an awesome JavaScript learning experience. (Yes, I optimize my free time for that)

    So skip the Graphite Web app and get Carbon and Whisper installed:

    $ sudo pip install whisper
    $ sudo pip install carbon
    $ cp /opt/graphite/conf/carbon.conf.example /opt/graphite/conf/carbon.conf
    $ cp /opt/graphite/conf/storage-schemas.conf.example /opt/graphite/conf/storage-schemas.conf

    Fire up Carbon and start collecting data:

    $ /opt/graphite/bin/carbon-cache.py start

    Now run the Web server:

    $ npm start $ open localhost:8080

    If your machine stores Whisper files in any other directory, you need to tell the server where to look by setting the environment variable GRAPHITE_STORAGE. The default path is /opt/graphite/storage.

    Enjoy.

    Note This is an experiment more than anything. Some functions are implemented, most not, neither are date ranges. But if you like to hack on it, be my guest.