2009-12-21

Aleluia! Eu encontrei Jesus ...

... estava no banco do Benfica (copyright Cão Azul)

Para variar: o Benfica, mesmo desfalcado, deu um banho de bola ao Porto. Venceu com toda a justiça, e até merecia ter marcado mais.

Para não variar: Lucilio Baptista tem alguma dificuldade em distinguir entre as mãos e os pés dos jogadores do Porto, os jogadores do Porto têm alguma dificuldade em distinguir entre a bola e as pernas dos adversários, e todos os portistas em geral têm bastante dificuldade em digerir um resultado negativo.

2009-12-20

Estaleiro

Ontem de manhã, electricista e uma empresa dos alarmes, hoje, o pintor.
Durante os próximos 2 meses aquela pequena casa vai parecer um estaleiro.
Eu continuo a achar que vamos conseguir mudar-nos durante Março, mas aceitam-se apostas ...

"Sabem o que é um «gaje»?"

"É quando o pai vai a guiar e vão outros carros, é o senhor que vai a conduzir o carro que não sai da frente!"

As crianças são piores que a CIA ou como o pai devia aprender a ter tento na lingua ....

2009-12-18

Índices sobre booleanos

Na 4º feira tive um ínicio de noite muito interessante, a tentar optimizar uma migração de dados que teimava em não processar mais de 75 registos por minuto, dos mais de 900.000 que tinha para processar.
A causa era uma query que demorava à volta de 600 milisegundos e que na prática era bastante simples: obter o primeiro registo em que um booleano estivesse a 0 ordenado por um campo de data.
A minha primeira intuição foi criar dois índices, um sobre o campo booleano e outro sobre o campo da data ... resultado, a query passou a levar mais de 3 segundos ... 5 vezes mais!!!
Fui melgar outra carola para me ajudar a perceber o fenómeno (thanks grande M. J.!), e após mais de 1 hora de andar às voltas, lá percebemos que o SQL Server estava a usar o índice do booleano para sacar TODOS os registos que satisfaziam a condição (900.000), e só depois usava o índice da  data para ordenar os registos e obter o primeiro.
Removendo os dois índices isolados e criando um índice conjunto dos dois campos, o SQL Server tem a inteligência suficiente para perceber que deve ordenar e filtrar ao mesmo tempo usando o índice, tornando a query muito mais eficiente. Resultado: 800 registos por minuto.
Portanto, atenção a esses índices sobre campos booleanos, especialmente quando esse campo é o único na claúsula where de uma query.

2009-12-17

Sismo ... ou IKEA versus CERNE

Cá em casa a pequena M. foi a única a sentir o sismo.
Acordou e chamou a Mãe, e disse-lhe: "Mexeu!". A Mãe só acordou com o chamar, nem deu pelo sismo, embora possa estar imune a esses pequenos solavancos, devido ao habitual abanar das paredes provocado pelo roncar do Pai.
Outra explicação é que a pequena M. dorme numa cama do IKEA, enquanto os pais dormem numa cama CERNE.
Ainda estou a pensar se compro uma cama CERNE para a míuda, ou se compro uma cama IKEA para nós, para termos tempo de fugir em caso de sísmo ... parece ser mais eficiente que os animais e mais sensível que um sismógrafo!

2009-12-14

A M. está de castigo ...

... até à próxima 6ª feira à tarde, quando é a festa da escola, sem comer guloseimas.
Não conseguiu resistir a uma sombrinha de chocolate, que estava pendurada na árvore para ser comida no Natal. No sábado fomos dar com ela escondida debaixo da mesa da sala, com a boca na botija.

O mais dificil destas coisas é manter uma cara séria e dar o devido ralhete e castigo, quando só nos apetece é rir. Mas ela tem de perceber que aprender a resistir aos impulsos e aprender a esperar pelas recompensas são duas capacidades essenciais para viver em sociedade. E hoje em dia são tão escassas ... ninguém resiste aos impulsos, e gasta o que tem e até o que ainda não tem, e depois basta um azar e fica numa situação dificil que demorará anos a recuperar.
Acho que especialmente nesta época as pessoas deviam reflectir sobre isto.

2009-12-11

Dimensionamento de projectos Agile

Novo post no About Agility (em Inglês), sobre como dimensionar projectos desenvolvidos com metodologias Agile (Agile Methodologies), de modo a que o cliente sinta segurança em comprar o projecto.
Para isso é essencial o seguinte:
  • Completa transparência. O cliente tem de perceber que:
    • quase de certeza, o resultado final do projecto não vai ser aquilo que está especificado na proposta;
    • que pode haver várias features (ou mesmo módulos inteiros) que podem ter de ficar para um segundo projecto;
    • mas também que os módulos que ficarem implementados vão realmente fazer aquilo que o cliente precisa, de uma forma eficiente, e com uma elevada taxa de adopção por parte dos utilizadores;
    • e que a decisão final sobre a prioridade de uma feature ou módulo é sempre do cliente, e a única limitação é que a timebox seja respeitada.
    • que a timebox encontrada não é o resultado de um joguinho de poker, mas sim de uma especificação de alto nível e de uma ferramenta de Sizing de projectos construida com a experiência de centenas de projectos Agile.

  • Mas também tem de ser responsabilizado nestes pontos:
    • especificação fornecida para a construção do Sizing, sobretudo relativamente à complexidade pretendida em cada feature (por exemplo, se diz que um form de recolha de dados terá uma página com cerca de 20 campos, e a análise detalhada após o inicio do projecto mostra que na realidade é necessário um wizzard com 3 páginas e 60 campos, tem de ter a noção que para implementar este form vai ter de abdicar de outra feature)
    • disponibilidade para assistir às demos e para as reuniões de fecho de sprint e negociação do sprint seguinte, e de key users para as demos e para testarem a aplicação nos períodos de teste.
E a verdade é que funciona mesmo, como já pude comprovar nalguns projectos.

2009-12-08

Ao ouvido da Mãe ...

... "sabes, não era o Pai Natal, era só um senhor com um fato de Pai Natal" ...

2009-12-06

FM 2010 :) :) :)

Vício!

Socorro!

Manhã de compras de Natal ...