Gamification em Aplicativos como Forma de Ampliar o Engajamento

O mundo dos jogos atrai milhares de pessoas em todo o mundo, sejam eles eletrônicos, de tabuleiro ou por atividades físicas. Este texto tem por objetivo, esclarecer o conceito de gamification, mostrar casos de aplicação, e entender como utilizar este método no meio empresarial, para ampliar o engajamento efetivo em atividades variadas.

O que é Gamification?

Gamification (gamificação) pode ser definido, de forma mais consistente, como sendo uma estratégia, apoiada na aplicação de elementos de jogos, para atividades non-game que é utilizada para influenciar e causar mudanças no comportamento de indivíduos e grupos (BUNCHBALL INC., 2010). Gamificação é um termo recente, mas a ideia de utilizar os mecanismos dos jogos para resolver problemas e aumentar o engajamento, existe há bastante tempo.

Na educação infantil, os professores utilizam, de uma vasta variedade de jogos para desenvolver uma experiência lúdica, e mais interessante para os alunos, na hora de aprender os números, letras e sílabas.

No meio empresarial, temos diversos casos de aplicação da gamificação, seguem alguns exemplos:

Programa de Milhas

As companhias aéreas, têm dificuldade em fidelizar o cliente, pois este, acaba buscando outras companhias devido ao baixo custo da passagem. Por isso, as companhias criaram o programa de milhas, onde a cada viagem, são acumulados pontos que são revertidos em descontos, nas passagens aéreas e outros benefícios.

Duolingo

A plataforma de ensino de idiomas, soma quase 6 milhões de downloads do aplicativo na loja Google Play. Os conteúdos são divididos em níveis, e para desbloquear os níveis mais avançados, o usuário deve somar pontos, completando os exercícios disponibilizados. Um ranking de classificação é montado a partir da lista de amigos que utilizam a plataforma.

Strava

As corridas, pedaladas e outras atividades físicas, têm sido mais competitivas com o uso do Strava. Além do aplicativo armazenar as informações de geolocalização, e performance do usuário durante a atividade física, os trajetos comuns entre os atletas são monitorados. Com esta informação a plataforma monta um ranking diário, semanal, mensal e geral de performance dos atletas. O usuário conquista troféus, na modalidade bronze, prata e ouro, caso supere suas marcas pessoais, ou supere marcas de outros usuários.

Isto é engajamento!

Os desafios impostos pelos games geram uma motivação intrínseca, ou seja, parte da própria pessoa envolvida na atividade.

O termo “engajamento”, em um contexto empresarial, indica a conexão entre o consumidor e um produto ou serviço. Não há uma métrica específica, que mensure suficientemente o engajamento, é melhor pensar em um conjunto de métricas (ZICHERMANN; CUNNINGHAM, 2011), são elas:

  • Recência;
  • Frequência;
  • Duração;
  • Viralidade;
  • Avaliações.

Para um engajamento mais significativo, uma combinação entre as métricas deve ser levado em consideração, conforme a necessidade do negócio. Por exemplo, para o Duolingo, são consideradas mais importantes a frequência e duração da atividade no aplicativo.

E agora, como “Gamificar”?

Para a implementar a gamificação, alguns atributos chaves podem ser levados em consideração:

  • Programas de pontuação
  • Leaderboards / painel com ranking
  • Feedback / divulgação dos méritos alcançados
  • Regras
  • Premiações / recompensas
  • Selos, adesivos e distintivos
  • Mudança de nível
  • Troféus

É possível encontrar exemplos de gamificação em aplicativos de produtividade, mídias sociais, sites colaborativos, campanhas de incentivo, ações de marketing e muito mais, sempre com o objetivo de envolver os participantes, gerar mais engajamento e produtividade.

O método de gamificação se mostra muito eficiente, através dos desafios impostos e recompensas, que motivam e engajam os usuários. É importante conhecer o negócio, para analisar e descobrir qual forma de engajamento é necessária, e aplicar os métodos de gamificação baseados nesta perspectiva.

Autor: Gabriel Susin

Referências

BUNCHBALL INC. Gamification 101: an introduction to the use of game dynamics to influence behavior. 2010. Disponível em: <http://jndglobal.com/wp-content/uploads/2011/05/gamification1011.pdf>. Acesso em: 28 abril. 2018.

ZICHERMANN, G.; CUNNINGHAM, C. Gamification by design. Sebastopol: O’Reilly, 2011.

Extração de dados de equipamentos em tempo real

O que é extração de dados em tempo real?

A extração de dados em tempo real é um processo realizado para captura dados de equipamentos de hardware com objetivo de empregar em aplicações de software especificas. Frequentemente utilizado em aplicações direcionadas a IoT (Internet das coisas) a extração de dados em tempo real tem algumas limitações, empregada de forma correta a extração pode se torna uma forte ferramenta para o desenvolvimento de diversas aplicações com foco em automação e controle.

A extração de dados em tempo real

O processo de extração de dados é utilizado com objetivo de reduzir o tempo e tornar mais assertivo o processo de monitoramento e utilização de dados. Por exemplo, um sistema que tem como objetivo realizar o controle de um processo industrial recebe com um frequência “x” uma informação referente ao processo que é inserida por um usuário passível de erro, essa informação gera um dado no sistema, se o mesmo sistema pudesse realizar a consulta da mesma informação no tempo em que ela foi gerada o sistema eliminaria o risco de erro durante esse pequeno processo, considerando que esse processo é realizado com frequência o tempo que usuário insere a informação reflete no tempo do monitoramento do dado, enquanto a coleta em tempo real diminui em grande parte esse tempo.

Como é realizada a coleta em tempo real

O sistema embarcado compatível com captura de dados em tempo real realiza a leitura dos sensores e se comunica com a aplicação, informando os dados capturados pelos sensores para utilização na aplicação.

Exemplos de utilização de captura de dados em tempo real.

  • Aplicativos de comunicação com computador de bordo do carro;
  • Centros de monitoramento de processos Industriais;
  • Identificação por radiofrequência RFID;
  • Sistemas de automação residencial;

Algumas vantagens na utilização de captura de dados em tempo real.

  • Elimina falhas humanas;
  • Agiliza e torna mais assertivo o processo;
  • Reduz os custos dos processos;
  • Aumenta a produtividade;

 

Autor: Tiago Spadetto dos Santos

Referências

KING ROGERS, Lorie. Data capture basics: Data capture technology can help an operation see its products in real time and take proactive steps to keep materials moving smoothly through the supply chain. Here’s a look at several basic data capture technologies.. 1. Disponível em: <https://www.mmh.com/images/site/MMH1110_EquipReport_Data.pdf>. Acesso em: 27 abr. 2018.

DO BRASIL, GE. Análise de dados e máquinas conectadas: conheça o centro de monitoramento da GE Water & Process Technologies! 1. Disponível em: <https://gereportsbrasil.com.br/análise-de-dados-e-máquinas-conectadas-conheça-o-centro-de-monitoramento-da-ge-water-process-6c4f79399132>. Acesso em: 20 abr. 2018.

O que é, onde aplicar e quais as vantagens da Linguagem R

 

R e os Carros

Você já foi impactado pela notícia de que os dados são o novo petróleo? Você já sabe que a Ciência de Dados é dita como a profissão mais sexy do século? Pois bem, para analisar os dados o Cientista de Dados se vale de diversas ferramentas. Este artigo tem a finalidade de apresentar uma destas ferramentas: a Linguagem R.

O que é o R?

R se presta a diversas funções, desde uma calculadora científica, até a realização de complexas análises estatísticas. Além disso, o R também apresenta uma série de recursos para plotagem de gráficos, como personalização de: cor, tipo e tamanho de letra, símbolos, títulos e subtítulos, pontos, linhas, legendas, planos de fundo e muito mais. Mais que um software que realiza análises estatísticas, R é um ambiente e uma linguagem de programação orientada a objeto. Nele, números, vetores, matrizes, arrays, data frames e listas podem ficar armazenados em objetos.

Origens

S é a linguagem que foi desenvolvida por John Chambers nos laboratórios da Bell Labs. S foi inicialmente desenvolvida em 1976 como um ambiente de análise estatística, originalmente implementada usando bibliotecas da linguagem de programação Fortran. Entretanto, as primeiras versões da linguagem não continham funções de modelagem estatística.
Entender a filosofia da linguagem S, ajuda a entender as raízes que geraram a linguagem R. O fator mais importante a notar, é que a linguagem S nasceu como uma ferramenta de análise de dados e não como uma linguagem de programação tradicional. Os inventores de S tinham como objetivo tornar a análise de dados mais fácil, inicialmente para eles e então para os outros.

A linguagem R surgiu um pouco depois da linguagem S. Uma das limitações de S era o fato da linguagem estar disponível apenas através do pacote comercial S-PLUS. Em 1991, R foi criada por Ross Ihaka e Robert Gentleman no Departamento de Estatística da Universidade de Auckland. Em 1993 a linguagem R foi anunciada em público pela primeira vez. Em 1995, Martin Mahler fez uma importante contribuição, convencendo Ross e Robert a usarem a licença GNU General Public e tornar R um software livre. Isso permitiu que o código fonte da linguagem R se tornasse disponível para toda a comunidade. Em 1996 as listas públicas R-help e R-devel foram criadas e em 1997 foi formado o grupo R Core, com profissionais associados ao S e S-PLUS, estatísticos e cientistas da computação. Atualmente o grupo R Core controla o código fonte de R. Em 2000, finalmente a versão 1.0.0 do R foi liberada ao público.

Funções da Linguagem R

60% do tempo de um Cientista de Dados é usado no processo de limpeza, transformação e organização dos dados, ou seja, na manipulação. Analisar grandes conjuntos de dados, agrupá-los, aplicar modelos estatísticos, importar/exportar os dados para bancos de dados relacionais, tudo isso pode ser feito com R. A linguagem pode ser usada em todo o processo analítico, desde a coleta de dados, passando pela manipulação, Machine Learning, até a apresentação dos dados com a criação de gráficos a partir dos resultados das análises de dados.

Aplicações

A linguagem R pode ser aplicada nas mais diversas áreas, tais como: Pesquisa Científica, Business Analytics, Desenvolvimento de Software, Relatórios Estatísticos, Análise Financeira, Ciência Sociais e Big Data Analytics.

Autor: Diego Ribeiro

Artigo baseado em materiais do curso e no blog da Data Science Academy.

Comunicando com sistemas embarcados

Se você já precisou integrar sistemas embarcados com aplicação de terceiros, servidores e banco de dados, a primeira idéia que vem naturalmente é o uso de WebService. Imagine agora, como isso era feito na época que não existia essa tecnologia, e dessa forma você poderá ter uma pequena dimensão do impacto gerado por ela no mundo da automação e dos sistemas embarcados.

O presente artigo objetiva uma breve abordagem sobre o conceito da tecnologia WebService e como está tecnologia de comunicação entre sistemas teve profundos impactos no desenvolvimento e na integração sistemas embarcados.

Como fazer?

Na base de tudo está a Internet, sem ela seria impossível o surgimento da tecnologia WebService. Basicamente o WebService faz com que os recursos de uma determinada aplicação possam estar disponíveis sobre a rede de forma padronizada, desta forma uma aplicação pode invocar outra para executar tarefas que podem ser simples ou complexas, mesmo que as duas sejam escritas em linguagens diferentes.

O principal motivo que torna o WebService tão atraente é o fato que utiliza tecnologias padronizadas como o protocolo HTTP/HTTPS para transporte de dados, os quais são transferidos sobre XML encapsulados no protocolo SOAP (Simple Object Access Protocol). Também é muito comum a utilização do protocolo REST (Representational transfer protocol) como protocolo de transferência, neste caso os dados são encapsulados em notação JSON que é mais leve que o XML.

Na maioria dos casos, os grandes fabricantes de hardware embarcado já provem um WebService que abstrai todas as funções de baixo nível de comunicação, assim o desenvolvedor somente deve acessar uma url fornecida pelo fabricante com os métodos disponíveis para enviar e receber dados ao equipamento.

Uso de padrões facilita muito a vida

Além dos grandes fabricantes de hardware, também existem empresas especializadas em conectividade, que fornecem softwares com protocolos específicos para centenas de equipamentos de diferentes fabricantes. Estes sistemas normalmente são divididos em três camadas, conforme mostra a figura abaixo.

Figura 1

A primeira camada concentra os drivers proprietários de cada fabricante que efetivamente fazem a comunicação funcionar. Esta é a camada de mais baixo nível que é totalmente abstraída ao usuário final da informação.

A segunda camada é uma seríe de serviços que rodam em nível servidor e compreendem normalmente os padrões OPC-DA e IoT, ambos os padrões fornecem uma normatização de como a informação será coletada ,armazenada e disponibilizada para a camada superior.

A terceira e última camada fornece as interfaces para comunicação com aplicação de terceiros, normalmente uma API REST que o cliente pode consumir para transferir e receber dados dos sistemas embarcados.

Agora que entendemos um pouco mais sobre as bases sob as quais a tecnologia foi desenvolvida, podemos considerar que qualquer sistema embarcado que possua uma conexão  Ethernet é capaz de enviar e receber dados através de um WebService. Portanto, a construção de penosas rotinas proprietárias de difícil manutenção e atualização tornaram-se praticamente obsoleta nos dias atuais.

Autor: Alex Sandro Meireles Da Cruz

Links relacionados:

 http://mqtt.org

https://opcfoundation.org

https://www.kepware.com

Rest API

A Representational State Transfer (REST), em português Transferência de Estado Representacional, é um estilo de arquitetura que define um conjunto de restrições e propriedades baseados em HTTP. Neste artigo, abordaremos alguns conceitos básicos sobre esta arquitetura:

 

O QUE É API?

O acrônimo API que provém do inglês Application Programming Interface (Em português, significa Interface de Programação de Aplicações), trata-se de um conjunto de rotinas e padrões estabelecidos e documentados por uma aplicação A, para que outras aplicações consigam utilizar as funcionalidades desta aplicação A, sem precisar conhecer detalhes da implementação do software.

Desta forma, entendemos que as APIs permitem uma interoperabilidade entre aplicações. Em outras palavras, a comunicação entre aplicações e entre os usuários.

 

O QUE É REST?

REST significa Representational State Transfer. Em português, Transferência de Estado Representacional. Trata-se de uma abstração da arquitetura da Web. Resumidamente, o REST consiste em princípios/regras que, quando seguidas, permitem a criação de um projeto com interfaces bem definidas. Desta forma, permitindo, por exemplo, que aplicações se comuniquem com clareza.

 

ORIGEM DO REST

O HTTP é o principal protocolo de comunicação para sistemas Web, existente há mais de 20 anos, e em todo esse tempo sofreu algumas atualizações. Nos anos 2000, um dos principais autores do protocolo HTTP, Roy Fielding, sugeriu, dentre outras coisas, o uso de novos métodos HTTP. Estes métodos visavam resolver problemas relacionados a semântica quando requisições HTTP eram feitas.

Estas sugestões permitiram o uso do HTTP de uma forma muito mais próxima da nossa realidade, dando sentido às requisições HTTP.

 

EM RESUMO

  • REST é abreviatura de Representational State Transfer;
  • É uma outra forma de desenvolver WebServices
  • REST é um conjunto de princípios que definem como Web Standards como HTTP devem ser usados
  • Aderindo aos princípios REST, teremos um sistema que explora a arquitetura da Web nosso beneficio

 

MÉTODOS HTTP

Abaixo, os métodos padrões para a execução de requisições HTTP, em consumo de serviços REST:

 

  • PUT (INSERIR)

Semelhante ao método POST, a ideia básica do método PUT é permitir a atualização de um recuso no servidor.

 

  • DELETE (EXCLUIR)

Como você já deve estar imaginando, o método DELETE é utilizado com o intuito de remover um recurso em um determinado servidor.

 

  • GET (CAPTURAR)

O método GET é utilizado quando existe a necessidade de se obter um recurso. Ao executar o método GET sob um recurso, uma representação será devolvida pelo servidor.

 

  • POST (ATUALIZAR)

Utilizamos o método POST quando desejamos criar algum recurso no servidor a partir de uma determinada representação. Exemplo disso é quando fazemos a submissão de algum formulário em uma página Web.

 

O QUE SIGNIFICA RESTFUL

Existe uma certa confusão quanto aos termos REST e RESTful. Entretanto, ambos representam os mesmo princípios. A diferença é apenas gramatical. Em outras palavras, sistemas que utilizam os princípios REST são chamados de RESTful.

 

REST: conjunto de princípios de arquitetura

RESTful: capacidade de determinado sistema aplicar os princípios de REST.

 

CONCLUSÃO

Neste artigo, eu procurei oferecer um rápida introdução sobre os conceitos por trás do REST, a arquitetura da Web. É extremamente importante entender o conceito da arquitetura Restful para evitar perda de tempo na construção da API, facilitando a vida de outros usuários que podem estar do outro lado do mundo tentando consumir a sua API. É muito importante evitar que suas APIS sofram alterações constantes e mudam de versão a todo momento, assim dificultando ainda mais a comunicação. Por isso é bom planejar e projetar bem antes de disponibilizá-la.

 

Autor Jonatan Maicon da Costa

 

Referências:

Baseado em,

https://imasters.com.br/front-end/entendendo-como-funciona-o-restful-de-verdade/

https://www.infoq.com/br/articles/rest-introduction

https://becode.com.br/o-que-e-api-rest-e-restful/

http://blog.algaworks.com/4-conceitos-sobre-rest-que-qualquer-desenvolvedor-precisa-conhecer/

UX Design

Uma mudança na forma da visão fornecedor-cliente pode definir futuro de crescimento ou fechamento de um empresa.

Muitas pessoas acreditam que UX Design está ligado diretamente a TI, mas esse é um mito que deve ser quebrado, a UX Design eleva o padrão de experiencia do usuário, podendo ser de um simples uso de um fósforo ou de um complexo sistema web.

O que é UX ?

User Experience, em português, experiência do usuário. Essa sigla referência o motivo, quem, como  e onde é utilizado um sistema ou objeto, que pode ser qualquer coisa.


“User Experience é tudo! É a forma com que você sente o mundo, é a forma como você experiencia a sua vida, é a forma como você experiencia um serviço, um aplicativo, um sistema de computador. Mas é um sistema. É tudo!”

— Don Norman, criador do termo “UX (User Experience)”

O objetivo principal é melhorar de forma continua a usabilidade e a experiencia que o usuário tem com o produto.

É importante ressaltar que UX Experience é uma área multidisciplinar que engloba conhecimentos de áreas diversas, então é muito comum ter conceitos de psicologia atrelado a tecnologia no momento da análise e da melhoria do produto que dever ser algo feito de forma continua.

UI Design ou UX Design?

Esses dois termos são suscetíveis a enganação e erros, acreditar que UX Design e a Interface do sistema estão ligados esta em partes correto, pois para ter uma boa experiencia, é necessário uma interface amigável.

Mas achar que UX Design é relacionado só a interface é um erro, quando falamos de interface, precisamos falar também de UI Design, que é responsável por toda a lógica visual do projeto. Como os elementos de interface são de fato algo muito importante para a experiência do usuário, podemos afirmar com propriedade que o UI Design é um dos muitos elementos que compõem o UX Design.

Usabilidade

A usabilidade é um ponto muito importante na UX, diferentemente do que as pessoas acreditam, ela não está só relacionada com a facilidade que o sistema traz, de fato esse é o ponto menos importante. O foco principal é como ele pode ser usado. Todo produto no mercado hoje em dia precisa de um motivo para existir, logo se ele não tem motivo ele desaparece.

Para ter um sistema de sucesso, o desenvolver ou engenheiro de software precisa usar a empatia para entender o usuário, o desenvolvedor precisa saber que o sistema é feito para uso do usuário. Uma técnica que pode ser usada é definir um avatar, que seria o tipo de usuário que vai usar o sistema, qualificações, idade, conhecimento. A partir dos dados coletados é possível criar um sistema de acordo com o perfil do usuário.

É importante ressaltar mais um vez que a interface também é importante, criar algo simples e intuitivo, que mostre onde o usuário está através de breadcrumbs ou um título que cada página é muito importante.
Mesmo após o sistema criado as melhorias nunca devem acabar, começar com o que tem é o indicado, mas aos poucos ir percebendo em qual nível está a experiencia do usuário,  e criar novas funções para facilitar o acesso a informação e a usabilidade do sistema.

Conclusão

User Design chegou a mercado como uma forma de reunir informações de todos os aspectos  entre a interação do usuário com a empresa, sistema ou produto. Ele sem dúvida estuda todas as maneiras de como deixar o usuário satisfeito de uma forma que atenda todas as necessidades e interesses do mesmo. Ressalto que a verdadeira experiência do usuário não é somente oferecer ao cliente o que ele quer, muito pelo contrário, o cliente normalmente não sabe o que procura, então é responsabilidade da empresa perceber da melhor maneira as necessidades reais do usuário e deixa-los satisfeitos com a experiência obtida.

Esse conceito de perceber a necessidade do cliente, sem que ele fale, ou mesmo saiba o que precise, deve ser feito levando em consideração aspectos como a facilidade de uso, eficiência e utilidade para propor a melhor solução para um determinado problema. Para resolver e criar soluções para o problema, é necessário que a empresa tenha uma visão ampla de todas as possibilidades e disciplinas que envolvem o problema.

Portanto, seguindo todas essas diretrizes, é possível trabalhar o lado emocional do usuário, melhorar a sua experiência com o sistema, e assim garantir o sucesso do projeto.

Fonte: https://www.raffcom.com.br/blog/o-que-e-ux-design/

Autor: Felipe Tartarotti

 

O que é e quais os impactos da Computação Quântica

A Computação Quântica, sendo desenvolvida com base nos princípios da Mecânica Quântica, tem como seu principal objetivo o desenvolvimento do computador quântico, ferramenta que será utilizada no processamento de informações computacionais muito complexas, buscas de informações em bases de dados muito grandes, auxiliar no desenvolvimento de inteligência artificial, e outros processos computacionais aplicáveis. A necessidade do desenvolvimento desta tecnologia surgiu após a identificação de um limite no aprimoramento do desempenho de dispositivos computacionais no cenário da computação atual, o que poderia no futuro restringir o desenvolvimento de novas tecnologias que dependem de um poder de processamento significativo.

Principais diferenças entre Computação Tradicional e Computação Quântica

Na computação baseada na arquitetura de Von Neumann atualmente utilizada por computadores, dispositivos móveis, servidores, e diversos outros dispositivos, a unidade de informação básica é o bit, que pode ser ‘0’ ou ‘1’ a qualquer momento, isto é relacionado aos componentes transistores de um processador que podem estar ligados (‘1’) ou desligados (‘0’) e permite a comunicação do hardware e software. Desta forma na computação tradicional existem apenas duas possibilidades para um dado e qualquer informação produzida será uma combinação destes ‘0’ ou ‘1’.

Contudo na computação quântica a unidade de informação básica é o Bit Quântico ou qubit, que além de poder assumir o estado de ‘0’ ou ‘1’, pode assumir ambos estados ao mesmo tempo graças a propriedade quântica de sobreposição, não se trabalhando mais com transistores, e sim com partículas de átomos como fótons ou elétrons. Para entendimento deste artigo podemos considerar que a propriedade de sobreposição determina que: Até que seja observada ou interagida com o mundo real, uma partícula pode assumir dois estados ao mesmo tempo, ou seja, neste caso ela poderia ser tanto ‘0’ como ‘1’. Porém para entender um pouco mais sobre este assunto busque informações sobre o paradoxo Schrödinger’s cat, também conhecido como o gato de Schrödinger.

Esta habilidade do qubit possuir três valores distintos e o fato de se trabalhar com partículas de átomos, tornam a Computação Quântica muitas vezes mais rápida que a computação tradicional para o processamento de cálculos quânticos e tarefas extremamente complexas como a realização de simulações de moléculas.

Principais impactos da aplicação da Computação Quântica

Abaixo será listado o impacto da Computação Quântica em apenas algumas áreas, porém existem diversas outras áreas que serão afetadas. Adicionalmente especialistas acreditam que com a constante evolução da Computação Quântica, o tamanho do impacto em diferentes áreas dependentes de computação deve aumentar significativamente.

Saúde e Medicina

A Computação Quântica teoricamente facilitará a analise de informações genéticas de pacientes, fornecendo maiores informações para possíveis tratamentos, sendo possivelmente aplicada juntamente com uma Inteligência Artificial para melhorar a eficácia de diagnósticos. Possuindo possível aplicação também no uso de radioterapias para calcular a dose correta de radiação a ser utilizada.

Será possível aplicar a computação quântica em maior escala para o desenvolvimento de novos medicamentos e pesquisa de novos tratamentos, pois computadores tradicionais não são capazes de efetivamente simular completamente determinadas moléculas devido a quantidade de processamento necessária, porém computadores quânticos teoricamente cumprirão esta tarefa efetivamente, auxiliando pesquisadores no entendimento de compostos essenciais a vida, e outros conceitos extremamente importantes para o desenvolvimento de medicamentos como a compreensão do enovelamento de proteínas, bem como a simulação da reação de diversas moléculas em nível atômico.

Machine Learning e Inteligência Artificial

Um dos principais requisitos para o desenvolvimento de inteligência artificial é concentrado em Machine Learning, ou “Aprendizado de Máquina”, que em sua grande parte é utilizar algoritmos em grandes conjuntos de dados para efetuar o reconhecimento de padrões. Com o aumento de poder computacional oferecido pela Computação Quântica será possível comparar conjuntos ainda maiores de dados ainda mais efetivamente, acelerando o processo de Machine Learning e o desenvolvimento de inteligência artificial.

Criptografia

Com os recentes avanços em Computação Quântica, especialistas da área de segurança já estão pesquisando e desenvolvendo novos algoritmos de criptografia chamados de “quantum-proof, quantum-safe ou quantum-resistant”, pois existe um consenso nesta área que computadores quânticos suficientemente grandes poderão quebrar qualquer algoritmo de criptografia de chave pública utilizado atualmente utilizando o algoritmo de Shor.

Porem atualmente não há a necessidade de se preocupar com seus dados, pois os computadores quânticos atualmente construídos ainda não possuem o poder de processamento necessário para efetivamente efetuar esta quebra. Adicionalmente algoritmos de criptografia de chaves simétricas e funções de hash ainda são considerados relativamente seguros contra a computação quântica.

Principais desafios da Computação Quântica

Um dos principais desafios atuais da computação quântica é a preservação da informação quântica, ou seja, garantir que o estado desta informação seja preservado e que ela não sofra alterações indesejadas, como por exemplo possuir seu valor alterado. A empresa D-Wave, fabricante de uma linha de computadores quânticos, conseguiu obter sucesso neste requisito através de um sistema de refrigeração que mantém o processador em um ambiente de -273ºC, combinando isto com múltiplas camadas de blindagem magnética. Adicionalmente existe ainda uma certa dificuldade em trabalhar com Computação Quântica devido a sua inerente complexidade, fazendo-se necessário o uso de algoritmos específicos para computação quântica, o que no presente momento em grande parte dos casos ainda não oferece vantagens significativas em relação a computação tradicional.

Outro problema que vale destaque é o preço de desenvolvimento de computadores quânticos, pois são extremamente caros em sua construção. Contudo empresas como Google já estão experimentando trabalhar com esta tecnologia, e a IBM atualmente disponibiliza um serviço experimental de Computação Quântica na nuvem contando com um processador quântico de 20 qubits.

O fim da computação tradicional?

Um dos maiores mitos existentes sobre a computação quântica é que ela irá substituir completamente a computação tradicional, porém especialistas garantem que isto não é o caso em qualquer realidade próxima. O consenso atual de pesquisadores da computação quântica é que ela será utilizada principalmente em grandes aplicações em nuvem e em laboratórios de pesquisa onde suas grandes vantagens sobre a computação tradicional podem ser efetivamente aplicadas. Para o dia-a-dia de usuários a computação tradicional ainda será superior tanto em termos de custo, quanto em desempenho.

Autor: Marcos P. Garbin

IA aplicada a conhecer o perfil do usuário

A Inteligência Artificial está relacionada à capacidade das máquinas pensarem como seres humanos, de terem o poder de aprender, raciocinar, perceber, deliberar e decidir de forma racional e inteligente. Mas como funciona a inteligência artificial e como ela pode nos ajudar a conhecer o perfil de um usuário em uma aplicação.

Ao pegarmos o smartphone já é possível ver o que a IA pode fazer pelo usuário, no entanto por trás de cada recomendação personalizada, até resultados de pesquisa relevantes, existe uma combinação de tecnologias que fazem a inteligência artificial funcionar, e que estão, por consequência fazendo com que você tenha expectativas mais altas sobre todas as máquinas inteligentes e dispositivos que usa.

As tecnologias por trás da IA

Por trás da IA existem várias tecnologias e conceitos utilizados para realizar o processamento dos dados de forma que tragam o resultado esperado conforme as entradas informadas.

  • Machine Learning: A definição de aprendizado de máquina envolve utilizar-se o mínimo de programação usando dados para aprender. Em vez de programar regras para um máquina e esperar o resultado, com machine learning, conseguimos deixar que a máquina aprenda essas regras por conta própria a partir dos dados alimentados.
  • Deep Learning: Envolve algoritmos mais complexos para imitar nas máquinas a rede neural do cérebro humano e aprender uma área do conhecimento com pouco ou nenhuma supervisão.
  • Processamento de Linguagem Natural: O processamento de linguagem natural utiliza-se do machine learning para encontrar padrões em grandes conjuntos de dados puros e reconhecer a linguagem natural. Um dos exemplos de aplicação do PLN é a análise de sentimento, onde os algoritmos podem processar padrões em postagens de rede sociais para compreender como os clientes se sentem em relação a marcas e produtos específicos.
  • Análise Preditiva: A análise preditiva é uma área avançada em analytics que utiliza dados históricos e algoritmos de Machine Learning para fazer previsões sobre eventos futuros desconhecidos e identificar a probabilidade de resultado.
  • Big Data: Podemos entender como grande quantidades de informações, estruturadas ou não, que são a base para determinar padrões e fazer previsões. É o que alimenta a inteligência artificial e os processos de machine learning, deep learning e PLN.

Redes Neurais Artificiais

O cérebro humano possui cerca de 10 bilhões de neurônios. Um neurônio é capaz de criar até 10.000 sinapses com outros neurônios. Se cada ligação for considerada como um bit de informação binária, tem-se 100 trilhões de bits que corresponde a 11,37 Tb de capacidade máxima de memória.

A maior virtude das redes neurais é a capacidade de aprender a partir dos dados de entrada com ou sem um professor. Esta habilidade tem tornado o uso de algoritmos de redes neurais cada vez mais frequentes.

Figura 1 – Representação de um neurônio biológico

Os principais componentes dos neurônios biológicos são:

  • Os dendritos, que têm por função receber os estímulos transmitidos pelos outros neurônios;
  • O corpo do neurônio, também chamado de soma, que é responsável por coletar e combinar informações vindas de outros neurônios;
  • O axônio, que é constituído de uma fibra tubular que pode alcançar até alguns metros e é responsável por transmitir os estímulos para outras células.

No cérebro humano os sinais gerados caminham pelos axônios. Se esses sinais forem superiores a aproximadamente 50 mV (limiar do disparo), seguem pelo axônio. Caso contrário, são bloqueados e não prosseguem (são considerados irrelevantes). Estes sinais na forma de pulsos, caminham pelo axônio a uma velocidade média de 25 m/s. Não é uma corrente eletrônica, mas uma corrente de íons de sódio e potássio. Antes de um sinal entrar no próximo neurônio, deve passar por uma sinapse, que é o processo de ligação entre o axônio e o dendrito. Se este sinal for superior a certo limite, vai em frente, caso contrário é bloqueado e não segue.

Um neurônio recebe sinais através de inúmeros dendritos, os quais são ponderados e enviados para o axônio, podendo ou não seguir adiante. Na passagem por um neurônio, um sinal pode ser amplificado ou atenuado, dependendo do dendrito de origem, pois a cada condutor está associado um peso pelo qual o sinal é multiplicado, estes pesos são a memória.

Os valores dos pesos são estabelecidos por meio do treinamento recebido pelo cérebro durante sua vida útil, ou seja a memorização.

Figura 2 – Representação de um neurônio artificial.

O neurônio matemático, similar ao natural, recebe um ou mais sinais de entrada e devolve um único sinal de saída, que pode ser distribuído como sinal de saída da rede, ou como sinal de entrada para um ou vários outros neurônios da camada superior.

Uma rede neural aprende acerca de seu ambiente por meio de um processo iterativo de ajustes aplicados aos seus parâmetros livres (pesos sinápticos e níveis de bias). A este processo denomina-se de treinamento. Depois de treinada a rede pode ser utilizada em diversas áreas do conhecimento humano, ainda que na ausência de um especialista.

Treinamento

O algoritmo de aprendizagem é escolhido em função do tipo de rede utilizada e das características dos dados que serão a ajustados. Entretanto, o processo é basicamente empírico. Nesta fase, serão ajustados os pesos das conexões. A tarefa do projetista, então, será a determinação dos valores iniciais dos pesos sinápticos, qual o algoritmo de aprendizagem e qual o tempo de treinamento para o aprendizado da rede. O algoritmo de aprendizagem é escolhido em função do tipo de rede utilizada e das características do dados que serão ajustados. Entretanto, o processo é basicamente empírico.

Teste

Durante esta fase, o conjunto de validação é utilizado para determinar o desempenho da rede com dados que não foram apresentados à mesma. Esta fase é a que verifica se a rede não decorou os dados de entrada e válida a rede para a aplicação desejada.

Perceptron

O perceptron é a arquitetura mais simples, apresentando apenas um conjunto de neurônios de entrada e um conjunto de neurônios de saída, sem haver nenhuma camada de neurônios intermediária. Este tipo de rede neural, embora simples, apresenta problemas específicos, não podendo ser utilizada em aplicações mais avançadas. No entanto para exemplificar será utilizado esta arquitetura.

Cases

No entanto a ideia a ser passada aqui, é que a Inteligência Artificial não é um sistema pronto onde simplesmente solicitamos as saídas necessárias, e sim um sistema complexo onde existe a necessidade de coleta de informações e conhecimento, criação de uma base de dados, treinamento da inteligência artificial que será utilizada para retornar os resultados esperado.

A Inteligência Artificial pode ser aplicada para que seja possível o reconhecimento do perfil de usuários, desde que utilizado uma base de conhecimento, um algoritmo de rede neural onde pode-se efetuar o treinamento dos dados que correspondem a um perfil e a partir daí a rede neural poderia classificar e reconhecer os usuários com ou sem a supervisão de uma pessoa.

A Inteligência Artificial está presente em nosso dia a dia:

  • Aplicações como a Siri utilizam processamento de voz para atuar como assistente pessoal;
  • O Facebook utiliza o reconhecimento de imagem para recomendar marcações em fotos;
  • A Amazon faz recomendação personalizada de produtos utilizando algoritmos de aprendizado de máquina;
  • O Waze prevê as melhores rotas a partir da sua localização com apenas um clique, enquanto carros com piloto automático usam as técnicas de IA para evitar engarrafamentos e colisões;
  • O Google consegue preencher automaticamente as buscas utilizando recursos de inteligência artificial e também prever o que você quer pesquisar com grande precisão.

Outro exemplo interessante é o caso da Netflix que se preocupa bastante com o conteúdo que deve ser sugerido para os seus assinantes. A Netflix sempre manteve o olhar nos algoritmos para gerar conteúdos relevantes, baseados nas preferências de seus usuários e, sobretudo, em ambientes externos, como no caso das redes sociais. Outra métrica usada para direcionar as produções é o estudo do comportamento dos usuários. Ou seja, quantas vezes eles pausam o vídeo, voltam ou mesmo assistem a vários episódios sequencialmente, em um determinado período. E, o quanto este comportamento reflete nas menções nas redes sociais.

O Waze por exemplo, é utilizado por motoristas do mundo inteiro, que se conectam uns aos outros e trabalham juntos para aperfeiçoar sua experiências ao dirigir. Para que o Waze possa fornecer a você com precisão a rota ou mais rápida ou mais curta, de acordo com suas configurações, ele necessita de dados precisos de todos os segmentos e rotas vizinhas. O Waze coleta os dados de cada trecho dirigido com o aplicativo aberto. Na próxima vez que uma via específica for percorrida, o Waze saberá como comparar os dados entre cada rota e saberá sugerir a rota ideal, conforme suas preferências.

Autor: Ramon Barros <contato [@] ramon-barros.com>

Referências:

Livro Inteligência Artificial – Noções Gerais. – 3 imp. / Anita Maria da Rocha Fernandes. – Florianópolis: VisualBooks, 2005.

Livro Redes Neurais: Fundamentos e Aplicações com Programas em C. / Ludwig Jr., O. e Costa, Eduard Montgomery M. Rio de Janeiro: Editora Ciência Moderna Ltda. 2007.

https://www.salesforce.com/br/products/einstein/ai-deep-dive/

https://www.youtube.com/watch?v=kMFY_XOQTDg

https://tecnoblog.net/191786/netflix-algoritmo-recomendacoes/

http://revistagalileu.globo.com/Revista/Common/0,,EMI334328-17773,00-ELES+SABEM+O+QUE+VOCE+QUER+VER.html

https://www.techtudo.com.br/noticias/2017/08/como-a-netflix-usa-algoritmos-para-encontrar-a-sua-nova-serie-perfeita.ghtml

http://www.meioemensagem.com.br/home/midia/2016/08/02/stranger-things-e-o-uso-de-algoritmos-pela-netflix.html

https://www.infoescola.com/sistema-nervoso/neuronios/

http://www.gsigma.ufsc.br/~popov/aulas/rna/neuronio_artificial/index.html

UI Design Patterns

O que é UI Design

O User Interface Design (Design de Interface do Usuário), é aonde ocorre a interação e controle de um dispositivo, software, aplicativos ou sites por parte do usuário. Esta interação pode ocorrer através de botões, menus e demais componentes da interface.

Projetos de UI podem ser utilizados para garantir as necessidades que o usuário irá utilizar, e assim criando uma interface que contenha elementos de fácil utilização e acesso, para que seja alcançado um bom nível de experiencia amigável ao usuário e não cause frustações ao utilizar um sistema.

Atualmente é muito importante entender que User Interface não é apenas como uma aplicação se parece e quais cores foram utilizadas para tal processo, também se baseia como uma aplicação irá funcionar e como a interação do usuário será realizada indo além da aparência. Para que possa ser alcançado devemos utilizar a User Experience (UX Design) que por mais que os nomes sejam parecidos são abordagens bem diferentes, já que UX estará relacionado com a experiencias e os sentimentos do usuário e a UI será a maneira com que este usuário alcançara a experiencia.

Diferença entre UI Design e UX Design

UI é quando falamos de criação de interfaces para que o usuário final possa interagir com a aplicação, utilizando as melhores práticas para que seja criado uma interface de fácil utilização e visualização de todas informações.

UX normalmente confundido com UI por serem apresentados juntamente na interface, mas a verdade, é que UX se encaixa na sensação que um usuário irá ter ao navegar por uma interface. Assim a UX é responsável por criar um sentimento bom ao usuário enquanto os mesmos utilizam a aplicação tornando esta experiencia em algo inesquecível. UX também está relacionada com a forma que as funções principais serão utilizadas pelo usuário, usabilidade criação de novos cadastros, e pesquisas.

 

 

Preocupações com a Usabilidade

É necessário que um usuário consiga identificar elementos de interface e o que os mesmos realizam de uma forma clara. Por isso a criatividade ao compor um elemento é muito importante, mas deve se levar em conta os padrões que os usuários já estão acostumados a utilizar e reconhecer facilmente.

Um exemplo fácil de utilizar e a cor de botões que estamos acostumados a utilizar e ver aplicações. Aonde a maioria utiliza a cor verde para ações positivas como salvar, adicionar, e a cor vermelha para ações de negação com deletar. Se trocar as cores para as ações podem acontecer confusões durantes processos simples deixando o usuário frustrado com a situação.

A utilização de palavras abreviadas ou apenas uma palavra em um botão e a utilização de ícones poderá dar ao usuário uma mensagem mais clara e adequada sobre as funcionalidades de tomar uma ação.

Acessos Facilitados

É muito importante que a interface seja redundante, deixando mais de um caminho possível para que o usuário chegue em seu objetivo ou desfaça alguma ação errada, este papel de guiar de forma fácil o usuário é do profissional de UI Design.

Um exemplo que podemos utilizar e a tela de cadastro que muitos sites utilizam quando um usuário arrasta o mouse pra fora da área de trabalho do browser e a janela modal de fotos do facebook, que podem ser facilmente fechadas utilizando um clique em qualquer parte da tela fora do modal, clique na opção fechar no canto superior e ou apertando o ESC do teclado.

Interação com o usuário

A importância de interação com o usuário é muito importante, a interface deve realizar esta tarefa com muita frequência para que seja mostrado informações sobre ações tomadas e os processos realizados pela aplicação. Exemplos muito simples são as barras de carregamento que podem deixar o usuário esperando o seu carregamento ou finalizar um processo por não ser se o mesmo será carregado.

Prototipagem

A utilização de protótipos, rascunho e wirefrmaes é muito comum para o profissional de UI, para que possa ser desenhado a estrutura inicial do projeto. É a parte essencial, pois através da prototipagem começara a ter uma visão geral do layout e das hierarquias de todo conteúdo da aplicação, a disposição dos elementos da interface e pontos de interação.

 

 

Para trabalhos com HTML, CSS e aplicativos mobile não é aconselhado a criação de interfaces sem que antes o cliente tenha aprovado todo projeto, pois para realizar modificações torna-se muito trabalhoso e demorado.

Referências

Lovi, Rafael. O Que é User Interface (UI)?. Disponível em: < https://www.raffcom.com.br/blog/o-que-e-ui/>. Acesso em  25 abril de 2018.

As Diferenças entre UI Designer e UX Designer. Disponível em: < http://multiad.com.br/design/as-diferencas-entre-ui-designer-e-ux-designer/>. Acesso em 27 abril de 2018.

Rodrigues, Raianne. 5 Dicas: UX e UI design. Disponível em: < https://blog.novatics.com.br/5-dicas-ux-e-ui-design-d787ef46b6b8 >. Acesso em 27 abril de 2018.

Matiola, Willian. O Que é UI Design e UX Design?. Disponível em: < http://designculture.com.br/o-que-e-ui-design-e-ux-design>. Acesso em 28 abril de 2018.

Matiola, Willian. O Que é UI Design e UX Design?. Disponível em: < http://designculture.com.br/o-que-e-ui-design-e-ux-design>. Acesso em 28 abril de 2018.

Análise de dados: como priorizar as informações mais importantes?

Seja pelo escândalo do Facebook e Cambridge Analytica, pelo nosso mapa traçado detalhadamente pelo Google Maps, ou simples sugestões de compras relacionadas em um e-commerce. Nós temos nossos dados coletados e analisados diariamente usando para o bem, e inevitavelmente, para o mal.

Produzimos uma infinidade de dados, diariamente, deixando cliques e rastros de navegação em todo o universo online. Se observados isoladamente, esses dados podem parecer irrelevantes. Mas através de conceitos da Inteligência Artificial como Machine Learning e outros métodos para a análise de dados, eles já se tornaram um divisor de águas para o avanço do conhecimento em todas as áreas de nossa sociedade. Desde a medicina até à música, do Facebook ao mundo real.

BIG TRASH DATA:

Big data é lixo. Sim, é lixo como aquele pedaço de carne sobrado que vai pro lixo pois não sabemos como reutiliza-lo e fazer um delicioso carreteiro, por exemplo.
Sem metáforas, big data nada mais é do que toda a informação que recebemos mas que involuntariamente deixamos passar, pois não temos capacidade de processá-la e armazená-la no nosso cérebro. Mas a diferença, é que no mundo digital, toda essa informação que produzimos, fica armazenado, e se analisada com atenção, pode ser o estopim para uma revolução na inovação mundial. Desde a sugestão de publicações no Facebook até a descoberta de cura para diversas doenças.

ANALISAR. MAS O QUE ANALISAR?

Quem procura, acha. Mas precisamos saber o que procurar.
Na visão de Steven D. Levitt (Freaknomics), “a economia é uma ciência com instrumentos para chegar a respostas, mas sofre uma tremenda escassez de perguntas interessantes”. O grande sucesso para criarmos relevância em qualquer pesquisa é saber o que realmente queremos saber(!). E para saber, precisamos viver. Entender o contexto do que queremos fazer é essencial, precisamos vivenciar o universo que a pesquisa se baseará, entender o mecanismo e refletir, para então, criarmos as perguntas certeiras e respondê-las através de dados.
Economia de tempo nem sempre é gastar menos tempo.

AFINAL, O QUE É ECONOMIA?

Muitas vezes, pensamos em economia e logo nos vem à mente inflação, taxa de juros, cotação do dólar. Mas a verdade é que a economia vai muito além disso. Ela não se baseia apenas em números, mas sim em comportamento. Ela pode responder perguntas como: “o que mata mais, armas ou piscinas?”, “crianças que têm livros em casa têm desempenho melhor que as outras?”. Para isso, precisamos mergulhar no universo de nossas perguntas e conhecer o contexto.

CAUSALIDADE x CORRELAÇÃO:

Este é um ponto crucial na análise de dados. Precisamos tomar cuidado com nossas análises para não confundirmos causalidade com correlação.

Mas afinal, o que é causalidade e correlação? Correlação é a relação ou semelhança entre duas coisas. Apenas isso. Nem toda correlação acarreta em uma causalidade. Sabe por que? A causalidade requer que, por exemplo, a variável X seja causa da variável Y, e a variável Y é consequência da variável X. Ou vice-versa.

Temos o clássico exemplo da correlação de que “no verão, as mortes por afogamento crescem de acordo com a elevação no número de consumo de sorvete”. Quantos pais não se preocuparam e alertavam os filhos para nã tomarem sorvete na beira da piscina? Essa correlação existe, e realmente no verão, o número de mortes por afogamento aumenta e a venda de sorvetes também. Mas não existe causalidade. Uma coisa não causa a outra. No verão, as pessoas vão mais à piscinas e também tomam mais sorvete. Mas o que mata não é o sorvete, é o nado. A causalidade é o aumento da temperatura.

 

Portanto, a análise de dados é um processo tão simples de ser absorvido, porém complexos de se fazer. Não pelo domínio técnico nem nada, mas sim pela imersão no universo a ser analisado, a fim de obtermos as melhores perguntas e utilizar a análise como meio para obtermos as respostas.

Raphael Chieli Capellari.
Links relacionados: Freaknomics – Ed. Campus -12/04/2005

Computação em Nuvem

Com o crescente volume de dados que empresas e demais organizações tem de armazenar e processar, um novo nicho de negócio surgiu para suprir essa demanda, a Computação em Nuvem. Onde seus dados podem ser hospedados em servidores e acessados a qualquer hora e em qualquer local, contanto que haja conexão com a rede. Continue lendo “Computação em Nuvem”

Utilizando a API do Google Maps em Aplicativos Android

Maps

Neste artigo irei explicar como podemos utilizar e algumas funções básicas da API do Google Maps. Irei mostrar como preparar o ambiente para utilização do mesmo, neste caso utilizaremos o Android Studio. Também aprenderemos como conseguir uma chave para utilização da API.

Sem sombra de dúvidas a Google é uma das empresas pioneiras em tecnologia e uma das mais lembradas no assunto. Em 2005 a Google lançou sua primeira versão do que conhecemos hoje como Google Maps, que é considerado a ferramenta de mais utilizada nos dias atuais. E a cada atualização a ferramenta tem se mostrado cada vez mais poderosa para os usuários. Hoje mostrarei os pequenos passos para implementação e uma breve introdução da utilização da sua API para dispositivos Android. Continue lendo “Utilizando a API do Google Maps em Aplicativos Android”

9 Frameworks de Desenvolvimento Multiplataforma Móvel

Capturando a funcionalidade comum a várias aplicações.

A escolha de um framework ou plataforma depende muito de suas habilidades e de seus objetivos com a aplicação.O desenvolvimento multiplataforma tem ganhado muitos adeptos ao longo dos anos. Com isso, o mercado também se expandiu consideravelmente. Logo, novas ferramentas cross-platform foram surgindo no mundo do desenvolvimento mobile. Continue lendo “9 Frameworks de Desenvolvimento Multiplataforma Móvel”

Uma introdução ao Docker e Kubernetes

Tendo em mente o gerenciamento e escalabilidade de serviços na nuvem e em servidores, as ferramentas Docker e Kubernetes formam uma dupla inseparável e indispensável. Com a possibilidade da execução de instancias e serviços em contêineres, Docker dispõe um sistema relativamente simples de compartimentação de recursos e o Kubernetes, de gerenciamento e escalonamento dos serviços de conteinerização. Continue lendo “Uma introdução ao Docker e Kubernetes”