Taking Bug Reporting Further

Nick Entin

This week we released a new major update for Aardvark, our open source bug reporting framework for iOS. Aardvark makes it dead simple to create actionable bug reports from right...

Reverting Commits in Client Apps

Nick Entin

When faced with a critical bug in a client app that’s already shipped to customers, one of the key first steps in the debugging process is finding the earliest commit...

Crouching Theme, Hidden DI

Bill Phillips

Have you ever thought of your theme as a dependency? This post explores different ways to provide a theme in your Android app.

Meet Barber💈: the best way to manage your Mustache

Andrew Alexander

Cash App clients and services render thousands of English Mustache templates to send millions of personalized notifications, emails, text messages, and in-app UI daily to our customers.

Wire's Proto3 support is Out!

Benoît Quenaudon

Starting in 3.3.0 Wire supports Proto3. What changes with Proto3? How does Wire make it comfortable to use? Let’s see.

What I Like About Views

Bill Phillips

Views are a big deal, fam. Here are some architectural guidelines we like to follow that help give Views the development focus they deserve.

Announcing Tempest 1.0

Zhixuan Lai

At Cash we love AWS DynamoDB. It has a nice API, is highly available, and is able to scale with our growing business.

Attacking Build Times With Sample Apps

Bill Phillips

With long build times come long iteration cycles. Sample apps can help with that.

Wire Support For Swift, Part 1

Eric Firestone and Jake Wharton

We’re excited to announce support for Swift in Wire. Wire already supports compiling your protocol buffer files into Java and Kotlin, and today Swift joins that family.

Request Affinity with Istio

Alec Holmes

Behind the scenes, much of Cash App consists of a set of distributed services running on a Kubernetes cluster in AWS. Our engineering team started moving services to Kubernetes over...

A Multithreading Saga, Part 3

Nick Entin

With our new JavaScript rendering system in place, things were looking better. We weren’t done though. While reports of the app freezing seemed to have gone away, we were still...

A Multithreading Saga, Part 2

Nick Entin

Solving our problems with thread proliferation bought us some headroom to unblock the current release, so things began to return to normal. We hadn’t gotten to the root of our...

A Multithreading Saga, Part 1

Nick Entin

As a product scales, new problems become evident. Some of these problems can be addressed early on, but it’s often necessary to make trade-offs between avoiding future problems and moving...

A Great Way to do Presenters

Benoît Quenaudon

The Cash App Android app uses presenters because they’re easy to write, easy to review, and result in boring code that just works. In this post I’ll show how we...

Making iOS Accessibility Testing Easy

Nick Entin

Unit tests are great for testing business logic, snapshot tests make sure your views look correct, and UI tests help to ensure everything fits together properly. How do you test...

App-Layer Encryption in AWS

Dino Dai Zovi Yoav Amit and Yan Ivnitskiy

Encrypting application data has traditionally been complicated. It runs the risks of being done incorrectly, not being more secure, negatively impacting performance or availability, and even losing access to data....

Brief History of Logquacious

Gerald Kaszuba

Logquacious (lq) is an open source, fast, and simple log viewer written at Cash App. It supports reading structured log entries directly from an Elasticsearch log store. It is available...

Improving Animations on iOS with Stagehand

Nick Entin

Adding animations to your app turns a fairly routine interaction into a more enjoyable, exciting experience. These animations make a straightforward design into something that feels polished and professional.

Wire 3: gRPC meets Kotlin

Benoît Quenaudon

Wire is our open source implementation of Protocol Buffers. Today’s release supports Kotlin, gRPC, and Gradle.

Tuning Elasticsearch Index Settings for Logs

Yunchi Luo

Indexing logs in Elasticsearch is resource intensive, and a poorly configured log configuration can make for brutally slow log queries. There are surprisingly few guides on how to address the...