Every iOS pull request at Thumbtack used to wait 30 to 40 minutes for Continuous Integration (CI) — sometimes over an hour on Fridays. We built Smart Test Selection (STS) to cut that in half. Here’s how. I’m a Senior Software Engineer on the iOS Infrastructure team. We own the CI/CD pipelines, build tooling, and shared frameworks that keep Thumbtack’s…
#mobile
32 posts
21 Apr
31 Mar
How we chose Roborazzi for fast, easy, and high-fidelity screenshot tests of our Android apps, without needing to run them on an emulator. As mentioned in our earlier blog post , screenshot tests are a fundamental part of our testing pyramid at Thumbtack. They validate that our UI code renders correctly. They catch UI regressions as our code evolves. They…
4 Dec 2025
Picture this: you find a charming old board game at a garage sale, bring it home, gather some friends—and snap. The 50-year-old plastic components break instantly. You search the web for help to replace this fun and unique game mechanic but there’s nothing to be found. So naturally, you roll up your sleeves and build your own mobile version. No…
13 Nov 2025
How Nativewind can speed up your React Native Development If you're anything like me, after working on a few web projects with Tailwind, it can feel like a drag to return to stacks that use other styling libraries. Tailwind has become, for myself, and many other developers, a standard styling paradigm. When starting my most recent React Native project, I…
28 Oct 2025
NVIDIA is delivering the telecom industry a major boost in open-source software for building AI-native 5G and 6G networks. NVIDIA Aerial software will soon be released as open source, making it available on a variety of NVIDIA platforms, including on NVIDIA DGX Spark. With open-source software and a powerful and accessible supercomputer to run it […]
20 Sept 2022
You grinded LeetCode, nailed the interview process, and got an internship at an amazing company. Congrats! But now it’s week three of your internship, you have no idea how anything works, and you’ve written one line of code in the past two days. How do you ask for help? Whom do you ask for help?…
28 Mar 2022
In the first post about the Duplo initiative, we discussed the reasons for launching a project to revamp Slack’s mobile codebases, and what we accomplished in Duplo’s initial Stabilization phase. This post will explore modularization, and then there will be a third post to describe how we modernized our codebase and the overall results of…
10 Nov 2021
We use plenty of open source tools at Slack and we’ve benefited immensely from the wider Android, Kotlin, and Gradle communities. We also try to be good citizens by giving back. This includes things like sponsoring the Kotlin Lang Slack, contributions to projects we use like Anvil and Insetter, sharing projects of our own like…
24 Feb 2021
SoundCloud’s iOS codebase faced a radical change a couple of years ago. The team had decided to modularize the codebase into frameworks…
20 Feb 2020
Planet Earth vs. Jupiter. There is the same order of magnitude between the ratio of these two planets and the amount of code that defined…
30 Jan 2020
A large portion of an Android app’s build time can consist of Dagger annotation processing, and most developers agree that productivity is…
8 Nov 2019
Last week’s update to the SoundCloud iOS app includes support for Dark Mode. This took several months of work and collaboration between…
1 Oct 2019
This is part two in a series about solving Gradle remote build cache misses. Solving build cache misses is important to both avoid work that…
30 Aug 2019
Until recently, one of the top technical risks facing SoundCloud’s Android team was increasing build times. Our engineering leadership was well aware of the problem, and it was highlighted in our company’s quarterly goals and objectives as modularization. Faster build times means more productive developers. More productive developers are happier and can iterate on products more quickly. Modularization is key…
27 Jun 2019
Introducing the initial release of Firefox Preview (GitHub), an entire browser built from the ground up with GeckoView and Mozilla Android Components. Firefox Preview is our platform for building, testing, and delivering unique features. Though still an early preview, this is our first end-user product built completely with these new technologies. Plus, we share an update on where GeckoView is…
21 Jun 2019
Media and playback are at the core of SoundCloud’s experience. For that reason, we have established and grown an engineering team that is specialized in providing the best possible streaming experience to our users across multiple platforms. To do this, we combine the industry’s best-fitting solutions with our own custom technologies, libraries, and tools. In this article, let’s dive into…
3 Apr 2019
Once every two weeks, we prepare new versions of our mobile apps to be published to the app stores. Being confident about releasing software at that scale — with as many features and code contributions as we have and while targeting a wide range of devices like we do at SoundCloud — is no easy task. So, over the last…
4 May 2018
Testing mobile applications is not always an easy feat. In addition to defining what to test and determining how to write those tests, actually running tests can also be problematic — in particular, UI test suites running on real mobile devices or emulators sometimes run for an extensive amount of time.
26 Jan 2018
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.
27 Jul 2017
Clever Instant Login makes it easy for students to log in to their learning applications, saving valuable instructional time. By using the widely-deployed OAuth 2 protocol, our team tries to save valuable development time and make it easy for our app customers to create integrations. OAuth 2 has been a fairly smooth road, but we […] The post Clever Instant…
28 Jun 2017
A method for signing in to a device that doesn’t have a keyboard When we were developing our SoundCloud app for Xbox One, something became very obvious during usability testing: signing in with a game controller really sucks. Entering text requires navigating a virtual keyboard to individual letters, numbers, and characters one at a time – such a nightmare! Plus,…
3 Jan 2017
This Bazaarvoice blog entry is co-authored by Tanvir Pathan as part of a Bazaarvoice internship project on the Bazaarvoice Mobile Team. Automated testing of native mobile applications has long been a pain point in the world of mobile app development. If you are creating and distributing apps or open source SDKs across two or more major platforms […]
3 Aug 2016
About a year ago we faced an interesting question at SoundCloud: can we build SoundCloud Pulse — our app for creators — with React Native? Is a five-month-old technology mature enough to become part of SoundCloud’s tech stack?
21 Mar 2016
Last week, we open-sourced LightCycle, an Android library that helps break logic out of and classes into small, self-contained components called LightCycles. Components that typically need to be aware of and lifecycle events include presenters, UI tracking code, input processors and more. We’ve been using LightCycle extensively in the SoundCloud Music & Audio and SoundCloud Pulse apps over the last…
6 Oct 2015
Congratulations, you have a lot of code!"Congratulations, you have a lot of code!" Remedying Android’s method limit - Part 2
SoundcloudIn part one we described how running into Android’s method limit may leave you unable to build, and offered strategies you can employ to make your app fit into a single DEX file. In this part we share an alternative option: using multiple DEX files.
21 Sept 2015
Congratulations, you have a lot of code!"Congratulations, you have a lot of code!" Remedying Android’s method limit - Part 1
SoundcloudAt SoundCloud we have been building for the Android platform since 2010. Much has changed since then: the team has grown, the list of features has grown, and our audience has grown. Today, eight engineers are working full time on the official SoundCloud app, across various areas, with contributions pouring in from other parts of the organization. Due to the…
15 Sept 2014
When we rebuilt our iOS app, the player was the core focus. The interactive waveform was at the center of the design. It was important both…
7 Jul 2014
Recently, SoundCloud launched the new iOS application which was a complete rewrite of the existing iOS application. The Mobile engineering…
8 Mar 2014
I’m excited to announce that SoundCloud is sponsoring the development of CocoaPods through a Travis Foundation grant. CocoaPods is an open…
12 Aug 2013
A common problem in Android development is that you need to jump off the main UI thread to retrieve data from an IO-based source. At…
22 Aug 2011
The Problem The mobile version of SoundCloud is a consumer of our own API dog food. That decision was made with the intention to deploy a…
2 Aug 2011
Until early this year, there was a gap. A gap between the desktop-targeted main SoundCloud site, what we call the ‘mothership’, and the…