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=3' 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.

SE-Radio Episode 242: Dave Thomas on Innovating Legacy Systems

Sven Johann talks with Dave Thomas about innovating legacy systems. Dave clarifies first why legacy systems are both valuable and problematic. Next, they discuss bad systemic and good incremental approaches for innovation of legacy systems; why you shouldn’t rewrite an old system but rather focus on tactical changes to reduce cost or increase productivity within […]
Categories: Programming

Add backend logic to real-time data with Firebase and Google App Engine

Google Code Blog - Fri, 11/13/2015 - 22:56

Originally posted on Google Cloud Platform Blog

Posted by Benjamin Wulfe, Firebase

Firebase is a platform for building Android, iOS and web-based mobile apps, offering real-time data storage and automatic synchronization across devices. But what about when you need to run backend processes on the data? By connecting an App Engine application to your Firebase database, you can perform complex logic on the data without having to manage synchronization and updates; Firebase handles that for you. Updates in the Android client release of Firebase 2.4.0 make it easy to access a Firebase database from an App Engine application. The tutorial, Use Firebase and Google App Engine in an Android App, walks you through the steps to create an Android app that stores a to-do list in Firebase, and uses backend logic running on App Engine to send daily reminder emails. In the process of working through the tutorial, you’ll learn how to use the following technologies:
  • Firebase — a platform for building mobile apps, offering realtime data storage and synchronization, user authentication, and more.
  • Android Studio — an Android development environment based on IntelliJ IDEA.
  • Cloud Tools for Android Studio — a set of tools included with Android Studio, that integrate with Google Cloud Platform services.
  • Google App Engine — an environment for running application code in the cloud; Platform as a service (PaaS).
Categories: Programming

Stuff The Internet Says On Scalability For November 13th, 2015

Hey, it's HighScalability time:

Gorgeous picture of where microbes live in species. Humans have the most. (M. WARDEH ET AL)

  • 14.3 billion: Alibaba single day sales; 1.55 billion: Facebook monthly active users; 6 billion: Snapchat video views per day; unlimited: now defined as 300 GB by Comcast; 80km: circumference of China's proposed supercolider; 500: alien worlds visualized; 50: future sensors per acre on farms; 1 million: Instagram requests per second.

  • Quotable Quotes:
    • Adam Savage~ Lesson learned: do not test fire rockets indoors.
    • dave_sullivan: I'm going to say something unpopular, but horizontally-scaled deep learning is overkill for most applications. Can anyone here present a use case where they have personally needed horizontal scaling because a Titan X couldn't fit what they were trying to do? 
    • @bcantrill: Question I've been posing at #KubeCon: are we near Peak Confusion in the container space? Consensus: no -- confusion still accelerating!
    • @PeterGleick: When I was born, CO2 levels were  ~300 ppm. This week may be the last time anyone alive will see less than 400 ppm. 
    • @patio11: "So I'm clear on this: our business is to employ people who can't actually do worthwhile work, train them up, then hand to competition?"
    • Settlement-Size: This finding reveals that incipient forms of hierarchical settlement structure may have preceded socioeconomic complexity in human societies
    • wingolog: for a project to be technically cohesive, it needs to be socially cohesive as well; anything else is magical thinking.
    • @mjpt777: Damn! @toddlmontgomery has got Aeron C++ IPC to go at over 30m msg/sec. Java is struggling to keep up.
    • Tim O'Reilly: While technological unemployment is a real phenomenon, I think it's far more important to look at the financial incentives we've put in place for companies to cut workers and the cost of labor. If you're a public company whose management compensation is tied your stock price, it's easy to make short term decisions that are good for your pocketbook but bad long term for both the company and for society as a whole.
    • @RichardDawkins: Evolution is "Descent with modification". Languages, computers and fashions evolve. Solar systems, mountains and embryos don't. They develop
    • @Grady_Booch: Dispatches from a programmer in the year 2065: "How do you expect me to fit 'Hello, World' into only a terabyte of memory?" via Joe Marasco
    • @huntchr: I find #Zookeeper to be the Achilles Heal of a few otherwise interesting projects e.g. #kafka, #mesos.
    • Robert Scoble~ Facebook Live was bringing 10x more viewers than Twitter/Periscope
    • cryptoz: I've always wondered about this. Presumably the people leading big oil companies are not dumb idiots; so why wouldn't they take this knowledge and prepare in advance?

  • Waze is using data from sources you may not expect. Robert Scoble: How about Waze? I witnessed an accident one day on the highway near my house. Two lane road. The map turned red within 30 seconds of the accident. How did that happen? Well, it turns out cell phone companies (Verizon, in particular, in the United States) gather real time data from cell phones. Your phone knows how fast it’s going. In fact, today, Waze shows you that it knows. Verizon sells that data (anonymized) to Google, which then uses that data to put the red line on your map.

  • If email would have been done really right in the early days then we wouldn't need half the social networks or messaging apps we have today. Almost everything we see is a reimplementation of email. Gmail, We Need To Talk.

  • Don Norman and Bruce Tognazzini, prophets from Apple's time in the wilderness, don't much like the new religion. They stand before the temple shaking fists at blasphemy. How Apple Is Giving Design A Bad Name: Apple is destroying design. Worse, it is revitalizing the old belief that design is only about making things look pretty. No, not so! Design is a way of thinking, of determining people’s true, underlying needs, and then delivering products and services that help them. Design combines an understanding of people, technology, society, and business. 

  • There's a new vision of the Internet out there and it's built around the idea of Named Data Networking (NDN). It's an evolution from today’s host-centric network architecture IP to a data-centric network architecture. Luminaries like Van Jacobson like the idea. Packet Pushers with good coverage in Show 262 – Future of Networking – Dave Ward. Dave Ward is the CTO of Engineering and Chief Architect at Cisco. For me, make the pipes dumb, fast, and secure. Everything else is emergent.

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

Immutable Laws of Software Development

Herding Cats - Glen Alleman - Fri, 11/13/2015 - 17:45

A 2013 webinar at Cyber Security & Information Systems Information Analysis Center, presented some Immutable Laws of Software Development. These are worth repeating every time there is a suggestion hat some method or another, or some new and untested idea is put fort that will increase productivity by 10X or increase your profitability by NOT doing core business processes.

Here's the list presented in the webinar and is dedicated to Watts Humphrey who said all these in the past. For each Immutable Law, I've made a suggestion on how to avoid the undesirable outcome.

  • The number of development hours is directly proportional to the size of the software product
    • Size Matters
    • Build products in chunks of capability, deploy them incrementally when possible to provide measurable value
    • Increase the maturity of these capability with Capabilities Based Planning
  • When buyers and suppliers both guess as to how long a project should take, the buyers guess will always win
    • Credible cost, schedule, and technical performance estimating must be in place and jointly used by buyer and supplier
    • The basis of estimate must include risk adjusted baseline for reducible and irreducible risks 
  • When management compresses schedule arbitrary the project will end up taking longer
    • Any project without margin is late, over budget, and produces poor quality on dat one
    • Reducible and Irreducible uncertainty must be modeled and handled if this is o be avoided
  • Team morale is inversely proportional to the arbitrary and unrealistic nature of the schedule imposed on the team
    • All project variables - programmatic and technical must have protective margin
  • Schedule problems are normal, management actions to remediate will make them worse.
    • Margin is needed for everything, since all project variables are random variables
  • When poor quality impacts schedule, schedule problems will end up as quality disasters
    • Technical performance (quality) require cost and schedule margin to achieve to needed goal
  • Those that don't learn from poor quality's adverse impact on schedule, are domed to repeat it.
    • Recording past performance in a statistically correct manner provides reference classes for modeling future performance
  • The less facts you know about a project during development, the more you will be forced to know later
    • Systems Engineering is an anchor discipline for all successful projects.
    • This is no more important than on software development projects.
    • The Systems Engineering processes applied to software development are a critical success factor
  • The number of defects injected during development will be directly proportional to the development hours expended
  • The number of defect found in production use will be inversely proportional to the percent of defect removed prior to integration, system, and acceptance testing.
    • Formal defect modeling is the starting point for quality improvements
    • Test coverage metrics are a starting point
  • The number of defect found in production use will be directly proportional to the number of defects found in integration, systems, and acceptance testing.
    • Same as above
  • When test is the principal defect removal method during development, corrective maintenance will account for he majority of the maintenance spend.
    • Designed quality is the basis of reducing defects
    • Designed quality starts with architecture, interface management, process and data models 
  • The amount of technical debt in inversely proportional to the length of the agile sprint
    • 2 week sprints produce more debt that 4 week sprints
    • Scrum and agile in general have no notion of margin so without margin debt increases
  • The earliest predictor of a software project's cost, schedule and quality outcome is the quality of the development process through code complete.
    • Process is King
  • Management actions based on metric not normalized by size will make the situation worse.
    • All numbers must be properly modeled, statistically sound, and used to make management decisions. 
  • On a 40 hour week, the number of task hours for each engineer will stat under 20, unless steps are taken to improve it.
    • Work processes must be modeled, recorded, and assessed to determine the capacity for work by the team.
  • Successful cost, schedule, and quality outcomes depend on the degree of convergence between the organization's official process, the teams' perceived process and the individual's actual processes.
    • Process is King
  • Insanity is doing the same thing iver and over  and firing the project manager and or contractor when you don't get the results you expected.
    • Strategy for the organization requires tangible assessments of the Critical Success Factors and should  never be confused with Operational Effectiveness.
    • If we ask someone to do something like make a change - what are the measures of Effectiveness and Performance for the change that can be assessed to find the root cause of the failure and the needed corrective actions.
    • Don't have those? It's gonna fail.


Related articles Estimating Guidance How to Deal With Complexity In Software Projects? Overarching Paradigm of Project Success
Categories: Project Management

Don’t Go Chasing Waterfall

Making the Complex Simple - John Sonmez - Fri, 11/13/2015 - 14:00

Working in software, you’ll find three general models for process workflow: SDLC/Waterfall, Kanban, and Scrum. If you’re on a Waterfall project, stop what you’re doing and go jump out a window. (Kidding. Mostly. Use a parachute….) If you have a good management team and a good set of colleagues, even if you’re on an SDLC/Waterfall […]

The post Don’t Go Chasing Waterfall appeared first on Simple Programmer.

Categories: Programming

Are your node modules secure?

Xebia Blog - Fri, 11/13/2015 - 13:05

With over 200k packages, npm is the world's largest registry of open source packages. It serves several million downloads each month. The popularity of npm is a direct result of the popularity of JavaScript. Originally npm was the package manager for Node.js, the server-side JavaScript runtime. Since Node.js developers mostly follow the Unix philosophy, the npm registry contains many very small libraries tailored to a specific purpose. Since the introduction of Browserify, many of these libraries suddenly became suitable for use in the web browser. It has made npm not only the package manager for Node.js, but for the entire JavaScript ecosystem. This is why npm is not an abbreviation of Node Package Manager, but a recursive bacronymic abbreviation for "npm is not an acronym". Wow.

If you do any serious JavaScript development, you cannot go without libraries, so npm is an indispensable resource. Any project of meaningful size is quickly going to rely on several dozen libraries. Considering that these libraries often have a handful of dependencies of their own, your application indirectly depends on hundreds of packages. Most of the time this works out quite well, but sometimes things aren't that great. It turns out that keeping all of these dependencies up to date can be quite a challenge. Even if you frequently check your dependencies for updates, there's no guarantee that your dependencies' authors will do the same. With the pace at which new JavaScript packages are being released, it's close to impossible to keep everything up to date at all times.

Most of the time it's not a problem to rely on an older version of a package. If your package works fine with an outdated dependency, there's no compelling reason to upgrade. Why fix something that isn't broken? Unfortunately, it's not so easy to tell if it is. Your package may have been broken without your knowledge. The problem is in the definition of "broken". You could consider it to mean your application doesn't work in some way, but what about the non-functionals? Did you consider the fact that you may be relying on packages that introduce security vulnerabilities into your system?

Like any software, Node.js and JavaScript aren't immune to security issues. You could even consider JavaScript inherently less secure because of its dynamic nature. The Node Security Project exists to address this issue. It keeps a database of known security vulnerabilities in the Node ecosystem and allows anyone to report them. Although NSP provides a command line tool to check your dependencies for vulnerabilities, a new company called Snyk has recently released a tool to do the same and more. Snyk, short for "so now you know", finds security vulnerabilities in your entire dependency tree based on the NSP database and other sources. Its CLI tool is incredibly simple to install and use. Just `npm install snyk` and off you go. You can run it against your own project, or against any npm package:

> snyk test azure

✗ Vulnerability found on validator@3.1.0
Info: https://app.snyk.io/vuln/npm:validator:20130705
From: azure@0.10.6 > azure-arm-website@0.10.0 > azure-common@0.9.12 > validator@~3.1.0
No direct dependency upgrade can address this issue.
Run `snyk protect -i` to patch this vulnerability
Alternatively, manually upgrade deep dependency validator@~3.1.0 to validator@3.2.0


Tested azure for known vulnerabilities, found 32 vulnerabilities.

It turns out the Node.js library for Azure isn't quite secure. Snyk can automatically patch the vulnerability for you, but the real solution is to update the azure-common package to use the newer version of validator. As you see, most of the security issues reported by Snyk have already been fixed by the authors of the affected library. That's the real reason to keep your dependencies up to date.

I think of Snyk as just another type of code quality check. Just like your unit tests, your build should fail if you've accidently added an insecure dependency. A really simple way to enforce it is to use a pre-commit hook in your package.json:

"scripts": {
 "lint": "eslint src test",
 "snyk": "snyk test",
 "test": "mocha test/spec",
"pre-commit": ["lint", "test", "snyk"]

The pre-commit hook will automatically be executed when you try to commit to your Git repository. It will run the specified npm scripts and if any of them fail, abort the commit. It must be noted that, by default, Snyk will only test your production dependencies. If you want it to also test your devDependencies you can run it with the `--dev` flag.

Adoption: The Softer Side of Transformation

Chameleon changing color

Words are important. They can rally people to your banner or create barriers. Every word communicates information and intent. There has been a significant amount of energy spent discussing whether the phrase ‘Agile transformation’ delivers the right message. There is a suggestion that ‘adoption’ is a better term. Based on my research and outreach to approximately 20 Agile practitioners (a range of developers, testers, scrum masters and consultants) it is apparent that both words have different connotations. Connotations that are both dangerous and useful.  As noted when we wrestled with the message and baggage of the word transformation, the answer of when to use one or the other is not cut and dry.

The word ‘adopt’ means to take up and use. When someone uses the word ‘adopt’, the inference is that person or team that is taking up Agile is acting based on their own volition, rather being than driven by a corporate mandate. Bharathi Vasanthakrishna of Kornerstone Consultants suggested that adoption is often used to describe the implementation step in a larger process. From that statement, we can tease out a common thread in the discussion of the difference between adoption and transformation. Adoption typically reflects a change on a smaller scale. The adoption reflects a scale of change made by a person or team to improve their performance or satisfaction. Adoption is used to describe a technical change rather than a strategic change. The perception that when a person or team adopts a practice or method that they making the change to address their need rather than someone else’s needs sends a fundamentally different message than when the word transformation is used to describe the change.

Another fundamental difference that I discovered is that ‘adoption’ is generally perceived as taking up something that is known, and, while different from what a person or team is doing to today, represents an understandable shift in behavior. For example, a team could adopt Scrum based on knowledge gleaned from other sources (a conference, book, class, coach or another team in the company).  Scrum is a known framework that can be adopted.  If we define adoption as a more tactical change in which a person or team makes a decision to act in a different manner, we are describing a softer set of activities than we did for the word transformation. Transformation being a change(s) that disrupts an organization. I have found that both terms are strongly linked most practitioner’s minds. Adoption being the tactical step that instantiates a strategy which is at the heart of a transformation.

Adoption and transformation have very different meanings, but both are of value to help describe the path an organization is taking to grow and improve their value delivery. But that is only if they are used correctly and if everyone understands the meaning they convey.

Categories: Process Management

Improvements to Sign-In with Google Play services 8.3

Android Developers Blog - Thu, 11/12/2015 - 19:36

Posted by Laurence Moroney, Developer Advocate

With Google Play services 8.3, we’ve been hard at work to provide a greatly improved sign-in experience for developers that want to build apps that sign their users in with Google. To help you better understand some of these changes, this is the first in a series of blog posts about what’s available to you as a developer. In this post, we’ll discuss the changes to the user experience, and how you can use them in your app, as well as updates to the API to make coding Sign-In with Google more straightforward. On Android Marshmallow, this new Sign-In API has removed any requirement for device permissions, so there is no need to request runtime access to the accounts on the device, as was the case with the old API.

User Experience Improvements

We’ve gotten lots of feedback from developers about the user experience of using Google’s social sign-in button. Many of you noted that it took too many steps and was confusing for users. Typically, the experience is that the user touches a sign in button, and they are asked to choose an account. If that account doesn’t have a Google+ profile, they need to create one, and after that they have to give permissions based on the type of information that the app is asking for. Finally, they get to sign in to the app.

With the new API, the default set of permissions that the app requests has been reduced to basic profile information and optionally email address as demonstrated here. This introduces opportunities for much streamlined user experience: the first improvement here is in the presentation of the button itself. We had received feedback that the Google+ branding on the Sign-In button made it feel like the user would need to share Google+ data, which most apps don’t use. As such, the SignInButton has been rebranded with the reduced scopes -- it now reads ‘Sign In with Google’, and follows the standard Google branding for use with basic profile information.

After this, the user flow is also more straightforward. Instead of subsequent screens where a Google account is picked based on the email addresses registered on the device, followed by a potential ‘Create Google+ Profile’ dialog, followed by a permissions consent dialog, like this:

The user experience has changed to a single step, where the user chooses their account and gives consent. If they don’t have a Google+ profile, they don’t need to create one, eliminating that step. Additional consent dialogs come later, and are best requested in context so that the user understand why you might ask for access to their calendar or contact, and they are only prompted at the time that this data is needed.

We hope that a streamlined, one-tap, non-social sign-in option with additional OAuth permissions requested in context will help improve your sign-in rates and make it a breeze to sign-in with Google.

Check out some live apps that use the new API, including Instacart, NPR One, and Bring!

In the next post we’ll build on this by looking at some of the changes in the API to make coding apps that use Sign-In with Google even easier.

Categories: Programming

Get Ready for the Chrome Dev Summit 2015

Google Code Blog - Thu, 11/12/2015 - 19:02

Posted by Paul Kinlan, Chrome Developer Relations

The Chrome Dev Summit is almost here! We’ll kick off live from Mountain View, California at 9:00AM PT this coming Tuesday, November 17th. To get the most out of the event, make sure to check out the speaker list and talk schedule on our site.

Can’t join us in person? Don’t worry, we’ve got you covered! You can tune into the summit live on developer.chrome.com/devsummit. We will stream the keynote and all sessions over the course of the event. If you want us to send you a reminder to tune into the livestream, sign up here. We’ll also be publishing all of the talks as videos on the Chrome Developers YouTube Channel.

We’re looking forward to seeing you in person or remotely on Tuesday. Don’t forget to join the social conversations at #ChromeDevSummit!

Categories: Programming

Will I Lower My Earnings Potential By Not Focusing On The Right Thing?

Making the Complex Simple - John Sonmez - Thu, 11/12/2015 - 17:00

In this episode, I talk about earnings potential by focusing on the right thing. Full transcript: John:               Hey, John Sonmez from simpleprogrammer.com. I got a question here from Tyler and Tyler says, “Thanks for the follow on Twitter and again for publishing your book and answering some of my questions in the past. I totally […]

The post Will I Lower My Earnings Potential By Not Focusing On The Right Thing? appeared first on Simple Programmer.

Categories: Programming

Misuses a Valid Concept

Herding Cats - Glen Alleman - Wed, 11/11/2015 - 21:28

It's common these days to re-purpose a quote or a platitude from one domain into another and assume it's applicable to the second domain. My favorite recent one is

"Layers of redundancy are the central risk management property of natural systems” - Taleb

Taleb is the author of Black Swan, about long tailed statistical processes in the financial domain. These Black Swans tend to bite you when you least expect it. Are there Black Swans in the software development domain? Only if you're not looking. Financial systems are rarely engineered to perform in specific ways. Software systems are, st where I work and I suspect everywhere someone is paying money for the system to be developed or acquired. 

So let's look at the Taleb quote that is often re-quoted by agile people and especially those advocating no estimates.

First some full disclosure. One of my graduate degrees in Systems Management, which is a combination of Systems Engineering and Finance. As well I work with systems engineers and support systems engineering processes in the aerospace and defense  domain. So I'll predisposed to view the work through the eyes of Systems Engineering. Everything is a System is a good starting point for what we do. 

Now let's look at the Taleb quote through the eyes of Systems Engineering and the software systems that are engineered in the domain we work. There are many kinds of redundancy found in our systems. To avoid falling victim to platitudes that abound in the agile and No estimates domains, let's start with a framing assumption.

Redundancy  provides resiliency to the system to withstand disruption within acceptable degradation parameters and to recover within an acceptable time and composite costs and risks.

In Taleb's (financial trading systems) domain resilience is desirable as it is in software intensive systems. Software systems that fly the airliner you ride on, manage the trains, process credit card transactions, control air traffic, manage the moving parts of your car. Any system where software is the dominate component for the proper functioning of the product or service.

There are rules for assessing the resiliency that results from redundancy or other system design aspects

  • Absorption rule - is a buffering characteristic that prevents overload of the system. Redundancy can provide this protection. The Microsoft Always On product provides this as well as other resiliency and redundancy capabilities.
  • Limit Degradation support rule - provide a lower limit to which the system can degrade before failing. This is he circuit breaker for your home. Also the circuit breaker for the stick exchange.
  • Margin Support Rule - margin is added to the system to protect from disruptions. This can be schedule margin, cost margin, technical performance margin, operational margin. Any kind of margin that allows the system to continue to operate properly inside the range of parameters. 

This notion of margin is absent from Agile development. And the result is when things go wrong, you're late, over budget and the product doesn't work. To have margin we must be able to estimate how much margin. Too much margin is a waste. Too little margin will not protect the system from disruption. 

  • Physical Redundancy rulebuy two in case one breaks was the request when I first started writing code for a Ballistic Missile Defense radar system. We were buying the original Sun I cards to replace legacy computers. I went on from there to work at a Triple Redundant process control startup as the Software Manager. Where we developed a physically redundant computer and software system in the petro-chem and nuclear power domain. Fault-Tolerant System Reliability in the Presence of Imperfect Diagnostic Coverage, describes how that triple redundancy was protected through realtime fault detection and dynamic reconfiguration of the hardware components. 
  • Functional Redundancy rule - is sometimes called design diversity and avoids the vulnerabilities of Physical Redundancy.
  • Layers of Defense rule - states that for a failure to occur a disturbance has to penetrate a series of layers simulate to layers of Swiss Cheese. The system has holes like the holes in Swiss Cheese, that allow the failure to penetrate to the next level, where they can be handled.

So when we hear a platitude like Layers of redundancy are the central risk management property of natural systems ask what kind of redundancy, what kind of fault handling and response processes. In fact ask first is that quote used as a platitude even applicable in the domain of interest? Or is it just a phrase picked up and repeated with little or no understanding of the principles, practices, or processes to which it CAN be applied. 

[1] The Theory and Practice of Reliable System Design, Daniel Siewiorek and Robert Swarz

Related articles Systems Thinking, System Engineering, and Systems Management The Use, Misuse, and Abuse of Complexity and Complex Want To Learn How To Estimate? Agile as a Systems Engineering Paradigm Software Engineering is a Verb
Categories: Project Management

Developer tips for success with Player Analytics and Google Play games services

Android Developers Blog - Wed, 11/11/2015 - 21:14

Posted by, Lily Sheringham, Developer Marketing at Google Play

Editor’s note: As part of our series featuring tips from developers, we spoke to some popular game developers to find out how they use Player Analytics and Google Play game services to find success on Google Play. - Ed.

Google Play games services, available in the Developer Console, allows you to add features such as achievements and leaderboards to your games. Google Play games services provides Player Analytics, a free games-specific analytics tool, in the Developer Console Game services tab. You can use the reports to understand how players are progressing, spending, and churning backed by a data-driven approach.

Bombsquad grows revenue by 140% per user with Player Analytics

Independent developer Eric Froemling, initially created the game Bombsquad as a hobby, but now relies on it as his livelihood. Last year, he switched the business model of the game from paid to free-to-play. By using Player Analytics, he was able to improve player retention and monetization in the game, achieving a 140% increase in the average revenue per daily active user (ARPDAU).

Watch the video below to learn how Eric uses Player Analytics and the Developer Console to improve gamers’ experience, while increasing retention and monetization.

Tips from Auxbrain for success with Google Play games services

Kevin Pazirandeh, founder and CEO of games developer Auxbrain, creator of Zombie Highway, provides insight into how they use Google Play games services, and comments:

“While there are a few exceptions, I have not run into a better measure of engagement, and perhaps more importantly, a measure for change in engagement, than the retention table. For the uninitiated, a daily retention table gives you the % of players who return on the nth day after their first play. Comparing retention rates of two similar games can give you an immediate signal if you are doing something right or wrong.”

Kevin shares his top tips on how to best use the analytics tools in Google Play games services:

  1. You get Player Analytics for free - If you’ve implemented Google Play game services in your games, check out Player Analytics under Game services in the Developer Console, you’ll find you are getting analytics data already.
  2. Never assume change is for the better - Players may not view changes in your game as the improvement you had hoped they were. So when you make a change, have a strategy for measuring the result. Where you cannot find a way to measure the change’s impact with Player Analytics, consider not making it and prioritize those changes you can measure.
  3. Use achievements and events to track player progress - If you add achievements or events you can use the Player progression report or Event viewer to track player progress. You’ll quickly find out where players are struggling or churning, and can look for ways to help move players on.
  4. Use sign-in to get more data - The more data about player behavior you collect, the more meaningful the reports in Player Analytics become. The best way to increase the data collected is to get more players signed-in. Auto sign-in players, and provide a Play game services start point on the first screen (after any tutorial flow) for those that don’t sign-in first time.
  5. Track your player engagement with Retention tables - The Retention table report lets you see where players are turning away, over time. Compare retention before and after changes to understand their impact, or between similar games to see if different designs decisions are turning players away earlier or later.

Get started with Google Play Games Services or learn more about products and best practices that will help you grow your business on Google Play globally.

Categories: Programming

Testing your app for Android for Work

Android Developers Blog - Wed, 11/11/2015 - 19:44

Posted by, Rich Hyndman, Developer Advocate

Testing is important whether you’re building a dedicated app for the workplace, rolling out new features, or making it easy for IT departments to deploy.

Test DPC is now available for you and is a fully featured, open-source, sample Device Policy Controller (DPC) which allows you to test your apps with any Android for Work feature. A DPC manages the security policies and work apps on devices using Android for Work. You can configure Test DPC to be either a device or profile owner to test all the Android for Work scenarios:

  • Profile Owner: Employees using their personal phones for work and allowing their company to own the work applications and data (i.e. bring your own device or BYOD)
  • Device Owner: Enterprises providing devices to employees and managing the entire device
  • Device Owner: Enterprises deploying devices for a narrow use case, such as a mall directory or restaurant menu (i.e. corporate owned, single use devices)

Test DPC simplifies testing and development because you can use it to set the kinds of policies an IT administrator might enforce. You can establish app and intent restrictions, set up managed work profiles, enforce policies, and can even set up fully managed Android devices — something you might find as an info board or kiosk in a public place.

The Test DPC app can be found on Google Play with the source on GitHub. Set up Test DPC as a device/profile owner on your device by checking out this user guide.

If you want to learn more about Android for Work and its capabilities, check out Android for Work Application Developer Guide for full guidance on optimizing your app for Android for Work.

Note: Your test Android device needs to run Android 5.0 or later and be able to support Android for Work natively.

Categories: Programming

Personal Effectiveness Toolbox

“Private Victory precedes Public Victory. Algebra comes before calculus.” – Stephen Covey

At last.  It’s here.  It’s my Personal Effectiveness Toolbox:

Personal Effectiveness Toolbox

It’s the real deal.  This is my hand-picked collection of principles, patterns, practices, and tools to help you make the most of what you’ve got.

My Personal Effectiveness Toolbox is a roundup of the best-of-the-best resources that help you in key areas of your life, including the following Hot Spots:

  1. Mind
  2. Body
  3. Emotions
  4. Career
  5. Finance
  6. Relationships
  7. Fun
Get Your Edge in Work and Life (Your Unfair Advantage)

If you want to get an edge in work and life, Personal Effectiveness Toolbox will help you do exactly that.   I mentor a lot of people inside and outside of Microsoft, so I am always looking for the best resources and tools that actually work.  I’ve personally spent many, many thousands of dollars on programs and tested them in the real-world against extreme challenges.

I wasted a lot of money.

But I also found a lot of incredible and amazing products that actually worked.  I found people and products and tools that provide real insight and led to real breakthroughs.

The Best Personal Effectiveness Resources in the World

My Personal Effectiveness Toolbox is the ultimate collection of programs, tools, and books that help you succeed in all areas of your life.   I’ve organized the resources into the following categories:

Achievement Systems, Beliefs / Limits / Mindsets, Blogging, Body / Fitness / Health, Book Writing, Business / Startups / Passive Income, Career, Confidence, Creativity, Finance, Goals, Emotional Intelligence, Interpersonal Skills, Leadership, Mind / Intellectual Horsepower, Motivation, Personal Development, Productivity, Relationships.

I’ve also tried to address some common scenarios and issues. 

Build Passive Income Skills for a Mobile-First, Cloud-First World

One scenario I see a lot is people are looking to achieve financial freedom.  They either want to have a backup for their day job, or perhaps pursuit other opportunities on their own terms.  Or they want to simply try their hand at generating passive income.  The beauty is that in today’s world, you can combine your purpose, passion, and profit, and sell what you know to the world. 

But the challenge is it can be a confusing path, and there is a lot to learn.  I want through a lot of books, courses, and programs that were a big let down.  But, along the way, I did find some resources that really did help.  For example, I regularly recommend SBI! (Site Build It) to friends and family as a way to get started.  I also recommend  Teleseminar Mastery Course as an effective way to create an online course on your favorite subject and get paid for doing what you love.   To give them a handle on how to think about passive income, financial freedom, and building businesses in today’s mobile-first, cloud-first world, I have them start with Six-Figure Second Income.  It’s one of the best books I’ve read that puts it all together and really explains things in plain English, and puts things like digital information products and a digital economy in perspective.

Improve Your Personal Effectiveness with a Personal Achievement System

Another scenario I see is that too many people struggles with goals, motivation, and productivity.  While you can attack these individually, I’m a fan of building a strong foundation by putting a personal achievement system in place.  If you have an achievement system you can count on, you amplify your chance for success.  It also helps you with continuous learning.   And a good personal achievement system helps you get much better over time.

While there are a lot of systems out there, if I had to pick the best starting point, I would say it’s Tony Robbins’ Personal Power II.  It’s the most hard-core personal development program and personal excellence program I know.   You’ll learn more about your body, brains, and emotions than a lifetime of reading.  You’ll learn how to rapidly model success, and accelerate your learning curve.  It’s the same program I used to go from nearly last in a class of 197 students, to #3.  I still can’t believe it.  Just about every day I recall some aspect of Personal Power II, and apply it in some shape or form.  It’s one of Tony’s greatest gifts to the world, ever.

Note that just because I’m talking about Tony Robbins particular program doesn’t mean I limited myself to his programs.  In fact, I also included a reference to Brian Tracy’s Success Master Academy.  It’s also one of the best programs available that really gives you a well-rounded foundation for achieving your dreams.

Master Emotional Intelligence

Emotional Intelligence is often the difference that makes the difference in work and life.  While Emotional Intelligence won’t guarantee your success, the absence of it can almost guarantee you will struggle.  You will have a disadvantage compared to those with EQ.  But the very good news is that Emotional Intelligence is a skill you can learn.  You can practice it every day.  And you can learn it on your own.  The place to start is Daniel Goleman’s classic book, Emotional Intelligence.

If you are wondering what Stephen Covey meant when he wanted us to increase the gap between stimulus and response, and to respond to our challenges vs. react, that’s exactly where Emotional Intelligence comes in.

Achieve Your Goals

Believe it or not, goals are your friend.  If your goals aren’t working for you, the problem is you have “impotent goals”, as Tony Robbins would say.  Or, perhaps, maybe Zig Ziglar said it best when he said, "People do not wander around and then find themselves at the top of Mount Everest."

Goals help you prioritize, focus, and know when you are done.  They help you make trade-offs in how much time to spend on something, or even when to spend time on something.  They also help you establish markers along the way so you can feel a sense of progress and they help you with your motivation.

But all of the goodness of goals depends on knowing how to really set them and achieve them with skill.   The good news is, goals have been around a very long time, way longer than you or me.   And many people before us have learned how to really use goals to their advantage.

And the beauty is nothing stops us from using all those lessons learned from goal setting.  The art and science of effective goal setting is well-known and well published.  You just need to know where to look.  While I have gone through many, many goal setting courses and exercises, I would say that one of the best, most thorough programs that really gives you a rock-solid foundation is Brian Tracy’s Goal Mastery for Personal and Financial Achievement.  It is an advanced system that not only covers the basics, it dives deep into how to really create compelling goals and make them happen.

Write Your Book

One goal a lot of people have is to write a book.  In fact, many people I know want to write their first book.  I’ve included a link to Brian Tracy’s 20-Step Author Quick Start Guide, which is one of the most thorough guides that walks you through the process of writing and publishing your book.  Brian Tracy is a world-renowned author and is one of the best to learn from. 

You can write your book to share your experience.  You can also use books as a way to help your career or to establish your expertise.  You can also use your book as a way to help build your financial fitness.  And you can use your book writing process as a way to dive much deeper into a topic you love.

Call to Action

I could go on, but at this point, I’m just going to ask you to do three things:

  1. Bookmark my Personal Effectiveness Toolbox.  It will serve you for years to come (and I will continue to update it.)
  2. Review the programs and tools and test which ones you think will help you the most.
  3. Last, but not least (and perhaps most important), share the Personal Effectiveness Toolbox with 10 of your friends.  Karma just might surprise you with a big fat kiss.  But all Karma aside, you can really help your friends and family the same way I do with some of the best tools in the world.

Here’s to getting everything you want, and then some, as well as helping more people achieve their dreams.

Categories: Architecture, Programming

Veterans Day 2015

Herding Cats - Glen Alleman - Wed, 11/11/2015 - 16:00


For all who have served. For those I know directly in my professional and personal life. For all who have served throughout our United States. Let's celebrate our service. 

Categories: Project Management

Android vs Apple Today

Making the Complex Simple - John Sonmez - Wed, 11/11/2015 - 14:00

We’ve had some pretty great rivalries in our time: Apple vs Microsoft, Apple vs Samsung, Apple vs Hackers, Apple vs a University, Apple vs your pocket…and today we’re looking at another one of these greats – Apple vs Android. History Android and Apple have been going at it since the release of the iPhone back […]

The post Android vs Apple Today appeared first on Simple Programmer.

Categories: Programming

So You Want A Transformation!

Transformation is creative destruction.

Transformation is creative destruction.

Words are an important vehicle for communicating information and intent. Recently I was privy to a discussion over the use of ‘transformation’ and ‘adoption,’ when used to describe an organizational change. The conversation was focused on whether the word transformation in the phrase ‘Agile transformation’ demotivated team members. The answer is not cut and dry. Both words communicate a slightly different intent. In addition when each word is used describe current activities each carries a different set of connotations. After listening to the discussion of the two concepts at Agile DC, I began reflecting how I use the two terms, did further research and reached out to approximately 20 Agile practitioners (a range of developers, testers, scrum masters and consultants) in order to develop a more nuanced understanding of the two concepts and when to use them safely. We begin with transformation.

The word ‘transform’ means to thoroughly change into something else. Transformation is an act, process or instance of change of something into something that did not exist before. When ‘transformation’ is used as noun it evokes the picture of a long-term change program that will evoke large-scale, strategic change impacting a whole organization (or at least a significant part). Steve Woodward of Cloud Solutions pointed out that a transformation requires directed cultural change. Culture change requires planning, effort and a vision of the future that Bharathi Vasanthakrishna of Kornerstone Consultants points out does not currently exist.  The vision of the future provides the organization with a goal to pursue and aspire to attain. For example, an organization that is beginning an Agile transformation is making a statement about how they perceive the future and in a negative sense, what they perceive to be missing today. In many organizations, transformations are begun to escape a burning platform (a place or situation that the organization or group finds uncomfortable and wishes to escape); therefore once the transformation begins, there is no no safe place to return. Transformations by definition up-end the status quo causing disruptions and dislocations. The impact of transformations is often couched in code words like ” an act of creative destruction.” These types of phrases are used to sugarcoat the potential impact of a transformation and to distance those leading the change from the pain it can cause. Any change that disrupts relationships or is perceived as being disruptive will cause some level of negative reaction. When done poorly in a heavy-handed, one-size-fits-all manner the perception is often deserved.

If we define a transformation as a long-term change that disrupts an organization (which certainly conforms to how the practitioners I queried responded), it is easy to see why it might evoke angst. I checked the usage of the word transformation on Google’s NGran site. The usage of transformation has shown a steady decline since the late 1990’s, perhaps reflecting a problem in the perception of the word. Realistically, the concept of transforming an organization makes sense. One upon a time, Apple transformed itself from a midlevel computer manufacturer into the one of the most important electronic device manufacturers. GM transformed itself (with help) from a failing car manufacturer into a successful one. Just because the word connotes pain doesn’t mean it should not be used.

Next we will dissect the words ‘adopt’ and ‘adoption,’ which are often perceived as the darlings of Agile coaches.

Categories: Process Management

What’s new in Google Play services 8.3

Android Developers Blog - Wed, 11/11/2015 - 00:42

Posted by Laurence Moroney, Developer Advocate

We’re delighted to announce the availability of Google Play services 8.3. There’s a lot of new information to share with you about what’s available to you in this release.

A big part of this release is focused on user identity. We’ve revamped the Sign In with Google APIs to make implementation simpler and provide users a streamlined experience. First off, the new Google Sign-In no longer requires the device accounts permissions, a big win when you start to develop for Marshmallow. The API also supports the latest Google branding. When using Google Play services 8.3, you’ll find a SignInButton that looks like this with the default scopes:

Previously, users would have to touch a sign in button, and then follow several steps (i.e. selecting account, giving permission to access profile information, and possibly needing to create a Google+ account). With Google Play services 8.3, only one tap is needed for basic profile access.

You can check out the documentation for the new API here.

And to make signing in easier across devices, whether you use Google Sign-In or still have password-based authentication, the Smart Lock APIs received some important updates. We’ve added a new API method to show a dialog that helps your user select a previously-used email address to pre-fill sign in or up forms easily: check out getHintPicker (sample code). This doesn’t require any device permissions and provides an alternative to a picker you may have previously populated from accounts on the device, which would now require a runtime permission with Marshmallow.

You can use this hint information to populate an entire sign-up form with name, email address, and profile picture with one tap, or even direct the user into a sign-in or sign-up flow intelligently based on their email address. Better yet, if the entry the user picked matches an account on the device, Google can provide a verified email address in the hint, which you can use to skip email verification and authenticate the user if your system can support ID tokens, similar to Google Sign-In.

For determining location, Google Play services provides a Fused Location Provider (FLP) which abstracts the underlying location sensors, such as GPS, WiFi, and the cell radio signal, into a single easy-to-use API. We’ve made some improvements to the FLP when it comes to batching. Prior to version 8.3, the batch location APIs would allow the FLP to save power by consolidating network traffic, but when an app removed a batching location request, the batch would be cleared. You may not want this behavior, so we’ve added an API that can return any batched locations immediately. Check the flushLocations and removeLocationUpdates method calls on the FusedLocationProviderApi for more details.

App Invites is a technology that enables your users to share your app with people they know. If you build using App Invites, Google Play services 8.3 has an update that will make coding much simpler. Now, you can use the AppInvite.AppInviteApi.getInvitation() method. This will set up a ResultCallback that you can use to launch your deep link activity, drastically simplifying your code.

The Play game services Player Stats API also gets an update. The latest version now includes a new signal for the probability that a player is about to churn. Developers can use this signal to offer special promotions to improve retention. For example, a developer could provide a discount on a power-up for players that are at risk of churning.

Finally, if you are developing for wearables, you’ll know that battery life and optimization of power usage are critical in having a great user experience. With Google Play services 8.3, we’ve updated the DataApi to allow for urgency in how data items are synced. Now, a priority can be added to the data item to determine when it should be synced. For example, if you are building an app that requires immediate syncing, such as a remote control app, it can still be done immediately by calling setUrgent(), but for something such as updating your contacts, you could tolerate some delay. Non-urgent DataItems may be delayed for up to 30 minutes, but you can expect that in most cases they will be delivered within a few minutes. Low priority is now the default, so setUrgent() is needed to obtain the previous timing.

Filter support has been added to listeners in the Android Wear API, allowing listeners to only receive a subset of changes on both phones and watches. Listeners registered in the Android manifest should be filtered to only receive events that require launching the process, with the remaining events being delivered to live listeners added via methods such as addListener(). This reduces the need for listeners to filter out uninteresting events, making applications and the system more efficient.

That’s it for this release of Google Play services. To learn more, visit the Google Developers site.

Categories: Programming

Marine Corps Birthday

Herding Cats - Glen Alleman - Tue, 11/10/2015 - 19:26


Having served with Marines, Happy Birthday. Having had Marines on my work teams, Happy Birthday

Semper Fi

Categories: Project Management

Sponsored Post: StatusPage.io, Digit, iStreamPlanet, Instrumental, Redis Labs, Jut.io, SignalFx, InMemory.Net, VividCortex, MemSQL, Scalyr, AiScaler, AppDynamics, ManageEngine, Site24x7

Who's Hiring?
  • Senior Devops Engineer - StatusPage.io is looking for a senior devops engineer to help us in making the internet more transparent around downtime. Your mission: help us create a fast, scalable infrastructure that can be deployed to quickly and reliably.

  • Digit Game Studios, Irish’s largest game development studio, is looking for game server engineers to work on existing and new mobile 3D MMO games. Our most recent project in development is based on an iconic AAA-IP and therefore we expect very high DAU & CCU numbers. If you are passionate about games and if you are experienced in creating low-latency architectures and/or highly scalable but consistent solutions then talk to us and apply here.

  • As a Networking & Systems Software Engineer at iStreamPlanet you’ll be driving the design and implementation of a high-throughput video distribution system. Our cloud-based approach to video streaming requires terabytes of high-definition video routed throughout the world. You will work in a highly-collaborative, agile environment that thrives on success and eats big challenges for lunch. Please apply here.

  • As a Scalable Storage Software Engineer at iStreamPlanet you’ll be driving the design and implementation of numerous storage systems including software services, analytics and video archival. Our cloud-based approach to world-wide video streaming requires performant, scalable, and reliable storage and processing of data. You will work on small, collaborative teams to solve big problems, where you can see the impact of your work on the business. Please apply here.

  • At Scalyr, we're analyzing multi-gigabyte server logs in a fraction of a second. That requires serious innovation in every part of the technology stack, from frontend to backend. Help us push the envelope on low-latency browser applications, high-speed data processing, and reliable distributed systems. Help extract meaningful data from live servers and present it to users in meaningful ways. At Scalyr, you’ll learn new things, and invent a few of your own. Learn more and apply.

  • UI EngineerAppDynamics, founded in 2008 and lead by proven innovators, is looking for a passionate UI Engineer to design, architect, and develop our their user interface using the latest web and mobile technologies. Make the impossible possible and the hard easy. Apply here.

  • Software Engineer - Infrastructure & Big DataAppDynamics, leader in next generation solutions for managing modern, distributed, and extremely complex applications residing in both the cloud and the data center, is looking for a Software Engineers (All-Levels) to design and develop scalable software written in Java and MySQL for backend component of software that manages application architectures. Apply here.
Fun and Informative Events
  • Your event could be here. How cool is that?
Cool Products and Services
  • Instrumental is a hosted real-time application monitoring platform. In the words of one of our customers: "Instrumental is the first place we look when an issue occurs. Graphite was always the last place we looked." - Dan M

  • Real-time correlation across your logs, metrics and events.  Jut.io just released its operations data hub into beta and we are already streaming in billions of log, metric and event data points each day. Using our streaming analytics platform, you can get real-time monitoring of your application performance, deep troubleshooting, and even product analytics. We allow you to easily aggregate logs and metrics by micro-service, calculate percentiles and moving window averages, forecast anomalies, and create interactive views for your whole organization. Try it for free, at any scale.

  • Turn chaotic logs and metrics into actionable data. Scalyr replaces all your tools for monitoring and analyzing logs and system metrics. Imagine being able to pinpoint and resolve operations issues without juggling multiple tools and tabs. Get visibility into your production systems: log aggregation, server metrics, monitoring, intelligent alerting, dashboards, and more. Trusted by companies like Codecademy and InsideSales. Learn more and get started with an easy 2-minute setup. Or see how Scalyr is different if you're looking for a Splunk alternative or Sumo Logic alternative.

  • SignalFx: just launched an advanced monitoring platform for modern applications that's already processing 10s of billions of data points per day. SignalFx lets you create custom analytics pipelines on metrics data collected from thousands or more sources to create meaningful aggregations--such as percentiles, moving averages and growth rates--within seconds of receiving data. Start a free 30-day trial!

  • InMemory.Net provides a Dot Net native in memory database for analysing large amounts of data. It runs natively on .Net, and provides a native .Net, COM & ODBC apis for integration. It also has an easy to use language for importing data, and supports standard SQL for querying data. http://InMemory.Net

  • VividCortex goes beyond monitoring and measures the system's work on your servers, providing unparalleled insight and query-level analysis. This unique approach ultimately enables your team to work more effectively, ship more often, and delight more customers.

  • MemSQL provides a distributed in-memory database for high value data. It's designed to handle extreme data ingest and store the data for real-time, streaming and historical analysis using SQL. MemSQL also cost effectively supports both application and ad-hoc queries concurrently across all data. Start a free 30 day trial here: http://www.memsql.com/

  • aiScaler, aiProtect, aiMobile Application Delivery Controller with integrated Dynamic Site Acceleration, Denial of Service Protection and Mobile Content Management. Also available on Amazon Web Services. Free instant trial, 2 hours of FREE deployment support, no sign-up required. http://aiscaler.com

  • ManageEngine Applications Manager : Monitor physical, virtual and Cloud Applications.

  • www.site24x7.com : Monitor End User Experience from a global monitoring network.

If any of these items interest you there's a full description of each sponsor below. Please click to read more...

Categories: Architecture