Technology

  • Yeti 0.2.27 — First-class code coverage

    Less than a week since the last release and as promised, Yeti 0.2.27 has shipped today with code coverage support.

    Yeti 0.2.27 provides first-class code coverage reporting provided by Istanbul.

    Simply use Yeti with the -c or --coverage option. 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.

  • Yeti 0.2.26 released

    I’ve released a new version of Yeti, the test runner we use here on Yahoo’s YUI team. Since August 2013, Yeti has automated 33,661,505 tests in CI for us.

    Today’s release prints useful feedback to stderr when Yeti is used in CI. It also includes a fix for issue #74 (Unable to serve error) and #68 (improve DOH support).

    When using Yeti to in CI, e.g. to produce JUnit XML output, previous versions of Yeti would go silent after testing began as Yeti produced XML output on stdout. This made it difficult to determine if Yeti was doing anything while tests ran. When using Yeti with --junit, today’s release prints status after every test completion to stderr while XML prints to stdout.

    Big thanks to @henryqdineen for contributing the fix for DOH support!

    In addition to fixing bugs, we have made some improvements to Yeti’s own tests and to Yeti’s documentation. Yeti’s website now uses Pure for your viewing pleasure on desktop and mobile devices.

    Expect more updates soon. Code coverage is next on my list.

  • What was it like to help develop Paper?

    Facebook engineer Jason Barrett Prado answers the question What was it like to help develop Paper?

    Paper was designed on a principle: content should be respected. Facebook is supposed to be like a glass through which you can see its contents. This has been an aspirational goal for a long time, but in reality many of the pixels on the screen in our products are not content, they are chrome.

    If we are trying to respect content, we should minimize chrome in a radical way. Everything on screen should be a user’s content, whether it’s their picture, their name, their posts, or their photos. Paper has almost nothing on screen except for user-generated content.

    […] Facebook can be beautiful, but I feel that the design of previous Facebook products does not inspire users to create and post beautiful content. I hope that Paper does.

    Don’t miss the details on Facebook vs. Apple culture, the team’s experiments with organizing content, and the challenge of rendering animations on multiple threads.

    (Via @tilomitra.)

  • Node.js postmortem debugging for Linux

    You can now debug your Linux-based Node.js application on SmartOS using a core dump.

    TJ Fontaine:

    Max Bruning and I decided we wanted to be able to load a core file from a Node.js Linux process and be able to run ::findjsobjects on it in mdb.

    If you run Node on Linux with --abort-on-uncaught-exception, you can inspect the state of JavaScript objects using the core dump created when your process crashes.

    This gives you a fighting chance at tracking down the unique kinds of errors that occur most frequently in production. If you’ve ever ran non-trivial Node programs in production, you’ll understand that this is a huge accomplishment.

    Update: If you’re new to debugging Node on SmartOS, check out the latest MDB and Node.js article by David Pacheco.

  • Code coverage for executable Node.js scripts

    Collecting code coverage for executable scripts in Node.js is tricky. I’ve ran into this problem a handful of times at Yahoo, so I published a module that mocks stdin, stdout, and stderr and my experience using it in this post for Yahoo Engineering’s tumblr.