Most Valuable Person? Nope, find out the reality!

MVP in the field of Software Development stands for Minimum Viable Product. It is a concept developed by Eric Ries as a part of the Lean Start Up method. According to his definition:

 “The Minimum Viable Product is that version of the new product which allows a team to collect the maximum amount of validated learning about the customer with the least efforts.”

It is based on the idea of Incremental Software Development that renders a product more efficient which is complete on its own with each iteration. A Minimum Viable Product is developed as a core unit of an experimentation strategy. It consists of a basic set of solutions for testing the viability of a business idea and how the customers react to it.

The main purpose of building an MVP :

How to build an MVP: Steps, Examples, and Benefits

  • Deliver a working product that provides immediate value with minimum resources be it money, time or infrastructure.
  • Create a baseline for future development and clarify the next steps to be taken in the project.
  • Earliest possible product release.
  • Minimum implementation costs.
  • Test the viability of the product before investing large capital and manpower into it.
  • Identify potential features and failures.
  • Identify and understand its user base and its preferences.

After receiving feedback, more features can be added. Every new release of the MVP should ensure a better solution for the customers and should be completed rather than a ‘work in progress’ solution.  This can be understood better through an illustration by John Mayo in his article ‘Two Ways to Build a Pyramid’.

In a traditional approach, building the pyramid can be started from the base, and a new level can be added on top with each increment. Although this is an incremental process, until the last iteration it is only a ‘work in progress’, as in the image below.

The other approach is to start with a small pyramid. With each iteration, components can be added to increase its size or extend its functionality. Thus, after each increment, you will have a complete pyramid which can be further extended. 

The rule here is to add new features gradually with each release of the MVP being a better and faster solution for the agenda under consideration.

Types of MVP

There are two categories of MVPs. Low Fidelity MVPs help you to get an insight into your customer’s problems and the kind of solution that will be most effective for the customer. High Fidelity MVPs are used to find out how much the customers will be willing to pay for the solution. Furthermore, it helps you to optimize your marketing strategy and communication channels along with the best potential growth strategies.

In today’s market where a wide range of services and products are in demand, minimum viable products differ accordingly. The different types of MVPs which can be categorized under Low-Fidelity and High-Fidelity MVPs are as follows:

Low Fidelity MVPs High Fidelity MVPs
An Honest Customer Interview Digital Prototypes like wireframes and mock-ups
Blogs and their Comments 3D Models for manufacturing products.
Subject Matter Forums The Wizard of Oz
Website or an Application Landing Page The Concierge MVP
Split Testing to measure user reaction to changes The Piecemeal MVP
Videos Crowdfunding helps generate funding for the product creations as well as testing its future demand in the market.
UX Prototypes. Single Featured MVP in order to focus on the most essential solutions that will be provided by the product.
Ad Campaigns for market surveys Email MVP
User SignUp for an Upcoming Product
Audience building via tests, interviews and questionnaires.
Micro-Surveys

Out of the above MVPs, most of which are self-explanatory, let us elaborate on the following few.

  • Concierge MVP: Here building a product is not necessary. Here you provide the services manually and analyze your customer interaction. This helps to understand if the customers will use your product or they need an entirely different product.
  • Wizard of Oz MVP: Here a fully functional product prototype is presented before the user while you are at work behind the scenes providing all that is necessary. Through this type of MVC, you are able to interact directly with your customers and review their preferences.
  • Piecemeal MVP: Here existing tools and solutions are used to create your product. This involves a minimum or no investment. A piecemeal MVP consists of existing components from multiple third-party sources that are put together to create the product or service.
  • Email MVP: Here you begin by sending emails with the business proposition to your existing customers. If the feedback is positive, the business idea is worth pursuing, however, if the feedback is bleak, either the proposal is missing something or it does not solve any problem.

Pitfalls

 

The main pitfall of an MVP is its lack of understanding. More often teams tend to believe it is the smallest amount of functionality that needs to be presented to the consumers in order to understand its viability. It might also be confused with minimum market earning. MVP is more focused on learning from customer feedback. It is very important to identify the set of features that needs to be included for an MVP. Including too many features will overload the MVP, incur cost and time and may fail to succeed. However, filtering features may cut out its key functions. The basic set of solution repeatedly mentioned here, refers to developing a deployable product with the key features which allows customers to access the solution and complete their entire journey towards their goal. Hence, it is essential that before releasing an MVP teams correlate the terms ‘minimum’ and ‘viable’ correctly. Finally, always keep in mind the metrics – Daily active users, maintenance rate and the average time spent with the product in order to quantify the success of your MVP.

Conclusion 

Developing an MVP is a strategy to avoid developing products that are liable to be rejected by consumers. It is basically built to test a specific set of assumptions and prove that the product will provide an effective solution. MVPs are effective only when you take into account market feedback. This will help you to understand which features are to be developed and which to be discarded. While developing an MVP always keep in mind the most accurate but least features of the product but not the complete product.

Must learn Blockchain Programming Languages in 2020

Top 5 Blockchain Programming Languages

Unless you are living under the rocks, it is likely that you would be familiar with what is Blockchain and what is its potential when it comes to reforming the tech world. The technology, that have been the driving force of Cryptocurrencies, has taken the front seat and come up with a myriad of options to mitigate the traditional challenges that a myriad of industries face, helping them grab better opportunities. It has proven to hold the potential to revamp the whole economy – be it healthcare, travel, education, or legal domain.A ripple impact of which is that today, both startups and Fortune 500 companies like IBM, and Accenture are putting efforts towards making their presence known in the Blockchain arena.

Because of this, rather sudden, mass adoption, the number of Blockchain jobs are increasing in the market exponentially. A clear indication of which is that a 517% rise is predicted in the number of Blockchain jobs in 2019, compared to 2018.

And, behind the curtains, the type of blockchain development platforms and programming languages are also evolving. While many traditional ones are proving to be undisputed leaders, many new entrants are bringing radical changes in the development environment.

This, as a whole, is making it necessary for all Blockchain enthusiasts to be familiar with the best Blockchain programming languages to headstart with. Something we will cover in this article.

But, before that, you will be able to earn brownie points if to go through a blockchain development guide to have a clarity of concepts, and to get familiar with the challenges developers come across while starting their journey in  this innovative technology.

Challenges You Might Face While Entering the Blockchain Development World

A. Resource Management

How to be a Great Project Manager - K2 Partnering Solutions

In the Blockchain arena, it is imperative for developers to ensure that they are familiar with real-time network demands and that they are well-versed with opportunities to handle remote and local queries. This, in turn, can be challenging for them to manage their resources efficiently and effectively.

B. Isolation

Another issue faced by Blockchain developers is that all the hash functions operate in a deterministic manner. Meaning, they do not act in two different ways depending on the circumstances.

In such a scenario, the development team has to opt Isolation mechanism to bring non-deterministic nature into their blockchain solution.

C. Lower Performance

Poor sleep tied to kids' lower academic performance | Arab News

Last but not least, Lower performance is also one of the challenges of Blockchain programming that developers often have to deal with. Especially when choosing the right Blockchain development language.

This is because some of the Blockchain operations are parallelizable, while others are not. Meaning, it becomes important for them to bring a language on table that is versatile in nature.

Now that you know what Blockchain programming problems you might encounter while heading your journey to Blockchain development, let’s jump to the core part of this article, i.e, unveiling of the top Blockchain programming languages.

15 Programming Languages to Consider for Developing Blockchain Applications

1. Solidity

Solidity — Solidity 0.4.24 documentation

Influenced from JavaScript, Powershell, and C++, Solidity is the first blockchain programming language that one must learn. Especially when they have to develop dApps or are looking to get into the ICO development game.

The Solidity programming language was developed by Vitalik Buterin, the mastermind behind Ethereum, and serves blockchain development firm with a myriad of benefits, such as:-

  • Developer-friendliness,
  • Accessibility to JavaScript infrastructures, debuggers, and other tools,
  • Statically typed programming,
  • Possibility of inheritance properties in smart contracts,
  • Precise accuracy, etc.

2. Java

How to develop a blockchain application if you only know Java | Corda

Java, the official language of Android mobile app development and a preferred option for backend development, is also considered a great programming language used for Blockchain development.

The language is derived from C-syntax and is widely chosen for building sophisticated Smart contracts and dApps because of its following properties:-

  • Robust support for OOP (Object-Oriented Programming) methodology,
  • Ease of memory cleaning,
  • Availability of ample of libraries.

Some of the best examples of Blockchain solutions developed using Java are NEM, IOTA, NEO, and Hyperledger Fabric.

3. Python

What is Python Coding? | Coding for Kids Ages 11+ | Juni Learning

Python has not only ruled the world of app development, IoT app development, and network servers’ development, but is also proving to be an asset in Blockchain-as-a-service arena.

The language, created in 1991, is widely used for dApps and Smart Contracts development because of ample of features it avails. Some of those features and functionalities are:-

  • Easy to learn,
  • Access to dynamic architecture,
  • Perfect for both base and scripting approaches,
  • Open-source support,
  • Efficient for Prototyping, etc.

Steem, Hyperledger Fabric, and NEO are a few popular Python based Blockchain projects that are prevailing the industry.

4. JavaScript

JavaScript Core Language Learning Path | Pluralsight

Considered for a wide range of app and game development needs, JavaScript is also one of the best Blockchain programming languages to keep an eye on.

The language, in the form of frameworks like Node.js framework, offers developers ample of benefits like:-

  • Easier and earlier entry to market,
  • Enhanced Scalability,
  • Availability of multiple JavaScript frameworks,
  • No hassle of integration of respective resources, and more.

5. PHP

PHP - Wikipedia

Released in 1995, PHP (Hypertext Preprocessor) is another programming language that every reputed mobile app development company recommend for creating Blockchain solutions.

The language, though considered as a backend development tech stack in the form of best PHP frameworks, is often used to develop blockchain solutions of different complexity range. Something that is a ripple effect of its huge open-source community and object-oriented features.

6. C++

Three Optimization Tips for C++ - Facebook Engineering

C++, introduced back in 1985 by Bjarne Stroustrup, is the best programming language for cryptocurrency development.

The language follows OOPs methodology and is highly used for developing cryptocurrencies and Blockchain Projects like Bitcoin, Litecoin, Ripple, Stellar, and EOS. Something that is a direct result of the following set of features and functionalities it offers:-

    1. Efficient CPU management and memory control,
    2. Ease of running parallel/non-parallel threads,
    3. Option to move semantics for copying data effectively,
    4. Compile-time polymorphism for enhanced performance,
    5. Code isolation for different data structures, and more.

7. C#

Five C# Features You Might Not Know

Created by Microsoft as a substitute of Java, the OOP language offer a huge number of features for enterprise-powered apps, cloud, and cross-platform development. The language comes loaded with features of C, SQL, and .NET frameworks, and is highly favored for Blockchain development because:-

    1. It is open source.
    2. Its syntax is easy to understand and learn – thanks to its identicality with C++ and Java.
    3. It empowers developers to write portable code across devices.
    4. It is cost-effective to use because of BizSpark program.

The programming language is majorly considered for building dApps, Smart Contracts, and infrastructure in Blockchain environment.

8. Go

Top 10 Online Courses to learn Golang/Go in 2021 — Best of Lot | by javinpaul | Javarevisited | Medium

Go programming language also lands in the list of top Blockchain coding languages with a blistering success.

The language is not just easy to comprehend, but also comes with the best features of JavaScript and Python such as user-friendliness, scalability, flexibility, and speed. Something that makes it the right option to deliver bespoke Blockchain solutions.

Two of the best Go-based Blockchain solutions prevalent in the market are Go-Ethereum and Hyperledger Fabric.

9. Simplicity

Simplicity: High-Assurance Smart Contracting

Created by Russell O’ Connor, Simplicity is a high-level Blockchain coding language that hit the market in November 2017.

The Simplicity programming language is based on Ivy and work with a Haskell-like syntax which makes coding easier and effective. Besides, it is highly mathematical in nature and makes the codeline human-readable. Because of which, it is highly used for developing Smart Contracts and blockchain solutions that works with both Bitcoin and Ethereum Virtual Machine (EVM).

10. Ruby

Interesting facts about Ruby Programming Language - GeeksforGeeks

Ruby is yet another top Blockchain development language to headstart your career with.

Developed by Yukihiro “Matz” in the mid-1990s, this high-level and general purpose programming language empowers developers to prototype their vision effectively and effortlessly through open-source third party APIs and plugins. The language also gives developers an opportunity to mix its features with that of other languages to build an enhanced platform.

It is highly considered by Asian developers for building Blockchain-based software and platforms.

11. Rust

Rust Programming Language

Though newbie in the Blockchain ecosystem, Rust is also being widely considered for building innovative, immutable, and secure solutions.

The language enables open-source developers to create quick and effective Blockchain frameworks. It also serves them with highly-capable mechanism of managing mutable states, amazing code optimization, better memory options, and concurrency-based opportunities.

12. SQL

The Best Way to Learn SQL - Learn to code in 30 Days

SQL (Structured Query Language) is also one of the top blockchain programming languages to consider in 2020.

The language was designed by IBM to make communication with databases like MySQL, SQL Server, PostgreSQl, and Oracle easier and efficient. It has more than 7M developers in the industry and is used for building secure and effective enterprise solutions in Blockchain domain. A clear evidence of which is Aergo.

13. Erlang

Erlang (programming language) - Wikipedia

Erlang is another top Blockchain coding language you must consider for a brighter future ahead.

The language, though less popular than reputed names like Java, JavaScript, and Python, serves Blockchain development companies with options like:-

    1. Unparalleled backend facility,
    2. Higher scalability,
    3. Immutability
    4. Inherent fault tolerance, and more.

Something that makes it the right choice for building peer-to-peer networks in a Blockchain environment.

14. Rholang

Documentation page for Rholang ? - Rchain network

Rholang is yet another impressive addition in the list of Blockchain programming languages. The language, unlike C++ or Python, operates with functional approach over Object-oriented. It also assess the whole app as a series of functions which are then solved in a sequential manner.

Because of this, it is a favorite of developers when they wish to build a high-level project like Smart Contracts.

15. CX

CX: The Next Generation Blockchain Programming Language | by Skycoin | Skycoin | Medium

CX has also entered the list of top Blockchain programming languages.

The language has the potential to work as a contractual digital intermediary, and comes loaded with features like simple error control process, and opportunity to use propelled cuts, pointers, and arrays. It also assembles over Go and give users an escape from executing discretionary codes, which has been a critical issue for present day businesses.

What’s more, the language integrates with OpenGL (Open Graphics Library) efficiently and helps developers reap better benefits in terms of GPU’s capacity.

So, these were some of the programming languages that can be considered for entering the Blockchain world and make the best of the flourishing opportunity. These languages, as already covered in this article, holds different potential and thus, can be used for building different forms of Blockchain and cryptocurrency-based solutions. It implies that you must know which language is best for what type of Blockchain development and eventually, polish your skills in the same.

Now, while learning through online tutorials and training programs is a good effort to be well-versed with its theoretical concepts, if you wish to do some practical stuff under the shade of a reputed Blockchain development company, connect our recruitment team for an internship opportunity today.

Mobility integration and risk management challenge in healthcare

10 Top Healthcare IT Certifications - Healthcare Management Degree Guide

Providing mobility to busy clinicians is increasingly recognized as an essential part of delivering care to patients. There are, however, issues regarding development, integration, and security that need to be overcome.

Consideration must be given to the user interface. If it isn’t intuitive and user-friendly, adoption will be lower, and an investment in a solution that is not adequately used is wasted. In addition to a focus on usability, the organization must prepare clinicians for any workflow changes mobility will bring about and provide the right support and training to ensure a high level of adoption.

It’s also important to consider integration with legacy systems. Developers will need to ensure that the solution works with the various healthcare systems of record employed by the organization. That raises some interesting questions about whether current systems need to be updated to integrate with the solution. Will the mobile solution allow for bi-directional flow of information? And if that’s made possible, what is the source of truth for information?

For example, while speaking to a patient’s spouse, a doctor might find out that the patient has an allergy to peanuts. But there’s no information in the system indicating any allergy. It should be possible to update the patient’s records in real-time so other clinicians can immediately see that information. Conversely, clinicians’ access should be limited to their function. For example, nurses should have the right to view and administer medication information but not to prescribe medication (other than those approved by their registration and qualification).

Fast Healthcare Interoperability Resources (FHIR) standards are driving a new level of data interoperability and aggregation, enabling records to be provided to mobile users in real-time. But, organizations will have to look at their underlying systems of record, not just mobility.

Risk management

Laying the Foundation for Strong Healthcare Risk Management

As healthcare organizations prepare to embrace mobility, it will be important to ensure that corporate policy is addressed governing access to patient data — where, when, and by whom. The right governance structures need to be in place for implementation to ensure that organizations adhere to policies about how patient information is accessed and how records are tracked with mobility.

A breach of patient data would be a serious issue. One way to guard against that might be to implement secure sign-in options such as multifactor sign-in and biometric login. But that does require the device to support such functions as facial recognition software and/or fingerprint readers.

While organizations might worry about the loss or theft of a device, there are fairly simple ways to address this. For example, it’s possible to enable mobile access without storing data on the device. And even if data is on the device, it should be encrypted when stored, sent, or received to prevent interference or misuse. Device and application profiles can also enable data to be wiped from the device remotely or enable the device to be locked or formatted to prevent further use.

Preparing for mobility

Preparing for Emergencies When Using a Wheelchair: Healthcare - Braze Mobility

Clinicians want mobility and while challenges exist, there are many ways to overcome them. Ultimately, mobility allows clinicians to access records and data in real-time and to send important patient information back into the systems of record in real-time.

Mobility has been successfully implemented in other industries and in some digitally advanced healthcare organizations. The objective should be to allow mobility to become commonplace to improve healthcare workflow and enhance patient care.

Mobility stack up-ROI weight against overall healthcare outcomes

How To Calculate The ROI Of Mobile App - Techcronus

There is growing evidence that mobility brings significant benefits to clinicians. However, some of the common sticking points with any new technology are cost and choosing the right solution for the organization.

Let’s start by assessing the financial factors or return on investment (ROI) and what approach to mobile makes the most sense.

There’s a cost to making mobility a reality and healthcare organizations must weigh up whether the investment will yield the returns expected. However, the ROI on mobility should be looked at from higher level, one that affects the healthcare institution and even healthcare overall. One of the purposes of mobility is it improves data availability, which in turn should result in fewer unnecessary tests and treatments and less delay. If a hospital isn’t doing unnecessary tests, this not only reduces costs but potentially frees up beds sooner for the next patient. Mobility also enables workflow efficiencies and ensures more accurate information is available as and when required, improving clinical care and reducing readmissions.

It should also be remembered that most facilities have a budget for technology advancements, so rather than thinking about mobility as an additional cost, it should be considered as part of the overall package of advancing the organization’s technology capabilities.

What investment makes most sense?

10 Best Investments In 2021 | Bankrate

If an investment is considered worthwhile, the next question is, what or which mobile solution should organizations invest in and how will this decision be made?

The investment decision will depend on the size of the organization and its needs. For example, a hospital will have a different mobile focus than a community organization. Decision-makers need to ask what will make the biggest difference to a mobile workforce and enable them to achieve better and more efficient workflow, 24/7. The advantage of mobile is it allows users to access information without being deskbound.

Before choosing the solution, it’s important to first identify the problems that need to be solved and pick a solution that best fits the users’ needs, within the confines of the organization’s budget. Thought should also be given to the longer-term needs of the organization, such as the expansion of telehealth services and hospital-in-the-home capabilities.

Does BYOD make sense?

BYOD explained: The good, the bad and the who-knows | ITProPortal

There’s also the cost of the hardware to consider. Will the hospital or healthcare organization be supplying the device or will clinicians be encouraged to bring their own device (BYOD)? How will mobility work with the health facility’s current internet services? Are WiFi speeds and connectivity suitable for mobility?

It seems likely that this will become the preferred option for several reasons: Most clinicians have their own mobile devices and people typically are more comfortable using technologies they are familiar with. Furthermore, they typically upgrade more often than an organization might, and BYOD delivers a cost reduction to the organization.

While healthcare facilities may relinquish some security and control with BYOD, there are new alternatives and solutions. Devices are increasingly offering dual SIM compatibility and dual user profiles, which means clinicians can use a different SIM at work to the one they use privately. And the organization can implement greater controls over work-based SIMs/profiles. It’s also not difficult to block certain sites and applications when a device works off the organization’s WiFi. Mobile application management tools now have a host of features to support a BYOD model compared to the traditional mobile device management tools.

One concern might be that users won’t update their devices as often as is required for solution updates. This can easily be addressed with version control. Yes, that means those who aren’t willing to upgrade won’t have access, but data integrity should never be compromised. A flexible way to address the situation of users not wanting to use their own device or upgrade it as needed is to provide a bank of corporate facility devices that can be used on a day-to-day basis.

As with any new technology approach, there are always barriers, but in the long run the benefits to clinician efficiency and progressive care of patients is to enable mobility.

Dynamic nature of work- Digitally Transforming

The changing nature of work - The Monday Briefing

Long-anticipated, digital transformation is redefining jobs and roles. Digital technologies have transcended simple process acceleration and are deconstructing our old notions about work and the workplace.

Multiple gigs instead of one role

How to manage multiple gigs at the same time – Wired

Mobile technologies in particular have catalyzed the development of the gig economy. What constitutes a job, who is an employee, and how work gets done is being completely reshuffled by the ability to work anytime, anywhere — because the digital workplace doesn’t recognize physical or occupational boundaries.

In this new gig model, one person is no longer constrained to one role. An employee can wear many hats and be involved in activities that span many roles; much of the work that gets done is accomplished by teams who switch roles and tasks seamlessly. Collaboration happens intuitively and digitally across corporate, physical and geographical boundaries. As workers exercise more independence and pick jobs they’re truly interested in, businesses can focus resources and investments and gain the flexibility to contract with specialists as needed.

Center of innovation and change

Center for Innovation & Change - University of Evansville

Here’s another difference: The workplace is becoming an important center of innovation and changes through vehicles like crowdsourcing and cross-corporation collaboration. Employees want companies to rethink how they manage and reward employees. Companies that understand the digital workplace have learned to embrace those employees who are interested in change and technology and to adopt them as beta customers to accelerate innovation. Early adopters can help companies spot new use cases, products and technologies that can have broad application in the enterprise.

Crowdsourced help

10 Tips for Getting the Best Results from Crowdsourcing | Volusion

These trends and others have given IT organizations a lot to think about. IT can choose to stay the course with traditional policies and approaches, but this likely won’t end well. Today’s users won’t think twice about bypassing IT in favor of preferred devices and channels. Crowdsourced assistance is maturing and becoming more common. In the IT support space, for example, users are more likely to Google the answer to a problem — or contact a friend — than to wait for the company’s help desk to respond.

To prevent the inevitable friction between IT and users — and ultimately shadow IT, information silos, and productivity loss — IT should embrace crowdsourced help and introduce curation and knowledge management processes to ensure the correct answer is easy to find and productive help aligns with IT governance.

For example, gamification has been successfully used to reward good assistance and encourage participation from anyone with valuable experience. Whether in the form of badges, leaderboards, or points, employees are encouraged to help each other. An employee-run forum for technical support can award points to those employees who help others resolve their issues and close support tickets. Whether using points received for great help or awards based on the number of resolutions, a contributor can spend their reward in the company store.

Showing users their usage patterns can shape behaviors as well. A dashboard that details the number of Skype minutes a user consumed (encouraged) versus more expensive conference bridge minutes (discouraged) is a simple way to guide users toward the tools that are the most efficient and effective.

The workplace has changed, and with it, worker expectations. To get all the benefits from the new innovation-driven workplace, IT needs to offer employees the experience they expect or face the wrath of a digital mob.

User Adoption for a Chat Support Channel

The 10 Live Chat Benefits You Need to Know (Backed by Research)

In general, chat adoption rates are still not as strong as clients would like. Those who simply built a chat option with the expectation that user would adopt it by themselves are seeing between 7% to 12% of their volume via chat.

Most of these organizations are doing nothing to promote chat as a support channel, assuming that users would gravitate to chat as many of them already have in their personal lives. That’s a mistake because, when it comes to social behavior adoption patterns, it is important to realize that users do not behave the same way in the workplace as in their private lives. User who would potentially prefer chatting will fall back to calling the service desk if that is what most of their coworkers do. After all, one of our strongest drivers as human beings is our desire to fit in amongst our group of peers.  The weight that the old adage “When in Rome, Do as the Romans Do” has in our decision-making is often underestimated.

10 Best WordPress Chat Plugins | Elegant Themes Blog

The key, then, to overcome adoption barriers, is to find ways to modify the behavior of a small percentage of the population – enough that the social trend starts to pull the rest toward the new desired behavior. (This is why group subscriptions to gyms are often more successful than individual promotions). Studies by Alex Pentland and the MIT MediaLab suggest that the frequency of contact and level of trust between the individuals is much more important than the pure number of people pushing the adoption of new behavior. One of their research studies found that user adoption of a new tool (a company social network in this case) was almost guaranteed if the user received at least three invitations from their trusted peers in a short period of time.

So, what does it take to specifically increase the chat channel adoption? Here are a few approaches:

  • Promote it. Remind users not only that the chat support channel exists, but that it’s good. (You should, of course, also make sure that it actually is a good service.)
  • Identify service advocates within the user community.  Make them part of the promotion of the new channel and reward them for getting people to use the service. This can generate a domino effect, helping the social trend accelerate over time.
  • Make chat very accessible and easy to use. If picking up the phone on my desk is faster or easier, nothing will make me stop that behavior when I have an urgent issue. So, instead of giving chat the usual set of barriers — accessible only through a service portal that requires you to open a browser, find the URL, log in with credentials you may not remember, find the button on the page, provide basic info all before getting in a queue — why not allow direct access to support on a medium where users already chat, like Skype? This way, you tap into the built-in mental pattern that tools like Skype generate in our brains (I need to talk to someone, so I look for them in Skype, I chat with them).
  • Add innovative features that can make chat more appealing. For instance, AI virtual agents and automated translation would make service available 24×7 while improving quality, speed and accuracy.
  • Expose users to metrics on their personal contact behavior to incentivize the new behavior. For example, a campaign that makes them feel “out of touch” with the social norm can help. Instead of telling them “you should chat” or “chat is great,”  it’s better to tell them “most users in your department chat with the service desk as the first channel” or  “80% of your peers found chat more effective at resolving IT issues.”

With these recommendations, voluntary adoption of chat can increase from those averages around 10% to those around 20% or 25%.  And as virtual assistant technology becomes more available, embedding a chat function within a Skype or Microsoft Teams environment becomes a more viable option. These virtual assistants contain a good library of responses built into an AI engine and will greatly enhance usability.

Microsoft Teams or Skype For Business?

As things continue to evolve, many contact channel policies will change.  We expect to see a day when all IT issues are first sent to the virtual agent before trying any other channel. Some companies may not even make other channels readily available to users. Instead, built-in integrations with a virtual assistant could enable users to request a chat with a live agent as a secondary option, or automatically log a ticket without human interaction.  When paired with automated translation services, this will result in a smooth, seamless “chat-first” channel, and radically change how we think about global service desks in the future.

Simple Principles for Creating Better Designs

A guide to Design Principles and why you should create your own | by Christian Jensen | UX Collective

After countless tiring discussions, intense debates, exchange of verbal volleys and people yelling things in design standups like –

  • Huh…Whatya mean by the button should be smaller?
  • Have you heard of the word? hmm..whatyamacall it – hmm… consistency!
  • Step away from the design please…
  • What on the earth is wrong with using Lorem Ipsum…I love those profound Latin words

 

I exaggerate but our design standups highlighted the difference in our group’s design philosophies and what we valued. It’s not that designs were bad but they weren’t following our core design principles.

What led to a more frustrating experience was that the feedback sometimes even didn’t highlight the context and someone would blurt, “It just doesn’t feel right”.

Someone would ask – “What do you mean that it doesn’t feel right?”

Followed by silence, scratching of one’s beard, intense gazing at the ceiling, and then silent shrugging of the shoulders.

They knew one of the things was wrong with the design in discussion – lack of consistency or complexity or any such thing but they weren’t able to verbalize it well.

It was turning out to be a big problem – how do you lead effective design feedback standups without having a common language?

That led to the codification of our design principles to create a shared understanding of our design approach and what we value as a team. These principles enable us to have a common design philosophy and approach. It also facilitates in having meaningful conversations and giving each other valuable feedback about the design.

Not that our intense discussions have subsided but they have become more meaningful now

Syncing Contacts with an Android Application

How to Sync Google Contacts With Android: 4 Steps (with Pictures)

Syncing the phone book contacts in an android device with your application is being used by various android applications today. These applications include Whatsapp, Google+, Skype and various email applications. In this way, contacts syncing allows the user to access contacts from various social applications from the phone book itself.Now I will explain with an example Android application how the syncing process happens. This Android application runs in the background as soon as its launched and synchronizes itself with the device’s phone book contacts. Following is a screenshot of a contact synced with the app.

Clicking on MyData will take us to the desired screen on the application.

 

Contacts syncing requires three components to work in order which is:-

  1. Contacts provider
  2. Authenticator service
  3. Sync service

Contacts provider

Contacts provider is the standard access provider to the device’s data about people. All the contacts in the phone are managed by the contacts provider through tables that can be queried to get data. There are basically three tables that store data for a person.

These tables are-

Figure 1- Contacts provider table structure (Source)

  1. ContactsContract.Contacts is the table that contains the aggregated data from raw contacts rows that represents different people in the contacts list.
  2. ContactsContract.RawContacts table contains the person’s accounts and type data summary.
  3. ContactsContract.Data table contains other details corresponding to each raw contact like email address, phone number, etc.

I made use of the ContentProviderOperation to handle the table insertion operations on the table to add a raw contact and the data corresponding to my app and finally to apply the changes to the database as a batch operation.

Here is the sample code for the class that handles this functionality:

Authenticator Service

Tutorial: Build an Android Application with Secure User Authentication

The authenticator service is used to create an account for our app on the device. It plugs into the Android accounts and authentication framework through which an account type is created on the device corresponding to our app. Accounts for standard social applications like Whatsapp, Skype, Facebook, etc. can be found if you visit the accounts screen in settings on your device.

Sync Service

The sync service is made up of two parts the sync adapter and the sync service itself. The sync adapter is used to synchronize data between the server and the local database. My app doesn’t fetch any data from the server but still, it is required to implement the sync adapter. The sync service is what binds the sync adapter to the android sync framework.

The authenticator service runs in the background when the app is launched to create an account for the app on the device. The sync service is called in a periodic cycle to constantly sync the data.

When you tap on the Whatsapp icon on the contacts screen, it will take you to the chat screen of that contact. Similarly, in the phonebook contacts, your app icon can be seen which is clickable to access the app screens that correspond to that contact’s information on the app. The contact data can be sent through the intent extras to the activity that launches.

Emacs vs. Webstorm for Node.js development

If you are a developer, you know the struggle of choosing the right tools for your projects. Opting for the right editor or IDE is a great hassle if you don’t have your facts right. In software development, Emacs and WebStorm are two very common names, both of them being tools that support Node.js Development. However, the question arises that which of these two tools should you consider while starting your Node.js project.

Emacs vs. WebStorm for Node.js Development

Node JS Development Services in Hyderabad | Creo Tech Solutions

In this article, I shall guide you through all the details, from big to small, regarding Emacs and Webstorm to help you choose which of these two might be better for your project.

Similarities

There are a few features that are shared by both Emacs and WebStorm. Firstly, both of them are capable of connecting to external code quality tools such as ESLint. Both of them can connect to these tools and provide real-time code analysis and bug spotting. Secondly, either one of the tools can provide a deep analysis of JavaScript mode. WebStorm has its exclusive JavaScript analysis engine whereas Emacs has its own js2 mode. Both aid in finding the bugs and issues in the code like finding a function that does not return a value and can perform minor tasks such as extracting variables too. Lastly, both the tools greatly support smart auto-completion.  Where Emacs does this through Tern, which is an open-source JS code analyzer that various editors can connect with. On the other hand, WebStorm does it using its own engine which, in addition, parses JSDoc comments and TypeScript descriptor documents.

Why WebStorm?

WebStorm Logo " Sticker by SuperJellyfish | Redbubble

Although Emacs is great yet there are a few things that lie out of its scope and just cannot be done right with it. Disparagingly, few of the peskiest things that Emacs can not do, can be done by WebStorm, making it a great choice for developers.  One of the major aspects of this domain is debugging. The basic debugger in the Node.js is terribly slow. WebStorm emerges as a great alternative in this case. It wouldn’t be wrong to say that this debugger in itself enough to make a developer opt for it over anything else for major JavaScript Development. Though Emacs does have an inbuilt editor for debugging, it fails to work with the default Node.js debugger. Even if it did work, it would’ve been taken back by the utterly sluggish performance of the default debugger.

Definition and Symbol lookup is another incredible component of WebStorm. While Emacs can discover definitions and symbols in a solitary document by means of Tern, WebStorm can really review your entire task and discover a definition, or if nothing else give you a very pruned rundown of contenders to look over. This makes exploring through code exponentially quicker, and it truly diminishes the strain of setting exchanging between documents.

Testing integration is the last enormous success for WebStorm. When utilizing the most well-known JavaScript testing systems, Jasmine and Mocha, WebStorm removes the need for running individual tests, entire test files, and entire test suites with only a couple of keyboard shortcuts.

If we join this last component with debugging and code navigation between documents, WebStorm turns into an astounding TDD tool. Emacs can be inconsequentially set up to run an entire test suite, however not to run individual tests for any of the regular JavaScript testing frameworks. While this is possible in Emacs too, (such integration exists for Ruby’s RSpec tools), nobody has contributed to the opportunity to make it work.

Why Emacs?

Laravel & Emacs - Part 1 | Grok Interactive

Regardless of the considerable number of pros WebStorm has, there are still various things Emacs is better at. One of the most significant of those is auto-completion. I have already mentioned above that both Emacs and WebStorm can do some degree of smart, context-aware completion. The truth of a dynamic scripting language like JavaScrip is that on multiple occasions, there is no relevant completion accessible as there is an excessive vagueness or the code has improper structure.

In these cases, WebStorm simply doesn’t offer any completion, compelling you to type everything physically. Emacs accomplishes something amazing in this case. It basically tokenizes the majority of the words in each buffer of a similar kind, for example, each JavaScript buffer, and takes a gander at the characters you have begun to type and attempts to discover a match. It is nothing but a fact that often in the event that you type around three characters of a word, it will offer you around 3-5 choices of words starting from those three characters. This radically improves the speed as you don’t need to type the whole words to get going.

Something else Emacs is commendable at is Vim emulation. While WebStorm’s Vim copying is good too, but it does encounter bugs frequently. These incorporate bugs like keys not enlisting, getting into abnormal states where you seem to be somewhere between the normal and insert mode, and a peculiarly delicate mouse choice that consistently appears to place you in visual when you didn’t ask it to. Also, some propelled highlights like macros once in a while work directly for rarely work. It also fails to copy things on the system clipboard, which Emacs does as a matter of course. Also, large file editing or micro-driven refactoring is also better done in Emacs.

Summary

Like every other app development tool, Emacs and Webstorm too, have their own advantages and disadvantages. A significant disadvantage is automated refactoring. Automated refactoring is an incredibly tricky problem in a dynamic language. Neither Emacs or WebStorm is capable of going beyond extractions or simple variable renames. It can make refactoring across files a wearisome, error-prone process. Similarly, both tools lack at generating code for JavaScript. Either of the tools supports expanding developer-defined templates, but nothing else. WebStorm appears to be at least trying a bit in this regard. Presently, it can generate a method that you call in code, but only into the same file you are in, and it will often call the method wrong. A developer must consider all the points before choosing the right tool and beginning the development so as to utilize the features to their utmost capacity.

Learn How to Start Working with KAFKA and More

Top 10 Courses to Learn Apache Kafka in 2021 | by javinpaul | Javarevisited | Medium

Kafka is a distributed publish-subscribe messaging system that is designed to be fast, scalable, and durable. It was developed by LinkedIn and open-sourced in the year 2011. It makes an extremely desirable option for data integration with the increasing complexity in real-time data processing challenges. It is a great solution for applications that require large-scale message processing.

Components of Kafka are :

  1. Zookeeper
  2. Kafka Cluster – which contains one or more servers called brokers
  3. Producer – which publishes messages to Kafka
  4. Consumer – which consumes messages from Kafka.

Components :

Kafka Architecture and Its Fundamental Concepts - DataFlair

It saves messages on a disk and allows subscribers to read from it. Communication between producers, Kafka clusters, and consumers takes place with the TCP protocol. All the published messages will be retained for a configurable period of time. Each Kafka broker may contain multiple topics into which producers publish messages. Each topic is broken into one or more ordered partitions. Partitions are replicated across multiple servers for fault tolerance. Each partition has one Leader server and zero or more follower servers depending upon the replication factor of the partition.

When a publisher publishes to a Kafka cluster, it queries which partitions exist for that topic and which brokers are responsible for each partition. Publishers send messages to the broker responsible for that partition (using some hashing algorithm).

Consumers keep track of what they consume (partition id) and store it in Zookeeper. In case of consumer failure, a new process can start from the last saved point. Each consumer in the group gets assigned a set of partitions to consume from.

Producers can attach key with messages, in which all messages with same key goes to same partition. When consuming from a topic, it is possible to configure a consumer group with multiple consumers. Each consumer in a consumer group will read messages from a unique subset of partitions in each topic they subscribe to, so each message is delivered to one consumer in the group, and all messages with the same key arrive at the same consumer.

Role of Zookeeper in –

What Is Apache Kafka? | How Kafka Works | OpenLogic

It provides access to clients in a tree-like structure. It use ZooKeeper for storing configurations and use them across the cluster in a distributed fashion. It maintains information like topics under a broker, offset of consumers.

Steps to get started with (For UNIX):

  1. Download Kafka – wget http://mirror.sdunix.com/apache/kafka/0.8.2.0/kafka_2.10-0.8.2.0.tgz
  2. tar -xzf kafka_2.10-0.8.2.0.tgz
  3. cd kafka_2.10-0.8.2.0/
  4. nside Config folder you will see server, zookeeper config files
  5. Inside bin folder you will see bash files for starting zookeeper, server, producer, consumer
  6. Start zookeeper – bin/zookeeper-server-start.sh config/zookeeper.properties
  7. Start server – bin/kafka-server-start.sh config/server.properties
  8. creating topic –bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor <your_replication_factor> –partitions <no._of_partitions> –topic <your_topic_name>
    This will create a topic with specified name and will be replicated in to brokers based on replication factor and topic will be partitioned based on partition number. Replication factor should not be greater than no. of brokers available.
  9. view topic – bin/kafka-topics.sh –list –zookeeper localhost:2181
  10. delete a topic – add this line to server.properties file delete.topic.enable=true
    then fire this command after starting zookeeper
    bin/kafka-topics.sh –zookeeper localhost:2181 –delete –topic <topic_name>
  11. alter a topic – bin/kafka-topics.sh –zookeeper localhost:2181 –alter –topic <topic_name>
  12. Start producer – bin/kafka-console-producer.sh –broker-list localhost:9092 –topic <your_topic_name> and send some messages
  13. Start consumer – bin/kafka-console-consumer.sh –zookeeper localhost:2181 –from-beginning –topic <your_topic_name> and view messages

If you want to have more than one server, say for ex : 4 (it comes with single server), the steps are:

  1. create server config file for each of the servers :
    cp config/server.properties config/server-1.proeprties
    cp config/server.properties config/server-2.properties
    cp config/server.properties config/server-3.properties
  2. Repeat these steps for all property files you have created with different brokerId, port.
    vi server-1.properties and set following properties
    broker.id = 1
     port = 9093
    log.dir = /tmp/kafka-logs-1
  3. Start Servers :
    bin/kafka-server-start.sh config/server-1.properties &
    bin/kafka-server-start.sh config/server-2.properties &
    bin/kafka-server-start.sh config/server-3.properties &

Now we have four servers running (server, server-1,server-2,server-3)

PROGRAMMING

The program in java includes producer class and consumer class.

Producer Class :

Producer class is used to create messages and specify the topic name with an optional partition.

The maven dependency jar to be included is

We need to define properties for a producer to find brokers, serialize messages, and sends them to the partitions it wants.

Once producer sends data, if we pass an extra item (say id) via data :
ex :

before publishing data to brokers, it goes to the partition class which is mentioned in the properties and selects the partition to which data has to be published.

Consumer Class :

Topic Creation :

It is a distributed commit log service that functions much like a publish/subscribe messaging system, but with better throughput, built-in partitioning, replication, and fault tolerance.

Applications:

  1. Stream processing
  2. Messaging
  3. Multiplayer online game
  4. Log aggregation
error: Content is protected !!