The Impact of AR on Retail

The Impact of Augmented Reality on Retail

Augmented Reality (AR) is a technology that allows overlaying digital content like images, videos and 3D objects onto the real world, thereby give the illusion of being a part of it. One of the most famous examples of AR is Pokémon Go, which overlays a virtual Pokémon (a 3D cartoon character) onto the real world. AR also offers tremendous possibilities outside of the Gaming Industry, especially in Retail.

The adage “Customer Is God” is a golden rule. It isn’t surprising, therefore, that any business that solves its customer’s problems effectively, gets rewarded with the customer’s loyalty, money, and trust. AR is fast becoming an invaluable tool in the hands of Retail businesses that aim to constantly impress their customer base and stay ahead of the competition.

……………………………………………………………………………………………………

Let’s look at some of the issues that concern the customers of this industry.

Customer Problems

With Online Retail:

  • High Time Consumption – Let’s say you order cloth from an e-commerce website. Typically it will take a few days for the product to reach you. You then gauge it on all the parameters that matter – size, color, texture, etc. If the product does not meet your expectations, you are likely to exchange the item, triggering the cycle to repeat.
  • Return Costs – If the business doesn’t bear the shipment cost of returns, customers are likely to pay for it.
  • Problems with large items – It requires a very vivid imagination to see how a new couch would look in a room. Will it look good with the rest of the furniture? Or will it even fit in the first place?

With Offline Retail:

  • Too much work – It takes a lot of time and energy going around dozens of stores and looking for the right items and then trying various permutations and combinations to check if they look well together.

With both Online and Offline Retail:

  • Un-try-able Products – Some products can’t be tried on. For example, It’s hard to imagine how a particular hair color would look on you, or if that dragon tattoo would be too much for you to carry.
  • Un-personalized Shopping Experience – Currently the preferences of a customer are unknown to the business. Consequently, the suggestions given to the customers are un-personalized and work on a hit-and-trial basis.
  • Hygiene Issues – Whether you have germophobia or otherwise, there is always a risk of contracting a disease owing to the dress being tried on earlier by an infected person.
  • It ain’t fun – Going from store to store, from one website and mobile app to another and trying on or imagining how every product would look like on you is an exhausting experience and is not fun for most. And in online retail, even after so much effort, one can never know if the product will turn out to be expected.

……………………………………………………………………………………………………

Let’s look at some of the issues that concern the businesses of this industry.

Business Problems

With Online Retail:

  • Shipment Costs – The trade-off between bearing the shipment costs of product-returns vis-a-vis making the customers pay for it is a tough choice for any business.

Doing Offline Retail:

  • Compensation for salespeople – Since the whole process is very manual, from the salesperson showing the items to the customer to making the sale, a constant involvement is needed.

Problems common to Online and Offline Retail:

  • Conversion Rates – Due to a lack of personalized suggestions and ads, and a tiring shopping experience, conversion rates of businesses are lower than they can be.
  • Brand Awareness – Extensive marketing is needed for businesses to create awareness of their brands, and it is invariably a very expensive matter.
  • Customer Acquisition – Customer Acquisition costs eat up a big portion of a business’s profits. These are mainly un-targeted advertisements having low conversion rates.

……………………………………………………………………………………………………

How AR helps solve these problems

Try And Buy Functionality:  AR can overlay any item onto the real world to make it seem like it is a part of it. Powerful Machine Learning (ML) algorithms can detect the face and body of a person in an image or even in real-time. An application using a combination of AR and ML can allow its users to try on a virtual version of any item they would like to buy, from the comfort of their houses. Another possible feature is the placement of virtual 3D models of furniture inside a user’s house. Such features will reduce the number of returns the buyer makes which helps save time and reduce the return.

Saves User’s Time and Energy:  as now they have the whole inventory of products available to them and they can try anything on with a click rather than manually trying every item on.

Eliminate Hygiene-related Problems: Trying items in this new way is much efficient and can be made as aesthetically appealing as needed, making the whole process a joyous experience for the user.

Increase Brand Awareness: Users can click a picture of them trying on an item and can share it on social media. This will lead to free marketing and increased brand awareness.

Automated Processes: For offline retail, the need for a salesperson is heavily reduced. A user will enter a fitting room with a screen instead of a mirror and a camera attached to the screen. Users can touch and select their choice of clothing from the screen and can try a virtual version of it instantly. If they like the item they can ask to try the real item on. Hence the need for a salesperson is reduced considerably.

Attracting Customers and Increasing Conversion Rates: A screen mounted with a camera-enabled with AR can show how someone standing in front of the mirror would look like wearing a certain item. Such a setup outside a retail store will attract flocks of customers who after seeing them trying on a virtual item would want to buy it if it looked good.

……………………………………………………………………………………………………

Things To Know Before Introducing AR Into A Business

Accuracy: An AR experience that isn’t accurate will not be useful for the customers or the business. For example, a user won’t like if the sunglasses they’re trying on, fits on their forehead instead of eyes, or if the virtual couch they are trying to place doesn’t rest on the ground properly.

Speed: An AR experience must be fast and lag-free. Long loading time and high latency always drive the user away.

……………………………………………………………………………………………………

If you have any queries in this field, talk to Mindfire Solutions. For over 20+ years now, we have been the preferred Software Development Partner of over 1000+ Small and Medium-sized enterprises across the globe.

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
DevOps

The Impact of DevOps Adoption on Teams

Companies operating in the field of software development have ushered into an era of stiff challenges and expectations, unprecedented till now. Possessing the qualities of agility, accuracy and speed simultaneously are becoming imperative for survival rather than a means of maintaining a competitive edge. Under the circumstances, a DevOps culture provides a flexible, efficient approach of standing up to the demands. It does so by following a model that delivers results leveraging the dependencies that exist between the software development and operations aspects of software delivery. It balances responsibilities more evenly than in a traditional waterfall model, where developers simply turn completed code over to those in charge of operations. DevOps also establishes procedures to ensure that all team members have insights into application performance, which provides benefits such as greater collaboration and engagement between team members.

……………………………………………………………………………………………………

Improved Collaboration

Traditional software development happens in phases. There are teams mapped to each phase and each team is entrusted with the responsibility of playing its part in the successful completion of the phase it is involved in or responsible for.  The result of this approach is that the ownership of a team gets too confined only to the successful execution of the part it deals with. Thus, each team tends to be most concerned with achieving its own objectives instead of meeting the organization’s ultimate business goals. As long as projects get executed successfully, the fissures that exist beneath do not come to the forefront. It is only in the moments of crisis that the lack of synergy becomes apparent and sometimes takes gigantic proportions resulting in the partial or complete derailment of projects.

DevOps neutralizes this possibility completely. The approach requires all team members to be equally dedicated in meeting the broad goals while also focussing on their individual ones. This leads to improving collaboration between people across the development and operations teams. This model eliminates the possibility of working in silos. Members across teams remain fully committed to the software throughout its development life cycle to ensure that their project’s overall goals are met. Accountability for successful delivery lies with all. This compels employees to get more involved in working together.

More Engagement

One of the primary goals of DevOps is to shorten the development life cycle while still delivering software that meets business objectives. The shorter development cycle essentially means a higher frequency of code releases followed by exposing these releases to scrutiny for the detection of bugs within the code, infrastructure and configuration. The pace at which things get done is brisk. There are no slack periods for teams anymore waiting for their phases to begin. All this brings about a high degree of engagement for all the members involved in a project. And it can be intense at times. The results are equally impressive. Industry reports have indicated that the failure rate of organizations with a DevOps culture is 60 times lower than those that don’t.

Higher Efficiency

DevOps uses a workflow that emphasizes on continuous delivery (CD) and continuous integration (CI). The efficiency that gets infused results in software getting delivered faster and with a higher frequency. Automated testing and integration tools are also key elements in DevOps practices. It makes the IT staff more efficient by eliminating the need for them to perform repetitive tasks. Developers no longer need to wait for code integration processes to complete, which can otherwise get quite time-consuming.

DevOps platforms offer opportunities for improving efficiency and increasing the predictability of cloud-based solutions like Azure and Amazon Web Services (AWS). These platforms use a scalable infrastructure to reduce testing and deployment times by increasing available hardware resources during this period. They also provide DevOps as a service, such as Azure DevOps. AWS also provides a set of services specifically intended to help organizations implement DevOps practices.

Exposure & Learning

Employees are generally happier and more productive under the DevOps model, largely because it focuses more on performance than anything else. There are fewer administrative obstacles and greater sharing of risk, which allows individuals to blossom. Members in both development and operations teams prefer DevOps because they get exposed to multiple roles, resulting in their getting a better understanding of project execution and the business as a whole. This experience is more rounded, fulfilling and increases job satisfaction considerably.

Better Results

The improved collaboration between teams and the ensuing efficiency has a direct impact on reducing the time needed to build software. Collaboration encourages a proactive approach amongst team members in putting their act together. All this eventually reduces the time needed to bring a product to market. This benefit is particularly important in competitive markets where the ability to deliver software on time has a direct impact on the revenue and market share. With the DevOps approach not only is the speed looked after but also the quality of the outcome. It also increases customer satisfaction when they receive a comprehensive product sooner than expected, with all the promised benefits delivered quality-wise. To achieve this end goal can be a highly fulfilling experience for all the members involved in giving shape to the software.

……………………………………………………………………………………………………

A DevOps culture improves the collaboration between groups with historically distinct roles, especially people in software development and operations. This practice provides many other benefits that generally result in the faster delivery of software. DevOps practices also improve the engagement of team members by making them responsible for projects throughout their entire life cycle, rather than a specific phase of the project. The increasing availability of tools is making it easier for organizations to implement DevOps practices, allowing team members to automate many of the tasks needed to develop, test and maintain code.

……………………………………………………………………………………………………

If you have any queries in this field, talk to Mindfire Solutions. For over 20+ years now, we have been the preferred Software Development Partner of over 1000+ Small and Medium-sized enterprises across the globe.

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
NLP Image

Impact of NLP on Healthcare Industry

Natural language processing (NLP), along with machine learning, deep learning, computer vision, and image recognition, are all branches of artificial intelligence (AI). The goal of NLP software is to build computer systems that will accept input in the form of spoken or written language and will provide spoken or written output i.e. communicate as if the computer system were a human.

Thanks to devices and applications like Alexa, Siri, Google Assistant and Cortana, much of the world’s population has at least a passing familiarity with NLP. It is being used today to perform a wide range of tasks across many industries. Until recently though, healthcare organizations have lagged behind others in capturing the benefits NLP delivers. However, it’s beginning to catch up.

Here are several use cases for NLP in healthcare that are already enhancing the field. Each of these will contribute to the larger digital transformation of healthcare as technology continues to advance.

……………………………………………………………………………………………………

Medical Coding and Billing

NLP streamlines the way medical coders extract diagnostic, procedural and other clinical information. Rather than a coder reading documents and converting them to alphanumeric codes, NLP reads them and submits the codes to the coder for verification. This allows the human coder to work on documents that NLP cannot process accurately, and reduces the overall expense of coding medical information. In the end, more accurate and thorough coding results in more accurate and timely billing.

Virtual Nursing Assistants

The rise of virtual nursing assistants capable of communicating with patients using NLP is underway. Regular communication between patients and the nursing bot extends care beyond the walls of the clinic room without burdening existing resources. Adherence to the patient’s care plan can be monitored, and triggers can notify providers of issues that need human attention. Patients can receive round-the-clock access to support and answers, including help with medication. Researchers in this field estimate virtual nursing assistants will reduce U.S. healthcare costs $20 billion by 2026.

Robot-Assisted Surgery

Some surgical robots use AI to apply information obtained from prior surgeries to the current case, leading to progressively better outcomes. Beyond the many well-known advantages, robotic surgery delivers, adding an NLP component allows surgeons to query the system and to direct its actions verbally.

Reducing “EHR Burnout”

Recent studies have indicated that healthcare providers spend nearly half of each day updating electronic health records and doing other administrative work, which is a matter of concern. It leaves them with very less time to perform their core functions of examining and discussing clinical, diagnostic and treatment information with patients in a face-to-face environment.

Entering and managing patient information is a major contributor to physician burnout. More than half of physicians surveyed in a Physician’s Foundation 2018 study, reported entering data into the EHR reduces their efficiency and detracts them from their interaction with patients. Systems that use NLP allow physicians to enter notes into the EHR by speaking to it. This saves time versus having to type. Besides, it also allows patients to amend or correct what the doctor is entering into the EHR.

Other Important Use Cases

While improving the clinical value of EHRs and reducing physician burnout is one of the most pressing challenges among healthcare organizations, NLP is contributing to the digital transformation of healthcare in several other ways. For example, NLP is helpful in

While improving the clinical value of EHRs and reducing physician burnout is one of the most pressing challenges among healthcare organizations, NLP is contributing to the digital transformation of healthcare in several other ways. For example, NLP is helpful in

  • Comforting patients who become confused and anxious because they do not understand the data being presented to them through a portal website. For instance, NLP can explain the meaning of abbreviations and medical terminology. Rather than leaving the patient to worry or call the physician to explain the report, NLP can educate and possibly also calm the patient.
  • Offering summarized updates of key ideas, concepts, and conclusions contained in large volumes of clinical notes, journal articles and other narrative texts gives practitioners quick access to volumes of information that would otherwise require a lot of time to read through.
  • Easy extraction of data from free-form text and insertion into fixed-field data files, such as the structured fields in an EHR.
  • Handling a physician’s free-form spoken or text query, which is especially useful for queries that require gathering and organizing data from multiple sources.
  • NLP and other AI components can also accelerate the movement away from fee-for-service models and toward value-based healthcare by organizing unstructured health data derived from EHRs and other sources. Much of that “hidden” big data can shed light on health outcomes for entire populations of patients, which has been impractical until recently.

 

……………………………………………………………………………………………………

If you have any queries in this field, talk to Mindfire Solutions. For over 20+ years now, we have been the preferred Software Development Partner of over 1000+ Small and Medium-sized enterprises across the globe.

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Web Accessibility

Overlooking Web Accessibility

The Internet is an ever-increasing storehouse of knowledge. The web and the internet as a whole serve as an important resource in many aspects of our lives: education, employment, recreation, commerce and more. Web Accessibility simply means that the web is to be made accessible to everyone. And that includes people with special abilities too – an aspect generally overlooked in haste. 

The concept of Web Accessibility has been around for a decade, but it is unfortunate that true meaning in its entirety has been lost on many of us, the web developers. It’s time that we built ramps to our sites so that it benefits not only people with disabilities but also enhances the experience of all types of users as a whole.

……………………………………………………………………………………………………


Let’s see some examples:  When you are watching a video in a noisy environment and cannot perceive the audio correctly. Without being able to hear the audio, you have to guess what the whole video is about. It can be frustrating, right?


Let’s take another one:  If you have broken your arm in an accident and can’t use the mouse to explore the web. You have to remain cut off from the internet until you recover. Or find ways to manage to access it with difficulty, mostly through pain, or be at the mercy of people who would spare some time to assist you.

There are people out there who face these challenges at every instance of their attempts to access the Web. The true essence of Web Accessibility lies in addressing such concerns and ensuring that the Web is accessible by all, without any discretion. 

The World Wide Web Consortium(W3C) published a set of guidelines, Web Content Accessibility Guidelines or WCAG 1.0 in 1999, as an initiative to the Web Accessibility Initiative(WAI) project. The revised version, WCAG 2.0 was published in 2008, which is more technology-neutral, and therefore, is widely accepted by the developers to make their site more accessible.

It may seem like a huge task to accomplish at first, but in reality, it takes only small steps to make your website accessible to all. Steps that should be undertaken are 

  • Using alternative texts, and descriptions for the images.
  • Adding subtitles and transcripts for videos.
  • Ensuring that your site is fully and equally accessible by the keyboard.
    Making use of the Accessible Rich Internet Tags (ARIA) tags.
  • Having a good color contrast.

These are some tools which can help to make your website more accessible:

So, let’s look at the bigger picture and start taking the necessary steps towards building a platform that is more accessible and more usable, and fulfill our responsibilities as web developers. It’s high time we focused on the masses who might be unable to access the internet just like normal people can. The onus lies with us to take individual responsibility of the same and spread the awareness to others. The realization that mere oversight or negligence on our part can be the source of much trouble for others should guard us against it. 

……………………………………………………………………………………………………

The views and opinions expressed in this article are those of the author. To know more about our company, please click on Mindfire Solutions. 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
RPA Image

Is Robotic Process Automation changing the Test Automation Game?

RPA has taken the IT world by storm. I won’t say that it is the newest thing in business because it has been there around for about 10 years now. But now is the time when it is spreading like wildfire. More and more companies want to adopt it.

To set the context, let’s look at how AI has broken all the barriers of our imagination. I bet that a few years ago when we used to see robots in movies, we would think that they are just part of our imagination or even if we considered them to become reality someday, we always thought that the day to be many years away. But what we never imagined was that technology will progress so much so soon. Today Artificial intelligence is making machines more and more human-like. They want machines to not only follow our instructions but to think, and possibly also to exhibit emotions. It is almost like humans want to assemble humans in labs. No wonder then that a robot named Sophia was very recently even given citizenship of Saudi Arabia.

Now going back to Robotic Process Automation. Going just by the words,  it seems like  Robots automating processes. The catch, however, is that that when we say Robot, we don’t mean an actual physical robot, but a virtual one –  the automation program.

……………………………………………………………………………………………………

What’s the big deal about RPA in Software Test Automation?

Many could argue that in traditional Automation also we were creating automation programs. So what is all the hype about?

The key distinctions according to me are :

  • It is script less: Coming from a Manual testing background it was always a challenge for me to always keep learning the latest scripting languages but now I don’t need to learn any programming language to automate a test scenario. You just need to be good with your logics and should be able to think out of the box scenarios.
  • Focus is back to product quality: I am not saying that in Traditional automation the product quality was getting hampered, But in my own experience I feel that when I was working on Automation via scripts, most of my time was getting consumed in writing code and at the end of the day, only very few scenarios were automated, and I was not able to cover as much scenario and I didn’t have the time to dive into variety of scenario. So I feel that out of two 1 thing was always getting compromised either the Coverage or the deadline. But with RPA tool this problem of mine has been resolved to a great extent.

……………………………………………………………………………………………………

How things work when Automating Test cases with RPA

There are many RPA tools available in the market like UI Path, Automation Anywhere, Blue Prism and many more. You can use any (FYI: I am not promoting any specific tool).

There are few basic criteria on which all the RPA tools are based on:

  • Already defined user actions: Most of the user actions that one can think of while automating a test case like the click of a button, mouse hover, opening browser, typing into a text box and many more, they are already defined and the user doesn’t have to code.
  • Built-in decision logics and looping statements: The best part about using RPA tool for creating scripts was, I didn’t have to worry about the syntax of my decision logic and adding loops, for example, do-while, for, etc. They are built-in and I just needed to use them.
  • Configuring of user events through Parameters: Every user action or event that we use can be easily configured using its parameters. Almost every property of a user event is made available so as it can be customized as much and as easily as possible.
  • Easy to create variables: RPA tools make it very easy to create a variable without stressing upon the syntax.
  • Error handling: If there is an error that occurs while configuring the user events or in the full flow, RPA tools have very good error handling mechanism. It helps the user to narrow down the area of error and also gives very clear and specific error messages making it very convenient for the user to correct the error.

……………………………………………………………………………………………………

What RPA has changed in my Automation Testing approach?
  • So as I said above, for me RPA has put the focus back to thinking about logic, covering some out of the box test scenarios, rather than spending hours just automating the basic functionality.
  • RPA has improved my testing coverage also, as I am able to cover number and different types of scenarios.
  • Thanks to RPA, I am able to automate the test scenarios faster as I don’t have to write every single line of code on my own.
  • Another advantage of using an RPA tool is, I face less number of errors while automating a test case. As in RPA tool, they have built-in codes for most of the logics and I just have to make sure that I use them in correct flow.
  • With RPA tool, I was able to manage my scripts much easily as most of the times it just making tweaking into the properties of the built-in user actions.
  • Also when I create my scripts using RPA tool, they are more easily readable and I am able to explain them to another person in a better way
  • Being from a manual testing background, it was always a big challenge for me to always keep on learning the latest scripting languages but now I don’t have to invest my time learning the coding languages.
  • I can invest my mind in more decision making tasks rather than some boring and repetitive tasks that can be done by machines also.

Now, when I extract the essence of all the benefits, the bigger picture that I get is RPA helps to increase Test Automation Coverage, reduces the time required, hence reducing in the process the cost of Testing and in turn increasing the Company’s profit.

……………………………………………………………………………………………………

Having said that, I did face some challenges while automating test scripts with RPA tool

1) I was not able to automate everything
Having worked with different scripting automation tools, I feel that there are some scenarios which I can’t achieve using RPA tools like I am not able to automate scenario which deals with complex Database entries, multiple formats of input or unstructured input data.

2) It executes at a slower pace
When I execute a script created via any RPA tool it executes at a UI speed but when I run a script created using scripting languages, it is much faster. So I feel that RPA is comparatively slower than the processes automated using traditional automation.

3) Not much available on Web, so need to explore yourself
Test Automation using RPA is relatively new. So there are many built-in user actions and functionalities of different tools that you have to explore on your own and not much help is available on the web. So that was also one of the challenges that I faced.

4) It can increase a company’s Test Automation cost
When I started automation using RPA, most of the RPA tools that I came across were paid and just 1 or 2 had free versions available and that too had not much-advanced features contrary to the open-source scripting tools available in the market. So I feel that this can also prove to be a disadvantage as it will increase the cost of Automation for a company.

But I feel that the pros somewhere outnumber the cons and the proof of this is that more and more companies are investing in Test Automation using RPA. So in my opinion, if you are the one who wants to adopt RPA in Test Automation, then the time to act is now.

……………………………………………………………………………………………………

The views and opinions expressed in this article are those of the author. To know more about our company, please click on Mindfire Solutions. 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
AWS-Lambda-Computing

Getting started with AWS Lambda

AWS Lambda is an ingredient in amazon serverless computing. Lambda allows us to run server-side code without thinking about the server. It abstracts all of the other components i.e. servers, platforms, virtual machines, etc. that are needed to run server-side code. So we can just focus on the code and not the server. That way the time to production or deployment becomes very less. We can write a lambda function, configure it and run it in minutes.

Another great benefit of lambda is that we just pay for the compute time we consume. That means it will charge only for the time that our code is actually executed. Also, the first one million requests are free. We have to pay for request thereafter. This a very cost-effective way to run the server-side code. To get started first we need an AWS account. After creating the account we need to go to the AWS management console.

……………………………………………………………………………………………………

Create a Lambda function with Node.js

Let’s create a lambda function that picks a random number between 2 given number. First of all, login into the AWS console and then click the “Lambda”  button under the compute section. Then you can come to the “Select blueprint” section. Then, under the select runtime combo box, select the latest node.js version. Amazon gives you some basic blueprints there. We will just select the simple hello world function to start with.

Image1-Lambda

We will skip to the configure function section to create a new function. We will name our function random-number-generator. Then specify the description. Then the run time that is node 4.3. Our function is a small function so we will select to Edit code inline. The blueprint of amazon gives a very basic function.

We will change this default code to generate our random number between two given numbers.

In the beginning, just add console.log(‘Loading function’). This will help in debugging the code.’ In the default amazon function, there are some event values that are logged and in the end, it returns the first value in the callback function. Then we will add a handler function to the exports variable. And this function receives 3 variables. I.e. event, context, and callback.

 exports.handler = (event, context, callback) => {
            console.log(‘value 1 =’ , event.key1);
            console.log(‘value 2 =’ , event.key2);
            console.log(‘value 3 =’ , event.key3);
            callback(null, event.key1)
}

The callback is something we will call when our result is ready and we want to send some result back to the user. It takes 2 parameters. 1st one is the error and the second one is the success message. The variables could be string or JSON object.

We will delete all these default codes and write our own code. So, first of all, we will define and set the minimum and maximum number.

 exports.handler = (event, context, callback) => {
           let min = 0;
           let max = 10;
}

Now we will define another variable for the random number.

exports.handler = (event, context, callback) => {
            let min = 0;
            let max = 10;
            let generatedNumber = Math.floor(Math.random() *  max) + min;
}

Mmath.random() generates a random number between 0 and 1. And it’s a floating-point number, so we multiplying it by max and the round it and add the minimum. That gives us a random number between the minimum and maximum number.

Now we are done and want to return the random number. So we will call the callback function.

callback(null, generatedNumber);

 Here there is no error handler implemented so we will just return null in place of the error parameter. And the  generatedNumber.

That’s it, the code part is done.

Now scroll down. And let’s define our handler. The default is index.handler. Index refers to the filename and handler is the name of the variable that is attached to the exports. We will leave this by default.

Now, we will create a new Role and give the role name as ‘basic-lambda-execute-role’. Then under the policy template, we will select ‘Simple Microservice Permissions’.

Next is the advanced settings.

Each lambda function will run in a container & that container will have some memory allocated to it. So here we can pick how much memory should be allocated to our function. Our function is a basic function. So will select 128MB. That is more than enough for our function.

This does not only defines the memory allocated to the function but also the amount of processing power amazon uses to execute our function. If we have a more resource-intensive function then we can increase the memory usage and we will get a faster performing function. Then for the timeout, we will leave it to 3 secs that is enough. If our function does not finish within this timeout then Amazon will return an error message. We will leave the VPC to no VPS and move next. In the next page, amazon lets us review our configuration for our function. And then click the create function. There we will get the msg that our function is created. And we can see the dashboard for our function.

On the dashboard we can see our code, configuration, triggers, and also we can monitor our function as well

Let’s test it by clicking the Test button there. If we scroll down we can find that the function has executed successfully and also we can see the result random number.

So that’s it. We have our random number generator lambda function is running now.

……………………………………………………………………………………………………

The views and opinions expressed in this article are those of the author. To know more about our company, please click on Mindfire Solutions. 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Image for Habit

What is a HABIT?

The easy definition would be something that you do daily without being forced or pushed. For e.g. as simple as brushing your teeth. But do you remember how tough it was when you were a small kid and learning to develop this habit, am sure that is not even a matter of thinking today.

Another good and simple example of a HABIT is cycling. Remember when you started cycling/biking the first day! That feeling of imbalance, falling off or getting hit with no hand-eye coordination and then slowly and steadily you become the cyclist in your neighborhood doing all kinds of stunts.

There are many such examples that happen in our daily lives where the beginning looked as difficult as climbing the Everest may be, but as you start taking those steps forward, it becomes simpler and later a maybe even a “cake-walk” to perform those.

……………………………………………………………………………………………………

Why I am talking about HABIT? Because as we grow older and get into our daily chores, we forget to adapt to new habits or develop new changes or even attempt to do something new, simply because we feel that we do not have the time, there’s always too much work in the plate, professional or personal. Whenever you think of doing something new, you always push it to a later date convincing ourselves that we will do it when we have the time for it.

My friend where is that time?…the fact of the matter is NOW is the time.

Remember, everyone has 24hrs in a day and utilizing the same, some became people like the Tendulkars, the Steve Jobs and the Bill Gates to name a few, and many are still searching for that time to begin.

Here I present the new definition of H.A.B.I.T – “[H]aving [A]bility [B]uild [I]ntense [T]ricks” – obviously this is not mine, taken up from the internet, but it very well fits our bill here.

What does it take to build a habit? Answer is “decision” and then taking “action” in the form of small steps daily at the same time every day for the next 21 days (an idea introduced by Dr. Maxwell Maltz ), but I will suggest, if you can do that for 1-Day and then repeat the same for the next 30 days, trust me you will be rolling. But the trick is it has to be continuous, if you break for 1-Day then the cycle has to begin again from Day 1 🙂 that is why its Intense Tricks ;).

So, go out and pick up that Guitar which is hanging in your bedroom and staring at you or start reading that new Tech Area or Buzz Word on which you always wanted to get your hands on and just do it for 1-Day and then repeat the same cycle for next 30-Days.

The exception is, there are still no guarantees of success. It all depends from person to person and on his or her burning desire to make something work. But it is much better than not having tried at all, isn’t it? Roger Bannister was the first man to run a mile in less than 4 minutes. It was his persistence and practice that enabled him to cross what had otherwise seemed like a barrier meant to stay forever until then.

Do put your comments, if you really got into a habit 🙂

……………………………………………………………………………………………………

The views and opinions expressed in this article are those of the author. To know more about our company, please click on Mindfire Solutions. 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

How Bitcoin Solves the Double-Spending Problem?

Many of us probably already have heard of Bitcoin. We know what innovation it has brought into this world – the blockchain technology. As of this writing, it has been almost a decade since its inception and it has long thrived without any central control over the network.

Bitcoin, a peer-to-peer electronic cash system, has inspired many other projects and can be seen as a pioneer of the underpinning blockchain technology. That said, it would be worth exploring how Bitcoin solves the double-spending problem. Instead of delving into theoretical exposition we will experience a transaction process in this pioneering innovation. We will be making a transaction on a real network and analyzing what a Bitcoin transaction looks like. A transaction in the Bitcoin network is a bit complex than a conventional digital transaction.

……………………………………………………………………………………………………

Comparison with Fiat Currency Transaction

In a transaction that involves currency notes, we can easily envisage two parties exchanging some goods or services in exchange for the money. One party receives the goods/services and the party pays in currency notes. Let us say the transaction was costing $50 and the payer has $100 currency note. The payer would pay $100 and would receive in change $50 (as shown below). Both the currency notes are legal tender that is supplied by a central bank. A Bitcoin transaction also involves paying and may too involve receiving back change and in this respect is quite similar to our day-to-day transaction.


Comparison with Conventional Digital Transaction

A conventional digital transaction, say the online transfer of money, involves two parties and a mediator (the bank). So, there is a “From address” (A/C No.), a “To address” (A/C No.) and the amount (value transfer). There is no concept of change in a conventional digital transaction. If you want to transfer $1050 then you can transfer the exact amount and this is a mere process of debiting from sender’s account and crediting to the receiver’s account with the help of the mediator who validates the transaction. However, a Bitcoin transaction may involve multiple From addresses and multiple To addresses without any mediator. We will explore how this is possible.

As it is with any traditional transaction, ours will have the following attributes: a “From entity”, a “To entity” and the value to transfer. Let us send an amount of 0.1 BTC to a Bitcoin user as follows:

From: n2FSwa6DsMsbJgNknB64ThR3pHPUQ79bxL
To: msqdPeF7KeEqcWUNAFMm8JQijVB3cnLi4N

Amount: 0.1 BTC

The transaction has been done and the transaction details can be seen here

Bitcoin Transaction

Now, what looks legitimate is the From address (left) and the one of the To addresses with 0.1 BTC sent. However, two things look contradictory. Firstly, we sent 0.1 BTC but it says 1.0 BTC being transferred. Secondly, there is one more To address to which some amount has been sent.

Is something wrong with this transaction? Not really! You can check the above transaction in block explorer and verify yourself that it is indeed the same transaction. But this is the way Bitcoin works. Let us explore.

What is a Bitcoin Transaction made up of?

A transaction in Bitcoin consists of inputs and outputs. The input is like a “From address” which is in Bitcoin terms an unspent transaction output. When you want to make a transaction you will always spend an unspent transaction output as a whole. That said, you end up paying the entire amount. However, you receive the remaining amount in a different address called change address. This change address is your own address where you collect the change, which in turn is an unspent transaction output. This is quite common in Bitcoin transactions. For instance, someone sent you 1.0 BTC. Now you want to send 0.5 BTC to your friend. You cannot break the 1.0 BTC but you will spend the entire 1.0 BTC in a transaction and get the change in your change address.

Transaction Fee

Back to our transaction. Now, let us verify that the amount in input and outputs are balanced. So, 1 BTC – (0.1 BTC + 0.89432145 BTC) should be 0. But it turns out to be 0.00567855. So, where did this amount go?

Well, this is the transaction fee that is paid to the miner who helped you in validating the transaction, adding it into a block, mining the block, and broadcasting to the network. The miner is given this amount as a mining fee for the work he has done.

The mining fee is charged in satoshi per byte. Our transaction has a size of 225 bytes and we were charged 2523.8 satoshi per byte. So, 2523.8 x 225 = 0.00567855 BTC.

The Concept of UTXO

Note that the two outputs here are mentioned as “unspent”. This is how bitcoin keeps track of balances. The sum of all unspent transaction outputs is what constitutes your balance. Bitcoin network does not have any database or global state of balance amount rather it uses the concept of UTXO.

So, how is a UTXO represented in the bitcoin protocol? Perhaps in the bitcoin protocol, there is no concept of “From address”. Yes, there is no concept of From address in Bitcoin. The Bitcoin addresses are used to receive payments. A transaction in Bitcoin never encodes a From address but only has a reference to a previous unspent transaction output. That said, the input of a Bitcoin address is actually a previous unspent output. Bitcoin refers to a previous unspent transaction output using a combination of transaction ID (or transaction hash) and an index. Once an unspent transaction is spent you cannot spend it again and thus prevent the double spending.

A Transaction with Multiple Inputs

So, how will a Bitcoin user transact an amount for which he has no unspent transaction output equal to or above that value? Say, a user wants to transfer 5 bitcoins but none of his unspent transaction output has that much amount although the user has multiple unspent transactions that add up to a value greater than 5.  Bitcoin allows you to combine unspent transaction outputs. A transaction with multiple inputs would sound new to a person doing a conventional digital transaction. This is because a conventional digital transaction always has only one sender (or From address). Let us analyze a bitcoin transaction with multiple inputs. In this case, the Bitcoin user wants to send 1.02 bitcoins but he has no unspent transaction outputs of that value. So, the user combines two inputs and then transacts (see below).

Bitcoin Transaction

The above transaction (ac194c19201a20cdd26bbb8d696588370c06261148fd20a96b3330b0bcb03207 ) has two inputs and two outputs and it is absolutely a valid transaction in Bitcoin. The total amount of BTC of these two inputs, which is 1.04997424 BTC, is sufficient to send a transaction of 1.02 BTC. And the remaining value has been collected in a change address with 0.02997013 BTC.

……………………………………………………………………………………………………

How are transactions validated in Bitcoin?

Let us take an example of a transaction that involves one input and one output (as below). Here,  the input is a reference to a previous unspent transaction at index 0. The previous transaction is referred by a transaction hash: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
The output sends 50 bitcoins to a bitcoin address. When the recipient wants to spend this 50 bitcoin he will reference output 0 of this transaction as an input of his own transaction.

Input:

Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
Index: 0
scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10

90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501

Output:

Value: 5000000000

scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d

OP_EQUALVERIFY OP_CHECKSIG

Bitcoin uses a scripting system to verify a transaction. There are two script components that can be seen in the above transaction: scriptPubKey and scriptSig. So, the scriptSig refers to the sender’s signature and the public key. The scriptPubKey is the script that will be evaluated using bitcoin protocol and if the execution of the script returns true then the transaction is valid.

scriptSig: <sig> <pubKey>
scriptPubKey: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

Let us see how this script is executed on the stack:

Step 1: Combine scriptSig and scriptPubKey in that order
Step 2: Push <sig> and <pubKey> to stack
Step 3: Execute the operation OP_DUP which will duplicate top item, which is <pubKey>
Step 4: Execute the operation OP_HASH160 which will create hash of the <pubKey> and this hash will be pushed to the stack.
Step 5: Execute the operation OP_EQUALVERIFY to ensure the hash generated matches with the <pubKeyHash>
Step 6: Execute the operation OP_CHECKSIG for the two hashes on the stack.

In summary, a Bitcoin transaction involves one or more inputs and one or more outputs, has no concept of From addresses in its protocol, uses a concept of unspent transaction output, and verifies the transaction using a scripting architecture.

……………………………………………………………………………………………………

The views and opinions expressed in this article are those of the author. To know more about our company, please click on Mindfire Solutions. 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Image-Accounting Software Tools Information Exchange

Integrating Multiple Accounting Tools for Information Exchange

This article will be helpful for those developers who are trying to integrate multiple accounting tools with a custom web or desktop application; with the accounting tool database exposed either using ODBC/JDBC or APIs.

The solution was explored when I worked in a project where there was a need to automate the data transmission (bi-directional) between different accounting tools (like Adagio, QB Desktop and Online version, etc.) interfacing with a central database. And make it possible for devices (like iPhone) to transmit data to the central database and subsequently to the accounting tools. In a nutshell, the main application, devices and multiple accounting tools needed to be in sync all the time/whenever required.

……………………………………………………………………………………………………
The Solution

The major features that were provided/implemented:

  • Connector: it acts as a bridge between web API and desktop/online accounting tool.
  • Data transmission between different entities using customized XML
  • Logging request and response on each event with a different status
  • The parser in the background (it basically parses the data from XML and maps it with the database)
  • Common database structure to handle request and response for different tools

Following diagram shows the flow and integrations process-:

 

Here, the user has the freedom to use different custom applications based on need. For e.g. in some cases where the API is exposed to the outside world for web accounting tools, we can merge the request-and-response processes in one place along with the parsing of data.

#1 Window Service

It is being used for parsing data coming internally from accounting tool in a specified format. Here, the approach can change as per need because sometimes the customer doesn’t want to put extra load on the server; then we can do it at the same level (i.e. in the request-and-response process).

#2 Web Service/Web API

It is used for running the connector. Actually, the connector will act as a bridge between the accounting tools and the central database.

#3 Main web or window application-

Here we need to have one page which will facilitate the user to generate requests in specified formats (XML or JSON) for required entities (like retrieving customer data or adding a new customer in the Accounting tool).

#4 Accounting tool

Accounting tool which exposes database/API to the outside world. Nowadays most of the applications have shared API or database to the outside world for integration with other applications.

The diagram below describes the data flow between different applications in a stepwise manner:

 

 

……………………………………………………………………………………………………
Error handling and Logs

Since accounting tools are being used here, it means there are bound to be information pertaining to the flow of money involving different vendors and stakeholders. This section thus holds a lot of relevance. The provision for logging is done either in the database or somewhere else on the disk. Since there different levels and sublevels like web service/API for connector  has 4 important  sublevels (Authenticate(), SendRequest(), ReceivedResponse() and CloseConnection() ), it is highly relevant to know at every step exactly what data got processed. Also, the availability of results opens up the provision for performing analyses later, whenever needed. Logging makes it possible to handle internal errors as well.

Security Handling 

The whole solution should follow the security rules as per the industry norms like SSL implementations for all web-based calls, Cryptographic methodology (wherever required), AntiForgery checks once session established, etc.

……………………………………………………………………………………………………

The views and opinions expressed in this article are those of the author. To know more about our company, please click on Mindfire Solutions. 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
User Interface Design

The Trick of Designing User Interfaces that Slay!

Very often at work, I used to get bombarded with user-interface related questions. Some of those would be ones I would be hunting tangible answers for myself. Typical ones would be:

“Does this website look good?”
“Which interface looks better?”
“Should I place the button to the left or to the right?”
“Do I keep the logo Green or Red?”

Now, the problem every time was the expectation to offer perfect answers, along with supporting reasons. Although my intuition helped me get through on a few, the part I would struggle most was in offering convincing reasons to support my answers. I felt my supposed intuition had some underlying logic and concepts but I needed to reify those. I needed to have constructs that  I could use to easily judge any Design, be it a web page, mobile application UI or even a poster.

What followed was a lot of google search, expert advice seeking and directionless research. Finally, I came across a course based on Design Thinking which paved the way to a whole new perspective of looking at any design.

I now use a personal knowledge kit, heuristics of sorts, that I have been able to develop, courtesy this course, which helps me analyze any User Interface. If you are facing similar problems, this blog should be of help. So here are the points: 

……………………………………………………………………………………………………

1. Evaluate your Work

Before making an Interface public, make an evaluation yourself by asking these questions:

How easily can someone

  • Determine the function of the system and possibilities?
  • Determine the mapping from the intention of the user to actual operation?
  • Perform the action?
  • Tell the state of the system? Tell if the desired action has been completed or not?
  • Determine the mapping from the state in which the system is into what the user understands?

If all the questions have already been addressed in your design, then you’re good to go. If not, then you need to enhance one or some of the aspects listed below to make the User Interface better i.e. providing

  • Visibility and Feedback
  • Consistency
  • Non-destructive operations (undo)
  • Discoverability (menus)
  • Reliability
  • And events should not happen randomly

All these points sum up to nothing but an implementation of the following statement
Immediate feedback on actions AND Continuous representations of objects” – This is what lies at the core of the best designs that are made.

2. Understanding Mental Models

Even before a user starts performing an action, a mental image is formed in the user’s mind which depicts the user’s understanding of the Interface, which is called the Mental model. Very often a user thinks something and the system does something else, which leads to this gap between the mental model of the user and the designer.

This can be overcome by experimenting with multiple beta users and analyzing how your interface performs. Additionally, through our Interface, we can provide a good idea of how each object works and how to control it leading to the Interface itself disclosing how it is used.

3. Representation Matters

This lays emphasis on just one thing –  What to show and What not to.
Representation plays a significant role in simplifying or complicating matters, and so, a Good Representation shows all of the relevant information, and nothing else.

Use pictures where words seem monotonous. As the saying goes, ‘A picture is worth a 1000 words’, the same principle can be used to build great interfaces. It takes time for the user to read and make a mental image and then process the information. This time can be cut out be using images directly and where ever they can be in the UI. Icons facilitate visual recognition and come handy when you know what something looks like but not what it’s called.

Some other factors that are often ignored are Whitespaces and Contrasts. Important information can be delineated by smart use of spaces and contrasts.

4. Typography

Typography is defined as “The art and technique of arranging type to make written language legible, readable, and appealing when displayed”

Something to be aware of when working with text-based applications is the Serif Hypothesis, which states that “Serif is easier to read as the letters contain anchors and tails which provide comfort to human eyes while reading texts for extended duration of time”

So, if you have a lot of written content on your webpage, you now know which text format to consider.

5. Layout

Every UI is designed with Grids in Mind. For example, have a look at the pictures below :

Paytm Home Page
Paytm Home Page

Yahoo Home PageYahoo Home Page

Things to be kept in mind are :

  • Alignment guides the eye and so we should avoid glitches there.
  • We automatically and unconsciously notice patterns/deviations that fall out of place.
  • That is why it is very important that we stick to mathematically accurate patterns.
  • In case we decide to deviate from a pattern, it has to be strategical.
  • Use visual proximity and scale to convey semantic information

6. Color

Effective use of colors can enhance the user experience to a great level. Colors can be used to highlight essential elements on the screen or to direct user attention.

Now, each color is associated with a certain meaning that has been proven over the years in various studies. The emotions that various colors invoke are as follows:

  • Red — Symbolizes lust, power, excitement or love
  • Yellow – Competence and happiness
  • Green – Good taste, envy
  • Blue – Masculine, high competence, high quality corporate
  • Pink – Sophistication, sincerity, feminine
  • Purple – Royalty, authority, sophistication, power
  • Brown – Ruggedness, earthiness, toughness
  • Black – Grief, sophistication, expensive, fear, evil
  • White – Happiness, sincerity, purity

These are widely agreed notions that will not change anytime soon.

7. Positioning

Users automatically pay attention to certain elements basing on their position on the webpage. More often than not, they seem to define a trend in which a webpage is viewed.

Neilsen Norman Group came out with a heatmap after conducting research on human eye tracking on webpages.

The highly colored area shows the highest density of the user eye views. That is where most users looked at most of the time. This just means one thing to us: put the more important content in that high-density area.

Now let’s look at the simplified pattern for a web page: This image shows the optimum positioning of information on a webpage based on the level of importance.

Important stuff needs to be in Priority 1 blocks followed by others.
Credit: Poynter Institute www.poynter.org/extra/eyetrack2004

……………………………………………………………………………………………………

The views and opinions expressed in this article are those of the author. To know more about our company, please click on Mindfire Solutions. 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •