Thoughts on “Analyzing Ad Library Updates in Android Apps”

Paper: I. J. Mojica Ruiz, M. Nagappan, B. Adams, T. Berger, S. Dienst and A. E. Hassan, “Analyzing Ad Library Updates in Android Apps,” in IEEE Software, vol. 33, no. 2, pp. 74-80, Mar.-Apr. 2016, doi: 10.1109/MS.2014.81.

This article explores the cost of app updates caused due to ad library updates in Android apps. Typically, app releases have non-zero cost from development and QA perspective. The cost may also vary based on the complexity of the app. If an update is being released, oftentimes it needs to go through a full QA pass. Even when an update is released to an app store such as Google Play, it is not guaranteed for customers to update. Customers may choose to skip an update if they feel that it could disrupt their existing experience. The authors posit that ad library updates may be impactful to the developer’s bottom line, and hence it is important for them to get out to customers. 

The authors mention that about 51-60% of free Android apps have some sort of ad integration (with free apps accounting for ~91% of the overall apps available in app stores). The cost of performing ad updates, are categorized into the following by the authors: software maintenance (making changes for new ad library versions), app delivery delays (due to adoption rates can cause revenue impact), lack of ads (due to old ad libraries), and poor user experience (due to bugs in the ad libraries that have not been updated). 

The data the authors have gathered has been done via crawling Google play and doing static analysis on downloaded APKs. They concentrated on apps that have at least 10 raters (effectively 5,937 apps / 13,983 app versions). They found that 65% of app updates included updated ad library, 44% included added ad library and about 28% included removed ad library. Even a stable app such as a calculator app may need to be updated due to its ad integration. They have categorized the top ad providers and have provided stats in regard to the number of updates they have required in 2011.  

In regard to recommendations provided, the authors suggest developers to choose an ad provider that is stable in regard to frequency of library updates. Additionally, if the app relies on a webview, that can be updated more easily through a server-side deployment. Ads can be served through a webview owned by the developer. Though some of the ad targeting may be not as good as native ads when served through a webview as the ad may not have access to all the same data as if it was running natively. In Android, it is also possible to patch some code during runtime (for example Java code can be patched via classloader). This mechanism is fairly complex and thus the additional complexity would only be justified in exceptional cases. I chose to read this article due to my interest in Android. The uber takeaway for me from this article is to always question your dependencies when building and to have some data in regard to frequency of updates required by your dependencies and how that matches with your intended release cadence.

Thoughts on “Rancid: Reliable Benchmarking on Android Platforms”

Paper: S. Afonso and F. Almeida, “Rancid: Reliable Benchmarking on Android Platforms,” in IEEE Access, vol. 8, pp. 143342-143358, 2020, doi: 10.1109/ACCESS.2020.3014533.

https://ieeexplore.ieee.org/document/9159586

This is a recent paper (published August 2020) talking about the problem of benchmarking code on Android platform. Benchmarking allows us to gather data in regard to how our software is performing as well as potential opportunities for additional optimization. The author mentions how benchmarking on Android poses unique challenges. Android is built on top of Linux OS. Application code is typically written in Java (and now more recently potentially in Kotlin). Android also does allow Native code (C/C++) to be written and then it can be referenced in Java through the JNI. There are few challenges that come into play when benchmarking on Android: there could be other processes & apps running in the background that could skew results, processor frequency which can be updated (for example due to power constraints), temperature (temperature throttling), and processor affinity. In the case of processor frequency, there are two separate governors for CPU and GPU. Temperature can impact processor and memory frequency, since the frequency may be reduced by the governors to cool the device. This means that even the ambient temperature which the device is in can impact test results. The author observed sometimes cores being shut down due to this thermal throttling. One thing that I learned from this paper about Android is the concept of processor affinity and how it impacts performance. The author mentioned that modern architecture is built around Arm’s big/little multicore CPU. This architecture consists of having two processors with one that is more performant than the author (hence the name big/little). This means that the performance of the code will be impacted by which processor it runs on. 

The author introduces a framework they have developed called ‘Rancid’, which can be used to mitigate some of the issues outlined earlier when benchmarking Android code. For me, the greatest take away from this paper was the additional understanding it gave me when it comes to Android code optimization and how things such as background processes, processor frequency, processor affinity and temperature impact it. I chose to read this paper because Android continues to grow in influence as a mobile operating system. The mobile space itself does not show any signs of slowing down. Learning Android deeply is a valuable asset to have. 

I tried searching for ‘Rancid Android framework’ to find the website where it can be downloaded, however the only results that came up were references to the paper. So it seems as though the authors have not yet released this framework for public consumption. It would be interesting to play around with this framework to get a better sense of how it works and perhaps eventually it can be incorporated into developer’s standard toolchain when developing on Android. 

Introduction to Verizon Innovation Centers

For me, this was a very interesting talk by Jack Tang (former UW EE alum) who was Director of Verizon’s Innovation Center at the time of recording. I am interested in entrepreneurship and tech innovation in general so I found this talk enjoyable to watch. For one, it made me further appreciate Verizon as a company. Prior to this, I did not know that Verizon is a relatively young company (founded in 2000), with headquarters in New York, has over 175k employees, yearly revenue on the order of $120B and growing 5-8% annually. 

Verizon Innovation Center is a program that entrepreneurs, and companies can take advantage of where they can consult with experts from Verizon and utilize some of Verizon’s own testing labs & services to help facilitate in bringing their products to market. Verizon can also play the role of matchmaker where they can connect companies for their mutual benefit. The interesting thing here is that Verizon has committed to not taking any intellectual property or ownership claim from these companies in the context of their collaboration. Verizon’s long term hope is that the companies eventually do use Verizon services and products for their companies but Verizon does not require this. There are two Verizon Innovation Centers currently: one in San Francisco, California and the other in Boston, Massachusetts. 

Jack Tang recognized the following growth trends in his talk: Connecting Computers (originally led by AOL through providing internet to folks in 1995), Connecting Information (led by Google and Wikipedia in 2000), Connecting Expressions (led by Youtube in 2005), Connecting People and Activities (led by social networks such as LinkedIn, Facebook and Yelp) and the next subsequent trend to be Connecting Everything Intelligently (such as cars, devices, trees, trash cans, houses, etc.). The last trend is where Jack Tang believes Verizon is well positioned to continue to innovate and help companies and entrepreneurs accelerate. Verizon has helped build solutions in a wide array of domains such as Smart Grid, Broadcast Audio, Education, Healthcare, Network Access and Entertainment. I do agree with this trend that Jack illustrates and I believe that this democratization of being able to build internet access in devices is a very powerful driver for innovation in the IOT space. 

Another observation I made is that looking at the website for Verizon’s Innovation Center is that they also seem to offer cloud services. One of the areas they are proving service for is in video streaming, which can help facilitate live streaming of content. This area seems to somewhat overlap with other cloud providers such AWS, which also has similar offering through Elemental suite of services (called AWS Elemental MediaLive).

For more information on Verizon Innovation Centers feel free to visit their website: https://www.verizon.com/about/sites/default/files/annual/delivering-innovative-solutions.html

The Third Door by Alex Banayan

“Wow just wow “is my reaction to just having finished listening to this book on Audible. Prior to going through this book, I had seen articles about Alex years before, and was impressed by what he was achieving at such a young age. Upon completing the book, I am feeling more inspired and determined to pursue my goals. Not going to summarize the book here, but I definitely do recommend you check it out if you have big aspirations for your life. Entrepreneurs, dreamers, and anyone else either starting out or early in their career will definitely benefit from this book. 😀

Goals for 2020

It’s February but thought I’d write down some of my goals for 2020 and hold myself accountable.

  1. Complete degree.
  2. Increase proficiency with Machine learning / Deep learning.
  3. Gym – get in the best shape of my life.
  4. Secret Goal: code name. N.
  5. Skin – get great skin.
  6. Do something about my eye bags 😛
  7. Secret goal: Become SC.
  8. Read 5 books.

 

If I can hit all of these goals, that would be a fantastic year. Let’s get to work. I’m excited 🙂

The Harvey Mudd Story: From 10% to 40% female in CS in three years

Maria Klawe presents the problem of gender diversity in Computer Science programs – namely the underrepresentation of women. Maria talks about her endeavor as School President at Harvey Mudd College in bringing female representation in CS from 10% to 40% in three years. This is a very important problem as this underrepresentation also carries forward in the industry. Some of the things that the CS department did was to adapt the introductory course to make it more application focused (switched from Java to approaches to problem-solving in Python), eliminated student macho behavior by segmenting into groups based on prior experience, took first-year female students to Hopper conference and provided summer research experiences to females between first & second year. I enjoyed this talk. The concepts presented here are applicable to anyone trying to foster an inclusive workforce.


 

Notes from the talk:

Why so few enter CS
- Females think CS is less interesting than other areas
- Females think they will not do as well in CS as in other areas
- Females (and males) encouraged to major in what interests them and what they are good at.

Why some leave CS
- Lack of confidence
- Lack of sense of belonging

The Harvey Mudd College Story
- Undergrad only
- 750 students
- 90 faculty, seven departments
- Science and engineering
- Every student takes a CS course in their first semester

Female students at HMC over all:
- 22% in 1997
- 32% in 2006
- 45% in 2012
- Entering class in 2012 was 47.5% female

Female faculty at HMC over all:
- About 20% in 1997
- 35% in 2006
- 42% in 2010

What the CS department did...
- Changed the intro course
- Eliminated student macho behavior
- Took first year females to Hopper
- Provided summer research experiences between first and second year

Changing the intro course
- Old course: learning to program in Java
- New course: team-based computational approaches to problem-solving using Python
- Grouping by prior experience
- CS 5 gold, CS 5 black, CS 43
- Elimination of macho behavior for CS 5 and CS 60

What carries over to the other institutions
- Make intro courses the most fun ever
- Eliminate macho behavior
- Build confidence
-- Team projects
-- Assignments in labs
-- Encourage
- Take students to Hopper
-- Hold a local Impostor panel
- Offer females summer research experiences
- Recruit biology, chemistry, psychology majors into CS
-- Double majors, joint courses

Bringing back the blog

As some people would know, in the past I’ve had various online presence with varying degrees of success. Some were even sold, but that is for another story. I’m thinking I want to get back in the groove of publishing something here from time to time. Blogs I feel provide good canvas to express your ideas and creativity, without the need to chase for “likes”.

IMG_1121
The picture above is a throwback from December 2017. It’s the last day in my 300 square ft. apartment I lived in grinded in for 3.5 years when I first moved to Seattle. Moda Apartments in Belltown. This is me moving out, on to much better tings. Dream big, hustle harder. More to come. Stay chuned. #nofilter