Warning: Table './devblogsdb/cache_page' is marked as crashed and last (automatic?) repair failed query: SELECT data, created, headers, expire, serialized FROM cache_page WHERE cid = 'http://www.softdevblogs.com/?q=aggregator/sources/29' in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc on line 135

Warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/bootstrap.inc on line 729

Warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/bootstrap.inc on line 730

Warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/bootstrap.inc on line 731

Warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/bootstrap.inc on line 732
Software Development Blogs: Programming, Software Testing, Agile, Project Management
Skip to content

Software Development Blogs: Programming, Software Testing, Agile Project Management

Methods & Tools

Subscribe to Methods & Tools
if you are not afraid to read more than one page to be a smarter software developer, software tester or project manager!

Google Code Blog
warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/common.inc on line 153.
Syndicate content
ewoodhttp://www.blogger.com/profile/12341551220176883769noreply@blogger.comBlogger1526125
Updated: 2 hours 48 min ago

Not your average app building competition: The AdMob Student App Challenge

Thu, 01/28/2016 - 19:50

Originally posted on Google Apps Developers blog

Posted by Henry Wang, Associate Product Marketing Manager

Did you know that there are more mobile devices than people? In 2014, there were 7.4BN* devices and an estimated 7.2 billion people. Mobile is quickly becoming the most popular way to get online, even exceeding the time spent on desktop computers**. This has contributed greatly to the growth of the app ecosystem, with consumers spending on average 37 hours a month*** on mobile apps. As apps are becoming more prominent in our everyday lives, it’s more important now than ever to learn app development.

That’s why we’re launching the second AdMob Student App Challenge, an app building competition open to students around the world. If you’re a student who loves to code or has a great idea for a mobile app, this is your chance to build an app, learn how to make money from it, and win awesome prizes. The prizes will include a week-long trip to San Francisco and a visit to the Googleplex.




To win the challenge, you’ll need to build a great app (either Android or iOS) and create a sound business plan that shows how you managed the project, gained users, and leveraged AdMob to make money. The contest will be judged by a panel of app industry leaders. To learn more about the judges, visit here.

The winning team will receive:
  • An all expenses paid, week-long trip to San Francisco, including a visit to the Googleplex in Mountain View, CA 
  • A featured spot on the Google Play Store 
  • A promotional video starring you and your app 
  • A healthy amount of Google schwag, including a new Google device 

Last year’s global winner was Phani Gaddipati, who created Stacks Flashcards, an app that lets people create electronic flashcards on any subject, quiz themselves and analyze their performance. Check out his video to learn more.

In addition to one overall winner, the finalist from each of the four global regions (North America, Latin America, Europe Middle East & Africa, and Asia Pacific) will receive Google devices and see their app featured on the AdMob website.

The challenge starts today, and you’ll have until June 28, 2016 to build your winning app. Be sure to visit the AdMob website to learn more and register. Follow us on AdMob G+ and Twitter and keep an update on #AdMobSAC16 too, for regular updates on the challenge. .

Best of luck -- we can’t wait to see what you build!
* Cisco, Cisco Visual Networking Index: Global Mobile Data Traffic Forecast Update 2014–2019 White Paper, February 2015
** eMarketer, US Time Spent with Media, October 2014
*** Nielsen, Smartphones: So Many Apps, So Much Time, July 2014
Categories: Programming

[New eBook] Download The No-nonsense Guide to App Monetization

Tue, 01/26/2016 - 21:23
Originally posted on the Inside AdMob Blog.

There are many questions to answer when developing a new app. One of the most important being, “what’s the best way to make money?”

Research firm Canalys predicts that by 2019, there will be 6.9 billion mobile phones in the world, in the hands of nearly 75% of the Earth’s population.* With growing demand in new markets and so many options for monetization, answering this question can be complicated.

Today we’re launching a new ebook “The No-nonsense Guide to App Monetization”, the latest in our No-nonsense series. This guide is designed for app developers starting to consider how to monetize their app. It provides a comprehensive overview of app monetization and shares helpful examples and practical tips to get you started.

In 10 minutes you’ll learn:
  • What the seven primary app monetization models are and the pros and cons for each
  • How to choose the right monetization strategy for your app
  • Important considerations to keep in mind when implementing your monetization plan

Download a free copy here.

The No-nonsense Guide to App Monetization
Also, within the next few weeks, we’ll be releasing blog posts with app developers sharing candid stories and helpful tips on app monetization. Our next post will highlight the tactic Christoph Pferschy, the app developer behind Hydro Coach, used to scalably release 22 localized versions of his app.

Until then, for more tips on app monetization, be sure to stay connected on all things AdMob by following our Twitter and Google+ pages.

Posted by Joe Salisbury, Product Specialist, AdMob

* Canalys 2015, “Worldwide smart phones forecast overview 2015-2019


Categories: Programming

[New eBook] Download The No-nonsense Guide to App Monetization

Tue, 01/26/2016 - 21:23
Originally posted on the Inside AdMob Blog.

There are many questions to answer when developing a new app. One of the most important being, “what’s the best way to make money?”

Research firm Canalys predicts that by 2019, there will be 6.9 billion mobile phones in the world, in the hands of nearly 75% of the Earth’s population.* With growing demand in new markets and so many options for monetization, answering this question can be complicated.

Today we’re launching a new ebook “The No-nonsense Guide to App Monetization”, the latest in our No-nonsense series. This guide is designed for app developers starting to consider how to monetize their app. It provides a comprehensive overview of app monetization and shares helpful examples and practical tips to get you started.

In 10 minutes you’ll learn:
  • What the seven primary app monetization models are and the pros and cons for each
  • How to choose the right monetization strategy for your app
  • Important considerations to keep in mind when implementing your monetization plan

Download a free copy here.

The No-nonsense Guide to App Monetization
Also, within the next few weeks, we’ll be releasing blog posts with app developers sharing candid stories and helpful tips on app monetization. Our next post will highlight the tactic Christoph Pferschy, the app developer behind Hydro Coach, used to scalably release 22 localized versions of his app.

Until then, for more tips on app monetization, be sure to stay connected on all things AdMob by following our Twitter and Google+ pages.

Posted by Joe Salisbury, Product Specialist, AdMob

* Canalys 2015, “Worldwide smart phones forecast overview 2015-2019


Categories: Programming

Teach Yourself Deep Learning with TensorFlow and Udacity

Fri, 01/22/2016 - 20:09

Originally posted on Google Research Blog

Posted by Vincent Vanhoucke, Principal Research Scientist

Deep learning has become one of the hottest topics in machine learning in recent years. With TensorFlow, the deep learning platform that we recently released as an open-source project, our goal was to bring the capabilities of deep learning to everyone. So far, we are extremely excited by the uptake: more than 4000 users have forked it on GitHub in just a few weeks, and the project has been starred more than 16000 times by enthusiasts around the globe.

To help make deep learning even more accessible to engineers and data scientists at large, we are launching a new Deep Learning Course developed in collaboration with Udacity. This short, intensive course provides you with all the basic tools and vocabulary to get started with deep learning, and walks you through how to use it to address some of the most common machine learning problems. It is also accompanied by interactive TensorFlow notebooks that directly mirror and implement the concepts introduced in the lectures.
The course consists of four lectures which provide a tour of the main building blocks that are used to solve problems ranging from image recognition to text analysis. The first lecture focuses on the basics that will be familiar to those already versed in machine learning: setting up your data and experimental protocol, and training simple classification models. The second lecture builds on these fundamentals to explore how these simple models can be made deeper, and more powerful, and explores all the scalability problems that come with that, in particular regularization and hyperparameter tuning. The third lecture is all about convolutional networks and image recognition. The fourth and final lecture explore models for text and sequences in general, with embeddings and recurrent neural networks. By the end of the course, you will have implemented and trained this variety of models on your own machine and will be ready to transfer that knowledge to solve your own problems!

Our overall goal in designing this course was to provide the machine learning enthusiast a rapid and direct path to solving real and interesting problems with deep learning techniques, and we're now very excited to share what we've built! It has been a lot of fun putting together with the fantastic team of experts in online course design and production at Udacity. For more details, see the Udacity blog post, and register for the course. We hope you enjoy it!

Categories: Programming

Helping 1 million students build better apps

Thu, 01/21/2016 - 20:48

Posted by Peter Lubbers, Senior Program Manager, Google Developer Training

Almost three years ago we shipped our very first Udacity course about HTML5 Game Development. Today marks a milestone that we proudly want to share with the world. The 1 millionth person has enrolled in our Google Developer Training courses. Was it you?

This milestone is more than just a number. Thanks to our partnership with Udacity, this training gives developers access to skills that empower families, communities, and the future.

One million developers around the world have made a commitment to learn a new language, expand their craft, start a new business, completely shift careers and more. So, here's to the next million people who are excited about using technology to solve the world’s most pressing challenges.

Keep learning!

Categories: Programming

Retirement of certain Google search APIs

Sat, 01/16/2016 - 01:27

Posted by Vijay Subramani, Technical Program Manager, Google Cloud Platform

Back in 2011, we announced the deprecation of the following APIs: Google Patent Search API, Google News Search API, Google Blog Search API, Google Video Search API, Google Image Search API. We supported these APIs for a three year period (and beyond), but as all things come to an end, so has the deprecation window for these APIs.

We are now announcing the turndown of the above APIs. These APIs will cease operations on February 15, 2016.

You may wish to look at our Custom Search API as an alternative for these APIs.

Categories: Programming

Spatial audio comes to the Cardboard SDK

Wed, 01/13/2016 - 18:07

Posted by Nathan Martz, Product Manager, Google Cardboard

Human beings experience sound in all directions—like when a fire truck zooms by, or when an airplane is overhead. Starting today, the Cardboard SDKs for Unity and Android support spatial audio, so you can create equally immersive audio experiences in your virtual reality (VR) apps. All your users need is their smartphone, a regular pair of headphones, and a Google Cardboard viewer.

Sound the way you hear it

Many apps create simple versions of spatial audio—by playing sounds from the left and right in separate speakers. But with today’s SDK updates, your app can produce sound the same way humans actually hear it. For example:

  • The SDK combines the physiology of a listener’s head with the positions of virtual sound sources to determine what users hear. For example: sounds that come from the right will reach a user’s left ear with a slight delay, and with fewer high frequency elements (which are normally dampened by the skull).
  • The SDK lets you specify the size and material of your virtual environment, both of which contribute to the quality of a given sound. So you can make a conversation in a tight spaceship sound very different than one in a large, underground (and still virtual) cave.
Optimized for today’s smartphones

We built today’s updates with performance in mind, so adding spatial audio to your app has minimal impact on the primary CPU (where your app does most of its work). We achieve these results in a couple of ways:

  • The SDK is optimized for mobile CPUs (e.g. SIMD instructions) and actually computes the audio in real-time on a separate thread, so most of the processing takes place outside of the primary CPU.
  • The SDK allows you to control the fidelity of each sound. As a result, you can allocate more processing power to critical sounds, while de-emphasizing others.
Simple, native integrations

It’s really easy to get started with the SDK’s new audio features. Unity developers will find a comprehensive set of components for creating soundscapes on Android, iOS, Windows and OS X. And native Android developers will now have a simple Java API for simulating virtual sounds and environments.


Experience spatial audio in our sample app for developers

Check out our Android sample app (for developer reference only), browse the documentation on the Cardboard developers site, and start experimenting with spatial audio today. We’re excited to see (and hear) the new experiences you’ll create!

Categories: Programming

Spatial audio comes to the Cardboard SDK

Wed, 01/13/2016 - 18:07

Posted by Nathan Martz, Product Manager, Google Cardboard

Human beings experience sound in all directions—like when a fire truck zooms by, or when an airplane is overhead. Starting today, the Cardboard SDKs for Unity and Android support spatial audio, so you can create equally immersive audio experiences in your virtual reality (VR) apps. All your users need is their smartphone, a regular pair of headphones, and a Google Cardboard viewer.

Sound the way you hear it

Many apps create simple versions of spatial audio—by playing sounds from the left and right in separate speakers. But with today’s SDK updates, your app can produce sound the same way humans actually hear it. For example:

  • The SDK combines the physiology of a listener’s head with the positions of virtual sound sources to determine what users hear. For example: sounds that come from the right will reach a user’s left ear with a slight delay, and with fewer high frequency elements (which are normally dampened by the skull).
  • The SDK lets you specify the size and material of your virtual environment, both of which contribute to the quality of a given sound. So you can make a conversation in a tight spaceship sound very different than one in a large, underground (and still virtual) cave.
Optimized for today’s smartphones

We built today’s updates with performance in mind, so adding spatial audio to your app has minimal impact on the primary CPU (where your app does most of its work). We achieve these results in a couple of ways:

  • The SDK is optimized for mobile CPUs (e.g. SIMD instructions) and actually computes the audio in real-time on a separate thread, so most of the processing takes place outside of the primary CPU.
  • The SDK allows you to control the fidelity of each sound. As a result, you can allocate more processing power to critical sounds, while de-emphasizing others.
Simple, native integrations

It’s really easy to get started with the SDK’s new audio features. Unity developers will find a comprehensive set of components for creating soundscapes on Android, iOS, Windows and OS X. And native Android developers will now have a simple Java API for simulating virtual sounds and environments.


Experience spatial audio in our sample app for developers

Check out our Android sample app (for developer reference only), browse the documentation on the Cardboard developers site, and start experimenting with spatial audio today. We’re excited to see (and hear) the new experiences you’ll create!

Categories: Programming

Get your app featured on the first smartphone with Project Tango from Lenovo

Fri, 01/08/2016 - 03:30

Posted by Johnny Lee, Technical Project Lead, Project Tango

Today, at CES, Lenovo announced the development of the first consumer-ready smartphone with Project Tango. By adding a few extra sensors and some computer vision software, Project Tango transforms your smartphone into a magic lens that lets you place digital information on your physical world.


*Renderings only. Not the official Lenovo device.

To support the continued growth of the ecosystem, we’re also inviting developers from around the world to submit their ideas for gaming and utility apps created using Project Tango. We’ll pick the best ideas and provide funding and engineering support to help bring them to life, as part of the app incubator. Even better, the finished apps will be featured on Lenovo’s upcoming device. The submission period closes on February 15, 2016.

All you need to do is tell us about your idea and explain how Project Tango technologies will enable new experiences. Additionally, we’ll ask you to include the following materials:

  • Project schedule including milestones for development –– we’ll reach out to the selected developers by March 15, 2016
  • Visual mockups of your idea including concept art
  • Smartphone app screenshots and videos, such as captured app footage
  • Appropriate narrative including storyboards, etc.
  • Breakdown of your team and its members
  • One pager introducing your past app portfolio and your company profile

For some inspiration, Lowe's Home Improvement teamed with developer Elementals Web to demonstrate a use case they are each working on for the launch. In the app, you can point your Project Tango-enabled smartphone at your kitchen to see where a new refrigerator or dishwasher might fit virtually.


Elsewhere, developer Schell Games let’s you play virtual Jenga on any surface with friends. But this time, there is no cleanup involved when the blocks topple over.


There are also some amazing featured apps for Project Tango on Google Play. You can pick up your own Project Tango Tablet Development Kit here to brainstorm new fun and immersive experiences that use the space around you. Apply now!

Categories: Programming

Google Drive: Uploading & downloading files plus the new v3 API redux

Thu, 01/07/2016 - 20:51

Originally posted on Google Apps Developer Blog

Posted by Posted by Wesley Chun (@wescpy), Developer Advocate, Google Apps

In case you missed it last week, the Google Drive team announced the release of the next version of their API. Today, we dig deeper into details about the release with developers. In the latest edition of the Launchpad Online developer video series, you'll get everything you need to know about the new release (v3), as well as its relationship with the previous version (v2).

This jam-packed episode features an introduction to the new API, an interview with a Google Drive engineer about the API design and a code walkthrough of real source code you can use today (as with all my Launchpad Online episodes). This time, it's a command-line script that performs Google Drive file uploads and downloads, presented first in v2 followed by a how-to segment on migrating it step-by-step to v3. In addition, the uploading segment includes the option of converting to Google Apps formats while the download portion covers exporting to alternative formats such as PDF®.


To get started using the Drive API, check out the links to the official documentation above (v2 or v3) where you’ll also find quickstart samples in a variety of programming languages to the left. For a deeper dive into both Python code samples covered here, including v3 migration, start with the first of two related posts posted to my blog.

If you’re new to the Launchpad Online, we share technical content aimed at novice Google developers -current tools with a little bit of code to help you launch your next app. Please give us your feedback below and tell us what topics you would like to see in future episodes!

Categories: Programming

Google Apps Script: Tracking add-on usage with Google Analytics

Thu, 01/07/2016 - 17:16

Originally posted on Google Apps Developers blog

Posted by Romain Vialard, a Google Developer Expert and developer of Yet Another Mail Merge, a Google Sheets add-on.

Google Apps Script makes it easy to create and publish add-ons for Google Sheets, Docs, and Forms. There are now hundreds of add-ons available and many are reaching hundreds of thousands of users. Google Analytics is one of the best tools to learn what keeps those users engaged and what should be improved to make an add-on more successful.

Cookies and User Identification

Add-ons run inside Google Sheets, Docs, and Forms where they can display content in dialogs or sidebars. These custom interfaces are served by the Apps Script HTML service, which offers client-side HTML, CSS, and JS with a few limitations.

Among those limitations, cookies aren’t persistent. The Google Analytics cookie will be recreated each time a user re-opens your dialog or sidebar, with a new client ID every time. So, Analytics will see each new session as if initiated by a new user, meaning the number of sessions and number of users should be very similar.


Fortunately, it’s possible to use localStorage to store the client ID — a better way to persist user information instead of cookies. After this change, your user metrics should be far more accurate.

Add-ons can also run via triggers, executing code at a recurring interval or when a user performs an action like opening a document or responding to a Google Form. In those cases, there’s no dialog or sidebar, so you should use the Google Analytics Measurement Protocol (see policies on the use of this service) to send user interaction data directly to Google Analytics servers via the UrlFetch service in Google Apps Script.

A Client ID is also required in that case, so I recommend using the Apps Script User properties service. Most examples on the web show how to generate a unique Client ID for every call to Analytics but this won’t give you an accurate user count.

You can also send the client ID generated on client side to the server so as to use the same client ID for both client and server calls to Analytics, but at this stage, it is best to rely on the optional User ID in Google Analytics. While the client ID represents a client / device, the User ID is unique to each user and can easily be used in add-ons as users are authenticated. You can generate a User ID on the server side, store it among the user properties, and reuse it for every call to Analytics (both on the client and the server side).

Custom Dimensions & Metrics

In add-ons, we usually rely on event tracking and not page views. It is possible to add different parameters on each event thanks to categories, actions, labels and value, but it’s also possible to add much more info by using custom dimensions & metrics.

For example, the Yet Another Mail Merge add-on is mostly used to send emails, and we have added many custom dimensions to better understand how it is used. For each new campaign (batch of emails sent), we record data linked to the user (e.g. free or paying customer, gmail.com or Google for Work / EDU user) and data linked to the campaign (e.g. email size, email tracking activated or not). You can then reuse those custom dimensions inside custom reports & dashboards.


Once you begin to leverage all that, you can get very insightful data. Until October 2015, Yet Another Mail Merge let you send up to 100 emails per day for free. But we’ve discovered with Analytics that most people sending more than 50 emails in one campaign were actually sending 100 emails - all the free quota they could get - but we failed to motivate them to switch to our paid plan.


As a result of this insight, we have reduced this free plan to 50 emails/day and at the same time introduced a referral program, letting users get more quota for free (they still don’t pay but they invite more users so it’s interesting for us). With this change, we have greatly improved our revenue and scaled user growth.

Or course, we also use Google Analytics to track the efficiency of our referral program.

To help you get started in giving you more insight into your add-ons, below are some relevant pages from our documentation on the tools described in this post. We hope this information will help your apps become more successful!:


Romain Vialard profile | website

Romain Vialard is a Google Developer Expert. After some years spent as a Google Apps consultant, he is now focused on products for Google Apps users, including add-ons such as Yet Another Mail Merge and Form Publisher.

Categories: Programming

DoubleClick’s ‘Mobile Bootcamp’ for app success

Tue, 01/05/2016 - 19:39

Originally Posted on DoubleClick Publisher Blog

Mobile app usage has grown 90% in the past two years and contributes to 77% of the total increase in time spent in digital media. People intuitively turn to mobile devices for information and entertainment, typically spending 37 hours per month in apps. This shift in the consumer mobile experience presents a significant opportunity for increased engagement and monetization for publishers with apps.

To help you effectively capture this mobile opportunity, we’ve gathered our most actionable research and best practices for reaching, engaging, and monetizing app audiences.


Learn something new and want to know more? For more details on our four strategies for app success, review the DoubleClick for Publishers ‘Mobile Bootcamp’ blog series on growing app audiences, engaging users, ensuring high app quality, and effectively monetizing.

Categories: Programming

Get ready for Javascript “Promises” with Google and Udacity

Wed, 12/30/2015 - 22:54

Sarah Clark, Program Manager, Google Developer Training

Front-end web developers face challenges when using common “asynchronous” requests. These requests, such as fetching a URL or reading a file, often lead to complicated code, especially when performing multiple actions in a row. How can we make this easier for developers?

Javascript Promises are a new tool that simplifies asynchronous code, converting a tangle of callbacks and event handlers into simple, straightforward code such as: fetch(url).then(decodeJSON).then(addToPage)...

Promises are used by many new web standards, including Service Worker, the Fetch API, Quota Management, Font Load Events,Web MIDI, and Streams.


We’ve just opened up a online course on Promises, built in collaboration with Udacity. This brief course, which you can finish in about a day, walks you through building an “Exoplanet Explorer” app that reads and displays live data using Promises. You’ll also learn to use the Fetch API and finally kiss XMLHttpRequest goodbye!

This short course is a prerequisite for most of the Senior Web Developer Nanodegree. Whether you are in the paid Nanodegree program or taking the course for free, won’t you come learn to make your code simpler and more reliable today?

Categories: Programming

Mobile Bootcamp Part IV: Effectively monetize your app

Tue, 12/29/2015 - 21:22

Originally Posted on DoubleClick Publisher Blog

Users continue to move across platforms and screens. Today, more than half the queries on our platform come from mobile devices, both on mobile web and apps. The balance between monetizing your app and providing a good user experience remains tricky yet essential.

Yesterday, we focused on ways to create a high quality app for your users. Continue reading to gather app monetization recommendations from Mark Wolly, Head of Mobile Publisher Solutions at Google, and find a happy medium between effective monetization and good user experience.

  1. Create ads that respect your UX: Good ad placements ensure reliable revenue without sacrificing user experience. Examine the flow of user engagement within your app to place ads in undisruptive places, such as the transition points in a reading app. You can experiment with the frequency and placements of your ads to ensure you’re delivering the right experience in the right context for the user. Try to avoid sandwiching them between your interactive app content and navigation/menu buttons.

  2. Choose the best ad formats for your app’s content structure: It’s easy for users to get distracted by ads given the limited screen size, especially when they don’t match the look and feel of your app.

    Try using Native ads to create a consistent look and feel across your content and ads. Formatted to fit mobile apps’ content and visual design, Native ads are more likely to be viewed and clicked by users. eBay recently started using our Native Ads on DoubleClick and experienced a 3.6X increase in ad engagement on average, with some campaigns delivering click-through rates up to 5%.

    Mark believes “Native presents an opportunity to reset on building premium quality mobile placements and creatives. Many publishers have already built custom formats for direct sales, but haven’t yet extended their advertiser reach by offering them via programmatic channels.”

  3. Build your programmatic direct strategy: Allowing you high quality creative formats from premium advertisers, programmatic direct introduces your app to new advertiser budgets and makes ad operations easier. As explained by Mark, “Many publishers have built incredible custom mobile formats that command high CPMs from high-quality advertisers. They can massively extend their advertiser reach, while retaining the same cpms and control, by offering these formats to new advertisers via programmatic channels.”

There is a fundamental shift amongst consumers in their use of mobile, making it indisputable that apps play a significant role in a consumer’s mobile experience. In the time that desktop audiences have grown 1%, mobile audiences have grown a staggering 41%1.

Focusing on ways to increase app discoverability, understand user engagement, optimize app quality, and effectively monetize your app, our mobile bootcamp outlines key steps for enhancing your mobile offerings in time for the holiday season of mobile frenzy.

Categories: Programming

Mobile Bootcamp Part III: Focus on quality

Tue, 12/22/2015 - 18:16

Originally posted on DoubleClick Publisher Blog

At this point, you’ve read our recommendations for growing your app’s audience and keeping users engaged. But there are technical aspects, too, that can make or break your app’s success. Speed, for example, is crucial -- users expect apps to respond in under one second.

Yesterday, we gave recommendations for attracting, engaging, and retaining your users. Continue reading today to learn tips from Dev Gogate, Mobile Solutions Consulting Manager at Google, on providing your users with a high quality app.

  1. The smaller the app size, the better: Users have limited bandwidth and data storage, so a large app runs the risk of losing an install. App stores impose size limits and will only deliver apps under a certain size over cellular connections; Google has a 50MB limit for each APK (but allows 2GB expansion files for supporting media) and Apple limits app size at 100MB. Use the ProGuard tool to optimize your Android code and enable Resource Shrinking to remove unused and unneeded resources from dependency libraries. App Thinning offers a similar solution for decreasing app size on iOS.

  2. Build apps that use device resources optimally: Building apps without taking into account how display interacts with hardware components can drain precious resources, such as battery life. According to Dev, "App performance is critical! A badly designed app can drastically and negatively impact the the user's perception of the app's usability and will surely lead to an uninstall." Dev recommends compiling a list of metrics for your apps to perform against and then running tests. This YouTube Android performance channel and Google+ community offer excellent tips on building high performing apps.

  3. Ensure your app works across devices: Failing to catch a bug or crash that only impacts some devices quickly leads to angry customer feedback and low ratings. Dev recommends using Cloud Test Lab to simultaneously test your app on nearly every brand and model of Android devices and across multiple languages, screen orientations, and Android API versions. Dev’s expert tip: Even if you have not written any instrumentation tests for your app, you can use Robo tests to exercise your app by simulating user actions.

  4. Use A/B testing to get real user feedback: Dogfooding your app provides early insight into how users interact with your app and how it behaves beyond the test lab. Beta testing, on the other hand, gathers feedback from an enthusiastic audience. Since this testing is customer-facing, ensure the process is simple to ensure high user participation. Both of these tests gives you early feedback from users before widely releasing your app.

  5. Launch new app versions in phases and closely monitor: Don’t underestimate the number of users who may adopt a new version of your app and their levels of usage. Dev recommends using staged rollouts, which allow you to beta test different app versions and gradually release app updates with a chosen user group. The Cloud Test Lab provides access to virtual devices that give rapid feedback during development, as well as physical devices that pinpoint issues found on real, physical devices.

Creating a high quality app is essential for building and maintaining a loyal user base. Follow Dev’s recommendations to optimize your app quality and stay posted for our post tomorrow on ways to effectively monetize.

Categories: Programming

How Twitter used Doze in Android 6.0 Marshmallow to Improve Notification Performance

Mon, 12/21/2015 - 22:37

Posted by Laurence Moroney, Developer Advocate

In October, we published a blog post about how Google Cloud Messaging (GCM) works with Doze in Android 6.0 Marshmallow to bring performance and usability improvements to the user. In this scenario, normal priority messages allow the device to stay in Doze, while high priority messages take the device out of Doze. For a great example of this capability and best practices on Android, we’ve spoken with the engineering team at Twitter.

Twitter has researched extensively which messages should get high priority -- given that this priority can awaken a device in Doze. To meet their particular need, Twitter wanted Direct Messages to be delivered on high priority, where mentions would be at normal priority.

Luke Millar, Android Engineering Manager at Twitter commented "With Android M we have a greater ability to be good citizens when it comes to conserving battery life. This feature lets us specify which notifications will wake up a device in Doze and which ones won't. Normally, we tell GCM to wait to deliver push notifications until the next time the user's phone wakes up. However, users expect to receive some push notifications immediately, like notifications for Direct Messages, so we set those as high priority. It's nice being able to specify when and how those notifications make it to our users."

To test Doze, Twitter’s engineers followed the steps outlined on the Android Developers site. These guide you to use adb commands to simulate doze on either a physical or virtual device. Following this method, Twitter was able to successfully test how their messaging priorities would work in a real-world environment.

One other best practice that Twitter used was in transmitting larger payloads, such as when delivering Twitter Highlights. In this case, they opted to pass metadata in the notification, which was then used to sync the application to get the requested Highlights. In other words, they didn’t transmit the contents of Highlights in a notification, instead triggering a sync mechanism to update the contents of the app.

For more details on using GCM with your app in standby environments, check out the documentation.
You can learn more about Google Cloud Messaging and how to use it for notifications in your Android, iOS and Web Applications at the Google Developers site here.

Categories: Programming

Mobile Bootcamp Part II: Engage your users

Mon, 12/21/2015 - 18:03

Originally Posted on DoubleClick Publisher Blog

Did you know that 52% of all apps lose at least half of their most valuable users after three months?1 In this environment, how can you ensure your app effectively attracts, engages, and retains users?

Yesterday, we kicked off our mobile bootcamp to help get your app in shape for increased traffic and monetization opportunities during the holiday season. Building on mobile expert Cheney Tsai’s recommendations for growing your app’s audience, Jason Rosenblum, Mobile Solutions Consultant at Google, shares tips for effectively engaging users.

  1. Optimize your on-boarding experience: The first-run of your app is critical in selling its value and utility. Jason suggests using A/B testing to experiment with different features, such as adding an app tutorial or custom discount code.

  2. Measure user engagement and understand how it connects to your business: Knowing whether, when, and how frequently users return to your site allows you to strategically send notifications, identify pain points, and launch features. Cohort analysis indicates patterns in user behavior by aligning all metrics by the different days of user experience, regardless of the specific day a user starts using your app.

    While Google Analytics offers standard measurement options -- average session duration, active users, loyalty, recency, audience overview -- consider the nature of your business to pinpoint significant custom metrics. Jason explains, "You need your analytics to make sense for your business. For example, if you're running a hotel booking site, you want to know the number of hotel searches being run and the number of hotel rooms being booked. Customize your analytics for your business so you can drive the right KPIs."

  3. Remind users of your app’s value: 34% of app abandonment is fueled by a loss of interest, so create rich, contextual notifications like latest news, weather, or reminders to re-engage and increase your daily/monthly users. Google Cloud Messaging, for example, allows you to implement and manage notifications across Android and iOS. Jason advises using rich notifications to add quick actions, such as the ability to Archive an email via gMail notifications, and allowing users to control whether and how often they receive notifications.

The total time spent in apps per smartphone user is increasing, yet the total number of apps used has not changed. Users, therefore, are consolidating their time in certain favored apps. Incorporate Jason’s recommendations to keep your users engaged and come back tomorrow to hear from Dev Gogate, Mobile Solutions Consulting Manager at Google, to maximize your app quality.

Categories: Programming

Google Cloud Messaging - We've Come a Long Way

Thu, 12/17/2015 - 20:00

Posted by Laurence Moroney Developer Advocate

Google Cloud Messaging (GCM) is a technology that provides simple and reliable messaging to devices. In the last six months, the number of messages that GCM handles has more than doubled -- to 150 billion messages per day, and the number of applications has grown 25% to 750,000. With this growth in mind, we’re continuing to improve the service with some helpful updates for developers.

Google Cloud Messaging supports topic messaging - an easy way to segment your users’ devices into groups and send a message to the entire segment at once. We’re now happy to announce that we’re allowing unlimited free topics for your app. This means app developers can place an unlimited number of devices within each topic and create an unlimited number of topics.

Moovit uses topics to efficiently scale

Moovit, a community of 30 million+ users, helps improve transit routes in cities worldwide. Using GCM, Moovit has been able to create over 60,000 topics to help users in individual cities navigate the headache of daily transit.

"We started using GCM to power our push infrastructure in a more seamless, efficient way. Not only does GCM help us to send real-time updates to a high volume of tens of millions of users, keeping them informed of any transit information they need for a stress-free commute, but we don't have to spend extra time or energy developing an infrastructure for delivery on the backend. GCM Topics allows us to message users in hundreds of cities around the world with multi-platform support for both iOS and Android."

For example: Users of London’s Underground Service were impacted by recent strikes that disrupted the regular service. While Moovit has a global audience, only those impacted were notified, as Moovit used GCM topic messaging to send the message to only those that needed it.

National Public Radio (NPR) uses Topics for news personalization

NPR is a mission-driven multimedia news organization and radio program producer in the United States. To reach their users efficiently, NPR sends and schedules personalized notifications to their listeners via their NPR One App. For example, if you listened to the Aziz Ansari interview on the show All Things Considered, and wanted to hear more, you could subscribe to the topic ‘Aziz Ansari’ and receive a notification of his appearance on the Hidden Brain podcast. Similarly, you could subscribe to other topics such as Election 2016, Women in Combat or Pop Culture Happy Hour.

Tejas Mistrly, Mobile Product Manager for NPR, described their use of topics: “With GCM topic messaging, NPR is able to send and schedule personalized notifications to our listeners on NPR One. Whether to catch them up on the latest news or to tell them a story from a recommended podcast across public radio, GCM topic messaging gives us the tool set to send the most effective notifications that ties into our personalized radio app.”

New APIs for GCM topic management

Complementing unlimited free topics and the existing client-side API, we’re launching a new suite of server APIs that allow you to manage message subscriptions. The new APIs allow you to subscribe/unsubscribe devices individually or in batches, as well as allow retrieval of info on current subscriptions per device. We think the server-side API is a great tool to help you reduce roll-out friction, and allow for easy management and migration of subscriptions as your app grows.

To learn more about Google Cloud Messaging, visit the Google Developers Site, where you can learn more about how to build for this technology, and download sample implementations. There’s also a full reference implementation available on GitHub and the GCM Diagnostics tool for when you need help to troubleshoot.

Categories: Programming

Advanced Development Process with Apps Script

Thu, 12/17/2015 - 19:51

Originally posted on Google Apps Developers blog

Posted by Matt Hessinger, Project Specialist, Google Apps Script

Welcome to our 100th blog post on Apps Script! It’s amazing how far we’ve come from our first post back in 2010. We started out highlighting some of the simple ways that you could develop with the Apps platform. Today, we’re sharing tips and best practices for developing more complex Apps Script solutions by pointing out some community contributions.

Apps Script and modern development

The Apps Script editor does not allow you to use your own source code management tool, making it a challenge to collaborate with other developers. Managing development, test, and production versions of a project becomes very tedious. What if you could have the best of both worlds — the powerful integration with Google’s platform that Apps Script offers, along with the development tooling and best practices that you use every day? Now, you can.

npm install -g node-google-apps-script

This project, “node-google-apps-script”, is a Node.js based command-line interface (CLI) that uses Google Drive API to update Apps Script project from the command line. You can view the node package on the NPM site, and also view the GitHub repo. Both links have usage instructions. This tool was created by Dan Thareja, with additional features added by Matt Condon.

Before using the tool, take a look at the Apps Script Importing and Exporting Projects page. There are a few things that you should be aware of as you plan out your development process. There are also a few best practices that you can employ to take full advantage of developing in this approach.

There is a sample project that demonstrates some of the practices described in this post: click here to view that code on GitHub. To get all of the Apps Script samples, including this import/export development example:

git clone https://github.com/google/google-apps-script-samples.git
The sample is in the “import_export_development” subdirectory.

Your standalone Apps Script projects live in Google Drive. If you use a command-line interface (CLI) tool like the one linked above, you can work in your favorite editor, and commit and sync code to your chosen repository. You can add tasks in your task runner to push code up to one or more Apps Script projects, conditionally including or excluding code for different environments, checking coding style, linting, minifying, etc. You can more easily create and push UI-related files to a file host outside of Apps Script, which could be useful if those same files are used in other apps you are building.


Typical development tools, integrated with Apps Script via the Drive API

Apps Script Project Lifecycle Best-practices

In addition to the information on the Importing and Exporting Projects page, here are a few things to consider:

  • Your local file set is the master. If you add, delete or rename files locally, the next upload with either of the linked tools will automatically make the Apps Script project reflect your local file set.
  • You can name local files whatever you want. You just need to then append “.html” to any client-side “.js” or “.css” in a file staging task before uploading to your project. The tool referenced above treats any “.js” files that you stage for upload as Apps Script server script files (“.gs” in the editor). It treats any “.html” that you stage as “client” code that you’ll access via the HtmlService. This means that you can develop server scripts as JavaScript, with the “.js” extension, so that your local tools recognize JavaScript syntax. While developing, client-side code (i.e., code that you need to interact with via the HtmlService) can be “.html”, “.js”, or “.css”, allowing your editor to provide the right syntax highlighting and validation experience.

Over and above the editing experience, the biggest improvements you get by working outside the script editor is that you are no longer locked into working in just one Apps Script project. You can much more easily collaborate as a team, with individual developers having their own working Apps Script projects, while also having more controlled test, user acceptance and production versions, each with more process and security. Beyond just the consistency with other normal project practices, there are a few Apps Script specific ways you can leverage this multi-environment approach.


If you are going to use this approach, here are three best practices to consider:

  • Use specific configuration values for “local” development.
  • Build test methods that can run standalone.
  • Include dependencies for development and testing.
Best practice: Use specific configuration values for “local” development.

The provided sample shows a simple example of how a base configuration class could allow a developer to inject their local values for their own debugging and testing. In this case, the developer also added the annotation @NotOnlyCurrentDoc, which tells Apps Script that they need the full scope for Drive API access. In this project, the “production” deployment has the annotation @OnlyCurrentDoc, which leads to the OAuth scope that is limited to the document associated with script running as Sheets, Docs, or Forms add-on. If you add a standard file pattern to the source project’s “ignore” file, these developer-specific files will never get into the actual codebase.

Benefits for your project — Production can have more limited OAuth scopes, while a developer can use broader access during development. Developers can also have their own personal configuration settings to support their individual development efforts.

Best practice: Build test methods that can run standalone.

While there is no current way to trigger tests in an automated way, you still may want to author unit tests that validate specific functions within your projects. You’ll also likely have specific configuration values for testing. Once again, none of these files should make it into a production deployment. You can even use the Apps Script Execution API to drive those tests from a test runner!

Benefits for your project — You can author test functions, and keep them separate from the production Apps Script file. This slims down your production Apps Script project, and keeps the correct OAuth scopes that are needed for production users.

Best practice: Include dependencies for development and testing.

If you are developing an add-on for Sheets or Docs, and you expect to have an “active” item on the SpreadsheetApp. However when you are developing or testing, you may be running your Apps Script without an “active” context. If you need to develop in this mode, you can wrap the call to get the current active item in a method that also can determine what mode you are running in. This would allow your development or test instance to inject the ID of an “active” document to use for testing, while delegating to the getActive* result when running in a real context.

Benefits for your project — You can integrate better unit testing methodologies into your projects, even if the end deployment state dependents on resources that aren’t typically available when debugging.

Wrapping up

You now have the option to use your own development and source management tools. While you still do need to use the Apps Script editor in your application’s lifecycle — to publish as a web app or add-on, configure advanced services, etc. — taking this step will help you get the most out of the power of the Apps Script platform. Remember to check out Apps Script on the Google Developers site to get more information and samples for your Apps Script development.

If you happen to use python tools on the command line to facilitate your team’s build process, you can check out Joe Stump's python-gas-cli. You can view the package info here or the GitHub repo where you’ll also find usage instructions.

Here are some additional reference links related to this post:

Categories: Programming

Mobile Bootcamp Part I: Get your app into shape for the holiday season

Thu, 12/17/2015 - 17:57

Originally posted on DoubleClick Publisher Blog

During the 37 hours per month typically spent in apps, people look to their mobile devices for information and entertainment.

This comes as no surprise, however, to our DoubleClick customers. You already see most of your audience is mobile: more than half the queries on our platform today come from mobile devices, across mobile web and apps. This holiday season will bring increased traffic and even greater potential to grow revenue, peaking in January. Mobile app installs are expected to increase by 150% on Christmas Day compared to an average day in December.

To help you take advantage of the surge in user activity on mobile, and particularly in apps, we’ve gathered our most actionable research and best practices. Make the most of the holiday app frenzy with this four-day mobile bootcamp on reaching, engaging, and monetizing your app audiences.

Grow your app’s audience

Of the five hours per day that US consumers spend on smartphones, 54% of digital media time is spent in apps. How can you ensure your app is one of those? Cheney Tsai, our Mobile Solutions Consultant at Google, recommends five steps to help you connect with your audience everywhere.

  1. Get people talking about your app: 52% of users learn about an app from friends, family, or colleagues, proving yet again word-of-mouth is a reliable promotion method. Cheney suggests using App Invites, a beta feature for iOS and Android, which allows users to invite Google contacts to your app via email and SMS. As explained by Cheney, "First impressions matter! App Invites allow you to reach new users with a warm welcome, which could be game-changing for the long term value of your user. You can even reward the sender/receiver with a custom deal just for them."

  2. Make it easy for your existing users to find you, everywhere: By expanding your house ad campaigns to cross-promote on existing properties, you can target desktop users in addition to those on Android and iOS. Use App Indexing to redirect your SEO based traffic to your app; users who have the app are redirected into it while those without the app are prompted to install. Also, make sure your Google Play Store badge is prominently displayed on your website. Users are 47% more likely to trust and download apps upon seeing the Google Play badge!

  3. Optimize your creatives to pique users’ interests in stores: Your app’s presentation in app stores directly impacts downloads. Since the icon is the first impression, make it polished and descriptive with a featured image demonstrative of your app’s uniqueness. Experiment with the Play Store’s A/B testing features for different versions of graphic assets, titles, and descriptions. Cheney recommends playing up keywords with which users are most likely to find your app!

  4. Identify high performing channels and optimize with better analytics: Pinpoint your most successful app install campaigns and creatives to create an effective promotion strategy. For both iOS and Android, you can use Google Analytics to understand your user drop off points. Dive even deeper with app install tracking and custom campaigns to identify your top app referrers!

  5. Listen to your users and address their concerns: User comments may offer constructive feedback, so it’s integral to have a plan in place to respond and make changes. In Google Play Developer Console, you can reply to reviews to help users overcome a problem or communicate relevant information. According to developers like James Jerlecki at Text Plus, “The Reply to Reviews feature has essentially given me that direct line [to users] that I didn’t have before.”Just remember your reply is publicly visible, so ensure you have the right person in your organization replying.

With over 3.1 million apps across the Google Play and Apple stores, your app needs to be present whenever users are looking to discover new apps and stand out from the crowd when they find your app. Check out this blog tomorrow for recommendations from Jason Rosenblum, Mobile Solutions Consultant at Google, for engaging your users.

Categories: Programming