Normal screen shot 2014 03 31 at 3.09.49 pm

Shutterstock

New York, NY bits.shutterstock.com/
   
 
   
 

About Shutterstock Engineering

Shutterstock is an engineering-driven business that embodies developer empowerment. Our engineers work on creative, cross-functional teams that drive product development forward from the ground up. We focus on fast, iterative development and deploy code more than 150x/month. We encourage our engineers to build their own tools, and also promote knowledge sharing and camaraderie across the organization via extensive internal engineering talks, events, team outings and hackathons.

Small chrisbecker Chris Becker on

Stop Using One Language

In any technology company one of the fundamental aspects of its identity is the technology stack, and programming language that it’s built on. This is what defines types of tools that are fair game, and more importantly, defines the types of engineers who are hired and capable of succeeding there.

Small chrisbecker Chris Becker on

How We Monitor High Scale Search at a Glance

One of our key missions on the search team at Shutterstock is to constantly improve the reliability and speed of our search system.  To do this well, we need to be able to measure many aspects of our system’s health.  In this post we’ll go into some of the key metrics that we use at Shutterstock to measure the overall health of our search system.

More...

Small eliot Eliot Brenner on

Beyond Tag Co-occurence: Machine Learning Infrastructure for Automatic Keyword Recommendations

For most large-scale image retrieval systems, performance depends upon accurate meta-data. While content-based image retrieval has progressed in recent years, typically image contributors must provide appropriate keywords or tags that describe the image. Tagging, however, is a difficult and time-consuming task, especially for non-native English speaking contributors.

Eliot Brenner (Data Scientist, Shutterstock) talks about automatic tag recommendations and the machine learning infrastructure behind it developed by Shutterstock’s Search and Algorithm Teams.

Tag co-occurrence forms the basis of the recommendation algorithm. Co-occurrence is also the basis for some previous systems of tag recommendation deployed in the context of popular photo sharing services such as Flickr. In the context of online stock photography, tag recommendation has several aspects which are different from the context of photo sharing sites. In online stock photography, contributors are highly motivated to provide high quality tags because they make images easier to find and consequently earn higher contributor revenue. In building the system, we explored several different recommendation strategies and found that significant improvements are possible as compared to a recommender that only uses tag co-occurrence.

Small 566e5c3c56d3e38a67788f56c89278e9 Dan McCormick on

5 Lessons We Learned While Scaling and Restructuring Our Engineering Teams

Being fast and nimble is important to us at Shutterstock, and one way we accomplish this is by working in small teams. This approach has yielded tremendous benefits over the years, but it comes with its own challenges: Shutterstock now has over 300 people and dozens of teams. How do we coordinate everything with so many different groups?

Here’s a bit of information about how our approach to small teams has evolved, and how we continue to change it as we grow.

Small allan Allan Feid on

Stop Buying Load Balancers and Start Controlling Your Traffic Flow with Software

This post originally appeared on the Shutterstock bits blog.

When it comes to traditional load balancers, you can either splurge on expensive hardware or go the software route. Hardware load balancers typically have poor/outdated API designs and are, at least in my experience, slow. You can find a few software load balancing products with decent APIs, but trying to use free alternatives like HAproxy leaves you with bolt on software that generates the configuration file for you. Even then, if you need high throughput you have to rely on vertical scaling of your load balancer or round robin DNS to distribute horizontally.

Small 566e5c3c56d3e38a67788f56c89278e9 Dan McCormick on

The Practical Implications Whitespace Properties in Unicode

During a recent email exchange with our search team, Nick Patch, our resident Unicode expert, offered the following advice for a chunk of Java code used to detect Japanese characters:

Unicode reply

Nick’s insightful reply left me full of questions, so I sat down with him to get some more details.

Small t2f30ahpjvm9fzzmr4eq Kris Arnold on

Engineering Leadership Talk: Managing Extroverted and Introverted Developers

As an engineer, I have always been curious about why people, and especially other engineers, behave the way they do. How do engineers get “in the zone” when coding and why do they like it so much? Why are so many engineers (including myself) so averse to holding meetings?

This curiosity led me to research two topics, Introversion/Extroversion and Flow. I presented them at an internal tech talk at Shutterstock called “The Psychology of Engineers.” The talk generated enough interest and discussion that I recorded a version to share it more widely.

19:04

Small whaples Thomas Whaples on

How We Built an Error Validation Framework for Our API

Shutterstock developers pay a lot of attention to the user experience of our website. We have a fleet of User Experience experts who help make sure the error states our web application shows to customers are useful and actionable.

But when we’re building backend APIs instead of HTML forms, that experience doesn’t translate. What’s the equivalent of this, in an API?

validation


The Shutterstock Contributor Team has been building our next-generation content-review system, so that we can scale our image-review operation. We’re building it in a service-oriented fashion, in Ruby, with DataMapper as an ORM.

Small chrisbecker Chris Becker on

How We Built a Cutting-Edge Color Search App

Engineers love working at Shutterstock because they get to build cool things. We aim to solve problems that matter to customers, and we’re constantly trying out new ideas through rapid prototyping.  One of the great things about our culture at Shutterstock is that an idea can come from anywhere, from the newest engineer to the CEO — we’ll try them out equally and see what resonates with users. This is how one of those ideas, our Spectrum color search, came to life.

Small nathan Nathan Milford on

Best DevOps Practices: Shutterstock

Hi all, we’ve got another awesome DevOps best practices interview, this time it’s with the folks at Shutterstock. Lead architect Nathan Milford & Cloud Solutions architect Sebastian Weigand will give you their insight into the best practices that they employ.

"DevOps" is a term loosely thrown around these days. What does it mean to you?

DevOps is a cultural movement, not a job title. Just like hip-hop is a cultural movement. You can’t be a DevOp, just like you can’t be a hip-hop (paraphrased from Adam Jacobs). It’s an attempt to break down the traditional silos between different disciplines within operations and engineering teams, to foster better communication and collaboration. It’s not tools focused, but uses tooling to facilitate the cultural goals espoused above. Using Chef, Jenkins, or writing code and racking servers does not make a DevOps culture.

Join Us