Machine Learning in IOS apps

Hello guys,

I have been to the #TechKnowday here in London three weeks ago and one of the workshops that I joined was the Machine Learning in IOS Apps. So, in the end we had a face recognition app which showed what was the emotion of the person, if the picture was someone smiling than it should show the smile emoticon and so on.

You can find the slides and follow the explanations here:

https://github.com/costescv/MachineLearning/blob/master/MachineLearning.pdf

Then you will need to clone the repository with the project https://github.com/costescv/machinelearning and download the Sentiment Polarity model here

Step 1:

In the ViewController.swift you will need to create the face detection request, the request handler and the face detection action. So you will have something like this:

 

Step 2:

In the SentimentAnalysisService.swift you will need to create the model using the SentimentPolarity, pass the linguistic tagger options and create the input to receive and interpret the input with the sentiment. You can add, remove or change the sentiments in the Sentiment.swift class, but don’t forget to change in this class the sentiment as well.

 

 

So, after you build, run the app and type the name of the sentiment with a space in the end, so you should have something like this:

 

Thanks Vasilica for this workshop !

Leading by example

Hello guys,

Today I am going to post something interesting that I learned through time with my work experience. This time I’m not talking about technical skills, I’m talking about the soft skills and how you can be a better person every day by learning from the constructive critics and ditching the destructive ones that don’t give you any benefit.

I am also sharing what some successful companies are already doing in the Silicon Valley which Jacqueline Yumi Asano explained in her article (it is in Portuguese, but you can check it bellow in the Resources part).

 

Inspire people

 

Say sorry, you are not a machine and you are going to fail at some point

If you want to be a trustworthy person at your workplace, you need to show that you are fair and you recognise when you fail. Saying sorry will show that you are humble enough to have the trust of anyone.

 

Strength the individual

Nothing is more empowering than supporting people to learn something and improve themselves. Everybody wins when this happens. Ask yourself if 20% of your time is about learning or you just do the same task over and over again. Do you have challenges in your company ? Are you growing in this company ?

You might be asking how can you identify if a company will improve you or not before even starting there? Check how they write their specs and roles. Are they asking for specific technologies or are they looking for generalist professionals ? A good company will look for someone that is a machine learning person and not someone that has a fixed technology in their skillset. That means the company will follow the latest technologies and you will be learning most of the time.

We don’t’ assign the work for our developers. They assign up for work
LiveRamp

 

Don’t under estimate the power of the vision and direction

Do you have a clear version of your goal ? Does your company is taking you to this goal ? This is extremely important for your future and you don’t have time to lose. So, double check if your company helps you to achieve this goal and if you have a clear vision and direction to follow.

If not, there is not too much you can do apart from start looking for a place where you can clearly see it leading you to your goals in, let’s say, a years time.

 

Get away from tyrant bosses, look for a strong bond of trust on both sides

If you ever worked in a place where your manager use his lead position to decide something rather than arguments, what are you even doing in a place like this? It is definitely a toxic environment and with this lack of trust it is better to look for something new because discussions and arguments would be pointless. Your opinion will mean nothing, even if you have arguments, analysis and your own carrier experience. Your manager will always ignore what you are saying.

Free choices matter and you should work in a place where your opinion is not invalidated.


Our product is great because we show why we are recommending
an specific insight. This way we build trust.
François Lopitaux, Director of Product, Salesforce

 

Surround yourself with passionate, but not blind people

Passionate is different from blindness. I just want to highlight that I have found many people that come across as passionate people but in reality they were completely blind and never accepted to have failures on their ideas/projects/implementation. This is quite common among developers, for that reason there is this assumption that a QA will always be a developer enemy, since it is part of our job to show bugs on their implementations.

A smart person knows how beneficial is to have a constructive critic and feel glad to have them. So, surround yourself with passionate and smart people. Be smart, take responsibility, accept the failures and improve them.

 

Get others opinions to empower people

I can only see advantages on doing that. Share knowledge as soon as possible with everybody in your team. Is this a new feature ? So, get everybody together and expose your idea, get others opinions. Don’t ignore them, every idea has a value. You can find bugs in the early stages and also this builds an ownership feeling.

Does the company take your opinion into account ? Do you feel that you have autonomy ? There is nothing more empowering than showing that you care about everybody opinions. Everybody feels valued and this will increase the trust on your work since they know that they can be honest with you.

We don’t need as PMs to tell UX Designer what they need to look at
Pinterest

 

Resources:

https://medium.com/mulheres-de-produto/o-que-eu-aprendi-no-vale-do-sil%C3%ADcio-sobre-product-innovation-7f3128f33e3

http://qablog.practitest.com/leading-by-example/

http://www.soulcraft.co/essays/lead_by_example.html

How to use mind maps to clarity your tests

To improve the communication about a project you don’t need to have infinite docs and articles. For someone who is starting or to quick understand the product you need to have something smaller, prettier, and more focused to the audience. Mind maps are a lightweight form of testing documentation, because communicating effectively with the team is the key of a good quality implementation.

Revealing the Complexity of a Problem

Imagine that you have to test an app. You know that you need to test the functionalities and if the behaviour of the app is not clunky and unstable. You can have articles on Confluence explaining the behaviour of the app or you can have a mind map which is more focused and simple.

For example:

Click to expand

 

This mind map will help you to remember of all of the type of tests that you can perform on a mobile app.

The mind map communicated the logic of how our code would be written without the need of looking at code. It can cover all of your use cases and extract connections in a way that would have been difficult to do in a list.

When creating the mind map you can follow Heuristic Test Design, which is a model of tests with different patterns of quality criteria, techniques, elements and environment. It helps testers to remember and design different combinations while creating the test plan.

 

Using mind maps for regression tests

You can use mind maps for so many things, for example as a guide to your regression tests. I think it is far much more easy than reading a list of checklists. Also, it helps people who are just arriving at the company to understand the flow and the connections across the features. This guide helps you to decide whether what’s happening is something you should expect. Not everybody agrees about having mind maps for regression tests which I can understand why, but you can decide this with your team.

Imagine that you have a checklist like this:

You need to follow this checklist to be sure your release is good to go, but imagine that you have a map to follow, wouldn’t be more clear and easy to understand ? You can find the mind map correspondent to this checklist here:

Click to expand

When a button changes, for example, the mind map should be the first thing to look at. You can check if nothing was changed below or up that node (feature). You look at the parent node to see what pressing the button did and make sure it still does that. You update the mind map with the new button shape so that future testers know how it works now.

Mind maps help us test not just the change at hand but the consistency of that change relative to the rest of the product, the product’s history, and the feature’s purpose.

 You should share this process and ask for the development team input their thoughts and this will build trust in the regression pack. Also as I always recommend, share and review always. You are not working alone and it’s important to remember that we are not machines and we have blind spots which can be solved by the involvement of a properly engaged team.
Tools
You can use some of these free tools to create your Mind Map, I usually prefer the online ones, but feel free to choose the best one for you:

 

Resources:

https://dojo.ministryoftesting.com/lessons/mind-maps-made-easy

http://www.satisfice.com/tools/htsm.pdf