SoundCloud for Developers

Discover, connect and build

Backstage Blog RSS

  • January 26th, 2018 iOS Testing Mobile Automatic Stubbing of Network Requests to Deflakify Automation Testing By Donal O'Brien

    Apple introduced automated UI testing in Xcode 7. This was a great addition for developers because this native support promised, among other things, an improvement in the flakiness notoriously associated with automation tests. As many of us developers have experienced, tests can sometimes fail even when there has been no modification to the test or underlying feature code.

    Flakiness can often come from external factors. One such source of flakiness is live data, e.g. data loaded from a web service API. Data from the web service often drives the state of the UI. A test might assume the UI is in a certain state, e.g. the like button shows as “liked” or that a playlist has 10 songs. But when the data from the web service changes, the test fails.

    Such occurrences are relatively common, and there are many other scenarios, such as network connectivity issues, in which these false negatives can occur. In these situations, the functionality of the app is not broken; it’s just that our assumptions about the data are no longer valid. What’s more, debugging the cause of these failures can be a time-consuming affair.

    In this blog post, I’ll discuss how we at SoundCloud implemented a simple system for automatically recording and replaying the network responses that occur during the course of an Xcode UI automation test in order to remove any flakiness that may be introduced from the existence of live data coming from a web service.

    Read more...

  • January 24th, 2018 Search Data Science Machine Learning Analytics Data PageRank in Spark By Josh Devins

    SoundCloud is a platform consisting of hundreds of millions of tracks, people, albums, and playlists. Navigating this vast collection of music and personalities poses a large challenge, particularly when it comes to music with so many covers, remixes and original works all in one place. For search on SoundCloud, one of the ways we approach this problem is by using the PageRank algorithm, with our version affectionately known as DiscoRank (Get it? Disco as in discovery and Saturday Night Fever?!). The job of PageRank is to help rank search results from queries such as, finding all Go+ tracks called "royals". At first glance, this task might seem trivial. The first result should indeed be Lorde's original Royals, but of all the covers and remixes, which should we show at the top and in which order? What about other tracks in our catalog that have the word "royals" in them? Where should they be in our search results list?

    Read more...

  • January 18th, 2018 Learning Diversity Recruiting Insights from SoundCloud’s DeveloperBridge trainee programme By Tiffany Conroy

    Back in 2016, the SoundCloud People Team and engineering management collaborated on an effort to bring more junior engineers into the company. The result was “DeveloperBridge”, a paid junior engineering programme that would run for 12 months, based out of our Berlin headquarters.

    Trainees would gain hands-on experience under the guidance of our engineers. By working on a variety of tasks in selected teams, they would experience different types of engineering tasks and technologies to develop a feel for the areas they enjoy working in most. The aim of the programme was to develop and hire the participants afterwards into full time roles at SoundCloud while improving diversity in Engineering at the same time.

    Now with their traineeship year coming to a close, we’ve asked the participants to reflect on the experience, what they learned, how they feel about their accomplishments, and where they see themselves headed next in their careers as software engineers.

    Read more...

  • December 7th, 2017 Architecture Microservices How SoundCloud uses HAProxy with Kubernetes for user-facing traffic By Matthias Rampke

    A little under two years ago, SoundCloud began the journey of replacing our home-grown deployment platform, Bazooka, with Kubernetes. Kubernetes automates deployment, scaling, and management of containerized applications.

    Read more...

  • October 16th, 2017 iOS Architecture Leveraging frameworks to speed up our development on iOS - Part 1 By Pedro Piñera

    Growth in code bases come with exciting scalability challenges. As the size of our iOS codebase and team at SoundCloud grew, we faced challenges: long compile times and conflicts. Our productivity started to suffer as a result. We took inspiration from the work done in the backend (Building Products at SoundCloud) and applied it to mobile development. The main goal was to get back to a state where development is fun, fast, and would scale as the number of contributors grew. We modularized our iOS project by splitting it up into modules with well-defined responsibilities and public interfaces that interconnect them.

    Read more...