Engineering Blog

Fullerite: A New Mineral To Collect Metrics

Collecting System Metrics at Scale Monitoring system metrics (e.g. CPU utilization, loadavg, memory) is not a new problem. It’s been necessary for a long time and there are a few that already exist, most notably diamond and collectd. At Yelp, we run thousands of different machines hosted all over the world. The simple volume of metrics we monitor quickly starts to complicate how we collect them. After trying out a few different solutions (and breaking many things) we decided to write our own: fullerite. A History of System Metrics Collection We started using diamond to report our system metrics. Everything...

Continue reading

How We Use Deep Learning to Classify Business Photos at Yelp

Yelp hosts tens of millions of photos uploaded by Yelpers from all around the world. The wide variety of these photos provides a rich window into local businesses, a window we’re only just peeking through today. One way we’re trying to open that window is by developing a photo understanding system which allows us to create semantic data about individual photographs. The data generated by the system has been powering our recent launch of tabbed photo browsing as well as our first attempts at content-based photo diversification. Building a Photo Classifier One can imagine a variety of ways to tackle...

Continue reading

ElastAlert: Alerting At Scale With Elasticsearch, Part 1

Elasticsearch at Yelp Yelp’s web servers log data from the millions of sessions that our users initiate with Yelp every day. Our engineering teams can learn a lot from this data and use it to help monitor many critical systems. If you know what you’re looking for, archiving log files and retrieving them manually might be sufficient, but this process is tedious. As your infrastructure scales, so does the volume of log files, and the need for a log management system becomes apparent. Having already used it very successfully for other purposes, we decided to use Elasticsearch for indexing our...

Continue reading

Start Fall With a Little Yelp

In two weeks we’ll be attending Grace Hopper for the third time in a row and we’re really excited to support Susanne L., Wei W., and Jen W. as they present about “Crucial Conversations in Your Career.” Our team learned a lot last year and we look forward to sharing more lessons with you again after we get back! If you’re attending the conference, be sure to swing by our booth (121). You might be a few of the lucky attendees to score a ticket to our after party! We’re also happy to announce that later this month, we’ll be...

Continue reading

Intern Project: Building the Yelp iOS Widget

We recently launched Yelp’s new Today Widget, so now you can search Yelp with a single tap from anywhere on your iPhone or iPad (iOS 8+). Today Widgets live in Notification Center, which can be accessed anywhere on the device by swiping on the top of the screen. You can search directly for a category near your current location, or open up the app directly to search input. App Extensions Today Widgets are a type of app extension (which include action, share, and photo editing extensions, custom keyboards, and document pickers). An app extension is a separate binary from the...

Continue reading

Designing the Android Navigation Drawer

Since the dawn of time – or a very long time at least – the Yelp Android app has relied on a springboard design pattern for its navigation. This once-popular pattern served us well through the years as it allowed users quick access to Yelp’s most-used features. However, the design came with a series of trade-offs. The Yelp Android app back in 2009 and 2011 Navigating Yelp is inherently a free-form action. Users may search for a business, look through some of that business’ reviews, then check Talk for the latest news in their community, before finally liking some of...

Continue reading

Automatically Categorizing Yelp Businesses

At Yelp, we use categories for businesses to help determine search results, improve search relevance, inform our users of what a business does, as well as help our sales team target groups of businesses. For example, Starbucks is categorized as Coffee & Tea, and Walgreens stores are often categorized as both Drugstores and Convenience Stores.   A number of our businesses don’t have categories, but they do hold other clues which can be used to infer categories. They tend to be businesses with relatively few reviews and photos, since more popular businesses would have eventually been assigned a category by...

Continue reading

Docker in the Real World at Yelp

Thousands of businesses use Yelp SeatMe every day to manage their seating and reservations. Having a stable system is incredibly important to us, given how critical this system is to many businesses. This blog post is going to dive into how we use Docker to reliably develop and deploy Yelp SeatMe. Docker is an incredibly powerful productivity booster and has simplified our deployment pipeline. Hopefully, from this post, you’ll understand how to do it for your team. First, we’ll give a little bit of background on what Yelp SeatMe is, how it’s developed, and deployed. What is Yelp SeatMe? Restaurants...

Continue reading