<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>The Gilt Groupe technology organization. We make gilt.com work.

  var _gaq = _gaq || [];
  _gaq.push([‘_setAccount’, ‘UA-3311903-7’]);
  _gaq.push([‘_trackPageview’]);

  (function() {
    var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;
    ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;
    var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
  })();</description><title>Gilt Technologie</title><generator>Tumblr (3.0; @gilt-tech)</generator><link>http://tech.gilt.com/</link><item><title>Friday Fun with Gilt Games</title><description>&lt;p&gt;The &lt;a href="http://dev.gilt.com"&gt;Gilt Public API&lt;/a&gt; is a great tool for developing new ways for people to shop quickly, efficiently, or on new platforms. But developers using the API are also finding unexpected things to do with Gilt data— they&amp;#8217;re using it to make games.&lt;/p&gt;

&lt;p&gt;So in the spirit of Friday, why not spend a few minutes playing with a couple of games that have been built on top of the Public API?&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m3g9rli1kS1qzuc2n.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://spanmess.com/lab/memory"&gt;Gilt Memory&lt;/a&gt;&lt;/strong&gt; was built by &lt;a href="http://spanmess.com/"&gt;Karl Norling&lt;/a&gt;, a developer here at Gilt. See how quickly you can find the matching pairs of products, then challenge your friends to beat your score!&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m3g9rwPSBf1qzuc2n.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://tpir.nodejitsu.com/"&gt;The Price is Right on Gilt&lt;/a&gt;&lt;/strong&gt; was built overnight at the NYC Powered by MongoDB Hackathon last weekend. This live multiplayer game lets you and up to 3 other friends play a price-guessing game to see who knows Gilt&amp;#8217;s products the best. Developer &lt;a href="http://yufeiliu.com"&gt;Yufei Liu&lt;/a&gt; built the project using Node.js and MongoDB.&lt;/p&gt;

&lt;p&gt;Happy Friday, everyone!&lt;/p&gt;</description><link>http://tech.gilt.com/post/22380972786</link><guid>http://tech.gilt.com/post/22380972786</guid><pubDate>Fri, 04 May 2012 09:17:13 -0400</pubDate><category>public api</category><category>api</category><category>gilt</category><category>games</category><category>html5</category><category>node.js</category><category>tgif</category><dc:creator>ckolderup</dc:creator></item><item><title>The 5th Floor</title><description>&lt;p&gt;Gilt Tech have been enjoying their new space on the 5th floor of &lt;a href="http://maps.google.com/maps?q=2+Park+Ave,+New+York,+NY&amp;amp;hl=en&amp;amp;ll=40.745761,-73.981816&amp;amp;spn=0.007958,0.012896&amp;amp;sll=40.746246,-73.982455&amp;amp;layer=c&amp;amp;cbp=13,296.9,,0,0&amp;amp;cbll=40.746114,-73.982116&amp;amp;hnear=2+Park+Ave,+New+York,+10016&amp;amp;t=m&amp;amp;z=17&amp;amp;panoid=y9YY1CrX5ju6wVrnIxU9PQ"&gt;2 Park Avenue, NYC&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;object height="360" width="480"&gt;&lt;param name="flashvars" value="offsite=true&amp;amp;lang=en-us&amp;amp;page_show_url=%2Fphotos%2Fgilttech%2Fsets%2F72157629555731418%2Fshow%2F&amp;amp;page_show_back_url=%2Fphotos%2Fgilttech%2Fsets%2F72157629555731418%2F&amp;amp;set_id=72157629555731418&amp;amp;jump_to="&gt;&lt;param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=109615"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/object&gt;&lt;/p&gt;</description><link>http://tech.gilt.com/post/21999199942</link><guid>http://tech.gilt.com/post/21999199942</guid><pubDate>Sat, 28 Apr 2012 16:23:00 -0400</pubDate><dc:creator>giltquinn</dc:creator></item><item><title>Gilt Tech @ NYC Powered By MongoDB Hackathon</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m2sbc9vYkQ1qzuc2n.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;What&amp;#8217;s better than spending 24 hours in Manhattan hacking on sweet projects using MongoDB and the Gilt API? Doing it while supporting HackNY, a New York City organization that promotes innovation and entrepreneurship among the city&amp;#8217;s up-and-coming students and hackers. And that&amp;#8217;s exactly what you can do next weekend, April 27-28, at &lt;a href="http://www.10gen.com/events/NYC-MongoDB-Hackathon"&gt;10gen&amp;#8217;s MongoDB Hackathon&lt;/a&gt;. A lot of great people, and great companies, are going to be there, and we&amp;#8217;re excited to see you come down and make the next cool project. On Saturday night an esteemed panel of judges will choose winning projects and award all manner of prizes, including iPads, Xbox 360s, and more.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;ll be at the event to share how to get started with the Public API and answer any questions you may have, give you ideas on what you could build, and maybe give you a sneak peek into what we&amp;#8217;re working on for the future of the API, so come find us!&lt;/p&gt;

&lt;p&gt;For questions about the event, you can send a tweet to &lt;a href="http://www.twitter.com/MongoDB"&gt;@MongoDB&lt;/a&gt;. For questions about the API, get in touch &lt;a href="http://www.twitter.com/gilttech"&gt;@GiltTech&lt;/a&gt; or send an email to &lt;a href="mailto:api@gilt.com"&gt;api@gilt.com&lt;/a&gt;!&lt;/p&gt;</description><link>http://tech.gilt.com/post/21438119244</link><guid>http://tech.gilt.com/post/21438119244</guid><pubDate>Fri, 20 Apr 2012 11:45:00 -0400</pubDate><category>mongodb</category><category>hackathon</category><category>gilt</category><category>public api</category><category>NYC</category><category>nyctech</category><category>hackny</category><category>api</category><dc:creator>ckolderup</dc:creator></item><item><title>The PMO: Right Work, Right Time, Right People</title><description>&lt;p&gt;&lt;span id="internal-source-marker_0.1910140162775763"&gt;You might be surprised to learn that Gilt Tech has a Program Management Organization (aka &amp;#8220;The PMO&amp;#8221;).&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;Why do I think you might be surprised?  Well, the role of project management in traditional organizations has typically been one associated with paperwork and process (&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Office_space"&gt;&lt;span&gt;We need to talk about your TPS reports&amp;#8230;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;).  It has also been associated with hindering rapid development and slowing things down.  These negative connotations are behind the reasons why many people struggle with the idea of having a PMO or a project manager on a team.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;We strive to change this.  We believe every organization and team should invest in project management if you want to work smarter and spend more time on what really matters.  Here’s some reasons why&amp;#8230;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;One of the many tenets we are taught in our training is the “&lt;/span&gt;&lt;a href="http://www.verasage.com/index.php/Community/the_triangle_of_truth"&gt;&lt;span&gt;Triangle of Truth&lt;/span&gt;&lt;/a&gt;&lt;span&gt;”.  The project manager’s key function is historically described as making sure a project meets its objectives, is on time and on budget.&lt;/span&gt;&lt;img height="300px;" src="https://lh3.googleusercontent.com/thIT1SEv1LAAgfgKn8pD56JMlNbbHuBgHUaJhdc5zZNkCIVAkupXFn7v063__8uXPUr3onXr8uWXzxXKis5jlfMg6yt_fk1HJ9Dbt4eq2F-WgwocoHA" width="404px;"/&gt;&lt;br/&gt;&lt;span&gt;What happens more often than not is that a project manager is so focused on driving to deadline, they lose sight of the big picture.  I have often heard project managers and others describe their job as “my responsibility is to make sure we hit our schedule no matter what” &amp;#8212; and this is dangerous thinking.  Our function is so much bigger than maintaining a list of tickets on schedule.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;The project manager’s responsibility is to make sure we are doing the &lt;/span&gt;&lt;em&gt;right&lt;/em&gt;&lt;span&gt; work at the &lt;/span&gt;&lt;em&gt;right&lt;/em&gt;&lt;span&gt; time and with the &lt;/span&gt;&lt;em&gt;right&lt;/em&gt; &lt;span&gt;people.  Let’s break this down a bit.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;strong&gt;&lt;span&gt;&lt;em&gt;&lt;br/&gt;Right&lt;/em&gt;&lt;span&gt; Work&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;span&gt;A good project manager doesn’t simply take orders and execute on them.  We have the authority to ensure we are working on what will bring the biggest contribution to the organization, and constantly question and re-evaluate this based on a combination of hard data, an understanding of the business we are working in, and good intuition.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;Is this the most important thing we could be doing right now?  If it isn’t, how can we bring the right people together to negotiate and agree to the right work?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;How will this work both positively and negatively impact others?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Is the work defined enough that we feel confident in its execution?  What is the Minimum Viable Product?  Is the work actionable?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;What does the data tell us and what decisions need to be made based on this data?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;strong&gt;&lt;span&gt;&lt;em&gt;Right&lt;/em&gt;&lt;span&gt; Time&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;span&gt;A good project manager needs to have an understanding of both internal and external factors behind the schedule, and make decisions based on a deeper understanding of what is driving the timeline, maximize efficiency, and take the initiative to make adjustments along the way.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;What are the market conditions like?  What are our competitors doing? Is it the right time to be launching this kind of product?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Are we managing time appropriately?  Is the team focused and if not, what can we do to eliminate the noise?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Are we working in the most efficient way?  What changes to our current process need to be made to maximize our efficiency?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Are there deadlines that are fixed due to events such as press releases, end of quarter, or financial reporting needs?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;strong&gt;&lt;span&gt;&lt;em&gt;Right &lt;/em&gt;&lt;span&gt;People&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;span&gt;A good project manager is also a people manager.  Yes, I’m adjusting the “Cost” part of the triangle to represent people &amp;#8212; because people’s time = money.  A good project manager knows that a primary function is to alleviate any roadblocks that get in the way of your team focusing on the most important work, even if this means picking up the slack yourself.  We are also responsible for team building, encouraging growth and learning, and are often the public face or “go-to person” on the team.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;Do you have the right people on the team to accomplish your mission?  If not, what can you do to get the people you need?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Are the right communication methods in place so that all of the people involved in the project have a clear understanding of what is happening?  Do all of the people outside of the project have access to information?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Do all these people really need to be at this meeting?  What can we do to eliminate unnecessary meetings for people so they can focus?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Is the team happy, engaged, and enjoying their work?  What can we do or change to maximize happiness and productivity?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;As you can see, there’s a lot more to project management than managing the schedule, taking notes and executing orders.  Project managers oversee the end-to-end execution of a project, making sure we are doing the right work at the right time and with the right people.  We are experts in efficiency, negotiation, communication, strategy and big picture thinking with the ability to break the big things down into actionable chunks.  We not only get things done &amp;#8212; we get the right things done in the best way possible.&lt;/span&gt;&lt;/p&gt;</description><link>http://tech.gilt.com/post/21214193037</link><guid>http://tech.gilt.com/post/21214193037</guid><pubDate>Mon, 16 Apr 2012 12:16:45 -0400</pubDate><category>PMO</category><category>project management</category><category>program management</category><dc:creator>giltheather</dc:creator></item><item><title>Lessons in Ratatouille</title><description>&lt;p&gt;&lt;span id="internal-source-marker_0.0906337329228355"&gt;I have a son who is obsessed with Pixar movies, so I have seen &amp;#8220;Ratatouille&amp;#8221; about 100 times. It wasn&amp;#8217;t until recently however, that I started to draw parallels between the movie&amp;#8217;s lessons and lessons in organizational culture.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;em&gt;&lt;span&gt;Lesson One: &amp;#8220;Anyone Can Cook&amp;#8221;&lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;span&gt;The core vision statement of Gusteau, the original chef who built his restaurant into an empire and what inspired a rat to pursue his dream to become a cook. There is debate around this vision within the movie &amp;#8212; just because anyone can cook it doesn&amp;#8217;t mean they should. Some&lt;/span&gt;&lt;span&gt; people are better at this than others, and not every creation is going to make the menu. The point is that the vision is simple, aspirational, and inspiring.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;em&gt;&lt;span&gt;Lesson Two: A gift is not enough &amp;#8212; you need a passion. And mentors.&lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;span&gt;Remy the rat has a gift for being able to smell whatever ingredients are in something. He could have easily resigned to the comfortable position of poison checker for his rat clan. But he was soon bored &amp;#8212; he wanted to create something. To add to this world instead of taking&lt;/span&gt;&lt;span&gt; from it. You have people in our organization with gifts.  You have people with passion. You need to mentor these people (as imaginary Gusteau and Colette did for Remy) so they are able to express their passion creatively.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;em&gt;&lt;span&gt;Lesson Three: Complacency = &amp;#8220;Follow the Recipe&amp;#8221;&lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;span&gt;With Gusteau dead, the new leaders at the restaurant have instructed the team to simply &amp;#8220;follow the recipe&amp;#8221;. Gusteau was paid to create &amp;#8212; they are paid to follow what Gusteau already did and not improvise. Seems pretty logical &amp;#8212; just keep doing what you know works and you continue on the same trajectory. Except the customers are getting bored. They want to know what does the chef have that is new. Organizations are in danger of falling into &amp;#8220;follow the recipe&amp;#8221; complacency where talented people are not willing to rock the boat due to fear of&lt;/span&gt;&lt;span&gt; something or because they feel defeated, or simply restricted from making their own improvisations.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;em&gt;&lt;span&gt;Lesson Four:  Frozen Foods might make you a lot of money, but at what cost to morale?&lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;span&gt;The new chef in charge is highly focused on making more money in the fastest, easiest way possible. In the movie, it is by expanding Gusteau&amp;#8217;s recipes into a pre-packaged, frozen-foods line. Will it bring in revenue? Yes. Is anyone inspired?  No. The team feels like what they are doing is sacrificing the quality of their work, and killing the passion in their hearts that drives them to create every day.  In fact, there is a point in the movie where this plan is disbanded and the team rallies around a bonfire of the frozen foods and marketing materials and toasts to a new era of getting back to making real food for real people.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;em&gt;&lt;span&gt;Lesson Five: &amp;#8220;You are the boss. Inspire them.&amp;#8221;&lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;In the movie the team is about to face their toughest food critic who can make or break their restaurant. Linguini asks Colette &amp;#8220;What should I do?&amp;#8221;. She replies, &amp;#8220;You are the boss. Inspire them.&amp;#8221; I’m sure you all have teams of people who report to you, who look to you for guidance, mentorship, and they take their cues from what you do and what you say. It is your responsibility to inspire them, to ignite the passion that made them want to work there to begin with. If you don&amp;#8217;t believe it &amp;#8212; if you don&amp;#8217;t feel it yourself you can&amp;#8217;t expect them to believe and feel it too.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;em&gt;&lt;span&gt;Lesson Six:  Give the customers something new by iterating on what already is.&lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;span&gt;The best dishes were iterations on existing recipes, not completely new ideas. How can you improve and innovate in simple ways to get some quick wins with measurable impact?  What can you do in the short term that is actionable and achievable but still innovative?&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;em&gt;&lt;span&gt;Lesson Seven:  Take off the toke and give your tiny chef the credit.&lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;span&gt;Remy grows continuously frustrated because he never receives recognition or credit for his work. (He spends most of the movie hiding under the toke of Linguini, telling him what to do.) Every company needs to do more in this area. A lot of work goes on behind the scenes that many people don&amp;#8217;t see (and then they start to question the value of it). Bring more of this to the forefront. Thank people more, publicly recognize them, call them out for even the small things. Foster a culture of &amp;#8220;I have your back.&amp;#8221;. Remy is a rat &amp;#8212; you can imagine what happened when people found out he was the cook behind all the innovation in the kitchen. Recognize people for taking initiative and have their back regardless if the outcome is good or bad.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;em&gt;&lt;span&gt;Lesson Eight:  Connect with people on an emotional level.&lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;span&gt;This goes for both your employees and the customers you have. At the end of the movie there is this wonderful scene when the big bad critic guy tastes the dish of ratatouille prepared for him and he flashes back to an emotional moment where he is a boy being comforted by his mother after having gotten hurt falling off his bike. The food connected with him emotionally. Your products can do this too. You can do this with your staff. Listen, empathize, connect, guide, inspire.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;If anything, I hope you go watch the movie. :-)&lt;/span&gt;&lt;/p&gt;</description><link>http://tech.gilt.com/post/19288935656</link><guid>http://tech.gilt.com/post/19288935656</guid><pubDate>Wed, 14 Mar 2012 09:37:36 -0400</pubDate><category>PMO</category><category>culture</category><category>leadership</category><category>program management</category><category>project management</category><dc:creator>giltheather</dc:creator></item><item><title>SummerQAmp: introducing QA as a career opportunity</title><description>&lt;p&gt;The tech team at Gilt is excited to launch &lt;strong&gt;SummerQAmp&lt;/strong&gt; (summer-kamp) with Bon Jovi, the White House, GroupMe and Onswipe.  This is a great initiative that is launching as a part of the White House&amp;#8217;s Summer Jobs+ program to introduce Quality Assurance as a career path to youth in the U.S.&lt;/p&gt;
&lt;p&gt;&lt;img align="middle" height="238" src="http://blog.onswipe.com/wp-content/uploads/2012/03/summer_qamp_logo.png" width="500"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;QA @ Gilt&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Our Quality Assurance team is made up of individuals that are programmers with Computer Science degrees to others that started out in our Customer Support team without a technology degree.&lt;/p&gt;
&lt;p&gt;We love to automate tests but we also understand the value of manual testing.  One thing that is common among the team members is that they are passionate about what they do and know the products they are testing better than anyone.  We also work with a great offshore team and they are led by our QA team in the U.S.  We see the value of outsourcing as a way to extend our business hours, not to replace jobs in the U.S.  There is nothing better than having an engineers and testers working side-by-side.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Our SummerQAmp Goal&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By helping launch this program and participating in it, we hope to teach the values of Quality Assurance and demonstrate that it can be a career or a gateway to other areas within technology.  Although, we really hope their passion for breaking things will keep them wanting to test.&lt;/p&gt;
&lt;p&gt;We also hope with this program that we can give people that may not know how to get started or the have financial means to get started in technology a chance to gain exposure to the skills necessary to be successful in a technology career.&lt;/p&gt;
&lt;p&gt;Get involved by signing your company up at http://www.summerqamp.org.&lt;/p&gt;</description><link>http://tech.gilt.com/post/18915833538</link><guid>http://tech.gilt.com/post/18915833538</guid><pubDate>Wed, 07 Mar 2012 16:21:04 -0500</pubDate><category>SummerQAmp</category><category>Quality Assurance</category><category>QA</category><dc:creator>klhaggard</dc:creator></item><item><title>Public API Language Bindings, Round 2</title><description>&lt;p&gt;There&amp;#8217;s been even more work done getting the Gilt API wrapped up in language bindings over the past two weeks and I&amp;#8217;m here to present the newest to you in case any of them tickle your fancy.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://github.com/nopolabs/gilt_api_php"&gt;gilt_api_php&lt;/a&gt;&lt;/em&gt; is a PHP client written by Gilt Tech member &lt;a href="https://github.com/nopolabs"&gt;Dan Revel&lt;/a&gt;. This library has tests and a demo app to get you started on downloading and featuring sales and products in no time.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://github.com/nitindhar7/gilt-java"&gt;Gilt-Java&lt;/a&gt;&lt;/em&gt;, by Gilt Tech&amp;#8217;s very own &lt;a href="https://github.com/nitindhar7"&gt;Nitin Dhar&lt;/a&gt;, is of course a Java library for the Public API. Nitin is working on some Android compatibility so mobile app developers don&amp;#8217;t need to remain glued to our iOS bindings!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://github.com/aellerton/gilt-python"&gt;gilt-python&lt;/a&gt;&lt;/em&gt; is a brand new Python library brewed here at Gilt by engineer &lt;a href="https://github.com/aellerton"&gt;Andrew Ellerton&lt;/a&gt;. If you&amp;#8217;re working in Python, give it a try and see how you like it!&lt;/p&gt;

&lt;p&gt;We&amp;#8217;re hard at work on compiling a permanent directory of client libraries like the ones we&amp;#8217;ve featured on this blog and some of the applications people have built already. &lt;a href="mailto:api@gilt.com"&gt;Email us&lt;/a&gt; soon if you have something you want to see included!&lt;/p&gt;</description><link>http://tech.gilt.com/post/18562306244</link><guid>http://tech.gilt.com/post/18562306244</guid><pubDate>Thu, 01 Mar 2012 15:04:27 -0500</pubDate><category>api</category><category>python</category><category>java</category><category>php</category><category>sdk</category><category>client libraries</category><category>language bindings</category><dc:creator>ckolderup</dc:creator></item><item><title>Affiliate Marketing Program Open to Developers</title><description>&lt;p&gt;It&amp;#8217;s been great to hear from developers over the past two weeks about their plans for the Gilt Public API, and we can only imagine what&amp;#8217;s in the works out there that we haven&amp;#8217;t heard about yet! Meanwhile, back at Gilt HQ, we&amp;#8217;re hard at work on adding more to the API— more data and more ways of accessing what you want in the easiest way possible.&lt;/p&gt;

&lt;p&gt;In the meantime, though, I&amp;#8217;m happy to announce that we&amp;#8217;ve finally got everything in place to enable you to participate in the affiliate marketing program. By enrolling in this program and adding a single parameter to all the requests you pass in, you can earn a competitive 6% commission on all sales from referred customers. When you consider that the luxury items on Gilt lead to &lt;em&gt;average&lt;/em&gt; total order values of $150, that adds up pretty quickly.&lt;/p&gt;



&lt;p&gt;&lt;/p&gt;&lt;center&gt; &lt;img src="http://media.tumblr.com/tumblr_lzuxtzHgLn1qzuc2n.gif" alt=""/&gt;&lt;/center&gt;

&lt;p&gt;All the information you need to get started has been added to the &lt;a href="https://dev.gilt.com"&gt;Gilt Developer Portal&lt;/a&gt;; the technical information is on the &lt;a href="https://dev.gilt.com/page/gilt-public-apis"&gt;main documentation page&lt;/a&gt; and information about how to sign up for the affiliate program is available on &lt;a href="https://dev.gilt.com/faq/general-information"&gt;our FAQ&lt;/a&gt;. What are you waiting for?&lt;/p&gt;</description><link>http://tech.gilt.com/post/18137413919</link><guid>http://tech.gilt.com/post/18137413919</guid><pubDate>Thu, 23 Feb 2012 13:11:16 -0500</pubDate><category>api</category><category>public api</category><category>commission</category><category>affiliates</category><category>affiliate marketing</category><category>retail</category><category>ecommerce</category><dc:creator>ckolderup</dc:creator></item><item><title>First Public API Language Bindings Available Now!</title><description>&lt;p&gt;7 days ago, we launched our Public API and the accompanying &lt;a href="https://dev.gilt.com"&gt;Developer Portal&lt;/a&gt;. We&amp;#8217;ve received a lot of great feedback, updated the Portal a bit to better give you the information you need, and talked to a lot of developers with some really neat ideas for ways to use the API. Now&amp;#8217;s a great time to get started on your own application!&lt;/p&gt;

&lt;p&gt;Today I&amp;#8217;m here to share some of the hard work that people have been doing, both here at Gilt and in the developer community at large, to make the API more accessible to developers of specific languages. We now have the first API language bindings available for Javascript, Ruby, Objective-C, Scala, and Python!&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s more to come; I&amp;#8217;ll make sure to update here when we have support for more languages or other libraries that might tickle your fancy. Until then, this should be enough to get you started, right?&lt;/p&gt;

&lt;h3&gt;Javascript&lt;/h3&gt;

&lt;p&gt;Developed by &lt;a href="http://www.chrisyz.com"&gt;Chris Young-Zawada&lt;/a&gt; here at Gilt, &lt;a href="https://github.com/gilt/gilt-js-sdk"&gt;these Javascript language bindings&lt;/a&gt; are available as a jQuery-based implementation, so all you have to do is drop in a recent version of jQuery and this .js file and you&amp;#8217;re off to the races!&lt;/p&gt;

&lt;h3&gt;Ruby&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;gem install kin&lt;/code&gt; is all you need to get started with using the Gilt API in Ruby. Developer &lt;a href="https://github.com/vivekbhagwat"&gt;Vivek Bhagwat&lt;/a&gt; put together &lt;a href="https://github.com/vivekbhagwat/kin"&gt;this rubygem&lt;/a&gt; to let Ruby developers worldwide have access to Gilt&amp;#8217;s great flash sales in their applications. Thanks, Vivek!&lt;/p&gt;

&lt;h3&gt;Objective-C&lt;/h3&gt;

&lt;p&gt;iOS development is kind of a big deal right now, and what better way to dip your toes in the water or extend the reach of your mobile app empire than to use this &lt;a href="https://github.com/gilt/gilt-ios-sdk"&gt;Gilt API iOS client library&lt;/a&gt; to integrate Gilt sales data into an app for iPhone, iPod Touch and/or iPad? (That&amp;#8217;s a rhetorical question. This is the ultimate way to do those things.) The SDK was put together by a crack team of Gilt mobile developers: &lt;a href="https://github.com/louoso"&gt;Louis Vera&lt;/a&gt; and &lt;a href="http://bklynco.de"&gt;Adam Kaplan&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Scala&lt;/h3&gt;

&lt;p&gt;Recently among my friends and, it seems, in the developer community at large, what started as a whisper (&amp;#8220;Scala is pretty sweet&amp;#8221;) has turned into a roar (&amp;#8220;DEPLOY ALL THE SCALA&amp;#8221;). If you&amp;#8217;re one of the converts, I&amp;#8217;m happy to tell you that developers &lt;a href="https://github.com/mnn2104"&gt;Moses Nakamura&lt;/a&gt; and &lt;a href="https://github.com/vivekbhagwat"&gt;Vivek Bhagwat&lt;/a&gt; have prepared a fully-tested, simple to use library called &lt;a href="https://github.com/mnn2104/Aurum"&gt;Aurum&lt;/a&gt; that give you access to the Gilt API. Moses and Vivek win the prize for being the first client library developed outside of Gilt— it was up and ready for use fewer than 48 hours after the launch of the API!&lt;/p&gt;

&lt;h3&gt;Python&lt;/h3&gt;

&lt;p&gt;Not content to rest after that, &lt;a href="https://github.com/mnn2104"&gt;Moses&lt;/a&gt; put together &lt;a href="https://github.com/mnn2104/PyGilt"&gt;a simple Python wrapper&lt;/a&gt; for the Gilt API as well. It&amp;#8217;s currently the slimmest of the client libraries highlighted here today, clocking in at just over 100 lines of code, but supports digging through all of the sales and product information that you need to explore our curated sales and do all kinds of fun stuff with them. Good luck, Pythonistas!&lt;/p&gt;</description><link>http://tech.gilt.com/post/17661268884</link><guid>http://tech.gilt.com/post/17661268884</guid><pubDate>Wed, 15 Feb 2012 11:52:00 -0500</pubDate><category>api</category><category>ruby</category><category>scala</category><category>javascript</category><category>python</category><category>objective-c</category><category>ios</category><category>sdk</category><category>client libraries</category><category>language bindings</category><category>jquery</category><category>rubygem</category><dc:creator>ckolderup</dc:creator></item><item><title>Managers! Become the Flywheel.</title><description>&lt;p&gt;Arguably, the job of an engineering manager is to hire and sculpt a development team that is not only highly productive, but also precisely resourced for immediate business priorities.&lt;/p&gt;
&lt;p&gt;Easier said than done. Businesses are highly erratic organisms. Especially start-ups. From week to week our business environment changes and company priorities evolve accordingly. In response to this, so does the position of senior management on the best way to adapt.&lt;/p&gt;
&lt;p&gt;Senior managers flourish in these rough seas, happily charting new courses as new storms brew.&lt;/p&gt;
&lt;p&gt;Development teams don’t fare as well when deprived of continuity. Reorganizing teams and re-prioritizing efforts at the first sign of trouble is problematic for a few reasons:&lt;/p&gt;
&lt;p&gt;Engineers can’t be thought of as fungible resources that can easily skip between teams. Optimal team dynamics form slowly. Interactions take a while to mature and processes need time to be adapted to the specific needs of the team.&lt;/p&gt;
&lt;p&gt;Great products don’t happen overnight either. They typically result from several iterations by stable teams. The first incarnation of any effort is almost always sub-par. This is as it should be.  As Reid Hoffman said: &lt;em&gt;“If you&amp;#8217;re not embarrassed by your first product release, you&amp;#8217;ve released too late”&lt;/em&gt;. The real magic happens after the first or second iteration when the team really starts understanding what the problem is and has acquired the domain knowledge and built the tools to attack it.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://johnandcailin.com/files/images/flywheel_illustration2.blog.png"/&gt;&lt;/p&gt;
&lt;h2&gt;So how should you get the most of out your team in an unstable environment?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Balance the team:&lt;/strong&gt; When the ratio between engineering team size to the rest of the company is too small, you create the capacity to generate many more ideas than can possibly be implemented, or even discussed fully. This results in endless distractions and prioritization sessions, and reduces critical focus on the work currently being done.&lt;/p&gt;
&lt;p&gt;There are a few models for creating balance. One is to simply drive everything from the tech team, for example &lt;a href="http://zachholman.com/posts/scaling-github-employees"&gt;GitHub has zero managers&lt;/a&gt; and developers are 100% responsible for the product direction. This isn’t an option for most companies, but creating a engineering team that is appropriately resourced for the overall organization is.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Maintain Focus:&lt;/strong&gt; Create a North Star for engineering teams by creating, communicating and repeating a strategy for your company and product. Define KPIs to track progress against the strategy. Stay focused on these KPIs for at least a quarter before iterating the strategy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limit Distractions:&lt;/strong&gt; A colleague recently reminded me of a great quote from &lt;a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month" target="_blank"&gt;The Mythical Man Month&lt;/a&gt;: &lt;em&gt;“the best engineering manager I ever saw served often as a giant flywheel, his inertia damping the fluctuations that came from the market and management people”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Be the flywheel and keep your team focused on your strategy. Limit non-essential or off-track meetings and help cross functional teams focus and work tightly on active initiatives. Project rooms allowing face-to-face communication and tight teamwork can be extremely effective.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Empower and Encourage Ownership:&lt;/strong&gt; Encourage teams to take complete, long-term ownership of initiatives and the artifacts (code) that they produce. Adopt tools that help reinforce ownership while maintaining flexibility (we use Gerrit at Gilt). Defend the team from the inevitable onslaught of requests to “re-prioritize” their current work that reduce ownership and focus.&lt;/p&gt;
&lt;p&gt;Doing this isn’t easy, but as a managers our responsibility, perhaps our biggest responsibility is to make sure we have a strategy, to repeat it until people are tired hearing it and to do everything we can to maintain appropriate inertia around it.&lt;/p&gt;
&lt;p&gt;Quinn.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Follow Gilt&amp;#8217;s awesome tech team on twitter &lt;a href="https://twitter.com/gilttech" target="_blank"&gt;@gilttech&lt;/a&gt; and read about our new API at &lt;a href="http://dev.gilt.com"&gt;http://dev.gilt.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description><link>http://tech.gilt.com/post/17559004580</link><guid>http://tech.gilt.com/post/17559004580</guid><pubDate>Mon, 13 Feb 2012 13:26:00 -0500</pubDate><dc:creator>giltquinn</dc:creator></item><item><title>NoSQL in the Real World - The Video, Pics and Slides</title><description>&lt;p&gt;Thanks to everyone who came to Gilt Tech&amp;#8217;s latest tech talk, &lt;a href="http://nosql-tech-talk.eventbrite.com/" target="_blank"&gt;NoSQL in the Real World&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We had a great series of speakers including:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Ara Anjargolian - Redis&lt;/li&gt;
&lt;li&gt;Matt Parker - CouchDB&lt;/li&gt;
&lt;li&gt;Sean Cribbs - Riak&lt;/li&gt;
&lt;li&gt;Edward Capriolo - Cassandra&lt;/li&gt;
&lt;li&gt;Luke Gotszling  - MongoDB&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Huge thanks to &lt;a href="http://www.linkedin.com/in/rockmanha"&gt;Rockman&lt;/a&gt; and &lt;a href="http://www.linkedin.com/pub/maureen-wu/24/758/306"&gt;Maureen&lt;/a&gt; for organizing the event, and to AOL ventures for sponsoring and hosting.&lt;/p&gt;
&lt;p&gt;Enjoy out the video &amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;iframe frameborder="0" height="270" src="http://player.vimeo.com/video/36496024" width="480"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;The Pictures &amp;#8230;&lt;/p&gt;
&lt;p&gt;
&lt;object height="360" width="480"&gt;
&lt;param name="flashvars" value="offsite=true&amp;amp;lang=en-us&amp;amp;page_show_url=%2Fphotos%2Fgilttech%2Fsets%2F72157629257068993%2Fshow%2F&amp;amp;page_show_back_url=%2Fphotos%2Fgilttech%2Fsets%2F72157629257068993%2F&amp;amp;set_id=72157629257068993&amp;amp;jump_to="&gt;&lt;param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=109615"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;The Slides &amp;#8230;&lt;/p&gt;
&lt;p&gt;Riak&lt;/p&gt;
&lt;div id="__ss_11512791"&gt;&lt;iframe frameborder="0" height="400" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/11512791" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Redis&lt;/p&gt;
&lt;div id="__ss_11512694"&gt;&lt;iframe frameborder="0" height="400" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/11512694" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Cassandra&lt;/p&gt;
&lt;div id="__ss_11512693"&gt;&lt;iframe frameborder="0" height="400" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/11512693" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Membase and MongoDB&lt;/p&gt;
&lt;div id="__ss_11512692"&gt;&lt;iframe frameborder="0" height="400" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/11512692" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;CouchDB&lt;/p&gt;
&lt;div id="__ss_11512690"&gt;&lt;iframe frameborder="0" height="400" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/11512690" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;</description><link>http://tech.gilt.com/post/17379979309</link><guid>http://tech.gilt.com/post/17379979309</guid><pubDate>Fri, 10 Feb 2012 13:52:00 -0500</pubDate><dc:creator>giltquinn</dc:creator></item><item><title>Gilt Public API Launched</title><description>&lt;p&gt;I&amp;#8217;m really excited to tell you that we&amp;#8217;ve launched our Public API today, providing programmatic access to a constantly-updating collection of flash sales full of the usual kind of awesome stuff we offer on Gilt&amp;#8217;s stores.&lt;/p&gt;

&lt;p&gt;We held an internal hackathon two weeks ago and saw some really interesting projects come out of just a day&amp;#8217;s work and the brainpower of one room of (admittedly super-smart and obviously very handsome) Gilt engineers, but I can only imagine where things can go now that we&amp;#8217;ve got the whole developer community armed and ready.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;re not like me and don&amp;#8217;t just get pumped up whenever you see a new API you can &lt;code&gt;curl&lt;/code&gt;, maybe I can sweeten the deal a bit— we&amp;#8217;re in the process of putting the finishing touches on an affiliate marketing program, meaning that you can earn a cut of any money we make when your app leads to a purchase on Gilt. You can start building your project now and we&amp;#8217;ll have the details on how to sign up and integrate this into your work soon.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://dev.gilt.com"&gt;Gilt Developer Portal&lt;/a&gt; is your go-to site to read up on how to use our API and apply for API keys for your applications. We&amp;#8217;ll be adding more information to that site regularly as we add new features and content to the Public API. Exposing sales and products is just a first step; we&amp;#8217;ve got a lot of exciting ideas in the works, so stay tuned!&lt;/p&gt;</description><link>http://tech.gilt.com/post/17265109629</link><guid>http://tech.gilt.com/post/17265109629</guid><pubDate>Wed, 08 Feb 2012 10:13:24 -0500</pubDate><category>api</category><dc:creator>ckolderup</dc:creator></item><item><title>Old Browsers in eCommerce: What to do with IE6?</title><description>&lt;p&gt;In a humanitarian effort to improve developer quality of life, we at Gilt recently stopped supporting Internet Explorer 6. This means we no longer use, develop or &lt;a href="http://i.imgur.com/yMkRc.png"&gt;test for the browser&lt;/a&gt;. Given the &lt;a href="http://www.ie6countdown.com/"&gt;small and shrinking population of IE6 users&lt;/a&gt; and the &lt;a href="http://windowsteamblog.com/ie/b/ie/archive/2011/12/15/ie-to-start-automatic-upgrades-across-windows-xp-windows-vista-and-windows-7.aspx"&gt;auto-upgrades planned for this year&lt;/a&gt;, we felt that it is worth our developers&amp;#8217; happiness (and sanity) to abandon support efforts. Our FEET (Front End Engineering Team) are certainly happy to let go of &amp;#8216;[if IE 6]&amp;#8217; conditional comment hackery and other ugly shoehorning techniques.&lt;/p&gt;
&lt;p&gt;We found ourselves wondering&amp;#8230; &lt;strong&gt;Would IE6 users have a better shopping experience if we redirected them to the minimalistic &lt;a href="http://m.gilt.com"&gt;mobile version of gilt.com&lt;/a&gt;? Could the simple no frills layout designed for mobile devices just might be an improvement over the fully-featured yet unsupported site for IE6 users?&lt;/strong&gt; Let&amp;#8217;s walk through the exercise of answering this question, from data collection to results summarization.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Split Testing&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Most often the best way to answer a question is with an experiment. In the context of Gilt and e-commerce, we find split testing to be an effective method for assessing the effect of changes (treatments) to the user shopping experience, be it the reorganization of a sale page or a modification to our checkout flow. Controlled split tests allow us to gauge the impact on our KPIs with statistical confidence, relying less on opinion and more on evidence-based reasoning.&lt;/p&gt;
&lt;p&gt;The idea is to separate a representative subset of the user-base to expose the change to and assess the effects of the change on this smaller group before making the decision to roll out to all visitors. This &amp;#8216;test&amp;#8217; subset should be paired with a mutually exclusive &amp;#8216;control&amp;#8217; subset. Both subsets should be randomly sampled such that they are characteristically the same as each other. We may or may not choose to limit the testing to a segment of our users. For instance, we may want to limit the test to NY members, in which case our &amp;#8216;test&amp;#8217; and &amp;#8216;control&amp;#8217; groups should only be chosen from members in the NY population. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comparing Conversion Rates&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If the redirect has any notable effect on the user experience, it should show in the proportion of buyers-to-visitors, a.k.a. &amp;#8216;visitor conversion rate&amp;#8217;. Conversion rates are proportions and from a statistical point of view are quite easy to work with. We will be comparing the conversion rate of a &amp;#8216;Test&amp;#8217; group that sees the mobile site to a &amp;#8216;Control&amp;#8217; group that sees the regular site. For sake of brevity, I will not go into detail about the nuances of measuring our numerous other site metrics (revenue, dwell time, drop-off&amp;#8230; etc.) and test scenarios (multi-variate, overlapping, longitudinal&amp;#8230; etc.).&lt;/p&gt;
&lt;p&gt;On a high-level, we want to accomplish the following steps:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Segment out our IE6 visitors - our &amp;#8216;IE6 base&amp;#8217;.&lt;/li&gt;
&lt;li&gt;Randomly sample a representative test group from the IE6 base and redirect them to m.gilt.com.&lt;/li&gt;
&lt;li&gt;Measure the difference in &amp;#8216;visitor conversion&amp;#8217; between the test group and the remainder of the IE6 base (control).&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Test or control group membership is tracked via a randomly assigned &amp;#8216;partition&amp;#8217; number (integer) that is issued on first visit in a cookie and persisted thereafter in our operational database. We can then redirect IE6 users to m.gilt.com based on the partition they have and whether the user-agent string indicates they are running IE6. The mobile version of our site is very lean and lacks javascript tagging for tracking site interactions. As a result, we will need to fall back to some good old ad-hoc data munging from our server logs and match up against our OLTP database to piece together the conversion rates per group.&lt;/p&gt;
&lt;p&gt;We can segment out IE6 visits quite easily by checking the GET request user-agent string in our server logs. The string should contain &amp;#8216;MSIE 6.0&amp;#8217;.&lt;/p&gt;
&lt;p&gt;Example user-agent string: &amp;#8216;&lt;em class="t"&gt;&lt;em class="t"&gt;&lt;em class="t"&gt;Mozilla&lt;/em&gt;/&lt;em class="t"&gt;4&lt;/em&gt;&lt;/em&gt;.&lt;em class="t"&gt;0&lt;/em&gt;&lt;/em&gt;&lt;span&gt; (&lt;/span&gt;&lt;em class="t"&gt;compatible&lt;/em&gt;&lt;span&gt;; &lt;/span&gt;&lt;em class="t a"&gt;&lt;em class="t"&gt;MSIE&lt;/em&gt; &lt;em class="t"&gt;&lt;em class="t"&gt;6&lt;/em&gt;.&lt;em class="t"&gt;0&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;span&gt;; &lt;/span&gt;&lt;em class="t"&gt;Windows&lt;/em&gt;&lt;span&gt; &lt;/span&gt;&lt;em class="t"&gt;NT&lt;/em&gt;&lt;span&gt; &lt;/span&gt;&lt;em class="t"&gt;&lt;em class="t"&gt;5&lt;/em&gt;.&lt;em class="t"&gt;1&lt;/em&gt;&lt;/em&gt;&lt;span&gt;)&amp;#8217;.&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;Splunk is a great tool for efficiently parsing and aggregating statistics from log files. We can use it find unique IE6 visitors by day (our IE6 base group) with the following query:&lt;/p&gt;
&lt;p&gt;Splunk query 1 (output filename: all_ie6_users.csv):&lt;/p&gt;
&lt;pre&gt;host="olb*" guid "compatible; MSIE 6.0" | stats count by guid, date_mday, date_month
&lt;/pre&gt;
&lt;p&gt;Half of these users belong to our test group and were randomly sectioned out and redirected to mobile. For this test we added logging to allow us to find those visitors from the test group that were redirected with the search string &amp;#8216;IE6 mobile redirect&amp;#8217;.&lt;/p&gt;
&lt;p&gt;Splunk query 2 (output filename: test_ie6_users.csv):&lt;/p&gt;
&lt;pre&gt;host="olb*" guid "IE6 mobile redirect" | stats count by guid, date_mday, date_month
&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Note: &amp;#8220;olb*&amp;#8221; limits the search to our public facing load balancers that are taking care of the redirection and &amp;#8216;guid&amp;#8217; is a unique identifier for each user.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The flat-files returned by Splunk are structured like so:&lt;/p&gt;
&lt;pre&gt; guid             | month_day |  month   |  count  
------------------+-----------+----------+---------
 00e020bc-ccc8... |         3 | december |      35
 00ea4710-5be5... |         2 | december |      12
 0123d860-34aa... |         1 | december |       8
&lt;/pre&gt;
&lt;p&gt;The results of these queries tell us who belongs in our test and control groups and when they visited. Users from Query 2 are &amp;#8216;Test&amp;#8217; and users from Query 1 that were not also in Query 2 are &amp;#8216;Control&amp;#8217;. At this point I will move these files into temporary tables on a copy of our Postgres transactional database.&lt;/p&gt;
&lt;pre&gt;create temp table all_ie6_users (guid varchar(500), month_day integer, month varchar(50), count integer); 
\copy all_ie6_users from all_ie6_users.csv with delimiter ',' csv header 
create temp table test_ie6_users (guid varchar(500), month_day integer, month varchar(50), count integer);
\copy test_ie6_users from test_ie6_users.csv with delimiter ',' csv header
&lt;/pre&gt;
&lt;p&gt;These two tables can be combined to produce one recordset, with a label for &amp;#8216;Test&amp;#8217; or &amp;#8216;Control&amp;#8217; and a standard date timestamp.&lt;/p&gt;
&lt;pre&gt;create temp table labeled_ie6_users as
select
  date(all_ie6_users.month || ' ' || all_ie6_users.month_day || ', 2011') as day_timestamp,
  (case when test_ie6_users.guid is null then 'Control' else 'Test' end) as test_group,
  all_ie6_users.guid
from all_ie6_users left join test_ie6_users
  on all_ie6_users.guid = test_ie6_users.guid
  and all_ie6_users.month_day = test_ie6_users.month_day
  and all_ie6_users.month = test_ie6_users.month;

select * from labeled_ie6_users limit 3;
 test_group |    day_timestamp    | guid             
------------+---------------------+------------------
 Test       | 2011-12-01 00:00:00 | 00e020bc-ccc8... 
 Control    | 2011-12-02 00:00:00 | 00ea4710-5be5... 
 Control    | 2011-12-02 00:00:00 | 0123d860-34aa... 
&lt;/pre&gt;
&lt;p&gt;Our ingredients in place, we can now calculate conversion rates per group by cross-referencing the guids and dates with our transaction records and counting unique buyers and visitors per day. These daily counts are then aggregated into a final &amp;#8216;Daily Visitor Conversion Rate&amp;#8217; per test group. &lt;em&gt;Note, a visitor/buyer is only counted once per day even if they visit/purchase multiple times, a bit of precision lost because we lack mobile site page view data.&lt;/em&gt;&lt;/p&gt;
&lt;pre&gt; test_group | buyers | visitors | conversion_rate
------------+--------+----------+-------------------
 Test       | 1154   | 36794    | .03136381
 Control    | 1749   | 47275    | .0369963

Basis Point Difference: (.03136381 - .0369963) = -0.00563249
% Lift, Test over Control: -0.00563249/.0369963 = -0.1522447 = -15.22%
&lt;/pre&gt;
&lt;p&gt;The &amp;#8216;% Lift&amp;#8217; value is what we really care about. It tells us that 15.22% fewer daily visitors from the test group made a purchase relative to the control group.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do we trust that this difference has anything to do with the redirect treatment? How do we know that it is not just random noise?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We can calculate a &amp;#8216;95% confidence interval&amp;#8217; to quantify a range where the &amp;#8216;real&amp;#8217; difference in conversion is likely to be. A confidence interval provides us with a lower and upper bound on where we would expect the difference in conversion rate to fall if we continued the test indefinitely. The more evidence (data) we have, the narrower the confidence interval. The width of the interval is a function of the size of our sample (# visitors) and the magnitude of the absolute difference between our test and control proportions (Lift %). With a larger sample and/or absolute difference, we get a tighter range. For example, a 10% difference between two samples of 10M observations will have a much narrower interval than a 1% difference between two samples of 100 observations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Calculating a 95% Confidence Interval&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.rproject.org"&gt;R is an open source statistical computing language&lt;/a&gt; (technically a dialect of S-Plus) with a robust collection of libraries. Below is some R code for producing confidence limits around the difference of two proportions. We make use of the handy &lt;a href="http://stat.ethz.ch/R-manual/R-patched/library/stats/html/prop.test.html"&gt;prop.test()&lt;/a&gt; (Proportions Test) function for the heavy lifting in our calculation.&lt;/p&gt;
&lt;pre&gt;test_numerator &amp;lt;- 1154
test_denominator &amp;lt;- 36794
ctrl_numerator &amp;lt;- 1749
ctrl_denominator &amp;lt;- 47275
test_rate = test_numerator/test_denominator
ctrl_rate = ctrl_numerator/ctrl_denominator


model &amp;lt;- prop.test(x=c(as.numeric(test_numerator),as.numeric(ctrl_numerator)), n=c(as.numeric(test_denominator),as.numeric(ctrl_denominator)), conf.level = .95, correct=F)

model_coef &amp;lt;- (model$estimate[1] - model$estimate[2]) / model$estimate[2]

prop_results &amp;lt;-
  data.frame(
   test_value = test_rate,
   ctrl_value = ctrl_rate,
   test_lift = model_coef,
   conf_int_low = model$conf.int[1]/model$estimate[2],
   conf_int_hi = model$conf.int[2]/model$estimate[2],
   row.names = NULL
 )

&amp;gt; prop_results
  test_value ctrl_value  test_lift conf_int_low conf_int_hi
1 0.03136381  0.0369963 -0.1522447   -0.2194746 -0.08501468
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Final Results:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;
     Test Visitor Conversion Rate:  3.136% (1154/36794)
  Control Visitor Conversion Rate:  3.7% (1749/47275)
         Test Lift over Control %:  -15.224 %
Test Lift 95% Confidence Interval:  [-21.947% to -8.501%]
&lt;/strong&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lyu2zziFx81r6iuv3.png"/&gt;&lt;/p&gt;
&lt;/pre&gt;
&lt;p&gt;Based on the results, we can be fairly certain that IE6 users redirected to our mobile site buy less often. 8.5% - 22% fewer visitors make a purchase if pointed to the mobile site. In stats lingo, our result is &amp;#8216;significant&amp;#8217; at 95% confidence because 0 is not between -.22 and -.085. In other words, we are 95% confident that the difference between test and control is not positive. If you remember p-values from statistics 101, a 95% confidence interval that does not include 0 is equivalent to a p-value &amp;lt; 0.05. Not only can we say the effect is significantly negative but we can also speak to just how negative the effect is, which is lacking in the typical &lt;a href="http://theoryandscience.icaap.org/content/vol4.1/02_denis.html"&gt;NHST approach&lt;/a&gt; to testing which gives you a yes/no indication of difference rather than a magnitude.&lt;/p&gt;
&lt;p&gt;Keep in mind, there&amp;#8217;s no free lunch and intepretting results can be tricky. A counterintuitive result may leave you with more unanswered questions than you started with and &amp;#8216;significant&amp;#8217; does not necessarily mean &amp;#8216;important&amp;#8217; if the magnitude is trivial. Nonetheless, doing the work of interpreting the data is a worthwhile learning experience and a robust split testing methodology is an invaluable tool for decision making. When working in teams, everyone has an opinion but as the statistician W. Edwards Deming is often quoted, “In God we trust; all others must bring data.”&lt;/p&gt;
&lt;p&gt;Read on for more detail on how the proportions test works with sample code&amp;#8230;&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Now you may be wondering what exactly is going on behind the scenes for the prop.test() function to produce our confidence interval. The calculation is fairly straightforward and can be implemented in virtually any language capable of simple math.&lt;/p&gt;
&lt;p&gt;Components:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Z-score = 1.96 for 95% confidence (if significance is being calculated repeatedly, you will want to correct for multiple comparisons with something like a &lt;a href="http://en.wikipedia.org/wiki/Bonferroni_correction"&gt;Bonferroni correction&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;Test Numerator = #buyers from the test group&lt;/li&gt;
&lt;li&gt;Test Denominator = #visitors from the test group&lt;/li&gt;
&lt;li&gt;Control Numerator = #buyers from the control group&lt;/li&gt;
&lt;li&gt;Control Denominator = #visitors from the control group&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Here is a decomposition of what the prop.test() is doing in R, borrowed from the source code and simplified for our use case:&lt;/p&gt;
&lt;pre&gt;  test_numerator &amp;lt;- 1154
  test_denominator &amp;lt;- 36794
  ctrl_numerator &amp;lt;- 1749
  ctrl_denominator &amp;lt;- 47275
  test_rate = test_numerator/test_denominator
  ctrl_rate = ctrl_numerator/ctrl_denominator

  x=c(as.numeric(test_numerator),as.numeric(ctrl_numerator))
  n=c(as.numeric(test_denominator),as.numeric(ctrl_denominator))
  conf.level = .95
  zscore = qnorm((1 + conf.level)/2)

  estimate &amp;lt;- x/n

  DELTA &amp;lt;- estimate[1L] - estimate[2L]
  WIDTH &amp;lt;- zscore * sqrt(sum(estimate * (1 - estimate)/n)) + 0 * sum(1/n)
  conf.int &amp;lt;- c(max(DELTA - WIDTH, -1), min(DELTA + WIDTH, 1))

  model_coef &amp;lt;- (estimate[1] - estimate[2]) / estimate[2]

  prop_results &amp;lt;-
    data.frame(
      test_value = test_rate,
      ctrl_value = ctrl_rate,
      test_lift = model_coef,
      conf_int_low = conf.int[1]/estimate[2],
      conf_int_hi = conf.int[2]/estimate[2],
      row.names = NULL
    )

&amp;gt; prop_results
  test_value ctrl_value  test_lift conf_int_low conf_int_hi
1 0.03136381  0.0369963 -0.1522447   -0.2194746 -0.08501468
&lt;/pre&gt;
&lt;p&gt;Ported to Java (using Apache Commons Math):&lt;/p&gt;
&lt;pre&gt;import org.apache.commons.math.MathException;
import org.apache.commons.math.distribution.NormalDistribution;
import org.apache.commons.math.distribution.NormalDistributionImpl;
...

long test_numerator = 1154;
long test_denominator = 36794;
long ctrl_numerator = 1749;
long ctrl_denominator = 47275;

double confidence = .95;

double test_rate = new Long(test_numerator).doubleValue()/ new Long(test_denominator).doubleValue();
double test_std = test_rate*(1-test_rate)/ new Long(test_denominator).doubleValue();

double ctrl_rate = new Long(ctrl_numerator).doubleValue()/ new Long(ctrl_denominator).doubleValue();
double ctrl_std = ctrl_rate*(1-ctrl_rate)/ctrl_denominator;

double delta = test_rate - ctrl_rate;
double test_lift = delta/ctrl_rate;
double conf_plus_one = confidence + 1;

try {
	NormalDistribution n = new NormalDistributionImpl();
	double qwidth = n.inverseCumulativeProbability(conf_plus_one/2);
	double width = qwidth*Math.sqrt(ctrl_std+test_std);
	double conf_int_low = Math.max(delta - width,-1)/ctrl_rate;
	double conf_int_hi = Math.min(delta + width,1)/ctrl_rate;

} catch (IllegalArgumentException e) {
	e.printStackTrace();
} catch (MathException e) {
	e.printStackTrace();
}

...
&lt;/pre&gt;
&lt;p&gt;And Postgres SQL (not for the faint of heart!):&lt;/p&gt;
&lt;pre&gt;\set test_numerator 1154::float&lt;!-- br--&gt;
\set test_denominator 36794::float&lt;!-- br--&gt;
\set ctrl_numerator 1749::float&lt;!-- br--&gt;
\set ctrl_denominator 47275::float&lt;!-- br--&gt;
&lt;!-- br--&gt;
select&lt;!-- br--&gt;
  :test_numerator/:test_denominator as test_value,&lt;!-- br--&gt;
  :ctrl_numerator/:ctrl_denominator as ctrl_value,&lt;!-- br--&gt;
  ((:test_numerator/:test_denominator) - (:ctrl_numerator/:ctrl_denominator))/&lt;!-- br--&gt;
  (:ctrl_numerator/:ctrl_denominator) as test_lift,&lt;!-- br--&gt;
  greatest(&lt;!-- br--&gt;
    (:test_numerator/:test_denominator) - (:ctrl_numerator/:ctrl_denominator)&lt;!-- br--&gt;
      - (&lt;!-- br--&gt;
        -- z-score for 95% CI&lt;!-- br--&gt;
        1.959964*sqrt(&lt;!-- br--&gt;
          (&lt;!-- br--&gt;
            (:test_numerator/:test_denominator)&lt;!-- br--&gt;
              *(1-(:test_numerator/:test_denominator))/&lt;!-- br--&gt;
                :test_denominator&lt;!-- br--&gt;
          ) + (&lt;!-- br--&gt;
            (:ctrl_numerator/:ctrl_denominator)&lt;!-- br--&gt;
              *(1-(:ctrl_numerator/:ctrl_denominator))/&lt;!-- br--&gt;
                :ctrl_denominator&lt;!-- br--&gt;
          )&lt;!-- br--&gt;
        )&lt;!-- br--&gt;
      )&lt;!-- br--&gt;
  ,-1)/(:ctrl_numerator/:ctrl_denominator) as conf_int_low_95,&lt;!-- br--&gt;
  least(&lt;!-- br--&gt;
    (:test_numerator/:test_denominator) - (:ctrl_numerator/:ctrl_denominator)&lt;!-- br--&gt;
      + (&lt;!-- br--&gt;
        -- z-score for 95% CI&lt;!-- br--&gt;
        1.959964*sqrt(&lt;!-- br--&gt;
          (&lt;!-- br--&gt;
            (:test_numerator/:test_denominator)&lt;!-- br--&gt;
              *(1-(:test_numerator/:test_denominator))/&lt;!-- br--&gt;
                :test_denominator&lt;!-- br--&gt;
          ) + (&lt;!-- br--&gt;
            (:ctrl_numerator/:ctrl_denominator)&lt;!-- br--&gt;
              *(1-(:ctrl_numerator/:ctrl_denominator))/&lt;!-- br--&gt;
                :ctrl_denominator&lt;!-- br--&gt;
          )&lt;!-- br--&gt;
        )&lt;!-- br--&gt;
      )&lt;!-- br--&gt;
  ,1)/(:ctrl_numerator/:ctrl_denominator) as conf_int_hi_95;
&lt;/pre&gt;</description><link>http://tech.gilt.com/post/17243913074</link><guid>http://tech.gilt.com/post/17243913074</guid><pubDate>Tue, 07 Feb 2012 21:34:00 -0500</pubDate><dc:creator>etotheipi1</dc:creator></item><item><title>The Gilt Tech shirts are here!
If you love bacon...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_ly2gujpJXa1qgexq2o1_400.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;The Gilt Tech shirts are here!&lt;/p&gt;
&lt;p&gt;If you love bacon spearing &lt;a href="https://scribe.twitter.com/#!/markwunsch/status/129632361074802688" target="_blank"&gt;narwhals&lt;/a&gt;, we might have the perfect shirt for you.&lt;/p&gt;
&lt;p&gt;See all &lt;a href="http://twitter.com/travelbugbites" target="_blank"&gt;Lauren&lt;/a&gt;’s awesome designs on the &lt;a href="http://gilttech.spreadshirt.com/" target="_blank"&gt;Gilt Tech Shirt Store&lt;/a&gt;.&lt;/p&gt;</description><link>http://tech.gilt.com/post/16174745684</link><guid>http://tech.gilt.com/post/16174745684</guid><pubDate>Fri, 20 Jan 2012 11:35:30 -0500</pubDate><dc:creator>giltquinn</dc:creator></item><item><title>NoSQL in the Real World</title><description>&lt;div&gt;
&lt;p&gt;For the last couple of years the interwebs have been abuzz with discussion on the relative merits of NoSQL database technology, but how has it performed in real world deployments?&lt;/p&gt;
&lt;p&gt;Please join us for the second of the Gilt technical meetups to hear prominent local technology companies present on their experiences using Redis, Cassandra, MongoDB, CouchDB and Riak in production environments.&lt;/p&gt;
&lt;p&gt;The event takes place on Wednesday, February 8th at 6pm. It&amp;#8217;s free of charge on a first come first served basis. We expect it to sell out so reserve your spot early!&lt;/p&gt;
&lt;p&gt;See details and sign up at &lt;a href="http://nosql-tech-talk.eventbrite.com" target="_blank"&gt;&lt;a href="http://nosql-tech-talk.eventbrite.com"&gt;http://nosql-tech-talk.eventbrite.com&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description><link>http://tech.gilt.com/post/16070348097</link><guid>http://tech.gilt.com/post/16070348097</guid><pubDate>Wed, 18 Jan 2012 14:01:00 -0500</pubDate><dc:creator>giltquinn</dc:creator></item><item><title>Photo</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lxx5s5CcHX1qgexq2o1_400.gif"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://tech.gilt.com/post/16008261843</link><guid>http://tech.gilt.com/post/16008261843</guid><pubDate>Tue, 17 Jan 2012 10:19:55 -0500</pubDate><category>gif</category><dc:creator>mwunsch</dc:creator></item><item><title>My Time at Gilt</title><description>&lt;p&gt;&lt;p class="MsoNormal"&gt;I arrived at 2 Park Ave on the first day of my internship not quite sure what I was getting myself into.  I had just finished my sophomore year at Dartmouth and was looking forward to my first time living in New York City.  My sophomore year was packed with computer science.  I had taken the notorious software design and algorithm design courses, I was doing research with the chair of the Dartmouth computer science department, and now, I thought as I exited the elevator on the fourth floor, surely I was ready for the industry.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;My first experience working with the Distribution team was a two day long architecture plan-a-thon for the new messaging system at Gilt, a system that facilitates seamless communication and synchronization between Gilt admin, distribution centers, and shipping companies.  As the second day drew to a close, my boss, Chris Hazlett, began to explain my role in this slick new messaging system that we were designing.  The start of that conversation went something like this:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Chris:              &amp;#8220;We&amp;#8217;d like you to put together a web app with the spring mvc In scala that makes ajax requests to a web server serving search results from a lucene search engine which you&amp;#8217;ll build and format the response with css and javascript,&amp;#8221;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Me: &lt;span class="Apple-style-span"&gt;                 &lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;#8220;Um, yeah&amp;#8230; What&amp;#8217;s a web server?”&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Everyone:       “Oh boy.”&lt;/p&gt;
&lt;p class="MsoNormal"&gt;I had a lot to learn.  We spent the next half hour going over a lot of the concepts I was missing.  “web servers”, “model-view-controller”, “ajax”, and more.  Often these words would rest on a whole stack of other important concepts that I also did not yet understand. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;            “What’s ajax?”&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;“Oh, well its just the process of making asynchronous requests to a separate web server to dynamically fill in content on a webpage.  Don’t worry, you’ll just use jquery for that.”&lt;/p&gt;
&lt;p class="MsoNormal"&gt;“What’s jquery?” &lt;/p&gt;
&lt;p class="MsoNormal"&gt;“…a javascript library.” &lt;/p&gt;
&lt;p class="MsoNormal"&gt;“ What’s javascript?” &lt;/p&gt;
&lt;p class="MsoNormal"&gt;“…”&lt;/p&gt;
&lt;p class="MsoNormal"&gt;And so on.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;My first few weeks at Gilt, I was very frustrated.  How could my computer science program have left me unprepared for industry?  Granted, my background is focused more on theory than systems.  I do research in algorithm design and until I began to learn languages outside of my classes, my strongest languages were Haskell and C.  But still, regardless of my theoretical focus, I was a computer science student, damn it.  What was I missing? &lt;/p&gt;
&lt;p class="MsoNormal"&gt;It gradually dawned on me that most of my frustrations could be reduced to two missing links in my CS education: object-orientation and the web.  These are two topics that are not strongly emphasized in traditional computer science programs.  I resented the fact that there were no web development topics covered in any classes at Dartmouth, and that instead I had been exposed to what now seemed to be esoteric, dated concepts. The hours spent in gdb sifting through hundreds of lines of C to fix elusive seg faults and memory leaks now seemed futile now.  The mind bending recursion, pointers, the linked lists, the hash tables, the mallocs, reallocs, the frees, ALL FOR WHAT!  After briefly wallowing in my sorrow, my boss reminded me that the whole reason I was here was to learn.  So I started to learn.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;I spent my first weeks at Gilt learning new tools.  My browser was constantly filled with tabs on scala, git, lucene, css, and jquery.  The complexity of the problem assigned to me also became clearer.  I was being asked to build the full stack of a web app.  This meant writing everything from the css and javascript for the frontend, to the complex indexing and searching backend that would process and search new messages in real-time as they flowed through our messaging system.  Okay, fine. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;In reality, once I overcame that initial shock and the task of setting up my development environment (surely a twisted form of tech hazing), the general learning process was much more painless than I had anticipated.  Most of the tools I was using were well documented, and when in doubt I had the most thorough and accessible form of documentation around: people!  I consulted frequently with folks in all different groups, front end, algorithms, distribution, etc.  As I learned the tools, my team was making fantastic headway on the new messaging system.  We moved into a small conference room to make collaboration and communication easier.  Danger Zone by Kenny Loggins became the natural theme of our industrious lair as we moved steadily towards the completion of our first iteration on the project. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;Around this time, about halfway through my internship, the focus of my work in the office shifted from learning to building.  As I finally understood how tools like Lucene, Jquery, and Scala worked and how all the pieces of a full web-app stack fit together, I began to feel more at ease and developed much more efficiently.  I quickly made headway on the new user interface and the actor-based search engine library. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;I also started to meet others outside of the tech team.  Settlers of Catan frequently occupied my Thursdays, volleyball occupied my Mondays, and occasionally there would be, &lt;em&gt;ahem, &lt;/em&gt;modest company gatherings held in abandoned four-story tall synagogues.  The Friday of my second to last week with the company, I was able to present my final project to the rest of the tech team during the 5@4, which seemed well received.  All in all, it was clear that my work was going to have a lasting impact, and would make the distribution team’s job faster and easier.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;            As my internship draws to a close, its now quite clear to me that the frustration I initially felt towards my computer science background was naïve.  A Computer Science degree is not supposed to be a vocational degree.  Computer Science is truly a science, and the point of studying it is to gain exposure to and mastery of the foundations.  Once you know how to &lt;em&gt;think &lt;/em&gt;like a computer scientist, &lt;em&gt;learning &lt;/em&gt;new tools in the field comes quite naturally.  That’s the idea, and thankfully, it works.  &lt;/p&gt;&lt;/p&gt;</description><link>http://tech.gilt.com/post/14132559583</link><guid>http://tech.gilt.com/post/14132559583</guid><pubDate>Mon, 12 Dec 2011 16:56:21 -0500</pubDate></item><item><title>Gilt APIs</title><description>&lt;div&gt;
&lt;p&gt;Over the next few months, Gilt will be exposing its data model via a new suite of public APIs. We&amp;#8217;re excited to make our data available to a broader audience of hackers, and we can&amp;#8217;t wait to see what people do with it.&lt;/p&gt;
&lt;p&gt;Our first API is a set of Atom Pub feeds, which let you see our active and upcoming sales, either en masse, or store by store.&lt;/p&gt;
&lt;p&gt;For example, &lt;a href="https://api.gilt.com/v1/sales/active.atom"&gt;https://api.gilt.com/v1/sales/active.atom&lt;/a&gt; shows all the active sales on gilt.com, or you can hit &lt;a href="https://api.gilt.com/v1/sales/upcoming.atom"&gt;https://api.gilt.com/v1/sales/upcoming.atom&lt;/a&gt; to see what sales are coming soon.&lt;/p&gt;
&lt;p&gt;You can see just the active or upcoming sales for some of our stores as well, for example:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="https://api.gilt.com/v1/sales/men/active.atom"&gt;https://api.gilt.com/v1/sales/men/active.atom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api.gilt.com/v1/sales/women/active.atom"&gt;https://api.gilt.com/v1/sales/women/active.atom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api.gilt.com/v1/sales/kids/active.atom"&gt;https://api.gilt.com/v1/sales/kids/active.atom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api.gilt.com/v1/sales/home/active.atom"&gt;https://api.gilt.com/v1/sales/home/active.atom&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;All our available feeds can be concisely written using a regex:&lt;/p&gt;
&lt;pre&gt;&lt;a href="https://api.gilt.com/v1/sales"&gt;https://api.gilt.com/v1/sales&lt;/a&gt;(/men|/women|/kids|/home)?/(active|upcoming).atom&lt;/pre&gt;
&lt;p&gt;We&amp;#8217;ll be rolling out more details soon; this is our first toe in the water.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;- Gilt API Team&lt;/p&gt;
&lt;/div&gt;</description><link>http://tech.gilt.com/post/13776099274</link><guid>http://tech.gilt.com/post/13776099274</guid><pubDate>Mon, 05 Dec 2011 06:48:00 -0500</pubDate><dc:creator>fabstractum</dc:creator></item><item><title>Movember at GILT.
Here at GILT we care about each other, there...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lvel1jqcLl1qgexq2o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Movember at GILT.&lt;/p&gt;
&lt;p&gt;Here at GILT we care about each other, there for we have, those who can been growing mustaches for the month of Movember. Why? To support the fight against cancer.&lt;/p&gt;
&lt;p&gt;We can all change our faces, by growing mustaches, so let’s change the results of cancer. 1 in 2 men and 1 in 3 women will be diagnosed with cancer in their lifetime, so let’s change the result of this.&lt;/p&gt;
&lt;p&gt;You can make your donation here, &lt;a href="http://mobro.co/gilt"&gt;http://mobro.co/gilt&lt;/a&gt;&lt;/p&gt;</description><link>http://tech.gilt.com/post/13485733122</link><guid>http://tech.gilt.com/post/13485733122</guid><pubDate>Mon, 28 Nov 2011 22:44:07 -0500</pubDate><category>movember</category><dc:creator>spanmess</dc:creator></item><item><title>Gilt Home Launch</title><description>&lt;p&gt;
&lt;object width="480" height="375"&gt;
&lt;param name="flashvars" value="offsite=true&amp;amp;lang=en-us&amp;amp;page_show_url=%2Fphotos%2Fgilttech%2Ftags%2Fgilthomelaunch%2Fshow%2F&amp;amp;page_show_back_url=%2Fphotos%2Fgilttech%2Ftags%2Fgilthomelaunch%2F&amp;amp;user_id=60172469@N07&amp;amp;tags=gilthomelaunch&amp;amp;jump_to=&amp;amp;start_index="&gt;&lt;param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=107931"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=107931" allowfullscreen="true" flashvars="offsite=true&amp;amp;lang=en-us&amp;amp;page_show_url=%2Fphotos%2Fgilttech%2Ftags%2Fgilthomelaunch%2Fshow%2F&amp;amp;page_show_back_url=%2Fphotos%2Fgilttech%2Ftags%2Fgilthomelaunch%2F&amp;amp;user_id=60172469@N07&amp;amp;tags=gilthomelaunch&amp;amp;jump_to=&amp;amp;start_index=" width="480" height="375"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;</description><link>http://tech.gilt.com/post/11906173225</link><guid>http://tech.gilt.com/post/11906173225</guid><pubDate>Tue, 25 Oct 2011 09:02:00 -0400</pubDate><dc:creator>giltquinn</dc:creator></item></channel></rss>

