Gilt’s front-end engineering team recently created gg-grunt: a tidy, Gilt-ified, JavaScript wrapper around Grunt, the current “best in class” front-end build system and new standard for open source development. gg-grunt enables all of our developers to have a single install of Grunt (with our custom tasks) that automatically updates itself when we release new changes.

gg-grunt marks an exciting new era for front-end development at Gilt. Till now our front-end team has been working on (and with) “ui-build,” our legacy front-end build system written in Ruby. ui-build was extremely powerful, but Grunt gives us more flexibility and power as we shift away from Ruby and toward adoption of more tools written in Node.js/JavaScript.

The initial release of gg-grunt (0.1.x) contains two tasks: verify and lint. These two commands are now equivalent to their ui-build counterparts; in fact, the ui-build task will delegate to the gg-grunt task if both are installed. Our engineers can use either the old or the new syntax. All other tasks remain in ui-build and rake. As we reach milestones with gg-grunt, we can update ui-build to delegate to gg-grunt to perform certain tasks. Above all, this transition will make maintenance easy. And given that JavaScript isn’t going away, this will still be the case years from now.

Here’s some output from gg-grunt, running `gg-grunt lint:common.id`:

Here’s another screenshot of the same command, but showing an abort after a syntax error:

And finally, success!

gg-grunt also has an auto-update feature. First of all, if you don’t have the util-gg-grunt repo cloned (where all the actual code lives), but you do have the gg-grunt CLI (which lives in another repo, util-eng, which everyone at Gilt already has cloned and in their path), when you run gg-grunt, it will clone the util-gg-grunt repo, and then continue executing.

Also, when you run gg-grunt, and you’re on a tag (which you are by default), it will automatically check for a newer tag, and update if found:

If you’re offline, it won’t make this check:

If you’re on a branch or a tag, it won’t update either. This makes it easy for developers to contribute to gg-grunt itself—they just have to check out master (or a branch), make some changes, and then easily test their changes by running gg-grunt again. When their feature or bug fix is ready for release, all they have to do is create and push a new tag!

Internally we use Grunt, but with our own custom “reporter” (courtesy of Andrew Powell). You can see this reporter in action in all the screenshots above. Instead of dumping the raw output from each of the tasks (jsvalidate, jshint, coffee, etc., not to mention dozens of custom tasks) which don’t have a consistent look and feel, we use a module named “hooker” to “hook” console.*, grunt.log.*, stdout and stderr, and listen for any and all output from these tasks. We then pass the raw output through a set of pattern matchers and generate consistent output:

Because gg-grunt is written entirely in JavaScript, our entire front-end team (and some of our back-end engineers as well) can help contribute to it via bug fixes and new features. gg-grunt will use open source grunt plugins and Grunt conventions and best practices wherever possible.

image

We are excited and proud to tell you that the Gilt iPhone and Gilt iPad apps have each been nominated for Webby Awards this year! Our apps are nominees in the “Mobile & Apps Handheld: Shopping” and “Mobile & Apps Tablet: Shopping” categories. If you love our apps (and we hope you do), please take a minute to vote for them. But hurry: Voting ends April 25!

  • Gilt iPhone App: Mobile & Apps Handheld: Shopping Category.  Vote now!
  • Gilt iPad App: Mobile & Apps Tablet: Shopping Category. Vote now!

Now in its 18th year, the Webby Awards is pretty much the Oscars of the Internet. Its organizing body, the International Academy of Digital Arts and Sciences, includes celebrities and techlebrities ranging from music legend David Bowie to Tumblr founder David Karp. This year’s awards generated 12,000 entries from more than 60 countries, so our nominations are a huge deal for us!

Last night I presented “Taxes and Payments at Gilt” at the Portland Java User Group in Portland, Oregon. I discussed Gilt’s checkout system, tax calculator implementation, and payment infrastructure. Thanks to Jama Software for hosting the event.

Tonight Matt Isaacs represents Gilt at the Brooklyn iOS Developer meetup’s monthly event! Matt, a Senior Software Engineer on our mobile team, will discuss how we’ve streamlined testing by adopting Sauce Labs’ Appium and other automated tools. He’ll also talk about some of the technical and cultural pain points related to mobile testing, and discuss Gilt’s approach to mitigating these issues. Speakers from CBS Sports, FiftyThree and Small Planet will also present at tonight’s sold-out meetup, which begins at 7 PM at Huge in DUMBO.



Last night Gilt Senior Director, PMO Heather Fleming and Director of Program Management Justin Riservato headlined Agile NYC's monthly meetup and told the audience all about the “Triangle of Truth,” the “Cone of Uncertainty,” and other slightly Illuminati-sounding things! Check out their slides above and tweet us what you think!

image

Thanks to DataStax for featuring our recent, hands-on Cassandra workshop—part of our free tech courses initiative—on their Planet Cassandra blog! Go here to learn more about the class, taught by Niall Milton of DigBigData and DataStax.

image

The NYC HTML5 meetup group is one of our favorites to attend, so we’re super-excited that Gilt Lead Software Engineer Eric Shepherd is one of the featured speakers for April! Eric’s talk, “Matrix of Detection," goes a li’ something like this:

Imagine a three-dimensional space created by X, Y, and Z axes. On the X axis, device detection determines the right quantity of code for the device; on the Y axis, resolution detection responds to the user’s screen size; and on the Z axis, feature detection further tailors the experience to the browser’s capabilities. With users located at points within this three-dimensional matrix, a single application can be served to everyone.

The night’s other featured speakers include Leonard Bogdonoff and Deni Spasovski. The meetup takes place Wednesday, April 16 at Conde Nast’s headquarters. There’s currently a wait list, but a spot might become available so sign up and see what happens!

image

On Tuesday, April 15, Gilt Senior Software Engineer Sean Sullivan will present the appropriately-themed “Taxes and Payments at Gilt" at the Portland Java Users Group's monthly meetup. Come learn all about Gilt's checkout system and order-processing back-end!

image

The Gilt tech team celebrated the end of another productive week with a bagels, bubbly and brined salmon!

image

To carry the “things that begin with B” theme to its logical conclusion, one of our #bigdata books showed up as well.

Happy Friday!

Thanks to Alex Gorbatchev at npm awesome for blogging about Shmock, Gilt Principal Systems Engineer Jonathan Leibiusky’s Express-Based HTTP Mocking Library for Node.js! “Being able to mock APIs is a very powerful tool for BDD,” Alex writes. “You can prototype, design and test your consumer before implementing a line of code.”