After spending more than a year, I’m happy to announce that my Reddit app — Dank is finally ready for the world to see. You’re going to love it. It’s a fresh experience for Reddit on Android. Scroll to the bottom for the download link. The first thing you’re going to notice is that Dank […]
When Uncommon was brought in to refactor a big legacy app last year, we found ourselves in a strange situation. Our client was maintaining a common library for handling networking — HTTP, FCM, MQTT — across all apps under their brand. This library (let’s call it SadLibrary) had an API that was badly designed and dated, but not using […]
Instagram recently launched Type Mode, a new way to post creative, dynamic text styles and backgrounds to Stories. Type Mode was an interesting challenge for us because it is the first time we were going to create a way for people to post Stories without photo or video components — and we wanted to make […]
One of my favorite parts of RxJava is that no matter how complex a state management usecase is, there’s always an operator for that™. During a recent code cleanup, I found a very cool usecase of RxJava’s scan() and compose() operators for simplifying the usually verbose DiffUtil implementation. I had been delaying writing this post […]
Do you know what’s common between the blinking cursor, hyperlinks and text highlighting in TextViews? They’re all implemented using spans. Spans are tiny objects that Android uses heavily across the framework. If you’ve worked with text styling such as bold or italics, then you’re already familiar with the basic usages of spans. But they are […]
Instagram prides itself on having a lean app. But as the number of engineers and features grows, so do the challenges to size. We start to face issues like: increase in application size downloaded from an app store increase in cold start time, and more generally, increased time to interaction with different surfaces inside the […]
The Instagram community is bigger and more diverse than ever before. 800m people now visit every month, 80% of whom are outside of the United States. As the community grows, it becomes more and more important that our app can withstand diverse network conditions, a growing variety of devices, and non-traditional usage patterns. The client […]
While working on a feature for downloading images in my app, I ran into a strange issue where progress notifications were never reaching 100%. Knowing that the framework is usually not wrong, I started suspecting my own skills (as usual). To make matters worse, nobody was able to reproduce the issue in a sample project I shared with other […]
While going through the codebase of a former client, I found that I was using four different ways for showing HTML on Android. This made me realize that I didn’t really know what the correct way of showing them is and I’ve always hammered my way using trial & error until the HTML tags have showed up. Embarrassed, I decided to explore how […]
I’ve been working on implementing bundled notifications in my app, which is by far one of my favourite features about Android 7.0 Nougat. While the official guide is good enough for understanding how they work, I’ve constantly found myself running into behaviours that were not easy to find in the documentation. This post is an attempt to summarise […]