terça-feira, 7 de julho de 2009

Alice - Ambiente didático de programação

Em conjunto, aqui mostramos a nossa análise do ambiente Alice.

O sistema Alice é um ambiente didático 3D para o aprendizado de programação, desenvolvido pela Carnegie Mellon utilizando-se Java. O Alice propõe uma nova forma de se aprender programação: em vez de se programar em telas em branco, digitando-se linhas e mais linhas de código e em troca receber mensagens de erro nada animadoras como "Segmentation Fault", aprende-se a programar com objetos comuns, em situações cotidianas. Basta inserir as ações desejadas e clicar em play para rodar um filme que exibe a rotina criada pelo usuário.

Figura 1 - Tela de edição do Alice

Um breve diário da nossa experiência: após o download no computador (aliás, nem houve instalação, bastou baixar e rodar o aplicativo, o que é muito prático), ao abrir o programa temos um tutorial bem passo-a-passo para orientar o novo usuário, mostrando a divisão das telas e um exemplo de execução. O vocabulário é um pouquinho complicado, mas para um nativo de país de língua inglesa a linguagem parece aceitável, mesmo se for uma criança. Ao se cometer um erro no tutorial, o sistema pede para voltarmos um passo, impedindo o usuário de se dispersar dos ensinamentos que o tutorial oferece.

Ao fim do primeiro tutorial, poderia ter sido avisado para se clicar no botão "Exit Tutorial" ou em "Next Chapter", que ficaram meio escondidos, podendo passar despercebido. Seria melhor que elas ficassem próximas às notas de leitura. A organização sequencial de métodos é bem intuitiva, bastando clicar e arrastar para se alterar a ordem dos métodos. Porém, algumas funcionalidades mais avançadas, como o "Do Together", poderiam ter sido melhor explicadas. Os outros tutoriais aprofundam as possibilidades do sistema. Aprende-se a criar novos métodos para objetos, novos eventos e novos ambientes, dando cada vez mais liberdade para o usuário criar seu mundo.

Nos tutoriais, tudo correu bem, mas ao criarmos nosso próprio mundo, percebemos que alguns detalhes poderiam ser melhorados:o sistema não é tão intuitivo, ferindo o paradigma de reconhecimento em vez de relembrança: depende-se muito do aprendizado no tutorial, é um pouco difícil aprender funcionalidades novas. Os botões de Undo e o Redo não funcionaram perfeitamente, pois ocorrem várias falhas de renderização ao se editar muito os objetos. Houve também uma certa dificuldade em manter os gráficos "realistas", como os personagens sempre em cima do chão em vez de flutuando, por exemplo. Ao criarmos um novo método, nós não podemos digitá-lo diretamente, apenas arrastar blocos como if/else, for e while. Em boa parte dos casos, isso é bom pois torna erros de sintaxe impossíveis. Porém, isso tira flexibilidade que usuários mais experientes poderiam ter.

Figura 2 - Rodando a rotina em filme

Apesar desses detalhes, em geral o sistema atende bem ao que se propõe: facilitar o aprendizado de programação permitindo ao usuário manipular sua rotina, seja através de eventos como clique ou teclado, seja através da criação de rotinas. Aliás, essa ideia de substituir o uso de código por funcionalidades como clicar e arrastar nos lembra muito o que fazíamos em VB e Delphi, com a diferença que aqui essa opção é obrigatória, não há como programar diretamente.

Existe uma demanda crescente por mais programadores, resultado da democratização dos computadores e do aumento do uso de serviços web. Infelizmente, o Brasil está muito atrás de países semelhantes, como Índia e China, formando pouquíssima mão-de-obra qualificada para programação. Métodos ou ferramentas de ensino que facilitem isso são muito bem-vindos, e o Alice é um ótimo exemplo. Inclusive, ele é voltado para o paradigma da moda, Orientação a Objetos, já que cada item do ambiente possui seus métodos e variáveis, e não há interferência direta (apenas através de chamada de métodos) entre cada objeto do ambiente.

Porém, em parte achamos que o sistema precisa ligar melhor o usuário ao mundo da programação: o tutorial não aborda o uso de estruturas lógicas como if/else, for, e utilização de vetores. Sem essa abordagem, acreditamos que ainda haverá um choque muito grande quando o novo programador for utilizar linguagens de programação reais. É importante incentivar o novo programador a dominar essas estruturas, pois ele com certeza precisará delas. Poderia também haver um modo de programação direta, afinal ter erros de sintaxe também faz parte do aprendizado.

domingo, 5 de julho de 2009

Chrome - Análise de Usabilidade

Colocando mais lenha na fogueira da guerra entre navegadores, o Google lançou recentemente seu novo navegador, o Chrome, para concorrer com o Internet Explorer, da Microsoft, e o Mozilla Firefox, uma versão de código aberto, da Mozilla Foundation.

O texto a seguir mostra várias novas características do Chrome. Algumas delas são técnicas, como o fato do Chrome rodar Javascript com grande desempenho, ou criar um processo para cada nova aba, tornando a aplicação mais segura a falhas.

Porém, o foco do texto com certeza são as melhorias de usabilidade do Chrome. Uma delas é a primeira página conter miniaturas dos sites mais visitados, bastando clicar nelas para abrir a página, o que é muito mais prático que digitar todo o endereço no navegador. Outra praticidade é usar o mesmo espaço usado para digitar os endereços também ser usado para pesquisar termos em sites de busca, uma novidade. Obviamente, o Google é o buscador padrão, mas isso pode ser alterado.

Outra pequena novidade é, ao apertarmos Ctrl em um link, abrirmos esse link em uma nova aba. Isso, os outros browsers também faziam. Mas o Chrome foi o primeiro a colocar a nova aba ao lado da atual, em vez de inserí-la ao final da lista de abas. Isso faz muito sentido, pois assuntos semelhantes ficam agrupados, permitindo uma melhor organização das abas.

Para finalizar, temos outras duas novidades: o modo de navegação anônimo, que permite navegação sem salvar cookies ou endereços no navegador. E a busca interna (Ctrl + F), que é muito mais agradável que no Internet Explorer: em vez de abrir uma janela no meio do navegador, cortando completamente a interação com o site, o Chrome abre uma pequena aba em cima, onde indica os resultados da busca do termo na página, e indica na barra de rolagem suas ocorrências. Conveniente, não?

Confira o texto na íntegra aqui: http://www.interney.net/blogs/alexprimo/2008/09/16/ana-225-lise-da-interface-do-google-chro/

sábado, 4 de julho de 2009

NeuroFocus - A Ciência da Compra

Nesta matéria, o Discovery Channel exibe a NeuroFocus, uma empresa de Neuromarketing na Califórnia, que possui atualmente um grande centro de pesquisas para mapear como o cérebro humano reage às diferentes formas de propaganda.

Segundo o CEO da NeuroFocus, Dr.A.K.Pradeep, o impacto da propaganda pode ser medido em três fatores: atenção (o quanto o consumidor reparou naquele produto?), emoção (como ele reagiu a essa propaganda?) e memória (ele se lembrará de comprar o produto após a propaganda?).

Através de pesquisas anteriores feitas sobre transtornos cerebrais, como Transtorno de Falta de Atenção e Mal de Alzheimer, a neurologia se desenvolveu bastante, aprendendo a mapear com cada vez mais precisão quais zonas cerebrais são responsáveis por quais características humanas, como a memória, a tomada de decisão, o sentimento de bem-estar, e a concentração.

Confira o vídeo logo abaixo:

sexta-feira, 3 de julho de 2009

Prototipagem de Software do ponto de vista do Design de Interfaces

A prototipagem de software é um método que pode ser utilizado em várias etapas da produção de uma aplicação. A idéia é criar uma espécie de rascunho do sistema, o que pode ser feito usando desde ferramentas simples como papel e lápis, até os próprios construtores de interfaces que seram usados no projeto. Para a Engenharia de Software a criação de protótipos traz diversas vantagens, como uma melhor definição dos requisitos e uma diminuição na quantidade de retrabalho, já que é possível prever e corrigir certas inconsistências ainda na fase inicial.

No lugar em que eu faço estágio, usamos protótipos de papel no início de um projeto para delimitar melhor o trabalho a ser realizado e até ajudar o cliente a descobrir o que ele precisa. Um problema que costumava ocorrer com bastante frequencia, era a requisição de diversas alterações na interface depois do sistema estar pronto. Além de contraproducente, o retrabalho era desestimulante para a equipe de desenvolvimento. Dessa forma, identificamos a necessidade de aproximar mais o cliente do sistema, antes mesmo da entrega final.

Os protótipos de papel foram escolhidos pela facilidade de criação, baixo custo e versatilidade. É possível visualizar rapidamente várias alterantivas para uma interface, a interação entre os componentes e levantar questões sobre a disposição das informações na tela. Depois, cada uma das telas criadas serve como base para a especificação das funcionalidades. Com o progresso do desenvolvimento os protótipos de papel são gradualmente substituídos por protótipos mais fiéis, feitos no computador.

Um ponto que, por causa do custo, pode ser considerado uma desvantagem, mas que é um dos diferenciais do método que adotamos, é que o cliente deve acompanhar de perto todas as fases da produção do sistema. Assim, conseguimos obter uma interface muito mais próxima do esperado pelo usuário final.

Bom Design, Boas Vendas

Já se sabe que quanto melhor a usabilidade de um sistema de vendas Web, maior será o lucro. Grandes empresas como IBM viram seu faturamento aumentar bastante em função de uma melhoria na usabilidade.
A facilidade de encontrar o que se deseja aliada a velocidade da compra, são fatores de peso nas vendas. Nesse contexo, Jakob Nielsen define 10 prioridades para um design de alta lucratividade.

Confira no link:
http://www.useit.com/alertbox/high-roi.html

quinta-feira, 2 de julho de 2009

Lembretes escritos no ar?

Quem nunca precisou anotar alguma informação, seja telefone ou endereço de uma pessoa ou loja, ou precisava marcar um lembrete para um compromisso importante e ficou em busca de uma caneta e um papel ou em alguns casos teve que confiar na memória e acabou esquecendo?!
Uma solução tecnológica para isso seria utilizar um celular com acelerômetro (componente responasável do celular de verificar os movimentos feitos pelo usuário, como exemplo virar a tela de acordo com a posição do celular) e escrever no ar. Depois disso ele envia este lembrete para o e-mail desejado ou para o Twitter. Ainda possui restrições, como ter que escrever mensagens curtas (são lembretes, deveriam ser textos curtos mesmo!) ou diagramas simples, assim como ter q escrever com letra grandes e pausadamente. O que esperam ser corrigidos na sua versão 2.0.

Abaixo o link de onde o texto foi retirado:

Tradução de páginas de internet para braile

Procurando assuntos sobre interfaces, achei este uma matéria sobre este projeto em desenvolvimento no Brasil, que traduz o texto das páginas de internet para braille.
Consiste em um dispositivo eletromecânico, que funciona em tempo real, que seria capaz de exibir todos os diferentes sinais do alfabeto braille em uma matriz de pontos que se elevam e abaixam em uma superfície de referência. Agrupando vários dispositivos em um teclado de leitura, que recebe as informações a serem exibidas em braille de um processador que executa essa tradução, seria criado um dispositivo para a leitura do deficiente visual.
A matéria foi retirada do link abaixo:

http://www.inovacaotecnologica.com.br/noticias/noticia.php?artigo=equipamento-desenvolvido-brasil-traduz-paginas-internet-braille&id=010150090622

O link de origem da matéria:

http://www.agencia.fapesp.br/materia/10644/especiais/internet-em-braille.htm

E um vídeo que ilustra a idéia deste dispositivo:

"If It Feels Good Do It" : Using Neuromarketing to Go Beyond

Enteder o funcionamento do cerebro é essencial para criação de boas propagandas. Porém, podemos usar esse conhecimento para criar também interfaces ou jogos de melhor qualidade. Nessa palestra do Google Tech Talks, André Marquis irá mostrar o poder das emoções no Universo da Propaganda. Elas são a origem de tudo, o cerebro obece ao modelo "feel -> do -> think". Por isso, um anúncio ou uma interface deve explorá-las da melhor maneira possível para que resultados desejados sejam atingidos.

segunda-feira, 29 de junho de 2009

Going Parallel

A lei de Moore não é mais válida. Aquele crescimento exponencial em desempenho dos processadores cessou. A tecnologia de single core parece estar bem próxima de seu limite. Neste contexto, empresas como Intel e AMD resolveram mudar o paradigma. Já que um aumento de frequência não é mais "possível", colocar vários núcleos em um único chip tem sido a saída. Entretanto, grande parte dos aplicativos atuais não tiram proveito desse poder de processamento paralelo. Nem mesmo os programadores estão bem preparados para paralelizar, seja pela quantidade extra de código ou por não conhecerem formas abstrastas de pensar. Com isso o velho conceito de Map-Reduce (Mapear e Reduzir) de linguagens como LISP, vem ganhando bastante espaço. Além de oferecer uma abstração extremamente simples ("interface mental" simples), as interfaces de código simplificam muito o desenvolvimento de software paralelos.

Map-Reduce está sendo bastante utilizado nos "Clusters" do Google.

Para um introdução, visite o link:
http://labs.google.com/papers/mapreduce-osdi04-slides/index.html

sábado, 27 de junho de 2009

Planejando o horário do proximo semestre?

Planejando o horário do próximo semestre?
Conheça o GDE, um excelente sistema web que gerência sua árvore de disciplinas, ajuda na construção da grade, disponibiliza de forma concisa quase todo conteúdo público da DAC e além disso mostra o cardápio do bandejão. Seu público alvo são os alunos da Unicamp. Se você é um deles, não perca tempo, cadastre-se no endereço: GDE (http://gde.guaycuru.net/visoes/VisaoLogin.php ).

Todo semestre era um fardo montar a nova grade. Apesar das faculdades e institutos normalmente disponibilizarem sua sugestão de disciplinas e turmas, quando esta não se adequava aos interesses do aluno ou não era compatível com seu progresso, milheres de “clicks” eram dados no site da DAC. Montar uma grade em que os horários das disciplinas não são conflitantes, podia ser bastante tedioso.

Nesse contexto, o GDE se mostrou bastante útil e sua aceitação entre os alunos é espantosa. Porém, nem tudo são flores. Farei uma breve análise considerando pontos bem importantes para uma navegação de sucesso.

1.Poder ser facilmente aprendida: Falho
A página inicial do sistema não provê nenhuma informação a respeito de suas funcionalidades. Apenas por outras pessoas é possível saber do que se trata. Observe a tela inicial.



Depois de logado, o usuário não sabe muito bem o que fazer. Se não conhecia as funcionalidade do sistema, provavelmente terá que recorrer a opção de Ajuda do menu superior. Seria desejável uma tela inicial mais intuitiva. Porém, sabendo o que o sistema consegue fazer, fica bem simples explorar seus recursos.

Mesmo com esses contratempos, esse quesito foi atendido de maneira satisfatória.


2.Ser consistente: OK

A consistência é muito boa, o menu principal está sempre presente.

3.Prover feedback: OK

Todas as ações têm um feedback. Desde o login ao logout. O usuário sabe de maneira clara o que se passa com o sistema.



4.Aparecer dentro do contexto: Falho
Muitas vezes o sistema fica sem saída, principalmente depois das buscas. Forçando o usuário a voltar pelo browser.



Não há nenhuma indicação de navegação, nem botões de “back to” ou “go to”.
Acomodar a bagunça é uma arte (Samuel Beckett). Por isso considerar a maneira como o projetista considerou os relacionamentos entre os elementos requer um pouco de tolerância, porque além de ser uma tarefa difícil é ainda bem subjetiva.
Ao se explorar a interface pode-se constatar apenas uma inconsistência. Dentro da opção “Minhas Informações” há a funcionalidade “Convidar um Amigo”, o que não é intuitivo.


5.Oferecer alternativas: Falho
Não trata isso.

6.Economizar ação e tempo: Falho
Para remover uma disciplina da árvore é necessário “clicar” com o botão direito e escolher a opção de excluir. Sendo assim, para um aluno que já cursou várias disciplinas, ele terá que clicar inúmeras vezes para atualizar sua matérias. Perde-se bastante tempo.

Verificar ortografia

7.Prover mensagens visuais claras: Falho
As cores das disciplinas na árvore estão muito valorizadas, perdendo-se a noção das dependências entre elas.

Hierarquia visual falha. Na página inicial funcionalidades como funções de árvore e planejamento, que são mais importantes, estão menores que o cardápio do bandejão.


8.Usar rótulos claros e compreensíveis: OK

Em sua maioria, os rótulos são claros.

9.Ser apropriada para os propósitos do site: Falho

Estatísticas na página inicial estão bem fora de contexto.



10.Atender a comportamentos e objetivos do usuário: OK

Nesse quesito, o sistema é perfeito. Normalmente os usuários se até se surpreendem com suas funcionalidades.

Por serem pequenas, as falhas não comprometem uma usabilidade de sucesso. Suas funcionalidades são extremamente poderoas e em pouco tempo se tornará amplamente difundida.

sexta-feira, 26 de junho de 2009

It's all about Life Experience

O Projeto Natal é uma revolucionária maneira de interagir com o vídeo-game. Não é mais necessário um controle. Em um jogo de luta, você dá um soco, um chute e todos os seus movimentos são transportados para dentro do televisor.


Esse é projeto que a Microsoft está desenvolvendo para o console Xbox 360. O vídeo abaixo mostra o que está sendo feito, e é realmente impressionante.



O slogan deles é:

"The only experience you need is life experience"

A palavra chave aqui é “Life Experience”. A Computação e toda a tecnologia existente tem o papel de melhorar nossa vida, tornando cada evento inesquecível. Não se trata apenas de desenvolver equipamentos bonitos e cada vez mais sofisticados, mas sim tornar tudo mais interessante e divertido.

Considere por exemplo a tarefa simples e cotidiana de tomar banho.


Aposto que você nunca pensou que isso poderia ser feito de maneira diferente. Você já viu esse chuveiro?


Agora, coloque um som com suas músicas favoritas e a experiência de tomar banho poderá ser elevada à um outro patamar. A partir desse momento será bem mais divertido tomar banho!


Porém, a questão não se resume a ter ou não dinheiro para comprar equipamentos modernos.


Tem mais a ver com vivencionar o agora, sem ficar pensando no passado ou imaginando algo no futuro. O segredo é o que você sente quando faz determinada atividade. Por exemplo, quais seriam boas propagandas de automóveis?


A resposta é óbvia e imediata. Mas, o modelo do carro mostrado faz pouca diferença. Na primeira figura vemos apenas um pneu, mas a cena é bem mais interessante do que um automóvel preso em um engarrafamento. Nesse caso, o importante é a sensação e o prazer de dirigir.

Donald Norman, autor do livro “Design of everyday things”, em seu vídeo “The three ways that good design makes you happy”, expressa de maneira bem clara essa idéia.



O pensamento comum, usado no marketing, é mostrar todos os recursos de determinada aplicação. O grande problema é que não é dada importância à experiência do usuário. Para um usuário, a interface é o produto, e não os recursos, e a experiência é o mais importante.

Uma interface ideal é aquela em que o usuário age sem pensar e o processo flui naturalmente. A melhor interface seria não ter uma interface ou mesmo uma interface invisível, como a do Project Natal.

Essa idéia leva a pensar sobre todos aqueles sites animados feitos em flash, que em vez de facilitar o uso, fazem com que a navegação seja comprometida.

Um exemplo de simplicidade é o buscador Google, em que uma simples caixa de texto encapsula inúmeros recursos.


Tanto usuários iniciantes como avançados usam a mesma interface, e existe uma curva linear de aprendizado para pesquisar de maneiras mais avançadas, o que é bem melhor do que usar diferentes interfaces para diferentes classes de usuários.

A interatividade é inversamente proporcional ao conteúdo, e quanto menor o conteúdo, menor o número de usuários. Assim, deixar um site “bonito” não tem relação alguma com deixá-lo acessível.

Outra questão interessante são os cliques. Em vez de clicar para obter certa informação, é melhor recebê-las diretamente. Um exemplo é um site que mostre uma notícia que contenha várias páginas. Na maioria dos casos, os visitantes que acessam o site apenas lêem apenas a primeira página por ter que clicar em uma setinha ou um número para passar para a página seguinte. Isso quebra o processo natural da leitura e faz o usuário pensar a respeito dessa atividade e decidir parar de ler, por mais interessante que seja a notícia.


Assim, tenha em mente que o sucesso das suas interfaces e de seus produtos tem uma enorme relação com a facilidade de uso e também do prazer de desfrutar dos recursos disponíveis.

quarta-feira, 24 de junho de 2009

Evolução das Interfaces

Uma boa interface é extremamente importante. Observe o vídeo abaixo, que mostra a evolução de 3 interfaces diferentes de um abridor de lata.

Note como uma melhoria na interface facilita muito a vida de um usuário. A interface deve fornecer meios para que um indivíduo realize determinada tarefa. Veja que nem todas as interfaces conseguem realizar isso de maneira adequada.

sexta-feira, 5 de junho de 2009

Web 5.0

Imagine um mundo onde tudo está indexado na Web, desde seus arquivos no computador aos seus pares de meias espalhadas por toda a sua casa. Bem vindo ao mundo da Web 5.0, onde tudo é possível.

Clique na historinha para ampliá-la ou baixe pelo link a seguir a versão musical em tela cheia.