Pathfinding (A* revisted)

I’ve been playing with A* in the past. A* is an algorithm widely used for pathfinding in games or for graph traversal in an economical way.

Recently I’ve found a cool JavaScript implementation of different pathfinding algorithms, including A*.

Also, I ended up finding a blog about Jump Point Search that speeds the search considerably by D. Harabor. This is very interesting as it considerers pruning rules to avoid visiting certain nodes that would be visited optimally from the current node’s parent without passing through the current node.

According to the author’s the JPS (Jump Point Search) can consistently speed up A* by over 10 times. That’s impressive. The images on the blog post about the search are a great illustration of the results achieved.

Notas sobre o upgrade para Mountain Lion

No fim de semana decidi fazer upgrade ao meu MacBook Pro que estava a correr ainda o OSX 10.5.8 Leopard (principalmente por questões de compatibilidade com algumas bibliotecas que preciso e cujo upgrade iria obrigar a mudar imenso código, e obrigou).

Bem, este fim de semana foi o dia (muitas vezes adiado) de fazer upgrade para o Mountain Lion. Ao fim de alguns dias de utilização eis algumas conclusões:

  • Instalação do Mountain Lion crashou! A única forma de o instalar foi fazendo um clean install e mesmo assim o tempo que Apple estima que a instalação demora é tão preciso como nos melhores dias da Microsoft no Win95 a instalar a partir de disquetes (umas 30). Tendo durante muito tempo o processo de instalação mais friendly do mundo, é pena ver estes “falhanços” do instalador. O prémio para o OS mais fácil de instalar do mundo regressa novamente para o Ubuntu.

  • Com 4GB de RAM o Mountain Lion arrasta-se num Macbook Pro de finais de 2008. O problema é o consumo de memória. Por algum motivo ao Mt. Lion não gosta de libertar memória inactiva e prefere fazer swap para disco.

  • Na segunda feira tive que fazer upgrade para 8GB de RAM e a verdade é que para já o problema está resolvido (embora já tenha esgotado 2 vezes a RAM – Sou um bruto eu sei, utilizo computadores para os por a trabalhar a 100%).

  • A primeira vez que o Time Machine correu teve que gravar 200GB de dados. Não sei porque motivo, mas o daemon do time machine ocupou quase 3GB de RAM (assim não há ram que aguente).

  • Ainda não percebi que fatures novas do Mt. Lion vão alterar a minha utilização de computadores. O Bling extra por si é dispensável se não for também reflexo de usos mais fáceis. Para já continuo a utilizar as mesmas ferramentas e rotinas de sempre e não é por ter já cabelos brancos. É porque simplesmente muitas das features novas não são realmente novas e já existiam noutros OSes, e já nesses OSes não eram utilizadas porque havia formas mais rápidas e eficientes de ser produtivo.

  • Uma das coisas que acontece aos meus OSes ao fim anos de utilização intensiva é que acabo por ter muita duplicação de software no disco. Decidi começar a limpar. Software cuja funcionalidade já exista no OS sai. As primeiras vítimas foram o Thunderbird, o Firefox, o Opera e o Chrome. Próximo round são os editores de texto (Textmate, Wrangler, BBedit, MacVim, Smultron, etc… ) Só um ficará, para já inclino-me para o Textmate ou para o Wrangler ou Vim… ai.. decisões.

  • Os tempos de vida dos Mac são verdadeiramente longos. Se no passado a Apple suportava máquinas com 5,6…8 anos, agora tal já não é verdade, mas um MBP com 4 anos e com um ligeiro upgrade está ainda a funcionar para mais um par de anos. Eventualmente precisará de um disco SSD, mas não é obrigatório. No entanto a idade reflecte-se noutras coisas: bateria morta a precisar de substituição, ventoinhas ruidosas, etc.

  • Trazendo aqui ao barulho o iOS6 recentemente lançado, fico com a sensação que nem o iOS6, nem o Mountain Lion veriam a luz do dia no tempo do Steve Jobs. As razões são subtis mas estão lá nas pequenas falhas e imprecisões destes dois produtos. Espero estar enganado.

R: Extrair código de um documento Sweave

A produção de documentos reprodutíveis é muito fácil com Sweave em R. Mas por vezes quero extrair somente o código R para um ficheiro separado, sem todo o boilerplate do Latex (apesar de ser muito o melhor ambiente de edição de texto do mundo). Para tal pode-se utilizar o seguinte comando para produzir um ficheiro big_sweave_code.R com todas a vinhetas de código existentes no ficheiro Sweave.

Stangle("big_sweave_doc.Rnw", output="big_sweave_code.R")

Notas sobre o Tablet Microsoft Surface

surface_05.jpg
  • É muito bom ver a Microsoft a entrar neste mercado, apesar de continuar a achar que a Microsoft tem um problema com o seu mercado alvo. Quer por força entrar no consumer electronics mas sem assustar o enterprise business e penso que as duas áreas são inconciliáveis no longo prazo. Veja-se o que aconteceu com a IBM que a dada altura teve que abandonar o Personal Computer para ficar com o Enterprise Computer.
  • Voltando ao Zune Surface. O nome é infeliz, porque imediatamente fica associado ao Surface mesa.
  • O facto de ser um tablet Intel é positivo (principalmente para a Intel), apesar de para já o único modelo mostrado ser a versão ARM. Isto leva-me ao ponto seguinte.
  • A Microsoft tem que parar de fazer meios lançamentos! O Surface não é consensual, principalmente porque chega ao mercado dos tablets com 2 anos de atraso (o iPad vai já na sua 3ª geração). Ao chegar tão atrasado a Microsoft não pode NÃO anunciar datas de lançamento e NÃO anunciar preços. Na área de consumer electronics isto é totalmente inadmissível. Uma data e um preço comete aqueles que ficaram convencidos na apresentação a comprar e a entusiasmar-se com o produto. Sem datas e sem preços (um vago competitivo no segmento não é bom) este Zune Surface arrisca-se a ser rapidamente esquecido e ultrapassado por fabricantes chineses. Assim, o Suface é um não produto.
  • Uma ideia que me ocorreu sobre este produto é perceber até que ponto a Microsoft quer lançar um tablet, ou foi forçada a produzir um por coreanos e chineses estarem a optar por tablets Android. E o Surface é a forma da Microsoft preencher o vazio com uma presença forte, que pode agora atrair novamente outras marcas para licenciamento do Windows 8.
  • Gosto particularmente da interface do Windows 8, sem procurar criar efeitos cromados, tridimensionais que se vêem nos outros tablets. Uma nova perspectiva em termos de design é sempre bem vinda, mas penso que a Microsoft tem que pensar claramente alguns aspectos de usabilidade dos seus produtos. A Microsoft assume muitas vezes coisas sobre o comportamento dos utilizadores, como por exemplo a remoção da palavra Start, assumindo que “toda a gente sabe que é ali que se acede aos programas”. Não é assim tão óbvio e numa mudança radical de design é necessário que tudo seja claro tanto para o utilizador que chega pela primeira vez à plataforma, como para o veterano “que sabe que é ali que o Start devia estar”.
  • Quando o Microsoft Surface chegar ao mercado é necessário que o seja a um preço certo, que a meu ver não tem que competir com outros Androids, mas sim com o iPad e tem que ser disponibilizado globalmente, para gerar momento. Caso contrário arrisca-se a ser visto apenas nas mãos de delegados de propaganda médica, cujas direcções forçaram a utilização dos Surfaces aos vendedores.

MacBook Pro com Retina Display sem manutenção

MacBook Pro Retina Display

Quando a apple lançou recentemente o novo MacBook Pro com Retina Display, sem SuperDrive e com um disco rígido SSD por $2100 pensei logo para com os meus botões: Ora aqui está uma máquina que me pode convencer!

No entanto com o passar dos dias tenho vindo a mudar de opinião. Principalmente porque o iFixit desmontou o MBP e concluiu que esta máquina é um pesadelo para a manutenção. Baterias coladas ao chassi, memória RAM soldada à lógica, disco SSD proprietário que não permite utilizar outro do mercado, parafusos proprietários.

Basicamente a Apple não quer que ninguém mexa dentro da sua máquina.

Acontece que eu tive um par de problemas com produtos apple nos últimos anos que me custaram dinheiro:

  • O primeiro problema foi uma lógica queimada que teve que ser substituída num MacBook Pro (pre-unibody) e cuja substituição me custou quase 600€. Se a este valor ainda tivesse que adicionar mais o valor da RAM por esta estar soldada então mais valia deitar o MBP ao lixo.
  • O segundo problema foi uma ecrã que de um dia para o outro pifou e teve que ser substituído noutro MacBook Pro (unibody) e que lá levou mais 550€.

Os meus MacBook Pro ficam-me caros.

Ora qualquer reparação deste MacBook Pro Retina Display terá custos sempre superiores, devido a terem que ser exclusivamente feitos pela Apple (com os seus preços habituais) e devido ao número de componentes que será necessário substituir por estarem todos soldados. A lógica comercial da Apple parece ser fechar o Hardware, depois de ter fechado iTunes, OS X, iOS, etc… e desta forma cobrar mais por serviço igual (veja-se por exemplo o preço da RAM que a Apple coloca na loja).

O único lado positivo deste MBP é que será provavelmente agora o computador de referência que os outros fabricantes tentarão bater em termos de especificações (e provavelmente 30% mais baratos). Como não preciso de mudar de computador já (Afinal tenho dois MBP ainda a funcionar), vou esperar e não comprar este que promete ser um grande pesadelo.

A máquina excepcional jamais construída

Uma excelente apresentação sobre a mais excepcional máquina nunca construída, a máquina analítica! A apresentação por John Graham-Cumming apresentada na TEDx Imperial College está repleta daquele tipo de humor só possível por britânicos e é um must see para todos os curiosos sobre computadores e principalmente sobre a história dos computadores.

R in the Top 20 of Programming Languages

Programming languages come and go, but its nice to see what’s gaining momentum and what’s not. In the latest Tiobe report for January 2012 we can see some interesting surprises in the top 20 chart of programming languages. C is still highly demanded and closing on Java. Both account for 1/3 of the programming languages panorama.

Other interesting aspect is the fading of Python. Python lost half of it’s market share. Maybe this is because of Python 3 and the incompatibilities with Python 2.x that might have sent many programmers in search other solutions. Another problem might be GIL that hinders thread programming in Python in a time when programming is moving to the concurrent and distributed programming.

Also interesting is the rise of R. R is one of my favorite languages for science. It makes reproducibility of research results very easy (specially if you use Sweave with R) and for any kind of statistical analysis it is almost perfect. It also produces great plots for scientific publications.

Manual para idiotas – Como destruir a HP num ano!

A RIR com a forma de destruir a HP em apenas um ano.

Há cerca de um ano a compra da Palm pela HP parecia uma medida óptima para salvar a divisão de PDA/Smartphones da HP, mas é hilariante aquilo que a HP conseguiu fazer nos últimos 12 meses.

Parece que o tempo em que a “Hewlett-Packard Company” representava excelência e inovação são passado. Quer apenas dedicar-se a sectores com margens de lucro mais altas. O HPSupport parece-me bem… :)

GOSTEI particularmente do comentário “A HP sair do mercado dos PCs é como a McDonald’s abandonar o mercado dos hamburgers“.