Tuesday, February 21, 2017

Operational - the Forgotten Architectural View

Operational - the Forgotten Architectural View

Architecting for Failure in a Containerized World







  • Operations staff accept and operate new and changed software in production and are responsible for its service levels.
  • Infrastructure engineers provide the infrastructure services the system relies on.
  • Developers are responsible for the software, its smooth transition to production, and, ultimately, its success.
  • Testers verify that both the software and the production environment as a whole will operate correctly.
  • Communicators explain the system's operation to clients, in the context of developing a product for installation on client premises.
  • Assessors must be satisfied that the risks of operating the system in production are acceptable and managed.






1. G. Kim, K. Behr, and G. Spafford, The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win, IT Revolution Press, 2014.

2. L. Bass, I. Weber, and Z. Luming, DevOps: A Software Architect's Perspective, Addison-Wesley, 2015.

3. N. Rozanski and E. Woods, Software Systems Architecture, Addison- Wesley, 2011.

4. N. Rozanski and E. Woods, "The Development Viewpoint", Software Systems Architecture, 2016;

5. B. Forrest, "Bing and Google Agree: Slow Pages Lose Users", O’Reilly, 23 June 2009;

6. D. Farley and J. Humble, Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation, Addison-Wesley, 2010.



Untangling an API-First Transformation at Scale. Lessons Learnt at PayPal – Part 1

Untangling an API-First Transformation at Scale. Lessons Learnt at PayPal – Part 1





  • A playbook defining common principles and standards for APIs
  • An engagement process to ensure compliance when developing APIs
  • A means of governance including clear and objective measurement
  • Some kind of centralized portal to consolidate APIs and manage the process and metrics

Agile as a Metabolism

Agile as a Metabolism

Make Better Decisions Together

In Search of Elasticity - SQLServerCentral

In Search of Elasticity - SQLServerCentral



Microsoft alone offers Azure Database Elastic Pool, Azure SQL Database
with (or without) Elastic Tools, and Azure Elastic Data Warehouse. 




Here is my recipe.




Take Azure SQL Data Warehouse (multiple distributions, each with its own storage).




Drastically improve distribution elimination.




Allow to choose the tier(s) when scaling (like for Azure SQL Database), at least for the control node vs. the others.




Add support for most prominent SQL features we are accustomed to, like identity and DRI constraints.




Improve T-SQL language compatibility (at least add support for some very basic features like select to a variable).


Sunday, February 19, 2017

UX, UI, IA: User-Experience Research Methods: Service Models, Information Architecture Day

When to Use Which User-Experience Research Methods

Complete Beginner's Guide to Information Architecture | UX Booth

World IA Day 2017

Self and Identity | Noba

Case Studies and Articles About Principles of Persuasion

Information Architecture Resource Library | IA Institute

Architecting Interactivity

Wendell Berry’s “Solving for Pattern”

Philosophy of Sustainability, Technology

The Fifteen Fundamental Properties of Wholeness | The Kubala Washatko Architects, Inc.

Abby the Information Architect – I make the unclear be clear.

Pervasive Information Architecture: Designing Cross-Channel User Experiences - Andrea Resmini, Luca Rosati - Google Books

UX Design Methods & Deliverables



 


How to Make Sense of Any Mess | UX Booth

Five app prototyping tools compared: Proto.io, Pixate, Origami, Framer & Form – Design + Sketch – Medium
12 tips for UX Designers who want to learn to prototype




When to Use Which User-Experience Research Methods



20 UX Methods in Brief

Here’s a short description of the user research methods shown in the above chart:
Usability-Lab Studies: participants are brought into a lab, one-on-one with a researcher, and given a set of scenarios that lead to tasks and usage of specific interest within a product or service.
Ethnographic Field Studies: researchers meet with and study participants in their natural environment, where they would most likely encounter the product or service in question.
Participatory Design: participants are given design elements or creative materials in order to construct their ideal experience in a concrete way that expresses what matters to them most and why.
Focus Groups: groups of 3-12 participants are lead through a discussion about a set of topics, giving verbal and written feedback through discussion and exercises.
Interviews: a researcher meets with participants one-on-one to discuss in depth what the participant thinks about the topic in question.
Eyetracking: an eyetracking device is configured to precisely measure where participants look as they perform tasks or interact naturally with websites, applications, physical products, or environments.
Usability Benchmarking: tightly scripted usability studies are performed with several participants, using precise and predetermined measures of performance.
Moderated Remote Usability Studies: usability studies conducted remotely with the use of tools such as screen-sharing software and remote control capabilities.
Unmoderated Remote Panel Studies:  a panel of trained participants who have video recording and data collection software installed on their own personal devices uses a website or product while thinking aloud, having their experience recorded for immediate playback and analysis by the researcher or company.
Concept Testing: a researcher shares an approximation of a product or service that captures the key essence (the value proposition) of a new concept or product in order to determine if it meets the needs of the target audience; it can be done one-on-one or with larger numbers of participants, and either in person or online.
Diary/Camera Studies: participants are given a mechanism (diary or camera) to record and describe aspects of their lives that are relevant to a product or service, or simply core to the target audience; diary studies are typically longitudinal and can only be done for data that is easily recorded by participants.
Customer Feedback: open-ended and/or close-ended information provided by a self-selected sample of users, often through a feedback link, button, form, or email.
Desirability Studies: participants are offered different visual-design alternatives and are expected to associate each alternative with a set of  attributes selected from a closed list; these studies can be both qualitative and quantitative.
Card Sorting: a quantitative or qualitative method that asks users to organize items into groups and assign categories to each group. This method helps create or refine the information architecture of a site by exposing users’ mental models.
Clickstream Analysis: analyzing the record of screens or pages that users clicks on and sees, as they use a site or software product; it requires the site to be instrumented properly or the application to have telemetry data collection enabled.
A/B Testing (also known as “multivariate testing,” “live testing,” or “bucket testing”): a method of scientifically testing different designs on a site by randomly assigning groups of users to interact with each of the different designs and measuring the effect of these assignments on user behavior.
Unmoderated UX Studies: a quantitative or qualitative and automated method that uses a specialized research tool to captures participant behaviors (through software installed on participant computers/browsers) and attitudes (through embedded survey questions), usually by giving participants goals or scenarios to accomplish with a site or prototype.
True-Intent Studies: a method that asks random site visitors what their goal or intention is upon entering the site, measures their subsequent behavior, and asks whether they were successful in achieving their goal upon exiting the site.
Intercept Surveys: a survey that is triggered during the use of a site or application.
Email Surveys: a survey in which participants are recruited from an email message.




Fall of the Designer Part II: Pixel Pushers — Eli Schiff

movement in both web and native application design, with new and popular courses like Design then Code by Mike Rundle, and Design + Code by Meng To,

Part I: Fashionable Nonsense.

 






How to Assess the Maturity of Your Information Architecture :: UXmatters



Design Thinking | Employing Design Principles | Defining Ease of Use :: UXmatters

















Thursday, February 16, 2017

Scaling Git (and some back story) | Brian Harry's blog

Scaling Git (and some back story) | Brian Harry's blog





  1. Source control
  2. Work management
  3. Builds
  4. Release
  5. Testing
  6. Package management
  7. Telemetry
  8. Flighting
  9. Incident management
  10. Localization
  11. Security scanning
  12. Accessibility
  13. Compliance management
  14. Code signing
  15. Static analysis

Register Now For MVP-Led TechDays Online – Microsoft MVP Award Program Blog

Register Now For MVP-Led TechDays Online – Microsoft MVP Award Program Blog



Quantum Computing is the future. And
Blockchain and bots are now reality. So what does this mean for you in
the real world? Head to
TechDays Online, Microsoft UK’s biggest online conference, and you’ll have the chance to tackle some of these tough topics.

AI is getting smarter; Microsoft researchers want to ensure it’s also getting more accurate - Microsoft Research

AI is getting smarter; Microsoft researchers want to ensure it’s also getting more accurate - Microsoft Research

LinkedIn Data Reveals The Most Promising Software & IT Jobs of 2017 | LinkedIn

LinkedIn Data Reveals The Most Promising Software & IT Jobs of 2017 | LinkedIn

Acronyms | Think Kindness

Kindness in the Classroom: Keeping it Simple | Think Kindness



T – is it True?

H – is it Helpful?

I – is it Inspiring?

N – is it Necessary?

K – is it Kind?



“The 3 Rs”:


  1. Be Responsible
  2. Be Respectful
  3. Be Respectable

Managing Bad Data - Tim Mitchell

Managing Bad Data - Tim Mitchell



last post in my ongoing series about ETL best practices, I discussed the importance of error handling in ETL processes,

Wednesday, February 15, 2017

React.js Best Practices for 2016 | @RisingStack

React.js Best Practices for 2016 | @RisingStack



check out our React.js tutorial, or the React howto by Pete Hunt.

you should check out redux and Dan Abramov's Getting started with redux course





coryhouse/react-slingshot:
React + Redux starter kit / boilerplate with Babel, hot reloading,
testing, linting and a working example app, all built in




Get Started

  1. Initial Machine Setup. First time running the starter kit? Then complete the Initial Machine Setup.
  2. Clone the project. git clone https://github.com/coryhouse/react-slingshot.git.
  3. Run the setup script. npm run setup
  4. Run the example app. npm start -s




Why Slingshot?



  1. One command to get started - Type npm start to start development in your default browser.
  2. Rapid feedback - Each time you hit save, changes hot reload and linting and automated tests run.
  3. One command line to check - All feedback is displayed on a single command line.
  4. No more JavaScript fatigue - Slingshot uses the most popular and powerful libraries for working with React.
  5. Working example app - The included example app shows how this all works together.
  6. Automated production build - Type npm run build to do all this:

Building data processing and visualisation pipelines in the browser with Exynize – The Data Experience – Medium

Building data processing and visualisation pipelines in the browser with Exynize – The Data Experience – Medium



 it’s open source and you can find it on Github.



A platform that allows:

  • constructing pipelines right in your browsers with very little effort,
  • writing processing component as if you was dealing with a single data item,
  • re-using existing processing modules in new pipelines,
  • creating real-time processing and visualisation without thinking about doing real-time at all,
  • spending time on doing actual work, not fiddling with scaffolding.

Building a platform for serverless data-driven applications with Node.js and microservices

Building a platform for serverless data-driven applications with Node.js and microservices



Let’s see what questions you’ll have to answer before you create your project:

  • Do I want to use babel or plain ES5 is good enough? Maybe typescript? Or just flow with babel?
  • Do I want to use all-in-one solution or minimal framework?
  • If I want an all-in-one, which one? MEAN.js? Meteor? New shiny Nodal?
  • If it’s framework — which one do I want to take? Express? Hapi? Koa? Something else?
  • Which database (and library for it) I want to use? Mongo? Redis? PostgreSQL?
  • Do I need auth? Do I roll my own or use library? Passport.js? Another one?

Accelerating Innovation at Comparethemarket.com with Microservices Powered by MongoDB and AWS – AWS Startup Collection – Medium

Accelerating Innovation at Comparethemarket.com with Microservices Powered by MongoDB and AWS – AWS Startup Collection – Medium

Serverless Architectures with Java 8, AWS Lambda, and Amazon DynamoDB — Part 2 – AWS Startup Collection – Medium

Deploying Microservices: Choosing a Strategy

Deploying Microservices: Choosing a Strategy





  1. Introduction to Microservices
  2. Building Microservices: Using an API Gateway
  3. Building Microservices: Inter‑Process Communication in a Microservices Architecture
  4. Service Discovery in a Microservices Architecture
  5. Event‑Driven Data Management for Microservices
  6. Choosing a Microservices Deployment Strategy (this article)
  7. Refactoring a Monolith into Microservices
 

Microservice Architecture with Spring Boot and Docker, Part I

Microservice Architecture with Spring Boot and Docker, Part I





What you will need:


  • Docker Toolbox:
    containing VirtualBox (for creating the VM that will run your
    containers), Docker Machine (runs within a VM to run Docker Containers),
    Docker Kitematic (a GUI for managing containers running in your Docker
    Machine), and Docker Compose (tool to orchestrate multiple container
    templates)
  • Git: you can follow along here. I’m a fan of Git Extensions on Windows and SourceTree on Mac, but anything including command line git is fine
  • Java 8 SDK: Java 8 had me at PermGen improvements; the collection streaming and lambda support are great, too
  • A build tool of choice: Let’s use Gradle. I recommend using SDKMan,
    formally known as GVM, to manage Gradle versions. If you’re working on
    Windows, you can use Cygwin with SDKMan or SDKMan’s Powershell CLI, or Gravy as an alternative
  • IDE of choice: We’ll work with the Spring Tool Suite (STS). As of this writing, the latest version is 3.7.0 for Mac
  • A REST tool: this is very handy for any web service project. I’m a big fan of the Chrome extension Postman. If you’re good at cURL, that works too
  • uMongo or other Mongo GUI: a document database fits the model of
    self-containment pretty well — objects are retrieved automatically, and
    reference objects are referred to by ID in a microservice architecture,
    which maps to a document store pretty well. Plus, MongoDB has an
    “official” Docker image which works very well


An executive’s guide to software development | McKinsey & Company

An executive’s guide to software development | McKinsey & Company