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&page=8' 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.

Announcing the winners of the Google Play Indie Games Festival in San Francisco; Indie Games Contest coming soon to Europe

Android Developers Blog - Sat, 10/22/2016 - 08:22

Posted by Jamil Moledina, Google Play, Games Strategic Lead

Last Saturday, we hosted the first Google Play Indie Games Festival in North America, where we showcased 30 amazing games that celebrate the passion, innovation, and art of indies. After a competitive round of voting from fans and on-stage presentations to a jury of industry experts, we recognized seven finalists nominees and three winners.

Winners: bit bit blocks Presented by Greg Batha Bit Bit Blocks is a cute and action-packed competitive puzzle game. Play with your friends on a single screen, or challenge yourself in single player mode. Head-to-head puzzle play anytime, anywhere. Numbo Jumbo Presented by Kaveh Daryabeygi, Wombo Combo Numbo Jumbo is a casual mobile puzzle number game for iOS and Android. Players group numbers that add together: for example, [3, 5, 8] works because 3+5=8. Orbit - Playing with Gravity Presented by Chetan Surpur & Eric Rahman, Highkey Games ORBIT puts a gravity simulator at the heart of a puzzle game. Launch planets with a flick of your finger, and try to get them into orbit around black holes. ORBIT also features a sandbox where you can create your own universes, control time, and paint with gravity.
Finalist nominees:
Antihero [coming later in 2016] Presented by Tim Conkling Antihero is a "fast-paced strategy game with an (Oliver) Twist." Run a thieves' guild in a gas-lit, corrupt city. Recruit urchins, hire thugs, steal everything – and bribe, blackmail, and assassinate your opposition. Single-player and cross-platform multiplayer for desktops, tablets, and phones. Armajet [coming later in 2016] Presented by Nicola Geretti & Alexander Krivicich, Super Bit Machine Armajet is a free-to-play multiplayer shooter that pits teams of players against each other in fast-paced jetpack combat. Armajet is a best in class mobile game designed for spectator-friendly competitive gaming for tablets and smartphones. Players compete in a modern arena shooter that’s easy to learn, but hard to master. Norman's Night In: The Cave [coming later in 2016] Presented by Nick Iorfino & Alex Reed, Bactrian Games Norman's Night In is a 2D puzzle-platformer that tells the tale of Norman and his fateful fall into the world of cave. While test driving the latest model 3c Bowling Ball, Norman finds himself lost with nothing but his loaned bball and a weird feeling that somehow he was meant to be there. Parallyzed Presented by David Fox, Double Coconut Parallyzed is an atmospheric adventure platformer with unique gameplay, set in a dark and enchanting dreamscape. You play twin sisters who have been cast into separate dimensions. Red and Blue have different attributes and talents, are deeply connected, and have the ability to swap bodies at any time.

Finalists nominees and winners also received a range of prizes, including Google I/O 2017 tickets, a Tango Development kit, Google Cloud credits, an NVIDIA Android TV & K1 tablet, and a Razer Forge TV bundle.

Indie Games Contest coming to Europe

We’re continuing our effort to help indie game developers thrive by highlighting innovative and fun games for fans around the world. Today, we are announcing the Indie Games Contest for developers based in European countries (specific list of countries coming soon!). This is a great opportunity for indie games developers to win prizes that will help you showcase your art to industry experts and grow your business and your community of players worldwide. Make sure you don’t miss out on hearing the details by signing up here for updates.

As we shared at the festival, it’s rewarding to see how Google Play has evolved over the years. We’re now reaching over 1 billion users every month and there’s literally something for everyone. From virtual reality to family indie games, developers like you continue to inspire, provoke, and innovate through beautiful, artistic games.

Categories: Programming

Announcing Open Registration and Exhibitors for Google Play Indie Games Festival in San Francisco, Sept. 24

Android Developers Blog - Sat, 10/22/2016 - 08:14

Posted by Jamil Moledina, Google Play, Games Strategic Lead

To celebrate the art of the latest innovative indie games, we’re hosting the first Google Play Indie Games Festival in North America on September 24th in San Francisco. At the festival, Android fans and gamers will have a unique opportunity to play new and unreleased indie games from some of the most innovative developers in the US and Canada, as well as vote for their favorite ones.

Registration is now open and the event is free for everyone to enjoy.

We’re also excited to announce the games selected to exhibit and compete at the event. From over 200 submissions, we carefully picked 30 games that promise the most fun and engaging experiences to attendees. Fans will have a chance to play a variety of indie games not yet available publicly.

Check out the full list of games selected here and below.


A Matter of Murder
Antihero (coming soon)
AR Zombie (coming soon)
Armajet (coming soon)
Armor Blitz (coming soon)
Bit Bit Blocks (coming soon)
1979 Revolution: Black Friday (coming soon) Coffee Pot Terrarium (coming soon) Crayola® Worlds for Tango (coming soon) Dog Sled Saga (coming soon)
Endless Mine

Futurable 1. Summer City (coming soon) Gunhouse (coming soon)
HoloGrid: Monster Battle (coming soon) Hovercraft: Takedown
HOVR (coming soon)
Maruta 279 (coming soon)
Norman's Night In: The Cave (coming soon) Numeris

Orbit - Playing with Gravity
Parallyzed

Psychic (coming soon)
Riptide GP: Renegade
Roofbot

Sand Stories (coming soon)
SmashWars VR: Drone Racing
ThreeSwipes

Rainmaker: Ultimate Trading
Zombie Rollerz (coming soon)
Coming soon

Fans will also have the opportunity to vote for their favorite games at the festival, along with an authoritative panel of judges from Google Play and the game industry. They include:

  • Ron Carmel, Co-founder of Indie Fund; co-creator of World of Goo
  • Hyunse Chang, Business Development Manager at Google Play
  • Lina Chen, Co-founder & CEO of Nix Hydra
  • David Edery, CEO of Spry Fox
  • Maria Essig, Partner Manager, Indies at Google Play
  • Noah Falstein, Chief Game Designer at Google
  • Dan Fiden, Chief Strategy Officer of Funplus
  • Emily Greer, CEO of Kongregate
  • Alex Lee, Producer, Program Manager, Daydream & Project Tango at Google
  • Jordan Maron, Gamer and independent YouTuber “CaptainSparklez”

We are also thrilled to announce that veteran game designer and professor Richard Lemarchand will be the emcee for the event. He was lead designer at Crystal Dynamics and Naughty Dog, and is now Associate Chair and Associate Professor at the University of Southern California, School of Cinematic Arts, Interactive Media and Games Division.

The winning developers will receive prizes, such Google Cloud credits, NVIDIA SHIELD Android TVs and K1 tablets, Razer Forge TV bundles, and more, to recognize their efforts.

Join us for an exciting opportunity to connect with fellow game fans, get inspired, and celebrate the art of indie games. Learn more about the event on the event website.

Categories: Programming

Announcing Android add-ons for Docs and Sheets

Android Developers Blog - Sat, 10/22/2016 - 08:12
Posted by By Saurabh Gupta, Product Manager, Google Apps

We know many of you consider your mobile device as your primary tool to consume business information, but what if you could use it to get more work done, from anywhere? We’re excited to introduce Android add-ons for Docs and Sheets, a new way for you to do just that—whether it’s readying a contract you have for e-signature from your phone, or pulling in CRM data on your tablet for some quick analysis while waiting for your morning coffee, Android add-ons can help you accomplish more.

Get more done with your favorite third-party apps, no matter where you are We’ve worked with eight integration partners who have created seamless integrations for Docs and Sheets. Here’s a preview of just a few of them:
  • DocuSign - Trigger or complete a signing process from Docs or Sheets, and save the executed document to Drive. Read more here.
DocuSign lets you easily create signature envelopes right from Google Docs
  • ProsperWorks - Import your CRM data to create and update advanced dashboards, reports and graphs on Sheets, right from your device. Read more here.
  • AppSheet - Create powerful mobile apps directly from your data in Sheets instantly — no coding required. Read more here.
  • Scanbot - Scan your business documents using built-in OCR, and insert their contents into Docs as editable text. Read more here.


You can find these add-ons and many more, including PandaDoc, ZohoCRM, Teacher Aide, EasyBib and Classroom in our Google Play collection as well as directly from the add-on menus in Docs or Sheets.

Try them out today, and see how much more you can do.

Calling all developers: try our developer preview today!

As you can see from above, Android add-ons offer a great opportunity to build innovative integrations and reach Docs and Sheets users around the world. They’re basically Android apps that connect with Google Apps Script projects on the server-side, allowing them to access and manipulate data from Google Docs or Sheets using standard Apps Script techniques. Check out our documentation which includes UI guidelines as well as sample code to get you started. We’ve also made it easy for you to publish your apps with the Apps Script editor.

Android add-ons are available today as a developer preview. We look forward to seeing what you build!

Categories: Programming

Being An Agile Security Officer

Xebia Blog - Fri, 10/21/2016 - 13:31
Whenever I give a presentation, training, or just talk to security teams, it becomes clear that over the years a gap has been created between application security and development. A gap we created consciously and with intent and that became painfully visible with the introduction of Agile and DevOps. Suddenly exhaustive information security policies with

Systems Thinking: Putting Systems Thinking To Work In Process Improvement

Systems thinking helps to make sure process improvement see the big picture.

Systems thinking helps to make sure process improvement see the big picture.

Why isn’t systems thinking one of the first techniques any IT change agent reaches for?  Most change professionals have not been trained in applying systems thinking techniques because it is viewed as an engineering or academic practice. It provides a framework for the introduction of lean techniques, which have become popular to deliver the maximum business value. Lean provides tool and philosophy and systems thinking provides the breadth of scope to apply those tools.  Systems thinking provides process improvement with both a scope by defining what a system is and a business related goal for improvement, to improve the delivery of business value.

Affecting processes, systems and the environmental elements that are outside of the change agent’s control is difficult, requiring the development of influence and political capital outside of their comfort zone. For example, in an organization that is delivering a product that requires a hardware and software combination, a change that shortens the length of time needed to deliver the software may not impact the delivery time of the product if the hardware development does not keep pace. For another example, consider a set of process improvements meant to quicken the pace of requirements definition and evolution that feed into a classic stage gate for approval. The changes can be made moot by department boundaries within IT as easy as by processes and systems outside of IT. A few years ago, I observed a group of business analysts who embraced an iterative process for requirements elicitation, but still had to provide a single complete requirements definition document before the project could progress.  They had not been able to engage the owner of the stage gate process to fashion a scenario in which parts could be passed through the barrier as they were completed. Therefore little of the increased pace was transmitted to the overall process.

Process improvement begins by identifying opportunities. In order to use a systems thinking approach to process improvement we need to ensure that the boundary for process improvement is a whole system, a whole value chain, and provides the means to affect the output of the whole system. This helps ensure that any changes improve the overall performance of IT. One, simple approach I use to identify systems thinking process improvement opportunities begins by assembling a cross-functional team (or teams, for large supply-chain systems) that includes representatives with experience from the whole system – beginning to end.  This is similar to the process described in our discussion of value chain mapping. I facilitate the team through one or two sessions using a combination of affinity diagramming (brainstorming and mute-grouping) and mind mapping in order to identify the variables impacting the system.  Affinity diagramming is a technique of driving out and grouping large amounts of data though the use of seed questions and brainstorming, followed by team grouping exercise done without talking.  Mind mapping is then leveraged to mine the data for non-linear relationships and to prompt for completeness. Combining the two techniques, the cross functional team can take a holistic approach to making change. After we drive out the variables, I have the team work through building a desktop model to identify which variables the team feels will impact the ultimate performance of the system.  For the variables selected, I ask the team to identify trends underway in these variables and any external trends that impact these trends.  This generally requires a bit of research and the collection of performance data for the variables. Experimentation, like building mathematical models and process pilots, is used to determine if the identified variables will have a positive impact on the output of the system being studied.

Systems thinking is a powerful concept. However, the breadth of vision required to address even the small process improvements is intimating to many managers. So, they stay focused on their individual part of the process.  We have been taught that focusing on specific issues will help us improve what we do over time. Unfortunately, focusing on a narrow view of a complex system rarely provides enough information to affect overall customer experience or satisfaction. When improving development and maintenance processes, what really matters is that we deliver what we promised, when we promised and for what we promised. Then be in a position to do that as many times as required.  That last requirement means that our interactions, processes and people must be consumed in a holistic and sustainable manner. Building a backlog of process and human debt by focusing on steps rather than the whole does not deliver sustainable products.


Categories: Process Management

Creating EC2 and Route 53 resources with Terraform

Agile Testing - Grig Gheorghiu - Thu, 10/20/2016 - 22:14
Inspired by the great series of Terraform-related posts published on the Gruntwork blog, I've been experimenting with Terraform the last couple of days. So far, I like it a lot, and I think the point that Yevgeniy Brikman makes in the first post of the series, on why they chose Terraform over other tools (which are the usual suspects Chef, Puppet, Ansible), is a very valid point: Terraform is a declarative and client-only orchestration tool that allows you to manage immutable infrastructure. Read that post for more details about why this is a good thing.

In this short post I'll show how I am using Terraform in its Docker image incarnation to create an AWS ELB and a Route 53 CNAME record pointing to the name of the newly-created ELB.

I created a directory called terraform and created this Dockerfile inside it:

$ cat Dockerfile
FROM hashicorp/terraform:full
COPY data /data/
WORKDIR /data

My Terraform configuration files are under terraform/data locally. I have 2 files, one for variable declarations and one for the actual resource declarations.

Here is the variable declaration file:

$ cat data/vars.tf

variable "access_key" {}
variable "secret_key" {}
variable "region" {
  default = "us-west-2"
}

variable "exposed_http_port" {
  description = "The HTTP port exposed by the application"
  default = 8888
}

variable "security_group_id" {
  description = "The ID of the ELB security group"
  default = "sg-SOMEID"
}

variable "host1_id" {
  description = "EC2 Instance ID for ELB Host #1"
  default = "i-SOMEID1"
}

variable "host2_id" {
  description = "EC2 Instance ID for ELB Host #2"
  default = "i-SOMEID2"
}

variable "elb_cname" {
  description = "CNAME for the ELB"
}

variable "route53_zone_id" {
  description = "Zone ID for the Route 53 zone "
  default = "MY_ZONE_ID"
}

Note that I am making some assumptions, namely that the ELB will point to 2 EC2 instances. This is because I know beforehand which 2 instances I want to point it to. In my case, those instances are configured as Rancher hosts, and the ELB's purpose is to expose as port 80 to the world an internal Rancher load balancer port (say 8888).

Here is the resource declaration file:

$ cat data/main.tf

# --------------------------------------------------------
# CONFIGURE THE AWS CONNECTION
# --------------------------------------------------------

provider "aws" {
  access_key = "${var.access_key}"
  secret_key = "${var.secret_key}"
  region = "${var.region}"
}

# --------------------------------------------------------
# CREATE A NEW ELB
# --------------------------------------------------------

resource "aws_elb" "my-elb" {
  name = "MY-ELB"
  availability_zones = ["us-west-2a", "us-west-2b", "us-west-2c"]

  listener {
    instance_port = "${var.exposed_http_port}"
    instance_protocol = "http"
    lb_port = 80
    lb_protocol = "http"
  }

  health_check {
    healthy_threshold = 2
    unhealthy_threshold = 2
    timeout = 3
    target = "TCP:${var.exposed_http_port}"
    interval = 10
  }

  instances = ["${var.host1_id}", "${var.host2_id}"]
  security_groups = ["${var.security_group_id}"]
  cross_zone_load_balancing = true
  idle_timeout = 400
  connection_draining = true
  connection_draining_timeout = 400

  tags {
    Name = "MY-ELB"
  }
}

# --------------------------------------------------------
# CREATE A ROUTE 53 CNAME FOR THE ELB
# --------------------------------------------------------

resource "aws_route53_record" "my-elb-cname" {
  zone_id = "${var.route53_zone_id}"
  name = "${var.elb_cname}"
  type = "CNAME"
  ttl = "300"
  records = ["${aws_elb.my-elb.dns_name}"]
}

First I declare a provider of type aws, then I declare 2 resources, one of type aws_elb, and another one of type aws_route53_record. These types are all detailed in the very good Terraform documentation for the AWS provider.

The aws_elb resource defines an ELB named my-elb, which points to the 2 EC2 instances mentioned above. The instances are specified by their variable names from vars.tf, using the syntax ${var.VARIABLE_NAME}, e.g. ${var.host1_id}. For the other properties of the ELB resource, consult the Terraform aws_elb documentation.

The aws_route53_record defined a CNAME record in the given Route 53 zone file (specified via the route53_zone_id variable). An important thing to note here is that the CNAME points to the name of the ELB just created via the aws_elb.my-elb.dns_name variable. This is one of the powerful things you can do in Terraform - reference properties of resources in other resources.

Again, for more details on aws_route53_record, consult the Terraform documentation.

Given these files, I built a local Docker image:

$ docker build -t terraform:local

I can then run the Terraform 'plan' command to see what Terraform intends to do:

$ docker run -t --rm terraform:local plan \
-var "access_key=$TERRAFORM_AWS_ACCESS_KEY" \
-var "secret_key=$TERRAFORM_AWS_SECRET_KEY" \
-var "exposed_http_port=$LB_EXPOSED_HTTP_PORT" \
-var "elb_cname=$ELB_CNAME"

The nice thing about this is that I can run Terraform in exactly the same way via Jenkins. The variables above are defined in Jenkins either as credentials of type 'secret text' (the 2 AWS keys), or as build parameters of type string. In Jenkins, the Docker image name would be specified as an ECR image, something of the type ECR_ID.dkr.ecr.us-west-2.amazonaws.com/terraform.

After making sure that the plan corresponds to what I expected, I ran the Terraform apply command:

$ docker run -t --rm terraform:local apply \
-var "access_key=$TERRAFORM_AWS_ACCESS_KEY" \
-var "secret_key=$TERRAFORM_AWS_SECRET_KEY" \
-var "exposed_http_port=$LB_EXPOSED_HTTP_PORT" \
-var "elb_cname=$ELB_CNAME"

One thing to note is that the AWS credentials I used are for an IAM user that has only the privileges needed to create the resources I need. I tinkered with the IAM policy generator until I got it right. Terraform will emit various AWS errors when it's not able to make certain calls. Those errors help you add the required privileges to the IAM policies. In my case, here are some example of policies.

Allow all ELB operations:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1476919435000",
"Effect": "Allow",
"Action": [ "elasticloadbalancing:*"
],
"Resource": [
"*"
]
}
]
}
Allow the ec2:DescribeSecurityGroups operation:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1476983196000",
"Effect": "Allow",
"Action": [
"ec2:DescribeSecurityGroups"
],
"Resource": [
"*"
]
}
]
}
Allow the route53:GetHostedZone and GetChange operations:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1476986919000",
"Effect": "Allow",
"Action": [
"route53:GetHostedZone",
"route53:GetChange"
],
"Resource": [
"*"
]
}
]
}

Allow the creation, changing and listing of Route 53 record sets in a given Route 53 zone file:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1476987070000",
"Effect": "Allow",
"Action": [
"route53:ChangeResourceRecordSets",
"route53:ListResourceRecordSets"
],
"Resource": [
"arn:aws:route53:::hostedzone/MY_ZONE_ID"
]
}
]
}

Future Tidal Wave of Mobile Video

In this article I will examine the growing trends of Internet Mobile video and how consumer behaviour is rapidly adopting to a world of ‘always on content’ and discuss the impact on the underlying infrastructure.
Categories: Architecture

Gone Fishin'

Well, not exactly Fishin', but I'll be on a month long vacation starting today. I won't be posting (much) new content, so we'll all have a break. Disappointing, I know. Please use this time for quiet contemplation and other inappropriate activities. See you on down the road...

Categories: Architecture

Now available: Android 7.1 Developer Preview

Android Developers Blog - Wed, 10/19/2016 - 22:36

Posted by Dave Burke, VP of Engineering

A couple of weeks ago we announced that a developer preview of Android 7.1 Nougat was on the way. You can get started with this new release today by downloading the SDK and tools. To get the 7.1 release on your eligible device, enroll your device in the Android Beta program. If your device is already enrolled, you'll receive the update automatically.

What’s in the Developer Preview?

The Android 7.1 Developer Preview gives you everything you need to test your app on the new platform or extend it with new features like app shortcuts and image keyboard support. It includes an updated SDK and tools, documentation and samples, as well as emulators and device system images for running your apps on supported devices.

We’re continuing the model we used in N and earlier releases, and with Android 7.1 being an incremental release there are a few differences to highlight:

  • Since 7.1 has already launched on Pixel, we’re delivering the initial Developer Preview at beta quality for the Nexus lineup of devices. The goal is to tease out any device-specific issues.
  • We’ve finalized the new APIs as API Level 25
  • We’ve opened up publishing on Google Play for apps targeting the new API level, so you can update your apps soon as you are ready.

After the initial preview release, we plan to deliver an update in November followed by the final public release to the Android Open Source Project (AOSP) in December. Initially available on Nexus 5X, Nexus 6P, and Pixel C devices, we’ll extend the Developer Preview to other devices in November.

Get your apps ready for Android 7.1

To get started, update to Android Studio 2.2.2 and download API Level 25 platform, emulator system images and tools. The final API Level 25 SDK is available for download through the SDK Manager in Android Studio.

Once you’ve installed the API Level 25 SDK, you can update your project’s compileSdkVersion to 25 to build and test against the new APIs. If you’re doing compatibility testing, we recommend updating your app’s targetSdkVersion to 25 to test your app with compatibility behaviors disabled. For details on how to set up your app with the API Level 25 SDK, see Set up the Preview.

If you’re adding app shortcuts or circular launcher icons to your app, you can use Android Studio’s built-in Image Asset Studio to quickly help you create icons of different sizes that meet the material design guidelines.

The Google APIs Emulator System images shipped with the Android API Level 25 SDK include support for round icons and the new Google Pixel Launcher. The Google API system image allows you to test how your app’s circular app icons look in devices that support circular icons. Also, if you are developing live wallpapers, you can also use the the new system images with the Android Emulator to test the enhanced preview metadata in Android 7.1.

To help you add image keyboard support, you can use the Messenger and Google Keyboard apps included in the preview system images for testing as they include support for this new API.

Along with the API Level 25 SDK, we have also updated the Android Support Library to 25.0.0. The new version lets you add image keyboard support with compatibility back to API level 13. It also introduces BottomNavigationView widget, which implements the bottom navigation pattern from the material design guidelines.

For details on API Level 25 check out the API diffs and the updated API reference on the developer preview site.

Image keyboard support on Nexus 6P

You can use the Android Emulator in Android Studio to test your circular app icons & shortcuts in a launcher

App shortcuts on Nexus 6P

You can use the Image Asset tool to quickly create circular icon assets.

Publish your apps to alpha, beta or production channels in Google Play

Since the Android 7.1 APIs are final, you can publish updates compiling with, and optionally targeting, API 25 to Google Play. You can now publish app updates that use API 25 to your alpha, beta, or even production channels in the Google Play Developer Console. In this way, push your app updates to users whose devices are running Android 7.1, such as Pixel and Android Beta devices. How to Get Android 7.1 Developer Preview on Your Eligible Device

If you are already enrolled in the Android Beta program, then your eligible enrolled devices will get the Android 7.1 Developer Preview update right away, no action is needed on your part. If you aren’t yet enrolled in Android Beta, the easiest way to get started is to visit android.com/beta and opt-in your eligible Android phone or tablet -- you’ll soon receive this (and later) preview updates over-the-air. If you have an enrolled device and do not want to receive the update, just visit Android Beta and unenroll the device. You can also download and flash this update manually.

We welcome your feedback in the Developer Preview issue tracker, N Preview Developer community, or Android Beta community as we work towards the consumer release in December!

Categories: Programming

Google Open Source Report Card

Google Code Blog - Wed, 10/19/2016 - 18:55
Originally posted on Google Open Source Blog
Posted by Josh Simmons, Open Source Programs Office

Open source software enables Google to build things quickly and efficiently without reinventing the wheel, allowing us to focus on solving new problems. We stand on the shoulders of giants and we know it. This is why we support open source and make it easy for Googlers to release the projects they’re working on internally as open source.

Today we’re sharing our first Open Source Report Card, highlighting our most popular projects, sharing a few statistics and detailing some of the projects we’ve released in 2016.

We’ve open sourced over 20 million lines of code to date and you can find a listing of some of our best known project releases on our website. Here are some of our most popular projects:
  • Android - a software stack for mobile devices that includes an operating system, middleware and key applications.
  • Chromium - a project encompassing Chromium, the software behind Google Chrome, and Chromium OS, the software behind Google Chrome OS devices.
  • Angular - a web application framework for JavaScript and Dart focused on developer productivity, speed and testability.
  • TensorFlow - a library for numerical computation using data flow graphics with support for scalable machine learning across platforms from data centers to embedded devices.
  • Go - a statically typed and compiled programming language that is expressive, concise, clean and efficient.
  • Kubernetes - a system for automating deployment, operations and scaling of containerized applications.
  • Polymer - a lightweight library built on top of Web Components APIs for building encapsulated re-usable elements in web applications.
  • Protobuf - an extensible, language-neutral and platform-neutral mechanism for serializing structured data.
  • Guava - a set of Java core libraries that includes new collection types (such as multimap and multiset), immutable collections, a graph library, functional types, an in-memory cache, and APIs/utilities for concurrency, I/O, hashing, primitives, reflection, string processing and much more.
  • Yeoman - a robust and opinionated set of scaffolding tools including libraries and a workflow that can help developers quickly build beautiful and compelling web applications.
While it’s difficult to measure the full scope of open source at Google, we can use the subset of projects that are on GitHub to gather some interesting data. Today our GitHub footprint includes over 84 organizations and 3,499 repositories, 773 of which were created this year.

Googlers use countless languages from Assembly to XSLT, but what are their favorites? GitHub flags the most heavily used language in a repository and we can use that to find out. A survey of GitHub repositories shows us these are some of the languages Googlers use most often:
  • JavaScript
  • Java
  • C/C++
  • Go
  • Python
  • TypeScript
  • Dart
  • PHP
  • Objective-C
  • C#
Many things can be gleaned using the open source GitHub dataset on BigQuery, like usage of tabs versus spaces and the most popular Go packages. What about how many times Googlers have committed to open source projects on GitHub? We can search for Google.com email addresses to get a baseline number of Googler commits. Here’s our query:

SELECT count(*) as n
FROM [bigquery-public-data:github_repos.commits]
WHERE committer.date > '2016-01-01 00:00'
AND REGEXP_EXTRACT(author.email, r'.*@(.*)') = 'google.com'


With this, we learn that Googlers have made 142,527 commits to open source projects on GitHub since the start of the year. This dataset goes back to 2011 and we can tweak this query to find out that Googlers have made 719,012 commits since then. Again, this is just a baseline number as it doesn’t count commits made with other email addresses.

Looking back at the projects we’ve open-sourced in 2016 there’s a lot to be excited about. We have released open source software, hardware and datasets. Let’s take a look at some of this year’s releases.

Seesaw
Seesaw is a Linux Virtual Server (LVS) based load balancing platform developed in Go by our Site Reliability Engineers. Seesaw, like many projects, was built to scratch our own itch.

From our blog post announcing its release: “We needed the ability to handle traffic for unicast and anycast VIPs, perform load balancing with NAT and DSR (also known as DR), and perform adequate health checks against the backends. Above all we wanted a platform that allowed for ease of management, including automated deployment of configuration changes.”

Vendor Security Assessment Questionnaire (VSAQ)
We assess the security of hundreds of vendors every year and have developed a process to automate much of the initial information gathering with VSAQ. Many vendors found our questionnaires intuitive and flexible, so we decided to shared them. The VSAQ Framework includes four extensible questionnaire templates covering web applications, privacy programs, infrastructure as well as physical and data center security. You can learn more about it in our announcement blog post.

OpenThread
OpenThread, released by Nest, is a complete implementation of the Thread protocol for connected devices in the home. This is especially important because of the fragmentation we’re seeing in this space. Development of OpenThread is supported by ARM, Microsoft, Qualcomm, Texas Instruments and other major vendors.

Magenta
Can we use machine learning to create compelling art and music? That’s the question that animates Magenta, a project from the Google Brain team based on TensorFlow. The aim is to advance the state of the art in machine intelligence for music and art generation and build a collaborative community of artists, coders and machine learning researchers. Read the release announcement for more information.

Omnitone
Virtual reality (VR) isn’t nearly as immersive without spatial audio and much of VR development is taking place on proprietary platforms. Omnitone is an open library built by members of the Chrome Team that brings spatial audio to the browser. Omnitone builds on standard Web Audio APIs to deliver an immersive experience and can be used alongside projects like WebVR. Find out more in our blog post announcing the project’s release.

Science Journal
Today’s smartphones are packed with sensors that can tell us interesting things about the world around us. We launched Science Journal to help educators, students and citizen scientists tap into those sensors. You can learn more about the project in our announcement blog post.

Cartographer
Cartographer is a library for real-time simultaneous localization and mapping (SLAM) in 2D and 3D with Robot Operating System (ROS) support. Combining data from a variety of sensors, this library computes positioning and maps surroundings. This is a key element of self-driving cars, UAVs and robotics as well as efforts to map the insides of famous buildings. More information on Cartographer can be found in our blog post announcing its release.

This is just a small sampling of what we’ve released this year. Follow the Google Open Source Blog to stay apprised of Google’s open source software, hardware and data releases.
Categories: Programming

Software Development Linkopedia October 2016

From the Editor of Methods & Tools - Wed, 10/19/2016 - 11:02
Here is our monthly selection of knowledge on programming, software testing and project management. This month you will find some interesting information and opinions about the life and career of a software developer, technical debt, DevOps, software testing, metrics, microservices, API and mobile testing. Blog: Being A Developer After 40 Blog: Tech Debt Snowball – […]

Neo4j: Detecting rogue spaces in CSV headers with LOAD CSV

Mark Needham - Wed, 10/19/2016 - 06:16

Last week I was helping someone load the data from a CSV file into Neo4j and we were having trouble filtering out rows which contained a null value in one of the columns.

This is what the data looked like:

load csv with headers from "file:///foo.csv" as row
RETURN row
╒══════════════════════════════════╕
│row                               │
╞══════════════════════════════════╡
│{key1: a,  key2: (null),  key3: c}│
├──────────────────────────────────┤
│{key1: d,  key2: e,  key3: f}     │
└──────────────────────────────────┘

We’d like to filter out any rows which have ‘key2’ as null, so let’s tweak our query to do that:

load csv with headers from "file:///foo.csv" as row
WITH row WHERE NOT row.key2 is null
RETURN row
(no rows)

Hmmm that’s odd, it’s got rid of both rows. We’d expect to see the 2nd row since that doesn’t have a null value.

At this point we might suspect that what we’re seeing on the screen isn’t actually what the data looks like. Let’s write the following query to check our header values:

load csv with headers from "file:///foo.csv" as row
WITH row LIMIT 1
UNWIND keys(row) AS key
RETURN key, SIZE(key)
╒═════╤═════════╕
│key  │SIZE(key)│
╞═════╪═════════╡
│key1 │4        │
├─────┼─────────┤
│ key2│5        │
├─────┼─────────┤
│ key3│5        │
└─────┴─────────┘

The second column tells us that there are some extra characters in the columns for ‘key2’ and ‘key3’ or rather ‘ key2’ and ‘ key3’. In this case they are spaces, but it could easily be another character:

load csv with headers from "file:///foo.csv" as row
WITH row LIMIT 1
UNWIND keys(row) AS key
RETURN key, replace(key, " ", "_SPACE_") AS spaces
╒═════╤═══════════╕
│key  │spaces     │
╞═════╪═══════════╡
│key1 │key1       │
├─────┼───────────┤
│ key2│_SPACE_key2│
├─────┼───────────┤
│ key3│_SPACE_key3│
└─────┴───────────┘

If we clean up our CSV file and try again everything works as expected:

load csv with headers from "file:///foo.csv" as row
WITH row LIMIT 1
UNWIND keys(row) AS key
RETURN key, SIZE(key)
╒════╤═════════╕
│key │SIZE(key)│
╞════╪═════════╡
│key1│4        │
├────┼─────────┤
│key2│4        │
├────┼─────────┤
│key3│4        │
└────┴─────────┘
load csv with headers from "file:///foo.csv" as row
WITH row WHERE NOT row.key2 is null
RETURN row
╒═══════════════════════════╕
│row                        │
╞═══════════════════════════╡
│{key1: d, key2: e, key3: f}│
└───────────────────────────┘
Categories: Programming

Systems Thinking: Habits Of A Systems Thinker

Sometimes you have to seek a little harder to understand the big picture.

Sometimes you have to seek a little harder to understand the big picture.

We should be guided by theory, not by numbers. – W.E. Deming

Many process improvement programs falter when, despite our best efforts, they don’t improve the overall performance of IT. The impact of fixing individual processes can easily get lost in the weeds; the impact overtaken by the inertia of the overall systems. Systems thinking is a way to view the world, including organizations, from a broad perspective that includes structures, patterns, and events.  Systems thinking is all about the big picture. Grasping the big picture is important when approaching any change program.  It becomes even more critical when the environment you are changing is complex and previous attempts at change have been less than successful. The world that professional developers operate within is complex, even though the goal of satisfying the projects stakeholders, on the surface, seems so simple. Every element of our work is part of a larger system that visibly and invisibly shapes our individual and organizational opportunities and risks.  The combination of complexity and the nagging issues that have dogged software-centric product development and maintenance suggest that real innovation will only come through systems thinking.

The Waters Foundation, a group dedicated to applying systems thinking to education, suggests a set of “Habits of a Systems Thinker.” The habits are:

  • Seeking to understand the big picture
  • Observing how elements within systems change over time, generating patterns and trends
  • Recognizing that a system’s structure generates its behavior
  • Identifying the circular nature of complex cause and effect relationships
  • Changing perspectives to increase understanding
  • Surfacing and tests assumptions
  • Considering an issue fully and resists the urge to come to a quick conclusion
  • Considering how mental models affect current reality and the future
  • Using understanding of system structure to identify possible leverage action
  • Considering both short and long-term consequences of actions
  • Finding where unintended consequences emerge
  • Recognizing the impact of time delays when exploring cause and effect relationships
  • Checking results and changes actions if needed: “successive approximation”

These habits illustrate that to really create change you need to take the overall process into account and test all of our assumptions before you can know that your change is effective.

An example presented at MIT’s System Design and Management (SDM) program on Oct. 22 and 23 exposed the need to address complexity through holistic solutions. A hospital scenario was described in which alarm fatigue has occurred, leading to negative patient outcomes. Alarm fatigue occurs when health professionals are overwhelmed by monitoring medical devices that provide data and alerts.  The devices don’t interoperate, therefore all of the data and alerts just create noise, which can hide real problems.  Any IT manager that has reviewed multiple monthly project status reports and updates can appreciate how a specific problem signal could be missed and what the consequences might be.  Systems thinking applied through the filter of the “Habits of a Systems Thinker” is tailor-made to help us conceptualize, understand and then address complex problems; to find solutions for problems that seem elusive or that reoccur in an organization.


Categories: Process Management

[New eBook] Download The No-Nonsense Guide to Native Ads

Google Code Blog - Mon, 10/17/2016 - 18:10

Posted by Vishal Kumar, Senior Product Manager, AdMob

Originally posted to the Inside AdMob blog

Recently we launched a new eBook called "The No-Nonsense Guide to Native Ads", the latest in our No-Nonsense series. This guide is designed to provide a comprehensive overview of native ads and share practical tips and best practices for implementing native ads in your app.

Over the last several years, app users have raised their expectations for a high quality app UX. To meet these expectations, ad formats have evolved accordingly. The most fitting new format that meets these higher expectations is native ads – ads that match the look and feel of the surrounding app content. And as spending on native ads is expected to grow to $21 billion in 2018, this presents a huge opportunity for publishers to enhance their user experience and tap into new revenues.

In the eBook, you’ll learn:

  • Guiding design principles that will help you better implement native ads 
  • Practical tips and best practices for implementing native ads with lots of examples 
  • Tips on how to set up a proper A/B test to begin testing native ads 
  • How AdMob can help you implement native ads

Download your copy here:

Categories: Programming

Datanet: a New CRDT Database that Let's You Do Bad Bad Things to Distributed Data

 

We've had databases targeting consistency. These are your typical RDBMSs. We've had databases targeting availability. These are your typical NoSQL databases.

If you're using your CAP decoder ring you know what's next...what databases do we have that target making concurrency a first class feature? That promise to thrive and continue to function when network partitions occur?

No many, but we have a brand new concurrency oriented database: Datanet - a P2P replication system that utilizes CRDT algorithms to allow multiple concurrent actors to modify data and then automatically & sensibly resolve modification conflicts.

Datanet is the creation of Russell Sullivan. Russell spent over three years hidden away in his mad scientist layer researching, thinking, coding, refining, and testing Datanet. You may remember Russell. He has been involved with several articles on HighScalability and he wrote AlchemyDB, a NoSQL database, which was acquired by Aerospike.

So Russell has a feel for what's next. When he built AlchemyDB he was way ahead of the pack and now he thinks practical, programmer friendly CRDTs are what's next. Why?

Concurrency and data locality. To quote Russell:

Datanet lets you ship data to the spot where the action is happening. When the action happens it is processed locally, your system's reactivity is insanely quick. This is pretty much the opposite of the non-concurrent case where you need to go to a specific machine in the cloud to modify a piece of data regardless of where the action takes place. As your system grows, the concurrent approach is superior.

We have been slowly moving away from transactions towards NoSQL for reasons of scalability, availability, robustness, etc. Datanet continues this evolution by taking the next step and moving towards extreme distribution: supporting tons of concurrent writers.

The shift is to more distribution in computation. We went from one app-server & one DB to app-server-clusters and clustered-DBs, to geographically distributed data-centers, and now we are going much further with Datanet, data is distributed anywhere you need it to a local cache that functions as a database master.

How does Datanet work?

In Datanet, the same piece of data can simultaneously exist as a write-able entity in many many places in the stack. Datanet is a different way of looking at data: Datanet more closely resembles an internet routing protocol than a traditional client-server database ... and this mirrors the current realities that data is much more in flight than it used to be.

What bad bad things can you do to your distributed data? Here's an amazing video of how Datanet recovers quickly, predictably, and automatically from Chaos Monkey level extinction events. It's pretty slick. 

 

Here's an email interview I did with Russell. He goes into a lot more detail about Datanet and what it's all about. I think you will find it interesting. 

Let's start with your name and a little of your background?
Categories: Architecture

Polymer Summit Livestream 2016

Google Code Blog - Mon, 10/17/2016 - 09:30

Posted by Taylor Savage, Product Manager, Polymer

Welcome to the Polymer Summit livestream 2016. Today, we’ll kick off with a keynote about how the core Polymer team is thinking about the project’s past, present, and future. We’ll follow with a full day of sessions covering every aspect of building great web applications using Polymer, including a unique new Polymer experience, and thoughts from our partners. Tune into the livestream below to follow along. We look forward to engaging in the conversation with you at #PolymerSummit.


Categories: Programming

Fair and Balanced in the Absence of Principles?

Herding Cats - Glen Alleman - Mon, 10/17/2016 - 02:40

We hear fair and balanced is a desirable approach to problems. Turns out this is a false balance when the issue under discussion doesn't address an underlying principle. 

One side can be wrong

It is seductive to state we're exploring new ways to do things ... in the absence of the underlying principles that would guide the explorer to a possible new way to doing something. In the absence of any principles, any conjectures should be rejected. Without this approach, any conjecture, any unsubstantiated opinion, can be treated as equal to principles and evidence-based processes. This is not a good way to improve processes.

Categories: Project Management

SPaMCAST 415 - Risk Tolerance in Agile, Kotter Change Model, Innovation Bandwagon, Requirements Part 3

Software Process and Measurement Cast - Mon, 10/17/2016 - 01:32

The Software Process and Measurement Cast features four columns.  We begin with our essay on recognizing risk and risk tolerance.  Any discussion of risk begins with acknowledging that risk exists and then recognizing specific risks.  Once we know risks exist we need to determine which risks we care about. Risk tolerance affects how everyone in an organization behaves.

Kim Pries the Software Sensei discusses change models, focusing on the Kotter model of change.  Kim discusses how change models can be used for hardware, software, processes and procedures.  

Gene Hughson brings his wonderful Form Follows Function Blog the podcast.  In this installment, Gene and I discuss All Aboard the Innovation Band Wagon. We talked a lot about how to define innovation AND why innovation and change is powerful.

Jon Quigley anchors the cast with the third installment in a three-part arc on requirements in his  “The Alpha-Omega of Product Development” column. This week Jon discusses managing requirements.

Re-Read Saturday News

We continue the read/re-read of The Five Dysfunctions of a Team by Patrick Lencioni (published by Jossey-Bass).  We seem to be moving from cliffhanger to cliffhanger over the past few weeks, and we shall do so again today. Lencioni uses crises to illustrate common problems that make teams into dysfunctional collections of individuals. This week we tackle the sections from Entering the Danger to Rebound.

Visit the Software Process and Measurement Cast blog to participate in this and previous re-reads.

Next SPaMCAST

The Software Process and Measurement Cast 416 will feature our interview with Kirk Botula.  Kirk is the CEO of the CMMI Institute.  Kirk and I talked about organizational capability and why capability is crucial for organizational health and agility!

Shameless Ad for my book!

Mastering Software Project Management: Best Practices, Tools and Techniques co-authored by Murali Chematuri and myself and published by J. Ross Publishing. We have received unsolicited reviews like the following: “This book will prove that software projects should not be a tedious process, for you or your team.” Support SPaMCAST by buying the book here. Available in English and Chinese.

Categories: Process Management

SPaMCAST 415 – Risk Tolerance in Agile, Kotter Change Model, Innovation Bandwagon, Requirements Part 3

 

SPaMCAST Logo

http://www.spamcast.net

Listen Now
Subscribe on iTunes
Check out the podcast on Google Play Music

The Software Process and Measurement Cast features four columns.  We begin with our essay on recognizing risk and risk tolerance.  Any discussion of risk begins with acknowledging that risk exists and then recognizing specific risks.  Once we know risks exist we need to determine which risks we care about. Risk tolerance affects how everyone in an organization behaves.

Kim Pries the Software Sensei discussers change models, focusing on the Kotter model of change.  Kim discusses how change models can be used for hardware, software, processes and procedures.  

Gene Hughson brings his wonderful Form Follows Function Blog the podcast.  In this installment, Gene and I discuss All Aboard the Innovation Band Wagon. We talked a lot about how to define innovation AND why innovation and change is powerful.

Jon Quigley anchors the cast with the third installment in a three-part arc on requirements in his  “The Alpha-Omega of Product Development” column. This week Jon discusses managing requirements.

Re-Read Saturday News

We continue the read/re-read of The Five Dysfunctions of a Team by Patrick Lencioni (published by Jossey-Bass).  We seem to be moving from cliffhanger to cliffhanger over the past few weeks, and we shall do so again today. Lencioni uses crises to illustrate common problems that make teams into dysfunctional collections of individuals. This week we tackle the the sections from Entering the Danger to Rebound.

Visit the Software Process and Measurement Cast blog to participate in this and previous re-reads.

Next SPaMCAST

The Software Process and Measurement Cast 416 will feature our interview with Kirk Botula.  Kirk is the CEO of the CMMI Institute.  Kirk and I talked about organizational capability and why capability is crucial for organizational health and agility!

Shameless Ad for my book!

Mastering Software Project Management: Best Practices, Tools and Techniques co-authored by Murali Chematuri and myself and published by J. Ross Publishing. We have received unsolicited reviews like the following: “This book will prove that software projects should not be a tedious process, for you or your team.” Support SPaMCAST by buying the book here. Available in English and Chinese.


Categories: Process Management

Five Dysfunctions of a Team, Patrick Lencioni:  Re-Read Week 4

The Five Dysfunctions of a Team Cover

The “Book” during unboxing!

Today we continue our re-read of the business novel, The Five Dysfunctions of a Team by Patrick Lencioni (Jossey-Bass, Copyright 2002, 33rd printing). If you do not have a copy of the book, please buy a copy from the link above and read along. We seem to be moving from cliffhanger to cliffhanger over the past few weeks and we shall do so again today. The crisis Lencioni illustrates are common problems that make teams into dysfunctional collections of individuals.

Entering the Danger

When we ended our re-read in Week 3, Martin had checked out of the meeting and was absorbed by this laptop.  In response to Martin’s breach of etiquette, Kathryn states her simple rules for meetings.  The rules are to be present and to participate (I typically add ‘be prepared’ to this simple set of rules). In the ensuing discussion, Mikey states that having a laptop open and on during a meeting is part of the high-tech culture.  Kathryn counters the objection by stating that this is more of a behavioral issue than a technology issue. I frankly have been in meetings where someone is typing away on a phone or laptop, which leads them to fail to pay attention and ask the same question as someone else multiple times even in a short meeting. Having your laptop open sends a message that you are disengaged. In answer to Kathryn’s challenge to his open laptop, Martin acquiesces and closes the laptop.

Getting Naked

After defusing the laptop incident, Kathryn and the team participates in an exercise called “personal histories”, where you tell people about yourself using five questions which are answered one at a time as you go around the room. The goal of the exercise is to begin to build bridges and trust between the Staff.  Sharing, in this case, helps the team to Staff to seem tighter, at least when talking about something less dangerous than work.  Many coaches use these types of tools for team building without recognizing that the gains made while tackling safe topics can erode when teams encounter stressful topics or scenarios.

Going deeper

In order to build on the progress made using the simple personal history technique, the team completes and discusses one of the myriad personality tests (for example, the Myers – Briggs test) as a discussion tool. Kathryn’s goal is to continue to expose each person’s personality to the group so they can build trust. After a discussion, Kathryn gives the group a break to decompress before meeting for cocktails and dinner.

As the team has cocktails and discusses the day, they interact through conversation that includes light banter and ribbing that is often seen among people that are comfortable together. While the majority of the group is participating, Mikey is standoffish. When Nick (and others) suggest the personality test description is accurate, Mikey reacts with derision (eye rolling).  When called on her reaction Mikey goes into a negative tirade about the process that they were going through.  I will admit, that I have gone into the same tirade when these types of tests are used for hiring and firing decisions rather than discussion tools. The discussion and attendant tirade caused Mikey to become even less participative.  Failing to interact during drinks and dinner screamed that that Mikey does not trust her teammates. Note: we have shifted from Martin being the primary purveyor of problems to Mikey.

Poolside

The dinner meeting ends at 10 with most of the Staff heading back to their rooms.  As they drift back to their rooms Kathryn talked with Mikey.  Mikey’s reaction was a further withdrawal.  Telling Kathryn that she would not let people make fun of her at home so she sure as heck wasn’t going to let people make fun of her work (reacting to the intermural ribbing before dinner). The reaction is a powerful sign that Mikey is keeping the rest of the team at arms’-length. Mikey went on to say that she would not talk about her issues with the process the next day. Mikey’s reaction suggested that she was checking out of the process and she felt that she was outside and more important than the whole of the team.

Rebound

Kathryn used the beginning of the second day to review and discuss the progress the Staff had made the day before.  Mikey’s participation was limited, and when she talked the energy and the pace of the actively seemed to slow down.  I think we can all recall a scenario in which the tone or phrasing of comment generates a negative environment.  Sarcasm is often used to state a positive in a negative manner.  An hour before lunch, Kathryn what the book describes as, “the most important exercise of the day which would be looked back on as the moment of truth for Mikey and the rest of the team.” – We end on a cliffhanger to hold you until next week. 

We end on another cliffhanger keep you on the edge of your seat until next week!

Three quick take-ups:

  1. In meetings be present, participate, and be prepared!
  2. Everyone on a team needs to trust each other.
  3. No one person on a team is more important than the team.

Previous Installments in the re-read of  The Five Dysfunctions of a Team by Patrick Lencioni:

Week 1 – Introduction through Observations

Week 2 – The Staff through the End Run

Week 3 – Drawing the Line though Pushing Back


Categories: Process Management