Engineering Blog

Monitoring Cassandra at Scale

At Yelp we leverage Cassandra to fulfill a diverse workload that seems to combine every consistency and availability tradeoff imaginable. It is a fantastically versatile datastore, and a great complement for our developers to our MySQL and Elasticsearch offerings. However, our infrastructure is not done until it ships and is monitored. When we started deploying Cassandra we immediately started looking for ways to properly monitor the datastore so that we could alert developers and operators of issues with their clusters before cluster issues became site issues. Distributed datastores like Cassandra are built to deal with failure, but our monitoring solution...

Continue reading

Autoscaling PaaSTA Services

If you haven’t heard about PaaSTA before, feel free to check out the blog post introducing it. One step in creating a service is to decide how many compute resources it needs. From the inception of PaaSTA, changing a service’s resource allocation has required manually editing and pushing new configs, and service authors had to pore over graphs and alerts to determine the proper resource allocation for a service whenever load requirements changed. This changed earlier this month when autoscaling was introduced into PaaSTA. Why did we do this? Autoscaling was introduced into PaaSTA to make sure services are allocated...

Continue reading

Yelpicons: A Cross-Platform Icon Build System

It’s 10:00 AM and a designer just created a new icon for Yelp. At 10:05 AM iOS has received a newly versioned CocoaPod containing 1x, 2x, and 3x PNGs, Android has received an AAR Library containing mdpi, hdpi, xhdpi, and xxhdpi WebPs, and the Web CDN has a new SVG and PNG spritesheet, code to manage the PNG fallback for our IE8 users, and a new Python package to access the icon in a template. The workflow wasn’t always this streamlined and was only made possible through a cross-team collaboration with Android, iOS, Web, and Design at Yelp. With a...

Continue reading

Yelp Android App Went On A Diet

Whether it’s battery usage, network, or time, we care a lot about our users’ resources. A big app creates a barrier of entry for users on metered or low speed networks. Last Thanksgiving, our automated alerts let us know that our app size was getting larger than we’d like, and making it harder for low resource users to download our app. Here we saw an upward trend in app size as we added more features and built a more compelling app. In order to tackle app size, we first had to understand where that size was coming from. Breakdown of...

Continue reading

Yelp Restaurant Photo Classification, Winner's Interview: 2nd Place, Thuyen Ngo

The Yelp Restaurant Photo Classification competition challenged Kagglers to assign attribute labels to restaurants based on a collection of user-submitted photos. At the final tally, 355 players tackled this unique machine learning problem. Last week, we published Dmitrii Tsybulevskii’s 1st place solution here; Thuyen Ngo finished in 2nd place, with an F1 score of 0.83168, and describes his strategy in this week’s interview. The Basics What was your background prior to entering this challenge? I am a PhD student in Electrical and Computer Engineering at UC Santa Barbara. I am doing research in human vision and computer vision. In a...

Continue reading

Announcing the Winners of Yelp's Online Hackathon

The results are in for the inaugural Yelp online hackathon which was held a few months ago (Jan. 25-Mar. 25). We were looking for cool, innovative uses of the Yelp API and received 60 submissions with 759 developers signed up to participate from around the world. Winners were chosen based on originality, user experience and effective use of the Yelp API. Our esteemed panel of judges poured over the entries and chose the following winners: 1st Place - Grand Prize Winner Yelpify by Raj Nagasubramanian Yelpify is a Chrome extension that adds Yelp ratings to Google search results, OpenTable, GrubHub...

Continue reading

Yelp Restaurant Photo Classification, Winner's Interview: 1st Place, Dmitrii Tsybulevskii

A few months ago, Yelp partnered with Kaggle to run an image classification competition, which ran from December 2015 to April 2016. 355 Kagglers accepted Yelp’s challenge to predict restaurant attributes using nothing but user-submitted photos. We’d like to thank all the participants who made this an exciting competition! Dmitrii Tsybulevskii took the cake by finishing in 1st place with his winning solution. In this blog post, Dmitrii dishes on the details of his approach including how he tackled the multi-label and multi-instance aspects of this problem which made this problem a unique challenge. This interview blog post is also...

Continue reading

Dropdown Like It's Hot

As our number of mobile web visitors continues to increase, we want to make sure that the user experience is great on small screens. This quarter, we took some time to assess our reusable UI components and look for ways to improve their behavior across devices. We found a lot of room for improvement in our dropdown component - it looked great on desktop, but it was hard (i.e., in some cases it’d go offscreen or touch/tap being not very smooth) to use on mobile devices. Story We built our dropdown component to be generic enough to handle any use...

Continue reading