Qualcomm Developer Network September Developer of the Month is Jake Weinstein.
Jake’s work centers on the Android Operating System Paranoid Android (AOSPA) project, which is described as “a custom ROM aiming to extend the system, working on enhancing the already existing beauty of Android and following the same design philosophies that were set forward by Google for Android Open Source Project.” While the description of this OS fork is complex, team Paranoid Android focus on bringing simplicity to their users’ lives through an elegant, pared-down UX. AOSPA is based on the Qualcomm fork of Android at the Code Aurora Forum, supporting Qualcomm Snapdragon-powered devices.
In his free time (ha!), Jake is also a student finishing his degree in St. Louis. We’re inspired by Jake’s drive, dedication, and programming skills, and so we took a few minutes to speak with him about his project and process, and how he gets the most out of Qualcomm Developer Network (QDN) tools when coding for Paranoid Android.
Paranoid Android is a team of people from around the world that work to create a free and open source operating system based on Android. Together, we strive to maximize performance, battery, stability, and overall experience for users. We also work with the Nextbit and Razer teams on Razer OS to upgrade to the latest Android version, improve performance, fix bugs, and improve functionality.
Fun fact - the Paranoid Android name comes from a song by Radiohead.
How did the project get started?
In the past, some aftermarket Android firmware became focused on having the most features, rather than a few meaningful features that greatly enhance user experience. In fact, sometimes this firmware didn’t even feel native to Google’s stock Android OS! Paranoid Android was started with the goal to make software that prioritizes quality over quantity.
How did you first get involved with Paranoid Android?
It’s kind of a funny story. About four years ago, I started to do more in-depth development, and I decided I wanted to create a device tree and kernel for the LG Optimus G based on the Code Aurora Forum for Snapdragon 600. One of the developers I was working with happened to be a Paranoid Android device maintainer for the Optimus G and when his screen cracked, he asked me to inherit his responsibilities. I obliged, and the rest is history. Since then, my role has grown from device maintainer to part of the core leadership of Paranoid Android.
What does innovation mean to you?
Innovation is doing new things to help make people's lives better. All our features - from PIE Controls, which are a gesture-based navigation system for Android, to Color Engine, which allows users to change the primary and accent colors of the operating system interface - are created with this in mind.
Where do you and the team get inspiration?
Our users are a huge inspiration for us, and they often give us great insights on what we can do to improve our product. In addition, we’re all also users of our product, so thinking, "Wouldn't it be cool if we could do X?" forms the basis for many of our new ideas.
What QDN tools do you use as you make these ideas happen?
Mainly, we use the Qualcomm Snapdragon LLVM Compiler to improve performance and user experience on many of our devices. We’ve also used the Trepn Power Profiler and Qualcomm Snapdragon Profiler to analyze and evaluate power management so that we can allow the CPU and schedulers to make better decisions, ultimately helping to maximize battery and smoothness.
How do these tools help with development?
We use the Trepn Power Profiler and Snapdragon Profiler to watch CPU and GPU load and frequencies in real-time. We’ve often used this data to create heuristics, which can increase CPU and GPU frequencies, and migrate tasks to the high performance CPU cluster on certain Snapdragon-powered devices (such as the Nextbit Robin), during scrolls and application launches in order to maximize performance and minimize latency.
QDN tools have significantly sped up our development, as we’re able to start on the latest major Android releases within days instead of months, and we can use source code made for the latest Android OS instead of trying to find ways to make older code work.
Do you have any advice for students who would like to start learning about mobile optimization?
The best way to get started is to first identify a problem. This can be a great starting point because it gives you a challenge and an end goal to fix the issue.
There are several great programs you can use to profile Android devices to find the underlying sources of performance issues. My favorites include the Trepn Profiler, which shows CPU load and frequency in real time on your mobile device, as well as the Snapdragon Profiler and Android Systrace tools. Use these tools to find where bottlenecks are in your application or operating system and make it significantly easier to figure out how to resolve it.
Also, don’t be afraid to ask for help. Many community and professional developers have likely solved similar issues and are happy to help - that’s what makes the developer community so great. If you’re working on an existing open source project, such as the Android Open Source Project, you can submit to their Code Review System to get feedback from the developers and potentially even have your code merged in. One of the most fulfilling aspects of Android development for me has been having my code merged into the Android Open Source Project for use on the next release of Android across millions of devices. That’s really powerful.
Check out the Snapdragon LLVM compiler, Trepn Power profiler and Snapdragon profiler, and find Jake on Github.