Enfrentando o monstro de frente

Todo programador sabe que interface é uma parte vital de qualquer projeto, para qualquer público. Ela é, muitas vezes, a diferença entre um produto de sucesso e outro fracassado.

Na verdade, uma boa interface (user interface, UI, como chamam) só surge quando se preocupa em como ela será usada e como irá se comunicar com o usuário: gerar a experiência do usuário (user experience, UX, pros técnicos). Em se tratando de experiência do usuário, três empresas tiram isso de letra:

  • A Mozilla sempre preza pela personalização, você sentir que aquele programa foi feito para você. Isso cria uma aproximação do usuário com o software (e com a marca posteriormente), faz ele se sentir em casa e confortável. No Firefox, por exemplo, toda média/grande mudança no layout vem com uma opção de desativa-la (abas no topo, sites recentes na nova aba).
  • A Google sempre preza pelo não obstrução, seguindo seu slogan “não seja mau” (“don‘t be evil no original) nos seus produtos (GMail, GDocs, etc): o programa não gera alertas desnecessários ou alarmantes, ele sempre oferece um desfazer. Se eu excluir meu e-mail, ele simplesmente é excluído e uma pequena mensagem aparece no topo com a opção de desfazer. Por outro lado, a Google quase sempre impõe seus novos layouts e não permite tanta personalização.
  • Apple, pela intuitividade. Sempre buscam usar botões claros e representados por ícones autoexplicativos, além de sempre relacionar o tecnológico virtual com o simples e real: bloco de notas com fundo de cadernos, visualização de álbuns no iTunes como se fosse um disco, etc.

O ponto é que nunca pensei nesses pontos nos meus projetos, mas vendo agora, foi um grande erro. A central de músicas (player de música), por exemplo, tem uma abordagem que eu não vi ainda em nenhum outro player (analisa como o usuário ouve as músicas para determinar quais ele mais gosta e então reagir a isso, tocando-as mais vezes). Mas a interface mata! Não só questão de ser bonito. Não é intuitivo, não cria uma relação fluída com o usuário.

Então juntei coragem, tempo e uma ideia de abril de 2012: fazer um editor de texto para a HP50g (calculadora gráfica da HP). Fiz alguns experimentos com algoritmos e depois pensei em quem irá usar o programa, pra que e como otimizar sua experiência.
Cheguei num resultado impressionante pra mim, que nunca gostei muito da parte de interface (como a maioria dos programadores: não sou designer!). Pode não ser impressionante comparado com aplicações do mercado, mas pra mim foi uma grande vitória 🙂

Interface atual do meu projeto recente (ainda não lançado)

Interface atual do meu projeto recente (ainda não lançado)

Esse projeto ainda não está pronto e a ideia aqui não é falar dele, deixo isso pra depois. Mas o código atual já está disponível no GitHub

Tags: , ,
Postado em HP por Guilherme Souza. Sem comentários

Bibliotecas atualizadas

Há vários meses eu estava experimentando com novas versões de bibliotecas para Ajax e banco de dados. Hoje decidi publicar as novas versões de cada uma.

Elas servem para auxiliar com tarefas extremamente comuns no desenvolvimento Web, principalmente no uso de JavaScript (cliente)+PHP (servidor)+MySql (banco de dados). A primeira (AJAX) ajuda na comunicação JavaScript <-> PHP, a segunda (Query) PHP <-> MySql

Aproveitei para documenta-las melhor e coloca-las na recém criada conta no GitHub 🙂

Agora, na verdade, tenho duas grandes APIs ainda não publicadas:

Uma delas é sobre WebSocket, que já está funcionando razoavelmente (na verdade o que falta é colocar um exemplo funcionando no ar). Ela serve para conectar clientes e servidores de uma forma mais estável e leve do que a que eu implementei antes com a API de Conexão

A outra foi a que eu postei a estrutura do banco de dados um tempo atrás. Só adiantando o nome: névoa, não quero falar mais do que isso por enquanto 😛

Tags: , , ,
Postado em API Névoa por Guilherme Souza. Sem comentários

Grandes novidades no Bandeco

Desde o dia 14 (4 dias atrás) estou trabalhando na nova versão do projeto bandeco. O código fonte e todo o histórico de desenvolvimento pode ser encontrado no GitHub (ainda estou me acostumando a trabalhar com ele)

Pra quem não conhece o projeto, ele serve para ajudar os estudantes da Unicamp a ver o cardápio do bandejão (ou bandeco, bandex, etc). Ele tem todo o histórico desde o meio de 2011 (260 pratos diferentes!) e permite você votar nas refeições para compôr a nota daquele prato.

Acesse o WebApp do bandeco (abre em qualquer navegador, inclusive de celulares)

A novidades principais são:

  • Você pode configurar para ser avisado por e-mail do cardápio da semana ou quando o cardápio mudar (porque muitas vezes a feijoada vira salsicha de última hora). Configure agora mesmo isso
  • Funciona offline! Quando conectado, baixa o cardápio da semana e permite visualizar sem conexão
  • Melhor suporte a navegadores de celular (interface e código)

Essa é uma primeira versão, ainda em fase de testes. Diga o que achou, ajuda muito!

(Estou planejando um aplicativo para celular, vamos ver…)

Outras novidades menores incluem ver ranking completo, ir para uma data específica, copiar URL direta, avisos pela API, documentação mais completa da API.

Tags: , ,
Postado em API Bandeco por Guilherme Souza. Sem comentários

Usando o GitHub agora

Boas novas!

A partir de agora, vou colocar meus projetos no GitHub, local onde é mais fácil acessar o código fonte dos projetos e também acompanhar o desenvolvimento deles. Além disso, isso irá facilitar caso alguém queira colaborar com o desenvolvimento de algum deles.

Por hora, estou trabalhando numa grande atualização para a API do bandejão/bandeco da Unicamp. Coloco mais detalhes em breve, mas no GitHub tem o código já atualizado. Nova estrutura do banco de dados:

Além desse projeto, vou mover vários outros para lá também, conforme for me organizando melhor.

Tags: ,
Postado em API Bandeco por Guilherme Souza. Sem comentários

Só digo isso:

Detalhes em breve…

Tags: , ,
Postado em API Névoa por Guilherme Souza. Sem comentários

Bandeco

Saiu uma pequena atualização da API do Bandeco e do Web App do Bandeco. A API agora conta suporte a semanas, facilitando assim a leitura e cache do cardápio da semana toda. O Web App agora permite ver o cardápio da semana toda e também o 50 primeiros pratos no ranking. Essas melhorias foram feitas a partir de feedbacks dos usuários.

Já está em desenvolvimento um aplicativo para Android, usando a mesma central de dados que o Web App atual.

Tags: , ,
Postado em API Bandeco por Guilherme Souza. 2 comentários

API Bandex e Web App Bandex

Essa é uma ideia que tenho anotada a mais de um ano:

Logo que entrei na Unicamp, estava bem perdido (como todo bixo) e não tinha ideia do que comer e o que evitar no bandejão (ou bandeco, ou bandex, ou RA, ou qualquer outra coisa). Então fiz um pequeno programa que pega o cardápio, guarda o histórico e me permite votar nos pratos.

Com isso funcionando a mais de um ano somente pra mim, resolvi abrir para todos de duas formas, para dois públicos:

  • Web App: voltado para o público geral (da comunidade Unicamp, claro), um aplicativo simples para Web (com um pequeno suporte offline) com algumas interações básicas;
  • API baseada em requisições HTTP: voltado para desenvolvedores, possui uma estrutura mais completa e pode ser utilizado em qualquer equipamento com acesso à Internet, explorando todos os dados reunidos por todas as fontes. Até agora, só existem alguns aplicativos para Android relacionados ao bandejão e basicamente só mostram o cardápio da semana.

O sistema não só guarda todo o histórico do bandeco como também permite você dar seu voto para uma refeição. Todos os dados são cruzados para calcular a nota de cada prato. Também é possível obter somente as notas dadas por você.

Tudo, como sempre, em código aberto (somente os dados coletados não serão liberados integralmente).

Bon appetit!

Tags: , ,
Postado em API Bandeco por Guilherme Souza. Sem comentários

Lista TODO

Aplicativos estão por toda a parte: iOS, Android, Firefox, Chrome, Windows 8, são só alguns exemplos

A grande novidade agora são os WebApps, aplicativos feitos para Web e não para um sistema específico, ou seja, qualquer aparelho que acesse a Internet poderá rodar esses aplicativos perfeitamente. Isso é magnífico! Bom para desenvolvedores, que não precisam escrever a mesma lógica várias vezes em linguagens diferentes. Bom para usuários, que poderão acessar seus aplicativos favoritos de qualquer aparelho conectado à rede.

Resolvi dar uma espiada nesse novo universo e desenvolvi meu primeiro WebApp, algo simples e útil: um bloco de notas, que pode ser usado como Lista TODO (lista onde se anota o que se tem que fazer). Ele é organizado por abas e toda a informação é salva no seu próprio computador, ou seja, não há invasão de privacidade (como sempre aqui no meu site) ou posibilidade de outro dispositivo acessar diretamente essas informações.

Clique aqui para acessar o aplicativo

O Firefox é o navegador que mais dá suporte a essas novas tecnologias, mas tudo funciona no Chrome também. (Sinceramente, não tive paciência de abrir o Internet Explorer, não só pela demora dele em si, mas também porque retirei todos os atalhos que levavam a ele e teria de buscar na pasta de programas). Percebi também que o Firefox é o que mais respeita sua privacidade, perguntando antes se deseja salvar os dados do aplicativo no seu computador.

E como WebApp, esse funciona mesmo quando não há conexão nenhuma com a Internet (sim, você pode usar seu browser mesmo quando não há conexão, um novo mundo!). Sugiro você afixar essa aba como aplicativo 🙂

Tags: ,
Postado em Lista TODO por Guilherme Souza. Sem comentários

Listas em C

Uma passada rápida dessa vez só para disponibilizar uma biblioteca para trabalhar com listas em C. Ela pode acessada aqui

Quanto a War Online, ele está infinitamente atrasado, mas não está abandonado, acreditem.

Tags:
Postado em C e C++ por Guilherme Souza. 1 comentário

centraldemusicasapiswaronline

Três atualizações juntas hoje:

Central de músicas

Nova versão (3.7.2) com várias correções de erros, basicamente

/musicas

APIs

Três novidades nesse projeto, que vai para a versão 1.2

  • API “json_query” descontinuada
  • Nova API “query” disponível. Ela se trata de uma camada de abstração para executar consultas em bancos de dados. Já comecei a usá-la no War Online
  • Nova versão (2.1) da API “conexão” (a base do War Online), mais robusta e fácil de usar

/apis

War Online

Nova etapa entregue: denúncias. Essa parte de trata de um sistema em que a comunidade se auto-regula, poupando o tempo dos administradores (algo como acontece no Youtube, por exemplo). O sistema é parecido com o que é usado pelo Yahoo! Respostas

O andamento do projeto pode ser acompanhado por essa planilha no Google Docs (mais informações liberadas) e o código fonte até o momento pode ser baixado aqui.

/war_online

Tags: , , ,
Postado em API Central de Músicas War Online por Guilherme Souza. 3 comentários