The secret of happiness is in knowing this: that we live by the law of expenditure. We find greatest joy, not in getting, but in expressing what we are. There are tides in the ocean of life, and what comes in depends on what goes out. The currents flow inward only where there is an outlet. Nature does not give to those who will not spend; her gifts are loaned to those who will use them. Empty your lungs and breathe. Run, climb, work, and laugh; the more you give out, the more you shall receive. Be exhausted, and you shall be fed. Men do not really live for honors or for pay; their gladness is not in the taking and holding, but in the doing, the striving, the building, the living. It is a higher joy to teach than to be taught. It is good to get justice, but better to do it; fun to have things, but more to make them. The happy man is he who lives the life of love, not for the honors it may bring, but for the life itself.
— Raymond John Baughan, Undiscovered Country: Morning Thoughts to Brace the Spirit of the Common Man, 1946. Via.
I kicked off NodeSummit today with a short talk about where Yahoo uses Node, why we continue to use Node, and the practices that help us use Node effectively.
First talk of the day.
— Emily (@mle_tanaka) February 10, 2015
I spoke a bit about a project I’ve spent the last year on: using Node to handle data pushed out of Jenkins. Folks appreciated the honesty about Jenkins’ user interface.
— Social AC (@SocialAC) February 10, 2015
Jenkins is the solution that we trust, but nobody loves using it. At Yahoo, we use Node to help us make Jenkins a bit better to use:
- scripting job creation, editing, deletion
- handling log messages
- displaying information about builds with a web interface
@reid Hope you open source it all and rescue the rest of us who don’t have awesome teams dedicated to this 🙂
— Jeremiah Lee (@JeremiahLee) February 10, 2015
During the talk I mentioned something called RDL.
— Heather Pujals (@pujalsheather) February 10, 2015
Nope, not the Romanian Deadlift. It’s something we call “Resource Description Language”, a machine-readable spec for web APIs. We started using it for some internal deployment APIs we worked on last month. This spec is transformed into hapi route configurations that contain detailed joi validators.
What’s great about this is that when you change the RDL, it changes the validators and comments which we present using the lout module. We do this by merging together existing hapi route objects using the RDL spec as the source of truth, so the hapi routes we have in code are validator-free and require the RDL as the source of truth. This has worked very well and our spec always matches the reality. This works a lot better than other systems that actually generate source code from RDL, which is not ideal because it cannot stay in sync as your code changes.
It’s been fun! I’ll also be on the “Scaling Business Critical Node.js Applications” and “v0.12 and Beyond” panels tomorrow, so check those out if you’re attending NodeSummit.
Eran Hammer on Node.js web framework design tradeoffs and why there is no “best” framework:
If you haven’t read Netflix’s Node.js in Flames blog post you should. It is a great deep dive into debugging a node performance problem. The post includes useful tips that can help you solve similar problems.
My feedback from the perspective of a framework developer is quite different. I found the tone and attitude towards express.js to be concerning and somewhat offensive. Here was a developer blaming the framework he chose for poor architecture when they never bothered to actually learn how the framework works in the first place.
Recommended for understanding why Express works the way it does, what other frameworks do differently, and why none are superior to the other without considering your own requirements.
We’re the ones who keep creating, replacing, Kickstarting, and spending top dollar on ever-more-specialized equipment, even when it differs from established products only in arbitrary or purely decorative ways that have no discernable effect on the actual coffee (except maybe prolonging the process of making it).
We’re the ones who obsess over every little detail of brewing technique as if they matter much more than they really do, making good coffee ever more alienating and confusing to casual coffee drinkers who don’t have time to study and fuss over it as much as we do. […]
Maybe we’d get some of the Keurig fans to use our methods if we weren’t so pretentious, wasteful, expensive, and inaccessible ourselves. […]
Our obsession with gear and “rituals” is only distracting them — and us — from the real problem: old, mediocre, or badly roasted beans.
The AeroPress was conceived at Alan Adler’s dinner table. The company was having a team meal, when the wife of Aerobie’s sales manager posed a question: “What do you guys do when you just want one cup of coffee?”
A long-time coffee enthusiast and self-proclaimed “one cup kinda guy,” Adler had wondered this many times himself. He’d grown increasingly frustrated with his coffee maker, which yielded 6-8 cups per brew. In typical Adler fashion, he didn’t let the problem bother him long: he set out to invent a better way to brew single cup of coffee.
I love my AeroPress. It really does make a great cup.
The fine folks at Sauce Labs invited me to speak at DeveloperWeek San Francisco about browser testing at Yahoo scale. We test YUI on IE 6, 7, 8, 9, 10, & 11, iOS 6 & 7, Chrome, Firefox, and Safari, which runs over 120,000 tests on every push.
We’ve learned a lot about how to spend our time and the challenges of CI testing with multiple browsers. I began with a introduction to Yeti, the easy way to get started with web testing, which also drives over a million automated tests every week for YUI.
Check out the slides from my talk. If you were there, thanks for being a great audience! There was a great turnout with smart questions.
Steve Klabnik considers “Is npm worth 26MM?”:
If you want to repeatably manufacture an open source ecosystem, you need capital to do so. And a firm that’s progressive enough to understand the indirect payoffs of investing in infrastructure is poised to have a huge advantage.
— isaacs (@izs) February 13, 2014
Yeti 0.2.27 provides first-class code coverage reporting provided by Istanbul.
Simply use Yeti with the
--coverageoption. By default, Yeti will instrument your code on-the-fly and show a brief summary.
Yeti has ran 1,207,780 tests for YUI since Yeti 0.2.26 shipped 6 days ago.
I’m very excited to bring code coverage to yo/tests.