October 2018

Microsoft Cognitive Services: the potential of the main APIs

Microsoft Cognitive Services is a set of APIs (Application Programming Interfaces) and SDKs (Software Development Kits) which are available in Azure, and that allow developers to create apps that are more intelligent and dynamic, as well as to perform enriching actions for the user’s experience.

Basically, and according to Microsoft, “they are intelligent algorithms that allow their apps, machines and bots to see, listen, talk, understand and perceive users’ needs with natural communication methods”. These algorithms, which develop and enhance their own potential through Machine Learning, use background data which, in turn, is gathered through the use of mobile apps.

So, is it possible to talk about the democratisation of artificial intelligence? Yes. With Microsoft Cognitive Services, developers can implement facial or voice recognition features with just a few lines of code, without the need to develop algorithms from scratch. Therefore, Cognitive Services enable in depth readings and insights for a personalised understanding of the profile, through services such as:

  • Vision: includes image processing algorithms capable of identifying images in an intelligent manner. They can be used for facial recognition in order to work as a security mechanism with Face API, which gives the probability of an image being of a given person and identifies features such as age or sex.

It can also perceive emotions with Emotion API, detecting facial expressions of happiness, sadness, surprise or fear, for example.

  • Voice: converts spoken audio into text (with Bing Speech API) and verifies or recognises the speaker in a given app. With Translator Speech API, the user can have a translation in real time, written or spoken.
  • Knowledge: provides monitoring of information and complex data, in order to perform actions such as intelligent recommendations or semantic research (through Recommendation API or Custom Decision Service).
  • Language: processes natural language, through ready-made scripts and assessing emotions, and learns to identify the user’s needs. The ex-libris of language services is Language Understanding Intelligence Service (LUIS) which, by using intelligent voice recognition, allows the user to develop their own language models and bots to understand commands and perform actions according to what is requested.
  • Search: allows actions such as word suggestions, image or video search and actions that can be performed by APIs like Bing Web Search or Bing Custom Search.

How can Cognitive Services be used in different sectors? 

Retail: cognitive services enable the extraction of detailed insights, which will help understand the needs of your existing customers and attract new ones. For example, you will be able to understand what difficulties your customers have when buying online and address these, support your sellers in presenting the right product to the right customer, or simplify the payment process.

Education: you can find the interests of each student and modernise your teaching style with cognitive services and machine learning, or you can manage suggestions on how to improve the classroom experience.

Insurance: you can give your customers a better experience with mobile apps by using cognitive services such as facial or voice recognition. You can also use them to detect possible fraud.

Finance: they help to customise specific campaigns based on customer features or behaviours, leading to increased sales and ROI.

Health: you can develop a more personalised assistance to your clients with a bot. It can help, for example, with selecting a specialist to schedule an appointment. Another huge potential is the assistance cognitive services will be able to provide to doctors, by conducting a more detailed diagnosis.

Watch a real time demonstration of cognitive services at the 2018 Xamarin Experience event here.

Ana LamelasMicrosoft Cognitive Services: the potential of the main APIs
read more

Top 5 main Agile methodologies: advantages and disadvantages

What are agile methodologies?

The first we heard about Agile development (or the term Agile) was back in 2001, when a community of developers that was tired of using development methods considered to be “heavy” – namely, the waterfall model – decided to set out a manifesto: The Agile Manifesto. This very important document had so much impact that it has worked as a bible for Agile development even until today, laying out all principles and good practices.

Agile methodologies argue that, above all, we should seek client satisfaction through continuous deliveries of value-adding software, by keeping up constant communication with the client and, also, by focusing on communication between team members. Contrary to previous practices, the Agile methodology is not characterised by the complete definition of a product – a complete analysis or the definition of all categories/requirements – but by a dynamic interaction that allows constant delivery.

According to the Agile Manifesto and some of its 12 principles:

  • Customer satisfaction is the priority, demonstrated through continuous deliveries and added value.
  • Changes to the requirements should be accepted, even if at a late stage of the development: “Agile processes harness change for the customer’s competitive advantage”, as is stated in the Manifesto.
  • The customer and the development team should work together on a daily basis.
  • It is necessary to provide a good environment and good support to development teams. Only in this way it is possible to keep them motivated.
  • Agile processes promote sustainable development because of their constant rhythm and technical excellence, which improves productivity.
  • Retrospective moments inside a team are essential, allowing it to make the necessary adjustments and promote efficiency.

Basically, Agile development follows an incremental model, which develops collaboration within the team and continuous planning, as well as everlasting evolution and learning. Agile methodologies should respect the software development cycle – planning, execution and final delivery – therefore allowing software to be developed in stages; this makes it easier to identify and resolve bugs.

The main advantage of using Agile methodologies is not only the fast delivery of software, but also the constant delivery of value to the customer, since deliveries are incremental.

There are countless methodologies that follow this Agile mindset. In this blog post, we highlight the five main Agile methodologies and their advantages and disadvantages in the software development universe.

Main Agile methodologies:

1. Scrum

Scrum is, undoubtedly, the most used of the many frameworks of the Agile methodology. Scrum is characterised by cycles or stages of development, known as sprints, and by the maximisation of development time for a software product. It is usually used in the management of development projects for software products, but it can also be used in a business-related context.

Every day there are small 15-minute meetings, the daily scrum, that take the role of synchronising activities and finding the best way to plan the workday.

Advantages: Disadvantages:
  • There is a lot of motivation in teams, because programmers want to meet the deadline of every sprint;
  • The transparency allows for the project to be followed by all members of a team or even an organisation;
  • The focus on quality is a constant in the scrum method, resulting in fewer mistakes.
  • The dynamics of this method allow developers to reorganise priorities, ensuring that sprints that have not yet been completed get more attention
  • The segmentation of the project and the search for agility of the development can sometimes lead the team to lose track of the project as a whole, focusing only on one part;
  • Each developer’s role may not be well defined, resulting in some confusion amongst team members.

2. Kanban

The word Kanban is of Japanese origin and its meaning is linked to a time concept, “just-in-time”. In practice, the Kanban method exists in a board or table (Kanban board), divided into columns, that shows every flow of the software production. As the development evolves, the information contained in the table changes, and when a new task comes into play, a new “card” is created.

The Kanban method requires communication and transparency so that the members of a team can know exactly at what stage the development is and can see the status of the project at any time.

Advantages: Disadvantages:
  • Ability to view all tasks of one project (Completed, In Progress or In Testing, for example);
  • It is possible to limit the number of running tasks (that is, the amount of work, bearing in mind its resolution or deliverability);
  • Focus on the duration of a cycle – how long it takes a task to go from backlog to the final stage;
  • Allows continuous deliveries.
  • It is possible for members of a team to misinterpret the information show on the Kanban Board, especially when it is revealed as outdated;
  • Since there are no timeframes in Kanban, you can face time related problems, such as delays, associated with each and every stage.

3. Extreme Programming (XP)

This is a typical Agile Development framework, developed by Kent Beck, and can be adapted to development companies of various dimensions. It is a methodology that emphasises values such as Communication, Simplicity, Feedback, Courage and Respect and prioritises customer satisfaction over everything else. This methodology offers trust to the developers by motivating them to accept changes in the customer’s requirements, even if they arrive in a later stage of the development cycle.

Teamwork is extremely important in XP, since when there is a problem, it is solved by the whole team of managers, developers or customers. They are all essential pieces of the same puzzle, hence creating a fertile environment for high productivity and efficiency in a team. In Extreme Programming, software is tested from day one, collecting feedback to improve development.

Advantages: Disadvantages:
  • The simplicity of the written code works as an advantage, since it allows for its improvement at any given time;
  • The whole process and the whole cycle of XP development is visible, therefore creating goals for developers and showing results in a relatively fast way;
  • Software development turns out to be more agile than in other methodologies, precisely because of the constant testing;
  • XP also contributes to uplifting the talent of the teams and to their withholding.
  • The extreme focus on code can lead to less importance being paid to design, hence requiring extra attention to that matter;
  • This framework may not work in the best way possible if all team members are not working in the same geographical area;
  • In XP projects, a registry of possible errors is not always maintained, and that lack of monitoring can lead to similar bugs in the future.

4. Lean Development

Lean Development is a methodology that comes directly from Lean Manufacturing, created by Toyota, and applied to software development. This method offers a conceptual framework and follows values, principles and good development practices that can be applied to an Agile development approach.

There are seven essential principles: Deleting the things that do not matter (everything that does not bring effective value to the customer’s project is deleted); Quality development (creating quality in development requires discipline and control of the quantity of residuals created); Creating knowledge (the team is motivated to document the whole infrastructure to later retain that value); Differing commitments (this point encourages the team not to focus too much on planning and anticipating ideas without having a prior and complete understanding of the requirements of the business); Fast delivery (deliver value to the customer as soon as possible); Respecting the team (communicating and managing conflicts are two essential points); Optimise the whole (the development sequence has to be perfected enough to be able to delete errors in the code, in order to create a flow of true value).

Advantages: Disadvantages:
  • Allows the team to delete superfluous activity, therefore saving time and money;
  • Decreases the time needed to deliver functionalities, since it prepares the development team in the decision-making process, hence increasing general motivation;
  • Easily scalable methodology and easily adaptable to projects of any dimension.
  • It is very dependent on the development team’s ability and on the following of Lean principles, which means it will be necessary to have extremely dedicated and talented developers;
  • It is easier to lose focus, since various tasks are divided into a number of elements;
  • It requires some documents, in particular on the characteristics of the business which is the subject of the work. Otherwise, there is a risk that the development may be done incorrectly and present errors.

5. Crystal

This is a family of Agile methodologies which includes variants such as Crystal Clear (up to an 8-person team), Crystal Yellow (up to a 10 to 20-person team), Crystal Orange (up to a 20 to 50-person team) and Crystal Red (for big teams with 50 to 1000 people). Crystal focuses on principles such as People, Interactions, Community, Skills, Talent and Communication, aiming to deliver the best possible software development process. The core of this development process is interaction and symbiosis, which have to exist between the people allocated to the projects and processes in order to bring efficiency to the development.

According to its founder, Alistair Cockburn, “Crystal is a family of software development methodologies, which works with the power invested by people, and is extremely light and stretch-to-fit”. Basically, Cockburn believes that the talent and the way team members interact brings benefits for the whole project.

Advantages: Disadvantages:
  • It ensures frequent deliveries, in order to identify eventual problems in every stage;
  • There is always space to improve characteristics, taking some time from software development and allowing for a discussion about how to perfect processes;
  • Allows for a closer communication and promotes interaction and sharing of knowledge between team members;
  • Requires a technical environment with automated tests, configuration management and frequent integration.
  • The fact that there are variants in the methodology family means that the principles might vary with the size of the team and the size of the project, resulting in projects that might not be so straightforward;
  • It might not work in teams scattered through different areas, because of the constant need to communicate and reflect;
  • Planning and development is not dependent on the requirements.

At Xpand IT, software development is personalised, focusing on results and customer satisfaction, stage by stage. The whole development is governed by Agile principles. Therefore, in order to respect the development cycle, achieve the desired results, predict possible errors, maximise productivity and develop safely, while still keeping team members motivated, we created our own methodology: XPAgile (a mix of Agile frameworks – Scrum and Extreme Programming – that ensures the best results within the given deadlines).

For more information on the development methodology of Xpand IT, click here.

Ana LamelasTop 5 main Agile methodologies: advantages and disadvantages
read more

Full Life Cycle API Management with WSO2

The growth and constant evolution of the use of computer systems in all areas of human development, together with the need of companies to integrate with each other, besides offering services to their clients through the Internet, results in the multiplication of open systems, which provide services through communication interfaces. Many companies exist only because of this type of integration interface – the so called APIs (Application Program Interface).

Over the years, several network communication protocols have been created to provide standardized data exchange: RPC, CORBA, DCOM, RMI, WebSocket, SOAP (Web Services) and REST. These last three protocols are the most commonly used protocols since they are based on an open HTTP transport protocol, standardizing and popularizing the exchange of data and services, through public or private APIs. The amount of APIs made available by companies, both internally and externally, can grow exponentially in quantity.

Because of these movements there will be a growing need to document and monitor the creation and use of these APIs.

Key features of API Management

Some of the key features of an API management solution include:

  • Performance and Reliability– must support high throughput with reduced overhead;
  • Lifecycle and Governance– should provide workflows for API development and subscription, API versioning and management/monitoring capabilities;
  • Throttling and Monetization– capable of controlling API traffic and charge for API usage;
  • Engagement– easy to onboard new subscribers, providing a good and well documented test environment;
  • Composition and Orchestration– able to implement specific functionality to an API (e.g. call 2 different APIs and return aggregated result).

The WSO2 API lifecycle

WSO2 API Manager overcomes these challenges with a set of features for creating, publishing, lifecycle management, release, monetization, governance, security, etc.

From designing to building and using an API, there is a process that involves engineering, publishing and administration this process is called the API Lifecycle. The life cycle of an API is something crucial and strategic for an organization. Generally, the definition of the life cycle is defined in Planning and Designing the API, Developing the API, Testing the API, Deploying the API, Retiring the API. WSO2 API Manager has more detailed flows for each cycle, where you can create sub flows within each cycle, for example: In the Retiring the API, before doing the removal there is the blocking flow, where when an API is blocked it is possible to deprecate the API or return to the published state. In this way, each company can define its life cycle, and work internally according to its needs. One of the great differentials of WSO2 API Manager is that you have complete freedom to modify all internal flows and customize according to your needs.

By default the WSO2 API Manager defines this cycle between the components below:

Picture 1 – API life cycle and Architecture
  • API Publisher:Is responsible for creating, monitoring, managing, and publishing the APIs. It is the web interface for API Creators and Publishers.
  • API Portal (Developer Portal):Web interface intended for consumers of APIs, developers etc. In this interface it is possible to explore the existing APIs, test, subscribe and monitor all the APIs that were subscribed by the user.
  • API Gateway:The Gateway is the main component of the API Manager, it receives all API calls and forwards to the backend, before forwarding it, it is necessary to pass this request on to Key Manager and Traffic Management to validate all the policies of security before proceeding.
  • Key Manager: responsible for all authentication and security of the API, takes care of all Token Oauth lifecycle management.
  • Traffic Manager: takes care of every part of Throttling’s policy, thus verifying if the calls belong to some user with limitation of request in that API and if the user has not exhausted his limit of requests.
  • Analytics:Analytics is a real-time analytics engine, which in addition to exposing detailed graphs about the APIs, also takes care of the real-time monitoring part generating several types of alerts such as security incident, abnormal calls to a certain API, etc.

WSO2 API Manager is a very robust and complete API solution, having as a differential its entire graphical implementation interface, which differs a lot from the competitors that have a greater focus on the Gateway, to build a robust gateway and not giving much focus to the other components needed for the API lifecycle such as the Store and the Publisher. WSO2 came out ahead with this product because it was able to meet all aspects of full solution either with a very robust gateway as well as an intuitive interface facilitating deploy and the entire lifecycle. Due to this, in the Gartner quadrant, the WSO2 API Manager is considered as a “Visionary”.

Just to get an idea of the robustness of the product, with a minimum recommended configuration, each node can support up to 3000 TPS (Transactions Per Second).

If you’d like to know more about WSO2 API Manager and its features, go to WSO2 API Manager web site and explore all implementation possibilities.

Vitor Darela

Senior Consultant, Xpand IT

Vitor DarelaFull Life Cycle API Management with WSO2
read more

Gamification: Myth vs. Reality

First of all, let’s make it clear: no matter what you think Gamification is, it certainly isn’t the silver bullet solution for your problems. If you have a problem in your teams, processes or organisation, you should address it and evaluate the best way to fix it, because applying Gamification to a broken environment won’t solve anything (it will probably make it worse!)

Having said that… what is Gamification then? And how can I better apply it?

This post is not intended to go deep into the definition and concepts of Gamification but rather to provide a better understanding of Gamification by identifying common myths in many people’s visions of it.

The myths

1st myth: Gamification is transforming something into a game

There is a generalised idea that something is gamified when you are playing a game. That is inaccurate. The majority of the time you are playing games, you are not in a gamified environment.

Creating a game is a separate line of study, called Game Design. Game Design focuses on designing a game by creating a plot, the characters, the mechanics, an evolution, game play interaction, etc., and putting those in a confined environment (the game) where the user (player) actively participates, evolves and, hopefully, succeeds. It is more like creating a new challenge a giving the player the tools to face it.

Gamification, even though it shares similar benefits, is addressing real world challenges with what we learn from games. It is the process of applying game elements and game design techniques to non-game contexts, with the objective of engaging and motivating people by making their real world tasks more fun.

At an enterprise level, for example, Gamification can be used to on-board and engage team members, enhance productivity and efficiency, train people, and innovate.

2nd myth: Applying Gamification will make things at least as engaging as they were

Although FUN is one of the simple and clear words that describes the objective of Gamification, it is also a very vague and relative concept. When not applied correctly, game elements and techniques may create the opposite effect of what was intended. That is why sometimes people see far worse results after applying Gamification initiatives to the environment as opposed to not applying any.

Bear in mind that engagement has to do, among other things, with voluntariness and choice. Forcing people to do something negates the effects of a Gamification strategy.

3rd myth: If I understand Game Design, I understand Gamification

If this is your motto, then you’ve been living in a dream world. Although sharing similar elements and techniques, as said earlier, Gamification is far more about the psychology than the actual product. Game Design is more focused on creating the game and all its elements in a way that is appealing and involving to the player, whereas Gamification is especially concerned with affecting human behaviour to achieve a specific outcome. It is intended to provide a long-term and sustainable benefit rather than entertainment per se.

4th myth: Gamification = PBL (points, badges and leaderboards)

If you are not new to Gamification, you probably know that when gamifying, people tend to apply PBL straightforwardly, probably because this is the most common and visible aspect of a gamified environment. Although in many cases PBL are present, the scope of the Gamification initiative goes far beyond these elements. You have to free your mind from vanilla PBL application and start to think about how you can get more out of Gamification.

You should start from the top, by thinking about how you will affect the users with the experience: things like emotions, a narrative, a progression, etc., that support the behaviours that you wish to achieve. Then you can start to consider the mechanics, the processes that drive the user – like challenges, competition/cooperation, feedback, rewards, win states, and many others – so that you create a meaningful experience. And to achieve those, you can use PBL and any other elements (achievements, avatars, collections, levels, virtual goods, etc…) as tools that you have at your disposal to implement your strategy.

5th myth: Gamification doesn’t work

This is a little bit farfetched, but sometimes people don’t believe in Gamification just because of past experiences gone wrong. It’s true that Gamification doesn’t fit all scenarios and, for the ones it does, it should be applied and managed correctly to get the desired outcomes (welcome to the real world!) Always evaluate all possibilities and consider the pros and cons of any Gamification implementation initiative. Don’t be afraid to cast out Gamification when you think it will not benefit your context or it might create significant risks. As discussed at the beginning, this is not a panacea or a certified results procedure. The context must be set up, and the implementation is a journey of adoption and change, so it takes time and care to succeed.

A little bit of the psychology behind Gamification

There is a lot that can be discussed on the psychology and behavioural side of Gamification.

Its core is about understanding people’s behaviour (Behaviorism), by analysing what people do in response to stimulus:

  • By providing feedback, people tend to correct and adjust behaviour accordingly;
  • Creating consequences or giving rewards based on their actions helps to guide them to the intended behaviour;
  • Randomly shooting their dopamine system with something unexpected makes them feel good and more engaged.

Because the Behaviourist approach is limited, Gamification is also going deeper and understanding what people feel and think (Cognitivism), by trying to determine the motivation behind the action. Motivation can be:

  • Extrinsic, when the action is done for the purpose of the reward (e.g. fame, money, etc.), which can demotivate and is not sustainable;
  • Intrinsic, when doing the thing for its own sake, because it is rewarding and enjoyable by itself, thus creating much more engagement.

Pitfalls of Gamification

There are several pitfalls and dangers associated with bad Gamification use.

One of the dangers concerns abusing or manipulating people into having specific behaviours. Remember that Gamification is about freedom of choice, so any military-like enforcement of behaviour will push people away instead of bringing them in.

An additional pitfall is what in Gamification is known as instant gratification. Instant gratification relies on consistently rewarding someone for a simple achievement – like, for example, submitting a suggestion through a form. This devalues the reward and potentially leads people to disregard what is really important (the suggestion) just for the purpose of getting more rewards (with more clicks).

Another bad use of Gamification is when you expose people or set them “playing” against each other. An example of this might be the implementation of leaderboards in an organisation, showing points and/or rating people in “who is better than whom” and “who are the worst performers” reports. This potentially promotes a bad environment between co-workers and can create entropy and demotivation within teams.

Good Gamification examples

The following is a selection of good examples of the application of Gamification that succeeded in achieving their goals and the desired behavioural pattern:

Gamification Description Achievements Why it worked?
Volkswagen’s speed limit enforcement in Stockholm Induce responsible driving behaviour by implementing a lottery between drivers respecting the city speed limits with the money collected from fines of over-speeding drivers. Resulted in 22% average speed reduction. Probably because people didn’t need to speed in the first place. Creating a reward for doing it within the speed limits raised awareness (feedback) and created a new motivation for people to drive by.
StackOverflow’s contribution mechanism Make Stack Overflow ‘the’ relevant reference for asking help and finding answers on specific technology topics (mainly programming). How many times do you end up on Stack Overflow’s website when searching for a specific technology issue resolution? That explains it all. It promotes a sense of community, by rewarding meaningful contributions and giving voice to the entire user community (feedback and revision system).
Duolingo Website and app that eases the process of learning new languages. Made language learning easier and now has more than 68 languages available and 200 million users worldwide. Received several educational and learning technology prizes. It is easy and simple; it provides constant feedback; it gives freedom for you to choose your own pace; it gives options on which area you want to focus next; it rewards you more when you put more pace or effort into it; it gives you lingots (the Duolingo currency) as rewards for you to unlock other challenges and learn more.

Nuno Santos

Enterprise Solutions Manager, Xpand IT

Nuno SantosGamification: Myth vs. Reality
read more