Gilt Tech

Apr 17

How Gilt Is Using Grunt

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.

Apr 16

Vote for Gilt in This Year’s Webby Awards!

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!

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.

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.

Brooklyn iOS Developer Meetup Features Gilt

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.

Apr 15

Check out the Slides from Gilt PMO’s “The Agile PMO” Talk



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

Planet Cassandra Features Gilt

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.

Apr 14

NYC HTML5 Features Gilt in April

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!

Gilt PMO Featured at Agile NYC Tonight!

image

Gilt Senior Director, PMO Heather Fleming and Director of Program Management Justin Riservato are the featured speakers at Agile NYC’s  meetup this evening at Pace University! Heather and Justin will demonstrate how an Agile PMO can help your organization make sure they are tackling the right work at the right time and with the right teams. They’ll share a retrospective on their multiple iterations, from “Request for Work” processes to “Swagathons” and something called “The Social Experiment”—and discuss how trust is really the key to scaling Agile at Gilt. 

The address for tonight’s event is 163 William St. (second floor); starting time is 5:30 PM. Go here to register.

Apr 11

Portland Java Users Group Features Gilt on Tax Day

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!

What’s for Brunch?

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!