<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d8211560\x26blogName\x3dTech+Tips,+Tricks+%26+Trivia\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttps://mvark.blogspot.com/search\x26blogLocale\x3den\x26v\x3d2\x26homepageUrl\x3dhttp://mvark.blogspot.com/\x26vt\x3d601588505461698440', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

Tech Tips, Tricks & Trivia

by 'Anil' Radhakrishna
An architect's notes, experiments, discoveries and annotated bookmarks.

Search from over a hundred HOW TO articles, Tips and Tricks

This Week I Learned - Week #21 2019

Friday, May 24, 2019
This Week I Learned -

*  Azure Custom Vision is a cognitive service that lets you build, deploy and improve your own image classifiers. An image classifier is an AI service that applies labels (which represent classes) to images, according to their visual characteristics. Custom Vision functionality can be divided into two features. Image classification applies one or more labels to an image. Object detection is similar, but it also returns the coordinates in the image where the applied label(s) can be found. Image Classification tags whole images. Object Detection finds the location of content within an image. Custom Vision is only available to use with an Azure subscription.

The HTML5 History API gives developers the ability to modify a website's URL without a full page refresh

Google’s main income comes from its ads business. Advertising made up 91% of Google's revenue in 2016. Google’s ads business is divided into three main components: AdWords, AdSense, AdMob. AdSense publishes ads on other websites. AdMob is the same as AdSense but for mobile applications. AdWords is the software determining which ads will be presented in the Google webpage. Google AdWords is now Google AdsThe new Google Ads brand represents the full range of advertising capabilities we offer today—on Google.com and across our other properties, partner sites and apps—to help marketers connect with the billions of people finding answers on Search, watching videos on YouTube, exploring new places on Google Maps, discovering apps on Google Play, browsing content across the web, and more.

As of January 2019, Google was responsible for almost 90 percent of global desktop search traffic. The company holds a market share of around 90 percent in a wide range of digital markets, having little to no domestic competition in many of them.

* Google AI researchers working with Northwestern Medicine created an AI model capable of detecting lung cancer from screening tests better than human radiologists with an average of eight years experience. The end-to-end deep learning model was used to predict whether a patient has lung cancer, generating a patient lung cancer malignancy risk score and identifying the location of the malignant tissue in the lungs. The model was trained using more than 42,000 chest CT screening images taken from nearly 15,000 patients, 578 of whom developed cancer within a year. Deep learning is also behind Google’s advances in diabetic retinopathy diagnosis through eye scans. Developing the AI-driven DR screening approach involved curating a dataset of 128,000 ophthalmologist-evaluated images of the interiors of eyeballs which were used to train a deep neural network — layers of mathematical functions modeled after biological neurons — to detect DR. Google revealed that it has deployed the algorithm for real-world clinical use at Aravind Eye Hospital in Madurai, India. The algorithm received a CE mark, indicating it meets the European Union Directive’s standards for medical devices - VB

* Ren Zhengfei is a Chinese entrepreneur and engineer. He is the founder and CEO of Shenzhen-based Huawei, the world's largest manufacturer of telecommunications equipment and second largest manufacturer of smartphones. As of February 2019, he had a net worth of US$1.7 billion. Ren Zhengfei's army background and Huawei's opaque culture have fueled suspicions in some countries that the firm has links with the Chinese military and intelligence services. Huawei is the world's seventh-largest information technology company by revenue. The top 10 largest information technology companies are: Apple Inc., Samsung Electronics, Amazon, Hon Hai Precision/Foxconn, Alphabet Inc., Microsoft, Huawei, Hitachi, IBM, Dell Technologies.

* Rudyard Kipling made his home in four continents. Rudyard Kipling was the youngest author ever to win the Nobel Prize for Literature. He was 41 years old when he was awarded the Literature Prize in 1907

* The average age of winning/leading candidates from all 542 constituencies is 54 years and the average value of their total assets is Rs 21 crore - ToI

* These geocharts/choropleth maps summarize the election results of 2019 and the previous time in 1984 when a single party won convincingly -

* Confidence is not, ‘they will like me’. Confidence instead is, ‘I’ll be fine if they don’t — Christina Grimmie

Labels: , , , , , ,

Google's OKR

Thursday, May 23, 2019
Summary of a Business Insider article -

Google uses a organizational system called Objectives and Key Results, or OKRs

The OKR system came from Intel.

First, you set up an Objective. Then you set up a number of "Key Results" that are quantifiable that will help you hit your objective.

Your objectives should be definitive and measurable. Don't say, for instance, I want to make my website prettier. Say you want to make your website 30% faster. Or you want to increase engagement by 15%.

Google has OKRs at a company level, at a team level, at a managerial level, and at a personal level. They all work together to keep the company on track.

At Google, all OKRs are public from Larry Page on down.

OKRs are not used by management to determine promotions. But they can be used by employees to keep an eye on what they've accomplished.


Public Cloud Infrastructure Managed Service Providers in 2019 Gartner's Magic Quadrant

Wednesday, May 22, 2019
Gartner evaluated 19 service providers in its Magic Quadrant for Public Cloud Infrastructure Professional and Managed Services, Worldwide, 2019.

A public Cloud infrastructure MSP, in the context of this Magic Quadrant, is a provider that offers both professional and managed services related to infrastructure and platform operations for one or more hyperscale integrated IaaS and PaaS providers. These providers include Alibaba Cloud, Amazon Web Services (AWS), Google Cloud, IBM Cloud, Microsoft Azure and Oracle Cloud.


2nd Watch
Bespin Global

Tata Consultancy Services
HCL Technologies

Niche Players
DXC Technologies
Samsung SDS

On a different note, the outsourcing market grew nearly 9 percent over the previous year. Following are the top outsourcers on Everest Group’s 2019 annual ranking of the top IT service providers:

  1. Accenture
  2. TCS
  3. Cognizant
  4. Wipro
  5. HCL
  6. Capgemini
  7. IBM
  8. Infosys
  9. DXC Technology Company
  10. NTT DATA

Labels: , , ,

This Week I Learned - Week #20 2019

Saturday, May 18, 2019
This Week I Learned -

With Microsoft identity platform, you can write code once and reach any user. You can build an app once and have it work across many platforms, or build an app that functions as a client as well as a resource application (API).

There are more Microsoft Azure certification exams now compared to last year

With Azure Boards, you can quickly and easily start tracking user stories, backlog items, task, features, and bugs associated with your project.

AWS has released new stencils.

* Amazon Elastic Load Balancers situated at different application tiers ensure that even if an entire zone goes offline, traffic will be directed to the appropriate one. It’s worth pointing out that the ELBs “live” outside the zones and are therefore not impacted by the failure of any particular one. ELB is one of many AWS services that have a regional scope and can span across zones in a given region. Other services like Route 53 is global in scope, as shown below, and provides services to multiple Regions.

Now, anyone, even with no coding skills, can publish skills created using Alexa Skill Blueprints to the Alexa Skills Store in US and India for customers to discover, use, and review.

* The Israel Defense Forces (IDF) has launched a physical attack on Hamas in immediate response to an alleged cyber-assault - Forbes

* Aerial attacks on oil pipeline deep inside Saudi Arabia suggest significant leap in Houthi drone capabilities - Al Jazeera

* San Francisco’s legislature voted to ban city agencies from using facial-recognition technology. Technology such as facial-recognition cameras and automatic licence-plate readers can gather images constantly and store them indefinitely. They make surveillance cheap and invisible - The Economist

Winners are just people who know when to quitand do it often.

* People with a growth mind-set of interest tend to believe that interests and passions are capable of developing with enough time, effort and investment. When you look to successful people you admire, study them not only for their victories and achievements, but also for how they overcame failures and changed as a result of them. And when you’re pursuing new passions, remember that the process itself and the steps you need to take are just as important as your end goal. Temper your expectations and build failure in to your plan, then learn to recognize and celebrate small milestones along the way - NY Times, Smarter Living

* When you ask others questions, most people actually want to help. By asking a question, we activate in them that spirit of helping. When our co-workers ask us questions, we’re more likely to develop a positive opinion of them because we see that they’re humbly turning to us as someone they perceive as having valuable knowledge

If you’re having lunch with some of your peers, then revealing failure is a great strategy to induce levels of liking by reducing malicious envy

As of now, about 66 per cent of the green cards are given to those with family ties and only 12 per cent are based on skills.

Labels: , , ,

Beyond the Twelve-Factor App by Kevin Hoffman

Tuesday, May 14, 2019
The author of the book Beyond the Twelve-Factor App, Kevin Hoffman is an Advisory Solutions Architect for Pivotal Cloud Foundry. Pivotal has made available the ebook version of this excellent resource as a free download. I have compiled key points from the book as a summary for future reference -

The Twelve-Factor App (a collection of patterns that are closely related to microservices approaches) is considered a requirement for cloud-native application architectures:
1. Codebase - One codebase tracked in revision control, many deploys
2. Dependencies - Explicitly declare and isolate dependencies
3. Configuration - Store configuration in the environment
4. Backing Services - Treat backing services as attached resources
5. Build, release, run - Strictly separate build and run stages
6. Processes - Execute the app as one or more stateless processes
7. Port binding - Export services via port binding
8. Concurrency - Scale out via the process model
9. Disposability - Maximize robustness with fast startup and graceful shutdown
10. Dev/prod parity - Keep development, staging, and production as similar as possible
11. Logs - Treat logs as event streams
12. Admin processes - Run admin/management tasks as one-off processes

A group of people within Heroku developed the 12 Factors in 2012. This is essentially a manifesto describing the rules and guidelines that needed to be followed to build a cloud-native  application.

The goal of these 12 factors was to teach developers how to build cloud-ready applications that had declarative formats for automation and setup, had a clean contract with the underlying operating system, and were dynamically scalable

Twelve-factor applications are an excellent start toward building applications that operate in the cloud, but to build cloud-native applications that truly thrive in the cloud, you need to look beyond the 12 factors.

Cloud-friendly applications don’t just run in the cloud; they embrace elastic scalability, ephemeral filesystems, statelessness, and treating everything as a service. Applications built this way can scale and deploy rapidly, allowing their development teams to add new features and react quickly to market changes.

People often use “12 factor” and “cloud native” interchangeably

A cloud-native application is an application that has been designed and implemented to run on a Platform-as-a-Service installation and to embrace horizontal elastic scaling.

Today, we need to be able to focus squarely on the one thing that we do better than our competitors and let platforms take care of our nonfunctional requirements.

By embracing cloud-native architecture, and building our applications on the assumption that everything is a service and that they will be deployed in a cloud environment, we can get all of these benefits and much more. 

1. One codebase, one application
Cloud-native applications must always consist of a single codebase that is tracked in a version control system.

The simplest example of violating this guideline is where your appli‐ cation is actually made of up a dozen or more source code repositories. This makes it nearly impossible to automate the build and deploy phases of your application’s life cycle

One codebase, one application does not mean you’re not allowed to share code across multiple applications; it just means that the shared code is yet another codebase.

2. Dependency management
A cloud-native application never relies on implicit existence of system-wide packages. For Java, this means that your applications cannot assume that a container will be managing the classpath on the server. For .NET, this means that your application cannot rely on facilities like the Global Assembly Cache.

Regardless of language, your code cannot rely on the pre-existence of dependencies on a deployment target.

3. Configuration, credentials, and code
Configuration refers to any value that can vary across deployments (e.g., developer workstation, QA, and production).

4. Backing services
A backing service is any service on which your application relies for its functionality. This is a fairly broad definition, and its wide scope is intentional. Some of the most common types of backing services include data stores, messaging systems, caching systems, and any number of other types of service, including services that perform line-of-business functionality or security.

When building applications designed to run in a cloud environment where the filesystem must be considered ephemeral, you also need to treat file storage or disk as a backing service. You shouldn’t be reading to or writing from files on disk like you might with regular enterprise applications. Instead, file storage should be a backing service that is bound to your application as a resource.

The binding of an application to its backing services should be done via external configuration.

5. Design, build, release, and run
Builds are ideally created by a Continuous Integration server, and there is a 1:many relationship between builds and deployments.

6. Stateless processes
All long-lasting state must be external to the application, provided by backing services. So the concept isn’t that state cannot exist; it is that it cannot be maintained within your application. As an example, a microservice that exposes functionality for user management must be stateless, so the list of all users is maintained in a backing service (an Oracle or MongoDB database, for instance).

Your processes can vanish at a moment’s notice with no warning, and that’s a good thing. Processes come and go, scale horizontally and vertically, and are highly disposable. This means that anything 
shared among processes could also vanish, potentially causing a cascading failure.

The filesystem is not a backing service. If processes need to share data, like session state for a group of processes forming a web farm, then that session state should be externalized and made available through a true backing service.

There are dozens of third-party caching products, including Gemfire and Redis, and all of them are designed to act as a backing service cache for your applications. They can be used for session state, but they can also be used to cache data your processes may need during startup and to avoid tightly coupled data sharing among processes.

7. Port binding
Web applications, especially those already running within an enterprise, are often executed within some kind of server container. The Java world is full of containers like Tomcat, JBoss, Liberty, and WebSphere. Other web applications might run inside other containers, like Microsoft Internet Information Server (IIS).

There must always be a 1:1 correlation between application and application server. In other words, your cloud provider might support a web app container, but it is extremely unlikely that it will support hosting multiple applications within the same container, as that makes durability, scalability, and resilience nearly impossible.

8. Concurrency
Adding CPUs, RAM, and other resources (virtual or physical) to a single monolithic application is called vertical scaling

A much more modern approach, one ideal for the kind of elastic scalability that the cloud supports, is to scale out, or horizontally.

If you are building disposable, stateless, share-nothing processes then you will be well positioned to take full advantage of horizontal scaling and running multiple, concurrent instances of your application so that it can truly thrive in the cloud.

9. Disposability
A cloud-native application’s processes are disposable, which means they can be started or stopped rapidly. An application cannot scale, deploy, release, or recover rapidly if it cannot start rapidly and shut down gracefully. We need to build applications that not only are aware of this, but also embrace it to take full advantage of the platform.

10. Environment parity
While the opportunities for creating a gap between environments are nearly infinite, the most common culprits are usually:
• Time
• People
• Resources

11. Logs 
Cloud applications can make no assumptions about the file system on which they run, other than the fact that it is ephemeral. One of the many reasons your application should not be controlling the ultimate destiny of its logs is due to elastic scalability.

When your applications are decoupled from the knowledge of log storage, processing, and analysis, your code becomes simpler, and you can rely on industry-standard tools and stacks to deal with logs.

12. Administrative processes
Examples of administrative processes that should probably be refactored into something else include:
• Database migrations
• Interactive programming consoles (REPLs)
• Running timed scripts, such as a nightly batch job or hourly import
• Running a one-off job that executes custom code only once

Don’t use your favorite programming language to spawn a new process to run your job; use something designed to run one-off tasks in a cloud-native manner. In a situation like this, you could use a solution like Amazon Web Services Lambdas, which are functions that get invoked on-demand and do not require you to leave provisioned servers up and running

Ask yourself if you really need administrative processes, or if a simple change in architecture could obviate them.

13. API first
API first gives teams the ability to work against each other’s public contracts without interfering with internal development processes

API first means that what you are building is an API to be consumed by client applications and services.

If you adopt the mentality that all applications are just backing services and that they should be designed API-first, then your system is free to grow, adapt to new load and demand, and accommodate new consumers of existing services without having to stop the world to re-architect yet another closed system.

14. Telemetry
When it comes to monitoring your application, there are generally a few different categories of data: 
• Application performance monitoring (APM) - "average number of HTTP requests per second an application is processing"
• Domain-specific telemetry - "number of widgets sold to people on iPads within the last 20 minutes"
• Health and system logs - application start, shutdown, scaling, web request tracing, and the results of periodic health checks

15. Authentication and authorization
In an ideal world, all cloud-native applications would secure all of their endpoints with RBAC (role-based access control). Every request for an application’s resources should know who is making the request, and the roles to which that consumer belongs.

Security should be something that is baked into the application’s development from day one, and not added as a bolt-on project after an application is running in production.