Sunday, January 24, 2021

The API Layer for use by mobile applications.

 This is a continuation from the previous post:

  • Less chatty traffic between mobile applications and servers: Internet is extremely popular to allow any sized load and traffic for businesses anywhere. At first, this seems counter-intuitive towards highly responsive mobile applications but the migration of business applications from SOAP to REST to GraphQL has shown that mobile applications can do more with less.  GraphQL makes the frontend easier to develop, API versioning is no longer a problem, works with less data fetching, works well with serverless computing and driving down costs with being dynamic and flexible. 


  • Operational insights: Almost all IT businesses are concerned about ITOM such as with alerts and events, ITSM such as with incidents and service requests, and intelligence in operations. For example, the use of a web proxy helps differentiate between the traffic to the backend service, gather statistics and troubleshooting information on the clients – both mobile and desktop and to improve the security and offerings of the backend services. Similarly, IT data analytics software allow search and reporting on any kind of logs, metrics and events.  Together these empower the business to move fast on the demand areas for improvements. 


  • Allowing mobile applications and browsers to be quirky – Customers will never be happy with one stack or application. They are going to be fickle as choices explode but what will draw them back will be those applications that are mindful of their convenience and user experience.  Investing in a platform agnostic framework with security best practices such as from OWASP allows this convenience to them with no vulnerabilities or liabilities to the business. 


  • Organizing the APIs was only needed for stateful services while the stateless services allowed a namespace and nesting enabled, folder-like resource enumeration. Some techniques allow APIs to be discoverable from requests and responses. In all these cases, it is better to tailor it to the demand rather than the infrastructure or storage. Customers do not notice the difference between a data pipeline and a data storage but if we get the synchronization right, they will like their data, purchases and experiences to be carried across services. Performance is also improved when the focus on customer requirements is streamlined via dedicated services allow storage layer to take care of making it available globally and in near real time. 

Saturday, January 23, 2021

The API Layer for use by mobile applications.

Problem statement: Business all over the world have found mobile computing contributing to the topline and driving sales as customers appreciate the ubiquity and convenience of services accessed via handheld devices. Regardless of the business model, purpose and value offerings, most mobile applications require certain minimum requirements from backend services. This article attempts to enumerate some such requirements. 


Solution: The primary language of communication between mobile applications and business services are web requests made over HTTP. Fortunately, web applications have been around for over several decades leveraging clean separation of concerns and adoption of standardized application blocks, protocols, and deployment strategies. Their evolution from onerous object relational mapping in monolithic application logic and storage has shown a shift towards decentralized application modules hosted as microservices in a deeply separated hardware and software stacks hosted in the cloud. They continue to evolve with improvements made in specific pockets, but we are writing this article to pay attention to the considerations that will significantly improve the most common mode of implementation and one that will support a growing business. 


  • Cloud-empowered mobile applications: Even though large corporations are heavily invested in hybrid cloud computing; we recommend a public cloud infrastructure for attracting traffic to your business. It is a big sponge for the data that flows from customers and even with multi-tenant model on a highly efficient and cost-effective hybrid cloud computing framework, the future would be brighter with public cloud computing. Public cloud is here to stay and not just because Information technology was deprioritized to commodity computing in favor of new business processes and efficient business models. Build it right from the start. Sure, there might be some noise about cost estimates, changing landscapes and adoptions, and the insecurity about handing off your infrastructure to the cloud, but these diminish in favor of the overall value of the public cloud. 

Friday, January 22, 2021

When-to-use-what data mining algorithms ( continued )...

 

Collaborative filtering 

Recommendations include suggestions for knowledge base, or to find model service requests. In order to make a recommendation, first a group sharing similar taste is found and then the preferences of the group is used to make a ranked list of suggestions. This technique is called collaborative filtering. A common data structure that helps with keep tracking of people and their preferences is a nested dictionary. This dictionary could use a quantitative ranking say on a scale of 1 to 5 to denote the preferences of the people in the selected group.  To find similar people to form a group, we use some form of a similarity score. One way to calculate this score is to plot the items that the people have ranked in common and use them as axes in a chart. Then the people who are close together on the chart can form a group. 

Several approaches mentioned earlier provide a perspective to solving a problem. This is different from those in that opinions from multiple participants in a group is taken to determine the best set of articles or service requests to recommend. 


Thursday, January 21, 2021

When-to-use-what data mining algorithms:

 

Plugin Algorithms 

Several algorithms get customized to the domain they are applied to resulting in unconventional or new algorithms. For example, a hybrid approach on association clustering can benefit determining relevant associations when the matrix is quite large and has a large tail of irrelevant associations from the cartesian product. In such cases, some from clustering could be done prior to association to determine the key items prior to this market-basket analysis. 

IT service requests are notoriously susceptible to being opened with variations even when pertaining to the same category. These service requests do not have pre-populated fields from a template, and everyone enters values for inputs that differ from one to another. Using a hybrid approach, it is possible to preprocess these requests with clustering before analyzing such as with association clustering.  

Simultaneous classifiers and regions-of-interest regressors 

Neural nets algorithms typically involve a classifier for use with the tensors or vectors. But regions-of-interest regressors provide bounding-box localizations. This form of layering allows incremental semantic improvements to the underlying raw data. 

IT Service requests are time-series data and as more and more are opened, specific time ranges become as important as the semantic classification of the requests. Using this technique, underlying issues can be discovered as tied to outages. The determination of root cause behind a handful of service requests is valuable information. 

Algorithm Implementations: 

Wednesday, January 20, 2021

 #codingexercise

Public string[] getParts(String complex) {

       Int  plus = complex.indexOf(‘+’);

       Int minus = complex.indexOf(‘-’);

       If ( plus == -1 && minus == -1) return new String[1];

       String[] parts = new String[3];

       If (plus != -1 && minus != -1) {

           Parts[0] = “+-”;

           Parts[1] = complex.substring(0, plus);

           Parts[2] = complex.substring(minus + 1, complex.length); 

           Return parts;

       }

      If(plus !=1) {

           Parts[0] = “+”;

           Parts[1] = complex.substring(0, plus);

           Parts[2] = complex.substring(plus + 1, complex.length); 

           Return parts;

      }

      If (minus != -1) {

           Parts[0] = “-”;

           Parts[1] = complex.substring(0, minus);

           Parts[2] = complex.substring(minus + 1, complex.length); 

           Return parts;

       }

      Parts = newString[2];

       Return parts;


}

This makes a few assumptions but it merely finds the real and the complex parts. 


When-to-use-what data mining algorithms:

 

Logistic Regression 

This is a form of regression that supports binary outcomes. It uses statistical measures, is highly flexible, takes any kind of input and supports different analytical tasks. This regression folds the effects of extreme values and evaluates several factors that affects a pair of outcomes. 

IT requests based on demographics can be used to predict the likelihood of a category of request from a customer. It can also be used for finding repetitions in requests  

Neural Network 

This is widely used method for machine learning involving neurons that have one or more gates for input and output. Each neuron assigns a weight usually based on probability for each feature and the weights are normalized across resulting in a weighted matrix that articulates the underlying model in the training dataset. Then it can be used with a test data set to predict the outcome probability. Neurons are organized in layers and each layer is independent of the other and can be stacked so they take the output of one as the input to the other. 

Widely used for softmax classifier in NLP associated with Service Requests. Since descriptions, case investigation notes, case resolution notes are loose text data captured by technicians, Natural Language Processing has become a significant part of the IT data mining portfolio 

Naïve Bayes algorithm 

This is probably the most straightforward statistical probability-based data mining algorithm compared to others. 

The probability is a mere fraction of interesting cases to total cases. Bayes probability is conditional probability which adjusts the probability based on the premise. 

This is widely used for cases where conditions apply especially binary conditions such as with or without. If the input variables are independent, their states can be calculated as probabilities, and there is at least a predictable output, this algorithm can be applied. The simplicity of computing states by counting for class using each input variable and then displaying those states against those variables for a give value, makes this algorithm easy to visualize, debug and use as a predictor.