Catching up on CatchUp: Introduction

TL;DR I wrote an app called CatchUp for personal use and now I’m releasing/open sourcing it. Learned a ton along the way, gonna blog about the things I’ve learned because I think a lot of it is pretty neat. Kotlin, Dagger, RxJava, AutoDispose, Conductor, GraphQL, AutoValue, custom animations, and more inside.


CatchUp’s icon, designed by Michael Cook

Side projects take on many faces to developers — fun, education, passion, frustration, distractions, escapism, discovery, and more. They are a humbling adventure into the world that lies outside our day jobs. I’ve had a few side projects over the years ranging from scheduled scripts to reddit bots and they’ve each proven valuable learning experiences. In May 2016, I embarked on a new project: CatchUp.

The goal of CatchUp was simple. I was living in Palo Alto at the time and commuting to the city every day for work, which left me with a lot of time on the train. At the end of the day, I wanted to wind down and catch up on the news and posts of the day. There’s tons of aggregators/readers out there, but I wanted to make something unique and just for me. I didn’t want an RSS reader, nor something that would burden me with keeping meticulous track of all my “unreads” or any of that silliness. At the end of the day, there were several services I like to read (reddit, hacker news, etc). Each has some form of dedicated app, but I didn’t want to deep dive into each just to get a digest. I’d seen some apps that took steps in this direction, but I thought it was a good opportunity to try to do it right and build something for myself. So, without further ado, introducing CatchUp:

CatchUp in action. Deep-linking, multi-service, night mode, and more.
CatchUp is effectively a multi-service “front page” app, displaying the front page of a number of different services in a per-service-themed, consistent, at-a-glance UI. It would be explicitly un-comprehensive by design, and just deeplink into one of those dedicated apps accordingly if the user wants to deep dive.

This post is the first in what I hope will be an enjoyable and interesting series of blog posts detailing some of the different fun learnings and challenges I experienced along the way in CatchUp. Some of it will be lightweight (think “neat Dagger tricks”), others will be deep dives (CatchUp’s architecture is actually a Dagger-powered plugin system 🤔). Some will be just simply “this is how _____ works in CatchUp” because the implementation alone serves as a good tutorial or introduction to that particular area. I’ll publish the first one in a few days.

Show me the code!

The code can be found here on GitHub.

You can download it on the Play Store here via the open alpha.


Thanks to Ty and Mike for proofreading this. Medium linked Ty a second time below, I don’t know how to change it ¯\_(ツ)_/¯