quarta-feira, 1 de abril de 2009

Pequeno Review: Design Emocional


Estou lendo vários livros que estavam enfileirados na minha lista. Dentre eles estão dois livros que trata de alguns termos que a maioria dos desenvolvedores e arquitetos de software só sabem que existe por causa da reclamação que fazem, os usuários. Os livros são Design Emocional e Abou Face 3.

Acabei semana passada de ler o Design Emocional e posso dizer que é um livro muito bom. No final o autor começa a falar um pouco sobre robotica e foge da realidade da maioria de nos, mas é muito interessante.

Resumindo o livro, o autor fala de três níveis de percepção emocional das coisas e como ela interferem na usabilidade e "desejabilidade" do software. Os níveis são o viceral, que trata das coisas que gostamos a primeira vista, o comportamental, que fala sobre como a usuabilidade interfere na iteração do software, e o reflexivo, que trata coisas como conhecimento passado e como ele afeta nas coisas do hoje.

Se você quer entender o usuário e como melhorar sua iteração para conseguir que o seu produto se encaixe melhor no seguimento que atua você deve ler esse livro. Eu já estou colocando em prática algumas coisas aprendidas nesse livro e é interessante ver a cara do seu usuário, um verdadeiro 8-).




terça-feira, 30 de setembro de 2008

Sun Tech Days

Estive lá, e apesar de não ter participado em nenhuma sessão anterior, achai um pouco fraco. Não que os palestrantes não tenham potencial, mas perece que a coisa foi feita um pouco na correria.

Do mas assisti aos Key Notes do Jim Parkinson e do Bob Porras (QUE NOME) e deu para perceber algumas diferenças, os dois são Vice Presidentes da Sun e são programadores, pelo menos pelo que eles disseram, e são muito empolgados sobre tecnologia.

As demais sessões foram uma repassagem dos tutoriais e materiais que estão disponíveis na web e acabaram não agregando muito. Acredito que para os que não ficam googlando por ai deve ter havido alguma novidade.

A sessão mais interessante foi a "Plataforma Java O que há de novo?". Foi bom ouvir da Sun o que eles estão pensando em fazer com a linguagem. Algumas coisas, particularmente eu já sabia, mas outas como JAM (JavA Module) tenho que repensar mais um pouco.

terça-feira, 29 de julho de 2008

Mercurial



O mercurial é realmente ótimo. Como desenvolvemos para windows, estamos usando o TortoiseHG para como interface do Mercurial. Segue um screenshot de uma das telas do TortoiseHG.

Explicando melhor, cada bolinha é um commit. Todas as sequencias são locais, as uniões entre os caminhos marcam os pontos em que os fontes foram unidos e equalizados, apontando quem fez as uniões e quais foram os arquivos unidos. Uma coisa muito interessante é a representação do ponto em comum. No exemplo da imagem, houve um ponto em comun onde duas pessoas começaram desenvolvimentos diferentes e como tudo foi unido um pouco mas adiante.

Não consigo ver uma maneira mais fácil de rastrear as mudançãs que essa. Depois de alguns anos trabalhando e administrando repositórios CVSs e apanhar de suas limitações e dificuldades de traking de informações, branching work e etc, acho que estou usando uma das melhores ferramentas para controle de versão, o Mercurial (HG).

terça-feira, 22 de julho de 2008

Sistema de Controle de Versão (Mercurial)


Todos já ouviram falar do CVS, sistema de controle de versão. Tenho tido alguns problemas com ele ultimamente em um projeto com vários desenvolvedores trabalhando pararelo. O processo de merge e tracking das alterações é um bocado complicado. Tentando acabar com esses problemas fiz um estudo com algumas opções e no final das contas estamos usando o Mercurial.

Olhamos o GIT, Mercurial(HG) e Subversion. O git é ótimo mas o modelo que é usado para armazenar o histórico pode corromper e precisa ser reindexado periodicamente. O subversion é muito bom, mas ainda não chega aos pés do tracking 
de alterações suportadas pelo GIT e o Mercurial.

Iniciamos a utilização em um projeto que já estava no CVS, conseguimos importar o histórico para o Mercurial sem muito problemas, precisamos de um linux para isso, uma vez que precisamos do PCVS. O Mercurial só aceita conexão segura para commit dos dados no repositório central e traz o conceito de Sistema de Controle de Versão Distribuído, que é outro assunto. Basicamente o commit é feito local e unido com os outros commits através de siscronismo, um pouco complicado no início, mas depois que pega o jeito fica fácil.

Há distribuições para quase todas as plataformas, no ambiente que montamos usamos o TortoiseHG, bem windows like. 

Quem estiver pensando em trocar seu atual sistema de controle de versão vale a pena dar uma olhada. Qualquer dúvida, estamos aqui.

terça-feira, 24 de junho de 2008

XCode, OpenGL e OpenCV


Estou estudando ultimamente sobre Inteligência artificial, não um assunto muito fácil, mas é muito gratificante quando se consegue ler uma série de páginas em inglês sobre o assunto e entender tudo, pode ser que esteja na parte fácil.

Uma das bibliotecas que é muito utilizadas é a OpenCV. Como estou no mac resolvi tentar juntar essa biblioteca, com OpenGL desenvolvendo em Object-C. A coisa realmente não é tão fácil, mas depois de algum tempo sai.... :-).

Bem, ainda estou no começo, brincando de desenhar uma imagem adquirida pela OpenCV. O projeto ainda está bem simples, mas vamos ver até onde conseguimos ir. O xcode é bem diferente para quem está acostumando com java, gasta-se um tempo para entender onde estão as coisa e como conectar a interface com a camada de controle.

terça-feira, 27 de maio de 2008

Java, .Net, Ruby.... Delphi(?)

Tive uma conversa muito boa com um amigo, Victor Benjamin. A atual troca de emprego o deixou motivado, o que serviu de combustível para a convera, parabens pela nova estapa Victor.

Bem, na conversa falamos sobre o que o Java tem de bom, de ruim e o que não queremos nem falar. Como somos pessoas curiosas, temos visto algumas outras linguagens e ambientes, mas acredito particularmente que não exista a linguagem certa para todo o tipo de caso. Como dito em outros blogs, o importante é código funcionando.

Estou com um trabalho pessoal em curso, usando Java, separado em camadas implementando o máximo possível de DDD e uma coisa é certa: escrevemos muito. Para cada camada deve-se ter uma interface que define os métodos, a implementação, os testes unitários, as fabricas, os DTOs, etc. Não estou dizedo que é ruim, estou dizendo que codificamos muito. Apenas contando, um sisteminha de cadastro bem separado para Cliente, Produto e Compras precisa de pelo menos 3 Interfaces de definição para cada serviço, suas respectivas implementações, 3 Repositórios, um para cada classe, e separando a camada física, 3 DAOS, mais as classes de domínio e os DTOS. Somado isso estamos falando de uns 20 arquivo diferentes para 3 cadastros, parece um número um pouco auto.

Outro projeto pessoal que está na pauta, devo voltar a colocar a mão nele tão logo sobre tempo ou o dia passe a ter 36hs, está sendo feito em Ruby on Rails. Não da para comparar pedra com laranja, por isso não vou tentar comparar os dois universos, mas o tempo de codificação é muito pequeno. Praticamente, em um dia todo o cadastro estava pronto, foi ai que parei. A linguagem é ótima, fácil de usar e clara, o Rails tem suas peculiaridades, mas não é de todo mau.

Na empresa estou num projeto em Delphi, não é o ceu, na verdade é perto do purgatório. A linguagem é antiga e não tem muito dos facilitadores que as novas possuem mas, ainda assim, da para se fazer muita coisa legal. Uma das coisa que há em Object Pascal (iach) é o conceito de property, um modificador que permite um nível de get/set. O trecho de código abaixo exemplifica o property, basicamente ele esconde o get e o set que poderá ser definido no futuro, se necessário, sem alterar o código que o chama.


Cliente = class()
private
_nome : String;

_idade : integer;
function getIdade() : Integer;
procedure setIdade(idade : integer);
public
property nome : String read _nome write _nome;
property idade : Integer read getIdade write setIdade;
end;


O objetivo dessa discursão é mostrar que cada linguagem tem o seu "sintax sugar", que um ou outro programador irá gostar, mas o que importa não é isso, o que importa é código funcionando. Uma das premissas do manifesto ágil é essa. Se você está trabahando em um sistema de cadastro para uma campanha publicitária qualquer, não irá precisa se preocupar em fazer o sistema de tal modo que rode até em um palm (modularizando, usando WebServices e EJBS, etc..). A questão é o foco, o que você precisa, em quanto tempo e o que você sabe.

sexta-feira, 16 de maio de 2008

Meu Macbook


A uns 4 meses comprei um MAC, Macboook Intel 2.0Ghz e 1 Gb de memória, e gostaria de compartilhar o que tenho achado do Sistema Leopard.

A aparência é uma coisa fenomenal, todo branco é um contraste em qualquer lugar. O unico problema com a cor é que pode amarelar com facilidade, especialmente na área do teclado que é um pouco poroso. Para evitar que ele passe de branco para encardido é bom limpar de vez em quando, eu uso álcool gel para limpar, não agride e fica tudo branco de novo.

Quanto ao sistema operacional é fácil de usar e o sistema de busca é fantástico, depois que se acostumar não vai mais conseguir parar de usar. Uma das coisas que percebi é que rodar aplicativos mais pesados deixa a maquina um pouco lenta. Alguns colegas compraram mais memória e pela conversa a máquina ficou outra. Eu uso o meu para trabalho e coisas pessoais, como sou um cara de informática, tenho programado muito nele. O ambiente java é bem integrado mas come memória. Rodando o Netbeans com o Glassfish e uma aplicação desktop ao mesmo tempo a máquina simplesmente senta.

A uns 2 meses atrás estava com o Ubuntu instalado como segundo SO, mas tive que trocar pelo Windows por causa de um trabalho que precisei fazer. Os sistemas rodaram muito bem, os drivers para o windows estão todos no cd de instalação do Leopard já o Ubuntu reconhece sozinho quase tudo, só tem que fazer um ou dois truques para a câmera funcionar.

É uma ótima compra e o preço já está compatível com o outros aparelhos com o mesmo hardware no mercado. A fenac e o fastshop são ótimas lojas para comprar. Acho que não vale mais apenas trazer de fora, a diferença não compensa e comprando aqui mesmo ainda tem nota fiscal e garantia.

Se você já tem um e está querendo trocar a memória, da uma olhada nessa no mercado livre e as dicas de troca podem ser vistas no próprio site da apple