AssistedInject is dead, long live AssistedInject!

Jake Wharton

After ~5 years of existing and ~4 years as an open source project, our AssistedInject library has been deleted. Mourn not, however, for the same functionality is now available directly...

Software Security at Rocketship Pace

Alex Rosenzweig

A deep dive into Afterpay's journey developing a modern code scanning program.

protoc-gen-grpc-gateway-ts - Clean, Idiomatic TypeScript for grpc-gateway

Yun Lai

protoc-gen-grpc-gateway-ts is a TypeScript client generator for the grpc-gateway project. It generates idiomatic TypeScript clients that connect the web frontend and golang gRPC backend fronted by grpc-gateway.

Rolling Out Org-Wide Changes

Saman Alvi

Cash App has grown into a complex engineering organization. Our team of hundreds of engineers deploys dozens of services to AWS multiple times a day. Our teams span several time...

Investigating Crashes with Aardvark

Nick Entin

Crashes can be one of the most straightforward types of issues to debug. There are many different categories of crashes that can happen on iOS - everything from bad memory...

Debugging UI Issues with AardvarkReveal

Nick Entin

Reports of UI issues can be difficult to debug when the issue is not easily reproducible. Bug reports created through Aardvark include a screenshot of the app at the time...

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...

Starting my Career as a Woman in Engineering

Maggie Luo

Graduating from college, moving out, and starting my first job in the middle of a pandemic was challenging, but learning from my mistakes and maintaining a growth mindset pushed me...

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.

Building a Search Engine for Afterpay’s Shop Directory

Jose Picado Qiao Wang and Yi Li

We discuss some of the initial issues with the search capabilities in our Shop Directory, our technical approach to addressing them, lessons learned, and next steps.

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.

Building a Data Science Platform in 10 days

Letian Wang

We discuss our journey with building a JupyterHub based Data Science platform in under two weeks and what we learned about the value of fast, iterative, consumer focused technology initiatives...

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...