Developer Spotlight: Andrew Chang, Developer of ‘Notifications for Reddit’
Andrew Chang (aka /u/RedBanHammer) has been developing for half a decade in a variety of programing languages and has made some pretty interesting applications. These include an awesome minimalist task and to-do app called Valis along with some interesting games and apps for iOS and Mac OS X. Additionally, His app DashNotes was featured by Apple as best new widget when it was released. It’s definitely worth a few minutes to check out his projects on his site to keep up with what he’s up to.
Notifications for Reddit was born out of necessity due to Alien Blue, which is the default Reddit client due to it being bought out. Along the way though, it has also caused a lot of battery drain issues when attempting to fetch messages from Reddit in a horribly round-about way. It uses background app refresh to constantly babysit the fetch protocol to check for new messages at a user configured interval in order to deliver notifications for new messages and comment replies. For stock iOS users it was the best solution available until recently. Now, you can simply pay $1.99 for real time push notifications to be delivered to you right when your message is available.
Andrew also talks about some hurdles in the development of Notifications for Reddit, what makes a good beta tester and what he would change about the development process for Apple’s ecosystem. Check out the interview below for some more details.
1. How long have you been developing and what attracted you to it?
I’ve been developing various applications and services on and off for roughly five years. From my first ASCII checkers program in AppleScript, to Notifications for reddit, I’ve always loved the concept of shaping an idea into something tangible. Having the ability to create something that’s useful, fun, or simply interesting to others is a big part of why I wake up and decide to develop every day.
2. What inspired you to make Notifications for Reddit?
After seeing a number of posts in /r/AlienBlue about inbox notifications not working or draining large amounts of battery, I decided that it’d be a good community-oriented project to undertake. As a developer and long-time Alien Blue user, having a way to get notified instantly of new messages plays a huge part in being able to offer prompt customer service.
3. Can you briefly explain how your push notifications work?
Because the push notifications sent are true iOS push notifications, a sizable amount goes on behind the scenes so that everything runs smoothly. The infrastructure can be split into two main components: (1) the cluster for detecting when new messages arrive and (2) Parse for sending data to Apple’s push notification servers.
On the cluster side, I have a pool of over 30 nodes all hosted on the Google App Engine. By going through Google, Notifications inherits the high-reliability and extensiveness of Google’s computational resources. All nodes are managed by a single server which determines what portion of the cluster’s resources are dedicated to each particular user.
Parse is less important in the setup, but works in conjunction with the cluster to deliver high-speed messages straight to the device.
4. Can you talk a little bit about some hurdles you had in developing NFR?
The original plan was simply to launch Alien Blue or other reddit apps whenever an alert banner was tapped. However, after realizing that few apps supported URL schemes (the ability to be opened from another app), I decided to make a full-featured inbox client instead.
In addition to the external challenges, Notifications represents my first native iOS app. By developing Notifications, I went from not knowing how to use Xcode at all, to being comfortable enough to create things on my own. Things like the arbitrarily-sized inbox message cells took a lot of time to figure out, and I still have a lot to learn in terms of mastering animations.
5. What advice do you have for up and coming developers?
For new developers, I think simply finding something you’re passionate about is key to a successful project; actually caring about what you create makes a world of difference. Likewise, transparency and communication is something that some developers neglect. Establishing easy-access channels for people to get in touch with you allows a project to go from a development team of a few to hundreds.
From a technical aspect, having a clear plan throughout the development and release process is important to maximize success. This is a crucial step that allows one to track progress and make adjustments if necessary.
6. Do you have any projects on the horizon that you would like to mention?
I’m considering entering the iOS reddit client market depending on how the final launch stats turn out for Notifications. Like Notifications, the app will be focused on providing a super clean but functional experience. If development does start on this app, people interested can expect more details early this summer.
7. What makes a good beta tester?
Simply participating in the beta and reporting bugs when necessary is fantastic. Ideally, reports should have enough detail where I can reproduce the bug easily, but I’m definitely not against following up to get more information.
8. How many iDevices do you have?
I currently own quite a few iDevices:
- iPhone 5s
- late-2013 rMBP (maxed)
- 2011 21.5” iMac
- iPad Air 2 (shout out to AppGyver Steroids for this device)
- iPad Mini 2
- iPod Touch 4
- AirPort Time Capsule (3 TB)
9. Do you jailbreak any of your devices?
I don’t jailbreak my devices anymore. I found that stock iOS performs well enough where any additional functionality I need can simply be bought or coded into an app in a few hours.
10. If you could change something about the development process for iOS what would it be?
The long review queue and sub-par email notification management for TestFlight come to mind. While waiting in line for seven days isn’t a deal-breaker, not being able to manage who would receive a TestFlight email notification caused a few issues during beta testing. Emails sometimes wouldn’t even send, which meant going through a 3rd party emailing service (MailChimp) as a backup.