The Secret to Shutterstock Tech 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 […]

When a Space Is Not Just a Space

During a recent email exchange with our search team, Nova Patch, our resident Unicode expert, offered the following advice for a chunk of Java code used to detect Japanese characters: > Pattern.compile(“^[\p{IsHiragana}\p{IsKatakana}\p{IsHan}\{IsCommon}\s]+$”); We should use one of the following options instead: Pattern.compile(“^[\p{IsHiragana}\p{IsKatakana}\p{IsHan}\{IsCommon}\p{IsWhite_Space}]+$”); Pattern.compile(“(?U)^[\p{IsHiragana}\p{IsKatakana}\p{IsHan}\{IsCommon}\s}]+$”); Pattern.compile(“^[\p{IsHiragana}\p{IsKatakana}\p{IsHan}\{IsCommon}\s]+$”, Pattern.UNICODE_CHARACTER_CLASS); They all do the exact same thing, which is matching […]

Interview with a CodeRage Finalist: Dave K and Projector

Every quarter, the tech team at Shutterstock holds CodeRage, a 24-hour hackathon where we’re encouraged to work on any project that can bring value to the company. This quarter, one of the winning projects was called Projector. It’s a web app that lets you turn your webcam into a projector to show drawings and diagrams […]

Our Guide to Building RESTful Services

A few years ago, we began a fun and challenging journey to break a large, monolithic codebase into a set of isolated, independent REST services.  This effort has already yielded a ton of value in simplifying our codebase and speeding up development. Along the way, we wrote this guide to building services in our ecosystem. […]

Seven Keys to Keeping the Startup Spirit Alive in a Growing Company

One of the most common questions I get asked when talking about the history of Shutterstock is: “Did everything change after the IPO?” And my answer is always the same: “Hmm… Nope!” Shutterstock has always been composed of a bunch of people who love startups. We arranged the company to act and feel like a […]

Test All the (Network) Things

Our engineering team supports many different sites, including the Shutterstock photo site, the Shutterstock footage site, the Shutterstock contributor site, Bigstock, Offset, and Skillfeed. All these sites rely on a core set of REST services for functionality like authentication, payment, and search. Since these core services are so critical, we need to know if they’re […]

Simplifying the build, test, and run cycle with Rock

At Shutterstock we have over 50 sites and services running in production, across thousands of VMs, in a range of languages — mostly Perl, Ruby, Node, and PHP.  Supporting such a variety of languages across projects can be daunting.  Each project has a specific version of a language runtime it targets (e.g., our Accounts Service […]

If It's Not on Prod, It Doesn't Count: The Value of Frequent Releases

At Shutterstock, we like to release code.  A lot.  We do it about 60 times per week. Frequent code releases have become somewhat of a mantra among today’s fast-moving startups, but the value they bring isn’t always articulated well.  In fact, there are a lot of reasons not to push frequently: you could release shoddy or […]

Feersum in the Wild: Perl's Evented Web Server

We use open source software in just about every form it takes: programming languages, operating systems, web servers, databases… even firewalls.  We try to release some of our own software, too.  Open source software has all kinds of advantages, but one of my favorite’s is how easy it is to fix problems if any arise. […]

Our Developer Ethos

Over the years, the Shutterstock development team has grown from two people to almost twenty today.  We’ve tried to maintain a consistent development culture during that time, because it provides a spirit that makes us want to be here and keep getting better at what we do. A while back we decided to see if […]