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/aggregator/E_GuestBook.asp' 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!

Feed aggregator
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.

Stuff The Internet Says On Scalability For December 2nd, 2016

Hey, it's HighScalability time:

 

A phrase you've probably heard a lot this week: AWS announces...

 

If you like this sort of Stuff then please support me on Patreon.
  • 18 minutes: latency to Mars; 100TB: biggest dynamodb table; 55M: visits to Kaiser were virtual; $2 Billion: yearly Uber losses; 91%: Apple's take of smartphone profits; 825: AI patents held by IBM; $8: hourly cost of a spot welding in the auto industry; 70%: Walmart website traffic was mobile; $3 billion: online black friday sales; 80%: IT jobs replaceable by automation; $7500: cost of the one terabit per second DDoS attack on Dyn; 

  • Quotable Quotes:
    • @BotmetricHQ: #AWS is deploying tens of thousands of servers every day, enough to power #Amazon in 2005 when it was a $8.5B Enterprise. #reInvent
    • bcantrill: From my perspective, if this rumor is true, it's a relief. Solaris died the moment that they made the source proprietary -- a decision so incredibly stupid that it still makes my head hurt six years later.
    • Dropbox: it can take up to 180 milliseconds for data traveling by undersea cables at nearly the speed of light to cross the Pacific Ocean. Data traveling across the Atlantic can take up to 90 milliseconds.
    • @James_R_Holmes: The AWS development cycle: 1) Have fun writing code for a few months 2) Delete and use new AWS service that replaces it
    • @swardley: * asked "Can Amazon be beaten?" Me : of course * : how? Me : ask your CEO * : they are asking Me : have you thought about working at Amazon?
    • @etherealmind: Whatever network vendors did to James Hamilton at AWS, he is NEVER going to forgive them.
    • Stratechery: the flexibility and modularity of AWS is the chief reason why it crushed Google’s initial cloud offering, Google App Engine, which launched back in 2008. Using App Engine entailed accepting a lot of decisions that Google made on your behalf; AWS let you build exactly what you needed.
    • @jbeda: AWS Lambda@Edge thing is huge. It is the evolution of the CDN. We'll see this until there are 100s of DCs available to users.
    • erikpukinskis: Everyone in this subthread is missing the point of open source industrial equipment. The point is not to get a cheap tractor, or even a good one. The point is not to have a tractor you can service. The point is to have a shared platform.
    • John Furrier: Mark my words, if Amazon does not start thinking about the open-source equation, they could see a revolt that no one’s ever seen before in the tech industry. If you’re using open source to build a company to take territory from others, there will be a revolt.
    • @toddtauber: As we've become more sophisticated at quantifying things, we've become less willing to take risks. via @asymco
    • Resilience Thinking: Being efficient, in a narrow sense, leads to elimination of redundancies-keeping only those things that are directly and immediately beneficial. We will show later that this kind of efficiency leads to drastic losses in resilience.
    • Connor Gibson: By placing advertisements around the outside of your game (in the header, footer and sidebars) as well as the possibility video overlays it is entirely possible to earn up to six figures through this platform.
    • Google Analytics: And maybe, if nothing else, I guess it suggests that despite the soup du jour — huge seed/A rounds, massive valuations, binary outcomes— you can sometimes do alright by just taking less money and more time.
    • badger_bodger: I'm starting to get Frontend Fatigue Fatigue.
    • Steve Yegge: But now, thanks to Moore's Law, even your wearable Android or iOS watch has gigs of storage and a phat CPU, so all the decisions they made turned out in retrospect to be overly conservative.  And as a result, the Android APIs and frameworks are far, far, FAR from what you would expect if you've come from literally any other UI framework on the planet.  They feel alien. 
    • David Rosenthal: Again we see that expensive operations with cheap requests create a vulnerability that requires mitigation. In this case rate limiting the ICMP type 3 code 3 packets that get checked is perhaps the best that can be done.
    • @IAmOnDemand: Private on public cloud means the you can burst public/private workloads intothe public and shut down yr premise or... #reinvent
    • @allingeek: It isn’t “serverless" if you own the server/device. It is just a functional programing framework. #reinvent
    • brilliantcode: If you told me to use Azure two years ago I would've laughed you out of the room. But here I am in 2016, using Azure, using ASP.net + IIS on Visual Studio. that's some powerful shit and currently AWS has cost leadership and perceived switching cost as their edge.
    • seregine: Having worked at both places for ~4 years each, I would say Amazon is much more of a product company, and a platform is really a collection of compelling products. Amazon really puts customers first...Google really puts ideas (or technology) first.
    • api: Amazon seems to be trying to build a 100% proprietary global mainframe that runs everywhere.
    • Athas: No, it [Erlang] does not use SIMD to any great extent. Erlang uses message passing, not data parallelism. Erlang is for concurrency, not parallelism, so it would benefit little from these kinds of massively parallel hardware.
    • @chuhnk: @adrianco @cloud_opinion funnily those of us who've built platforms at various startups now think a cloud provider is the best place to be.
    • @jbeda: So the guy now in charge of building OSS communities at @awscloud says you should just join Amazon? Communities are built on diversity.
    • @JoeEmison: There's also an aspect of some of these AWS services where they only exist because of problems with other AWS services.
    • logmeout: Until bandwidth pricing is fixed rather than nickel and dimeing us to death; a lot of us will choose fixed pricing alternatives to AWS, GCP and Rackspace.
    • arcticfox: 100%. I can't stand it [AWS]. It's unlimited liability for anyone that uses their service with no way to limit it. If you were able to set hard caps, you could have set yours at like $5 or even $0 (free tier) and never run into that.
    • @edw519: I hate batch processing so much that I won't even use the dishwasher. I just wash, dry, and put away real time.
    • @CodeBeard: it could be argued that games is the last real software industry. Libraries have reduced most business-useful code to glue.
    • Gall's Law: A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.
    • @mathewlodge: AWS now also designing its own ASICs for networking #Reinvent
    • @giano: From instances to services, AWS better than anybody else understood that use case specific wins over general purpose every day. #reinvent
    • @ben11kehoe: AWS hitting breadth of capability hard. Good counterpoint to recent "Google is 50% cheaper" news #reinvent
    • Michael E. Smith: But there are also positive effects of energized crowding. Urban economists and economic geographers have known for a long time that when businesses and industries concentrate themselves in cities, it leads to economies of scale and thus major gains in productivity. These effects are called agglomeration effects.
    • Andrew Huang: The inevitable slowdown of Moore’s Law may spell trouble for today’s technology giants, but it also creates an opportunity for the fledgling open-hardware movement to grow into something that potentially could be very big. 
    • Stratechery: This is Google’s bet when it comes to the enterprise cloud: open-sourcing Kubernetes was Google’s attempt to effectively build a browser on top of cloud infrastructure and thus decrease switching costs; the company’s equivalent of Google Search will be machine learning.

  • Just what has Amazon been up to?

Don't miss all that the Internet has to say on Scalability, click below and become eventually consistent with all scalability knowledge (which means this post has many more items to read so please keep on reading)...

Categories: Architecture

Indie game developers in Latin America sustain growth after launch on Google Play

Android Developers Blog - Fri, 12/02/2016 - 16:06

Posted by Kacey Fahey, Marketing Programs Manager, Google Play

Indie game developers are some of the most exciting and innovative teams to work with. While developers large and small exist on the same field, gone are the days where you hit publish and turn your back, moving on to the next project. We've gathered a few developer stories coming out of Latin America sharing experiences and advice.

Oktagon Games

Ronaldo Cruz, Founder and CEO of Oktagon Games tells us how "reviews provide great qualitative insight on the game helping us identify problems that may not be caught by analytics."
Tiny Bytes

Tiny Bytes reduced churn by 5% using an in-game tutorial and analytics.

Impossible Apps

Cleverson Schmidt of Impossible Apps shares how introducing in-app purchases helps diversify revenue streams and "can make the game profitable and self sustainable."


How useful did you find this blogpost?

Categories: Programming

Cypress - Dealing with flaky tests

Xebia Blog - Fri, 12/02/2016 - 10:32
Test automation is all about feedback. Feedback that gives you quality updates about the features your team has built. A continuous green build is always the goal because this should give you the confidence you need to go to production. Unfortunately, I’m more used to a “traffic light build”, a build which passes and fails

A Reminder of the Pseudo-Science of #NoEstimates

Herding Cats - Glen Alleman - Fri, 12/02/2016 - 02:09

When you hear...

#NoEstimates is a hashtag for the topic of exploring alternatives for making decisions in software development. That is, ways to make decisions with "No Estimates"

Think about the conjecture. How would you assess a decision in the presence of uncertainty without making an estimate of the outcome of that decision. Since there is not deterministic data available about the future, even though you may have deterministic data from the past. This would mean the future is like the past, there is no uncertainty about the future - either reducible (epistemic) or irreducible (aleatory). No conditions that were in place from the past will be changing in the future. Nothing is going to emerge that you have not accounted for. Nothing is going to change in any attribute, process, or people doing the work..

Such a process defies the principles of microeconomics of decision making. Defies the principles of managerial finance in the presence of uncertainty. Defies the principles of closed loop control systems in the presence of stochastic non-stationary systems. 

It simply defies the principles of logic

Pseudo–science and the art of software methods from Glen Alleman
Categories: Project Management

Post Agile Age: The Movement Is Dead

Don't get stuck.

Don’t get stuck.

In February 2001 the Agile Manifesto was signed by 17 people. The Manifesto is comprised of four values and 12 principles. The Manifesto acted as a lightning rod for what became the Agile movement.  It provided a new framework to think about how work should or could be approached. That framework challenged the standard thinking of how software should be developed, enhanced, and maintained. 2001 was a year of transition.  Even though most organizations were successful, the US economy was on the verge of a recession (the NERB tracked the 2001 recession from March 2001 to November 2001), many IT jobs were being outsourced, and the oft-quoted Chaos Reports suggested that software (and by extension hardware and systems) projects were late, over budget and did not deliver what was needed by the business.  Anyone who was related to the broad software development industry had numerous war stories about projects that were death marches or abject failures.  That said, all was not a wasteland. Most organizations were successful and most practitioners had also had success stories.  If everything was doom and gloom most have us would have left software development, because constant failure is debilitating.  Needless to say, the change was in the air in the late 90’s and early 00’s.  The Agile Movement caught fire.

As the Agile movement was born, early adopters showed great passion for embracing the concepts of experimentation to find better ways of working, breaking work into small parts, and self-organization and self-management so teams could work together better. The success of the early adopters influenced whole organizations to embrace Agile, which espoused the idea that there was not just one perfect way to develop, enhance and maintain software but rather the complexity of team and organization capabilities, business and technical factors and macro-environmental concerns (such as competition and regulation) required teams to have the flexibility to address.   In some cases, where organizations frowned on Agile, stories circulated of development teams revolting.  It was said that teams changed how they operated while hiding the fact from their process overlords (that was at least the perception).  I have always assumed that these stories were apocryphal; however, they made great stories to salt conference presentations with and I know I sat in rapt silence as I heard them recounted.

Over the past 15ish years Agile has taken off.  If we use the output of Google Book Ngram Viewer as a proxy for the popularity of Agile we see an extraordinary growth curve.

ngram

That said, the movement driven by values and principles has faded replaced by a focus on frameworks and techniques.  A little over a year ago, I witnessed an early advocate for Agile in an organization (someone that I had a lot of admiration for) stand up in front of a team he was part of and say, “I do not want to hear or talk about principles anymore, let’s just do BDD (behavior driven development).”  He was tired of fighting for keeping teams together over time, he was tired of being pressed for up-front requirements documents and in reality, he has tired of fighting to try new ways of working in his department. (Side note: the person in question now sells real estate).  The level of frustration is rife in many quarters of the software development community.

Today many organizations have accepted what Ken Schwaber, co-creator of Scrum, called “ScrumButt” and others now call blended/hybrid Agile (or worse).  Acceptance is the pragmatic approach and possibly the natural evolution of Agile. However, there are complications that while will ensure that Agile techniques are the go-to tools for a long time spell the end of Agile as a movement.

Planned essays in Post Agile Age Arc include:

  1.       Prescriptive Agile
  2.       Tool Centric Agile
  3.       The Return of People Versus System Management
  4.       Method Lemmings
  5.       The Age of Aquarius (Something Better is Beginning)

PS – I use Agile techniques in my writing, evaluating on daily basis and re-planning weekly.  This is the long way of saying your comments and input are important to shaping this and all of the work I post on the Software Process and Measurement blog.


Categories: Process Management

Indie game developers in Latin America sustain growth after launch on Google Play

Android Developers Blog - Thu, 12/01/2016 - 21:24

Posted by Kacey Fahey, Marketing Programs Manager, Google Play

Indie game developers are some of the most exciting and innovative teams to work with. While developers large and small exist on the same field, gone are the days where you hit publish and turn your back, moving on to the next project. We've gathered a few developer stories coming out of Latin America sharing experiences and advice.

Oktagon Games

Ronaldo Cruz, Founder and CEO of Oktagon Games tells us how "reviews provide great qualitative insight on the game helping us identify problems that may not be caught by analytics."
Tiny Bytes

Tiny Bytes reduced churn by 5% using an in-game tutorial and analytics.

Impossible Apps

Cleverson Schmidt of Impossible Apps shares how introducing in-app purchases helps diversify revenue streams and "can make the game profitable and self sustainable."


How useful did you find this blogpost?

Categories: Programming

Announcing OSS-Fuzz: Continuous Fuzzing for Open Source Software

Google Testing Blog - Thu, 12/01/2016 - 18:00
By Mike Aizatsky, Kostya Serebryany (Software Engineers, Dynamic Tools); Oliver Chang, Abhishek Arya (Security Engineers, Google Chrome); and Meredith Whittaker (Open Research Lead). 

We are happy to announce OSS-Fuzz, a new Beta program developed over the past years with the Core Infrastructure Initiative community. This program will provide continuous fuzzing for select core open source software.

Open source software is the backbone of the many apps, sites, services, and networked things that make up "the internet." It is important that the open source foundation be stable, secure, and reliable, as cracks and weaknesses impact all who build on it.

Recent security storiesconfirm that errors likebuffer overflow anduse-after-free can have serious, widespread consequences when they occur in critical open source software. These errors are not only serious, but notoriously difficult to find via routine code audits, even for experienced developers. That's wherefuzz testing comes in. By generating random inputs to a given program, fuzzing triggers and helps uncover errors quickly and thoroughly.

In recent years, several efficient general purpose fuzzing engines have been implemented (e.g. AFL and libFuzzer), and we use them to fuzz various components of the Chrome browser. These fuzzers, when combined with Sanitizers, can help find security vulnerabilities (e.g. buffer overflows, use-after-free, bad casts, integer overflows, etc), stability bugs (e.g. null dereferences, memory leaks, out-of-memory, assertion failures, etc) and sometimeseven logical bugs.

OSS-Fuzz's goal is to make common software infrastructure more secure and stable by combining modern fuzzing techniques with scalable distributed execution. OSS-Fuzz combines various fuzzing engines (initially, libFuzzer) with Sanitizers (initially, AddressSanitizer) and provides a massive distributed execution environment powered by ClusterFuzz.
Early successesOur initial trials with OSS-Fuzz have had good results. An example is the FreeType library, which is used on over a billion devices to display text (and which might even be rendering the characters you are reading now). It is important for FreeType to be stable and secure in an age when fonts are loaded over the Internet. Werner Lemberg, one of the FreeType developers, wasan early adopter of OSS-Fuzz. Recently the FreeType fuzzer found a new heap buffer overflow only a few hours after the source change:

ERROR: AddressSanitizer: heap-buffer-overflow on address 0x615000000ffa 
READ of size 2 at 0x615000000ffa thread T0
SCARINESS: 24 (2-byte-read-heap-buffer-overflow-far-from-bounds)
#0 0x885e06 in tt_face_vary_cvtsrc/truetype/ttgxvar.c:1556:31

OSS-Fuzz automatically notifiedthe maintainer, whofixed the bug; then OSS-Fuzz automaticallyconfirmed the fix. All in one day! You can see the full list of fixed and disclosed bugs found by OSS-Fuzz so far.
Contributions and feedback are welcomeOSS-Fuzz has already found 150 bugs in several widely used open source projects (and churns ~4 trillion test cases a week). With your help, we can make fuzzing a standard part of open source development, and work with the broader community of developers and security testers to ensure that bugs in critical open source applications, libraries, and APIs are discovered and fixed. We believe that this approach to automated security testing will result in real improvements to the security and stability of open source software.

OSS-Fuzz is launching in Beta right now, and will be accepting suggestions for candidate open source projects. In order for a project to be accepted to OSS-Fuzz, it needs to have a large user base and/or be critical to Global IT infrastructure, a general heuristic that we are intentionally leaving open to interpretation at this early stage. See more details and instructions on how to apply here.

Once a project is signed up for OSS-Fuzz, it is automatically subject to the 90-day disclosure deadline for newly reported bugs in our tracker (see details here). This matches industry's best practices and improves end-user security and stability by getting patches to users faster.

Help us ensure this program is truly serving the open source community and the internet which relies on this critical software, contribute and leave your feedback on GitHub.
Categories: Testing & QA

Announcing OSS-Fuzz: Continuous Fuzzing for Open Source Software

Google Testing Blog - Thu, 12/01/2016 - 18:00
By Mike Aizatsky, Kostya Serebryany (Software Engineers, Dynamic Tools); Oliver Chang, Abhishek Arya (Security Engineers, Google Chrome); and Meredith Whittaker (Open Research Lead). 

We are happy to announce OSS-Fuzz, a new Beta program developed over the past years with the Core Infrastructure Initiative community. This program will provide continuous fuzzing for select core open source software.

Open source software is the backbone of the many apps, sites, services, and networked things that make up "the internet." It is important that the open source foundation be stable, secure, and reliable, as cracks and weaknesses impact all who build on it.

Recent security storiesconfirm that errors likebuffer overflow anduse-after-free can have serious, widespread consequences when they occur in critical open source software. These errors are not only serious, but notoriously difficult to find via routine code audits, even for experienced developers. That's wherefuzz testing comes in. By generating random inputs to a given program, fuzzing triggers and helps uncover errors quickly and thoroughly.

In recent years, several efficient general purpose fuzzing engines have been implemented (e.g. AFL and libFuzzer), and we use them to fuzz various components of the Chrome browser. These fuzzers, when combined with Sanitizers, can help find security vulnerabilities (e.g. buffer overflows, use-after-free, bad casts, integer overflows, etc), stability bugs (e.g. null dereferences, memory leaks, out-of-memory, assertion failures, etc) and sometimeseven logical bugs.

OSS-Fuzz's goal is to make common software infrastructure more secure and stable by combining modern fuzzing techniques with scalable distributed execution. OSS-Fuzz combines various fuzzing engines (initially, libFuzzer) with Sanitizers (initially, AddressSanitizer) and provides a massive distributed execution environment powered by ClusterFuzz.
Early successesOur initial trials with OSS-Fuzz have had good results. An example is the FreeType library, which is used on over a billion devices to display text (and which might even be rendering the characters you are reading now). It is important for FreeType to be stable and secure in an age when fonts are loaded over the Internet. Werner Lemberg, one of the FreeType developers, wasan early adopter of OSS-Fuzz. Recently the FreeType fuzzer found a new heap buffer overflow only a few hours after the source change:

ERROR: AddressSanitizer: heap-buffer-overflow on address 0x615000000ffa 
READ of size 2 at 0x615000000ffa thread T0
SCARINESS: 24 (2-byte-read-heap-buffer-overflow-far-from-bounds)
#0 0x885e06 in tt_face_vary_cvtsrc/truetype/ttgxvar.c:1556:31

OSS-Fuzz automatically notifiedthe maintainer, whofixed the bug; then OSS-Fuzz automaticallyconfirmed the fix. All in one day! You can see the full list of fixed and disclosed bugs found by OSS-Fuzz so far.
Contributions and feedback are welcomeOSS-Fuzz has already found 150 bugs in several widely used open source projects (and churns ~4 trillion test cases a week). With your help, we can make fuzzing a standard part of open source development, and work with the broader community of developers and security testers to ensure that bugs in critical open source applications, libraries, and APIs are discovered and fixed. We believe that this approach to automated security testing will result in real improvements to the security and stability of open source software.

OSS-Fuzz is launching in Beta right now, and will be accepting suggestions for candidate open source projects. In order for a project to be accepted to OSS-Fuzz, it needs to have a large user base and/or be critical to Global IT infrastructure, a general heuristic that we are intentionally leaving open to interpretation at this early stage. See more details and instructions on how to apply here.

Once a project is signed up for OSS-Fuzz, it is automatically subject to the 90-day disclosure deadline for newly reported bugs in our tracker (see details here). This matches industry's best practices and improves end-user security and stability by getting patches to users faster.

Help us ensure this program is truly serving the open source community and the internet which relies on this critical software, contribute and leave your feedback on GitHub.
Categories: Testing & QA

Updated Udacity Android course prepares students for the Associate Android Developer Certification

Google Code Blog - Wed, 11/30/2016 - 20:41
Originally posted on Android Developers Blog

Posted by Jocelyn Becker, Senior Program Manager, Android Training

As one of our most popular Udacity courses, the Developing Android Appscourse was recently updated to ensure developers have the resources to build high quality apps. This course, which has already helped more than half a million developers learn to build Android apps, has been through the car wash and come out sparkling clean and updated.

Google and Udacity have worked together to update the course to include the very latest changes in Android and Android Studio, including how to use the new Constraint Layout editor, and how to use Firebase Job Dispatcher. Learn best practices for building Android apps using Android 7.0 (Nougat) while keeping your apps backwards compatible in older versions, learning at your own pace in your own time.

You sent us feedback that some of the lessons were a little difficult to get through, so we've restructured the lessons and added smaller apps for you to build as you progress through the course. So not only will you build the Sunshine weather app as a complete, integrated application that spans the entire course, but you'll also create an app in each lesson to help you learn individual concepts.

Build a To Do app and add new tasks as you learn how to build a ContentProvider.

This course brings back Android experts Dan Galpin and Reto Meier from Google, and Lyla Fujiwara from Udacity, and introduces new faces from Google and Udacity.
Start learning now at https://www.udacity.com/course/ud851.

Combined package for Developing Android Apps course and Associate Android Developer Certification

This updated course teaches the skills that are tested by the Associate Android Developer certification exam. Udacity is offering a package that combines the updated Developing Android Apps course with a voucher for the Associate Android Developer certification exam. If you pass this exam, you will earn the Associate Android Developer Certification and show that you are competent and skilled in tasks that an entry-level Android developer typically performs. Enroll in Udacity's Fast Track to get prepared and take the Associate Android developer exam at: https://www.udacity.com/course/nd818.

Categories: Programming

Generating slides from spreadsheet data

Google Code Blog - Wed, 11/30/2016 - 19:33
Originally posted on G Suite Developers Blog

Posted by Wesley Chun (@wescpy), Developer Advocate, G Suite

The G Suite team recently launched the very first Google Slides API, opening up a whole new set of possibilities, including leveraging data already sitting in a spreadsheet or database, and programmatically generating slide decks or slide content based on that data. Why is this a big deal? One of the key advantages of slide decks is that they can take database or spreadsheet data and make it more presentable for human consumption. This is useful when the need arises to communicate the information reflected by that data to management or potential customers.

Walking developers through a short application demonstrating both the Sheets and Slides APIs to make this happen is the topic of today's DevByte video. The sample app starts by reading all the necessary data from the spreadsheet using the Sheets API. The Slides API takes over from there, creating new slides for the data, then populating those slides with the Sheets data.

Developers interact with Slides by sending API requests. Similar to the Google Sheets API, these requests come in the form of JSON payloads. You create an array like in the JavaScript pseudocode below featuring requests to create a cell table on a slide and import a chart from a Sheet:


var requests = [    {"createTable": {        "elementProperties":            {"pageObjectId": slideID},        "rows": 8,        "columns": 4    }},    {"createSheetsChart": {        "spreadsheetId": sheetID,        "chartId": chartID,        "linkingMode": "LINKED",        "elementProperties": {            "pageObjectId": slideID,            "size": {                "height": { ... },                "width": { ... }            },            "transform": { ... }        }    }}];
If you've got at least one request, say in a variable named requests (as above), including the Sheet's sheetID and chartID plus the presentation page's slideID. You'd then pass it to the API with just one call to the presentations().batchUpdate() command, which in Python looks like the below if SLIDES is your API service endpoint:
SLIDES.presentations().batchUpdate(presentationId=slideID,        body=requests).execute()

Creating tables is fairly straightforward. Creating charts has some magical features, one of those being the linkingMode. A value of "LINKED" means that if the Sheet data changes (altering the chart in the Sheet), the same chart in a slide presentation can be refreshed to match the latest image, either by the API or in the Slides user interface! You can also request a plain old static image that doesn't change with the data by selecting a value of "NOT_LINKED_IMAGE" for linkingMode. More on this can be found in the documentationon creating charts, and check out the video where you'll see both those API requests in action.

For a detailed look at the complete code sample featured in the video, check out the deep dive post. We look forward to seeing the interesting integrations you build with the power of both APIs!

Categories: Programming

Generating slides from spreadsheet data

Google Code Blog - Wed, 11/30/2016 - 19:33
Originally posted on G Suite Developers Blog

Posted by Wesley Chun (@wescpy), Developer Advocate, G Suite

The G Suite team recently launched the very first Google Slides API, opening up a whole new set of possibilities, including leveraging data already sitting in a spreadsheet or database, and programmatically generating slide decks or slide content based on that data. Why is this a big deal? One of the key advantages of slide decks is that they can take database or spreadsheet data and make it more presentable for human consumption. This is useful when the need arises to communicate the information reflected by that data to management or potential customers.

Walking developers through a short application demonstrating both the Sheets and Slides APIs to make this happen is the topic of today's DevByte video. The sample app starts by reading all the necessary data from the spreadsheet using the Sheets API. The Slides API takes over from there, creating new slides for the data, then populating those slides with the Sheets data.

Developers interact with Slides by sending API requests. Similar to the Google Sheets API, these requests come in the form of JSON payloads. You create an array like in the JavaScript pseudocode below featuring requests to create a cell table on a slide and import a chart from a Sheet:


var requests = [    {"createTable": {        "elementProperties":            {"pageObjectId": slideID},        "rows": 8,        "columns": 4    }},    {"createSheetsChart": {        "spreadsheetId": sheetID,        "chartId": chartID,        "linkingMode": "LINKED",        "elementProperties": {            "pageObjectId": slideID,            "size": {                "height": { ... },                "width": { ... }            },            "transform": { ... }        }    }}];
If you've got at least one request, say in a variable named requests (as above), including the Sheet's sheetID and chartID plus the presentation page's slideID. You'd then pass it to the API with just one call to the presentations().batchUpdate() command, which in Python looks like the below if SLIDES is your API service endpoint:
SLIDES.presentations().batchUpdate(presentationId=slideID,        body=requests).execute()

Creating tables is fairly straightforward. Creating charts has some magical features, one of those being the linkingMode. A value of "LINKED" means that if the Sheet data changes (altering the chart in the Sheet), the same chart in a slide presentation can be refreshed to match the latest image, either by the API or in the Slides user interface! You can also request a plain old static image that doesn't change with the data by selecting a value of "NOT_LINKED_IMAGE" for linkingMode. More on this can be found in the documentationon creating charts, and check out the video where you'll see both those API requests in action.

For a detailed look at the complete code sample featured in the video, check out the deep dive post. We look forward to seeing the interesting integrations you build with the power of both APIs!

Categories: Programming

Updated Udacity Android course prepares students for the Associate Android Developer Certification

Android Developers Blog - Wed, 11/30/2016 - 18:45

Posted by Jocelyn Becker, Senior Program Manager, Android Training

As one of our most popular Udacity courses, the Developing Android Apps course was recently updated to ensure developers have the resources to build high quality apps. This course, which has already helped more than half a million developers learn to build Android apps, has been through the car wash and come out sparkling clean and updated.

Google and Udacity have worked together to update the course to include the very latest changes in Android and Android Studio, including how to use the new Constraint Layout editor, and how to use Firebase Job Dispatcher. Learn best practices for building Android apps using Android 7.0 (Nougat) while keeping your apps backwards compatible in older versions, learning at your own pace in your own time.

You sent us feedback that some of the lessons were a little difficult to get through, so we've restructured the lessons and added smaller apps for you to build as you progress through the course. So not only will you build the Sunshine weather app as a complete, integrated application that spans the entire course, but you'll also create an app in each lesson to help you learn individual concepts.

Build a To Do app and add new tasks as you learn how to build a ContentProvider.

This course brings back Android experts Dan Galpin and Reto Meier from Google, and Lyla Fujiwara from Udacity, and introduces new faces from Google and Udacity.
Start learning now at https://www.udacity.com/course/ud851.

Combined package for Developing Android Apps course and Associate Android Developer Certification

This updated course teaches the skills that are tested by the Associate Android Developer certification exam. Udacity is offering a package that combines the updated Developing Android Apps course with a voucher for the Associate Android Developer certification exam. If you pass this exam, you will earn the Associate Android Developer Certification and show that you are competent and skilled in tasks that an entry-level Android developer typically performs. Enroll in Udacity's Fast Track to get prepared and take the Associate Android developer exam at: https://www.udacity.com/course/nd818.

Categories: Programming

Learn tips from Memrise to increase in-app conversions with pricing experiments

Android Developers Blog - Wed, 11/30/2016 - 16:41

Posted by Tamzin Taylor, Partner Development Manager at Google Play, & Kristina Narusk, Head of Production at Memrise

Getting people to install your app is one thing, getting them to sign up to your paid offering is quite another. It's important to understand the complete journey your users take from installing your app to paying for something. Once you do, you can experiment on the flow to try and increase conversions. Memrise has found great success in experimenting on their language learning app to increase the number of paying users.

Four experiments Memrise use to improve conversions

Memrise makes languages fun with a number of different learning modes you can play to help increase your vocabulary in a chosen language. You can download the app for free and play some of the modes or take advantage of their premium subscription offering called 'Memrise Pro' which offers new game modes and additional features like offline learning. Memrise recently ran a number of conversion experiments with the main objective of increasing the Average Revenue Per Daily Active User (ARPDAU). These experiments tested multiple user experience and pricing experiment scenarios.

1. A/B test how messaging different user benefits can impact conversion

What they did: Memrise wanted to know what motivation and call to action would convert the most users to buy a Pro subscription from a locked game mode in the app. To do this, they ran an A/B test with two similar designs, featuring different reasons for the user to upgrade, and compared the results to their original upgrade messaging.



Screen Shot 2016-10-11 at 15.26.00.png Screen Shot 2016-10-11 at 15.25.34.png Test A: Focus on ‘difficult’ words with an orange background. Test B: Focus on ‘favorite’ words with a pink background.

Results: Test A performed the best. Conversion to Pro in Test A was 28% higher than in Test B. Pro mode usage was subsequently 9.7% higher in Test A compared to Test B too.

Next steps: After seeing how test A won the experiment, Memrise applied this creative across the board. Subscribers driven by that particular mode increased as a percentage of all subscriptions in the app by 16%. Memrise plans to run additional A/B tests at others points of conversion in the app to see if they can increase the results even further. They'll also try different text for the call to actions.

2. Test whether adapting to local price points results in sustainable uplift

In 2015, Google Play launched new minimum local price levels in countries around the world. To take advantage of the new price points, Memrise tested lowering localised prices in certain markets to better match purchasing power. Prices were an average of 6 times lower during this experiment.

Results: After 30 days, Memrise saw the following changes in conversions to paid users:



Categories: Programming

Calling European game developers, enter the Indie Games Contest by December 31

Android Developers Blog - Wed, 11/30/2016 - 03:32
Originally posted on Google Developers blog

Posted by Matteo Vallone, Google Play Games Business Development

To build awareness of the awesome innovation and art that indie game developers are bringing to users on Google Play, we have invested heavily over the past year in programs like Indie Corner, as well as events like the Google Play Indie Games Festivals in North America and Korea.

As part of that sustained effort, we also want to celebrate the passion and innovation of indie game developers with the introduction of the first-ever Google Play Indie Games Contest in Europe. The contest will recognize the best indie talent in several countries and offer prizes that will help you get your game noticed by industry experts and gamers worldwide.

Prizes for the finalists and winners:

  • An open showcase held at the Saatchi Gallery in London
  • YouTube influencer campaigns worth up to 100,000 EUR
  • Premium placements on Google Play
  • Tickets to Google I/O 2017 and other top industry events
  • Promotions on our channels
  • Special prizes for the best Unity game
  • And more!

Entering the contest:

If you're based in Czech Republic, Denmark, Finland, France (coming soon), Germany, Iceland, Israel, Netherlands, Norway, Poland (coming soon), Romania, Spain, Sweden, Turkey, or UK (excl. Northern Ireland), have 15 or less full time employees, and published a new game on Google Play after 1 January 2016, you may now be eligible to enter the contest. If you're planning on publishing a new game soon, you can also enter by submitting a private beta. Check out all the details in the terms and conditions. Submissions close on 31 December 2016.

The process:

Up to 20 finalists will get to showcase their games at an open event at the Saatchi Gallery in London on the 16th February 2017. At the event, the top 10 will be selected by the event attendees and the Google Play team. The top 10 will then get the opportunity to pitch to a jury of industry experts, from which the final winner and runners up will be selected.

Even if someone is NOT entering the contest:

Even if you're not eligible to enter the contest, you can still register to attend the final showcase event in London on 16 February 2017, check out some great indie games, and have fun with various industry experts and indie developers. We will also be hosting a workshop for all indie games developers from across EMEA in the new Google office in Kings Cross the next day, so this will be a packed week.

Get started:

Enter the Indie Games Contest now and visit the contest site to find out more about the contest, the event, and the workshop.

Categories: Programming

Are Vanity Metrics Statistically Valid?

How far is it?

Just because you can measure it, should you?

Over the last two weeks, we published three articles on vanity metrics:

Vanity Metrics in Software Organizations

Vanity Metrics? Maybe Not!

Vanity Metrics Have a Downside!

One of those articles elicited an interesting discussion on Twitter.   The discussion was predominately between @EtharUK (Ethar Alali) and @GregerWikstrand.  The discussion started by using the blog entry from 4 Big Myths of Profile Pictures from OKCupid to illustrate vanity metrics, and then shifted to a discussion of whether vanity metrics can be recognized based on statistical validity.  The nice thing about Twitter is that responses are forced to be succinct.  See the whole conversation here.

twitter-conversation

The observations that vanity metrics are not necessarily unsound is important to remember. Just because a metric is statically sound does not make it useful.  The four criteria to help recognize vanity metrics (gamability, linked to business outcomes, provides process knowledge and actionable) specifically did not include a statistical test because statistical validity is not discriminative for determining whether a metric is valuable or not.  I have a shelf in my library that includes several statistical texts that I use in my day-to-day business (I have a large box of stats and quantitative methods books in the attic). When it comes to stats, I have game. I can comfortably say that a measure or metric can only have value IF the data is correct AND the measures and metrics derived from that data is are statistically valid.

Quantitative management requires good data.  This statement seems so overtly obvious that it almost can go unstated.  Almost being the critical word. While most data collection errors are not due to conscious cheating in an IT organization.  The problem is typically loose or multiple definitions. This means it is difficult to get a good handle on what any piece of information means unless you do the due diligence to construct a definition that everyone understands and will use. For example, the “simple” measure of when a project ends is often different team to team.  Does a project end at implementation, after some support period or at the end of the year?  These are three common definitions I have observed in the same department within a single company.  Garbage in, garbage out (or worse)!

Statistical validity is a discussion of whether the conclusions drawn from any specific statistical test are accurate and reliable.  In order to draw correct conclusions, there are numerous statistical concepts that need to be understood, including things like a standard error, variability, and sample size. The type of test applied to a measure or metric will specify how to determine statistical validity for the conclusions drawn from the data.  While statistics are one of the most popular water cooler discussions (albeit people think they are talking about sports or politics), almost no one acknowledges the depth of statistical knowledge needed to drive important decisions based on quantitative data.  Note: I say this with the full knowledge that almost everyone that has been through college or university has had some formal exposure to statistics. All “good” measures or metrics must have statistical validity but just because a measure or metric is statically valid does not mean the conclusions drawn from them are useful.  

Good data and statically validity are just the table stakes that get us to the point of determining whether a measure or metric can be classified as a vanity metric. Without both good data and statistical validity, any measure or metric is not valuable.


Categories: Process Management

Your next growth market: Realizing the potential of MENA

Android Developers Blog - Tue, 11/29/2016 - 23:58

Posted by Mohammad El-Saadi, BD, Google Play

We know that many developers want to take advantage of growth opportunities in new regions, but are held back by not knowing the most important areas to focus on. That's why we wanted to share stories from our partners in the Middle East and North Africa (MENA). It's a fast growing region for Google Play, and one that already represents a sizable revenue opportunity. They've shared their experiences, and some key things to focus on if you're thinking of launching in the region.

Middle East and North Africa overview

MENA is a diverse region in terms of disposable income, access to connectivity, and smartphone penetration. However, it is possible to broadly group MENA into two types of market:

Growth markets

  • Examples: Saudi Arabia, United Arab Emirates (UAE), Kuwait and the rest of the Gulf Cooperation Council (GCC).
  • Very high smartphone penetration (on par with top western european markets),
  • Large disposable income
  • Robust growth in spend on mobile apps and games

Emerging markets

  • Examples: Morocco, Egypt and Iraq.
  • Large populations
  • Significant growth in smartphone (primarily Android) adoption.

Opportunities

Localization

If you want to be successful in MENA, localization is key. In Saudi Arabia 19 of the top 20 grossing apps & games have their Google Play Store listing localized and the majority of those have their actual app/game localized as well. By localizing to Arabic, mobile app and game developers have found great success in the region.

When Singapore-based Wego.com localized to Arabic, they achieved over 200% YoY growth in MENA, grew their app rating from 3.5 to over 4.5 among Arab travelers and increased Arab users' retention rates by 200%. Today, MENA represents over 65% of their users.

To do localization well, here are a few things to consider:

  • Localize your store listing into Arabic including your video, screenshots and text. If you are targeting specific countries within MENA consider using local dialects, otherwise use formal Arabic. Consider using Store Listing Experiments to optimize your listing for local audiences.
  • If applicable, flip your app/game UI to be right-to-left.
  • Beware of common issues when localizing to Arabic: Arabic letters appearing disjointed or showing up in reverse order and the ordering of words getting mixed up when sentences contain both Latin and Arabic words
  • Localize pricing by showing appropriate local currency and rounding. Note that different countries in MENA have different currencies and affordability/willingness to pay.
  • Plan around major local events such as the holy month of Ramadan, when after fasting from dawn to sunset, families and loved ones gather for meals, laughs and stories. We've found that during this month usage of apps and games increases significantly in MENA.
  • Provide local customer support
  • Be culturally sensitive in your communication and content - avoid stereotypes and keep in mind the relatively conservative nature of users in the region
  • Leverage the power of YouTube to reach your audiences in MENA. Saudi Arabia for instance is the second largest market for YouTube globally in terms of views per capita.

Refer to our Localization Checklist for some best practices when localizing for any language.

Gaming

Gaming is a high growth and revenue opportunity in MENA. Most countries in the region have a median age of 30 or lower, smartphone growth will continue to grow at double digits, which makes gaming a key segment for users in the region. Today's local top grossing charts and dominated by Midcore strategy games. Interestingly, GCC countries have some of the highest Average Revenue Per Paying User rates globally.

International titles, including Clash of Clans, Clash Royale, Mobile Strike and Clash of Kings, have performed incredibly well in the region. In addition, titles specifically targeting MENA have also seen tremendous success. Revenge of the Sultans, by ONEMT, from China, has been the top grossing title across several MENA countries for many months. Similarly, when IGG.com launched the Arabic version of Castle Clash, they grew revenue from MENA by 58% within 4 months.

As the market evolves, there is also a huge opportunity for other genres (such as RPG, FPS, and sports) which are not present at scale in the region yet.

Google Play in MENA

We continue to invest in making sure that users are able to pay for their favorite apps and games by launching locally relevant payment methods in MENA. Today, we have carrier billing available with the major networks in Saudi Arabia, UAE and Kuwait. We plan to expand coverage in more countries, including Qatar and Bahrain, in the future.

We are also committed to increasing the quality and availability of Arabic apps and games for MENA users, which is why we launched our Now in Arabic collection featuring apps and games that have recently localized to Arabic. This collection will be regularly updated. If you're interested in being included, submit your localized app/game.

Categories: Programming

Kubernetes resource graphing with Heapster, InfluxDB and Grafana

Agile Testing - Grig Gheorghiu - Tue, 11/29/2016 - 23:58
I know that the Cloud Native Computing Foundation chose Prometheus as the monitoring platform of choice for Kubernetes, but in this post I'll show you how to quickly get started with graphing CPU, memory, disk and network in a Kubernetes cluster using Heapster, InfluxDB and Grafana.

The documentation in the kubernetes/heapster GitHub repo is actually pretty good. Here's what I did:

$ git clone https://github.com/kubernetes/heapster.git
$ cd heapster/deploy/kube-config/influxdb

Look at the yaml manifests to see if you need to customize anything. I left everything 'as is' and ran:

$ kubectl create -f .
deployment "monitoring-grafana" created
service "monitoring-grafana" created
deployment "heapster" created
service "heapster" created
deployment "monitoring-influxdb" created
service "monitoring-influxdb" created

Then you can run 'kubectl cluster-info' and look for the monitoring-grafana endpoint. Since the monitoring-grafana service is of type LoadBalancer, if you run your Kubernetes cluster in AWS, the service creation will also involve the creation of an ELB. By default the ELB security group allows 80 from all, so I edited that to restrict it to some known IPs.

After a few minutes, you should see CPU and memory graphs shown in the Kubernetes dashboard. Here is an example showing pods running in the kube-system namespace:



You can also hit the Grafana endpoint and choose the Cluster or Pods dashboards. Note that if you have a namespace different from default and kube-system, you have to enter its name manually in the namespace field of the Grafana Pods dashboard. Only then you'll be able to see data corresponding to pods running in that namespace (or at least I had to jump through that hoop.)

Here is an example of graphs for the kubernetes-dashboard pod running in the kube-system namespace:


For info on how to customize the Grafana graphs, here's a good post from Deis.

Android Developer Story: Le Monde increases subscriptions with Google Play Billing

Android Developers Blog - Tue, 11/29/2016 - 19:07

Watch Edouard Andrieu, Director of Mobile, and Ahcene Amrouz, Product Manager for Mobile, explain how La Matinale has a 6% higher subscription conversion on Android than on other platforms thanks to tools like Google Play Billing.

Learn more how to add an introductory price to your subscription, and get the News Publisher Playbook to stay up-to-date with more features and best practices to help you find success for your news apps on Google Play.


How useful did you find this blogpost?
Categories: Programming

Keeping it real: Improving reviews and ratings in Google Play

Android Developers Blog - Tue, 11/29/2016 - 18:49

Posted by Andrew Ahn, Product Manager and Buddhika Kottahachchi, Product Manager

The Play Store contains the largest catalog of apps in the world. As our users make decisions about the apps they'd like to install, we want to ensure Play provides a trustworthy experience.

Recently, we announced our improvements in fighting fraudulent and spam app installs. In continuing our efforts to combat spammy behavior, we've also improved the ways we identify and remove fake reviews and ratings. With this enhanced capability we are now able to identify and remove more fake reviews and ratings with greater accuracy.

In the vast majority of cases, no action is needed. If you are working with someone else to promote your app (e.g., third-party marketing agencies), we advise you to check-in and ensure that their promotion techniques use legitimate practices, and adhere to the Google Play Developer Policy. The basic rule of thumb for reviews and ratings is that they should come from genuine users, and developers should not attempt to manipulate them in any form (e.g., fake, paid, incentivized).

We will continue making such enhancements to our systems that will further help protect the integrity of Google Play, our developer community, and ultimately our end users.

Categories: Programming

TensorFlow 0.12 adds support for Windows

Google Code Blog - Tue, 11/29/2016 - 18:32
Posted by Derek Murray, Software Engineer
Today we are launching preliminary Windows support for TensorFlow.

Native support for TensorFlow on Windows was one of the first requests we received after open-sourcing TensorFlow. Although some Windows users have managed to run TensorFlow in a Docker container, we wanted to provide a more complete experience including GPU support.

With the release of TensorFlow r0.12, we now provide a native TensorFlow package for Windows 7, 10, and Server 2016. This release enables you to speed up your TensorFlow training with any GPU that runs CUDA 8.

We have published the latest release as a pip package in PyPI, so now you can install TensorFlow with a single command:

     C:\> pip install tensorflow

And for GPU support:

     C:\> pip install tensorflow-gpu

More details about Windows support and all of the other new features in r0.12 are included in the release notes.

We're excited to offer more people the opportunity to use TF at maximum speed. Follow us on Twitter to be the first to hear about future releases – we're @tensorflow.

Acknowledgements

Many people have contributed to making this release possible. In particular, we'd like to thank Guenther Schmuelling and Vit Stepanovs from Microsoft for their significant contributions to Windows support.

Categories: Programming