bitpop

Wednesday, December 3rd, 2008

Simpsons vão para a loja da (M)apple

Por isso que eles estão há 19 anos no ar !!!

E o Steve Jobs amarelo ficou igualzinho !!!

Thursday, September 11th, 2008

Navegadores

Depois que o Google lançou o Google Chrome, a disputa entre navegadores ficou ainda mais acirrada. Portanto, fiz essa lista com os prós e contras dos principais browsers disponíveis atualmente. Nota: Só testei a versão Windows deles. Talvez eles rodem melhor ou pior em Linux/MacOS (quando disponíveis, claro).


Um navegador italiano famoso

1) Firefox 3: O navegador que conseguiu tirar a absurda hegemonia do software da Microsoft. Favorito dos geeks em geral (que inclusive organizam coisas sem sentido como o Firefox Day), e principalmente, cheio de plugins muito legais já que seu código é aberto. Por não ser tão popular como o Explorer, o pessoal que procura falhas de segurança não visa tanto ele. E por ser relativamente popular, muitos sites são desenvolvidos pensando nele e no Explorer. Legal né ?


A raposa de fogo se alimentando

2)Internet Explorer 8: Quem se acostumou a usar tabs (abas), não conseguia mais usar o Explorer, até que eles foram obrigados a acrescentar esse recurso na versão 7. É um navegador bem feito, com alguns recursos bem interessantes como InPrivate Browsing. Essa ferramenta permite que você abra uma aba ou janela sem deixar rastros, ou seja, tudo que você acessar nessa janela/aba não vai pro histórico nem é gravado em seu PC. Diz a Microsoft que isso serve para quando você quer, por exemplo, comprar um presente surpresa para algum amigo ou familiar que usa o mesmo PC, mas na prática é usada para o acesso de sites pornográficos sem deixar vestígios : P
A grande vantagem é que a maior parte dos sites é desenvolvido com o Explorer em mente, mas o código fechado e a consequente inexistência de plugins faz dele um navegador quebra galho no máximo.

3) Opera: O Opera é praticamente um Firefox que não colou. Tem todos os recursos mas por algum motivo não pegou. E justamente por ter uma fatia tão pequena do mercado, muitos sites não são visualizados decentemente com ele. Por exemplo, o chat do Gmail não funciona no Opera.

4) Google Chrome: Sempre que o Google entra em algum novo campo, todo mundo fica de olho. O Google Chrome tem um visual clean bem interessante. Além disso, ele juntou um recurso muito legal do Opera, que é a página inicial ter thumbnails dos sites mais visitados. E principalmente, se uma aba trava, isso não trava as demais como acontece no Firefox (e funciona mesmo!). Por ser um navegador muito novo ele tem dois graves problemas: falta de plugins e principalmente, muito site simplesmente não funciona nele. O algumas partes do site do instituto de informática da UFRGS não abriu direito nele, o site da UFRGS abriu todo torto no Chrome, e quando fui tentar atualizar meu currículo Lattes, o Chrome simplesmente não abria a parte para atualização de currículos. Em suma, apesar das várias inovações que tem no código do Chrome, ele ainda está longe de superar o navegador da raposa laranja. Mas tem futuro.

Update: O Chrome também não consegue dar upload de fotos do Flickr. Esse negócio tá bem bugadinho ainda.


Tava muito na cara que esse símbolo era uma mistura de pokebola com genius, como eu não notei!!!

5) Safari: O navegador da Apple que tem versão Windows também. Mostra direitinho a maior parte dos sites, embora tenha travado várias vezes. Os fanboys da Apple adoram, de repente em macbooks e outros computadores da empresa do Steve Jobs funcione bem.


Bússolas não funcionam bem em Janelas

6) Mozilla Ubiquity: Acho que a Mozilla já deve estar ligada que se ela não inovar o Google vai roubar o mercado deles. Por isso já estão investindo em pesquisa pesada para criarem coisa novas. A coisa em questão é o Ubiquity, que na realidade não é um navegador novo, mas sim um plugin para o Firefox. Só que são tantas coisas que dá pra dizer que é praticamente navegador novo. Por enquanto está numa versão bem experimental (0.1), mas parece que o protótipo tem futuro. Assistam o videozinho e divirtam-se com toda a integração que ele tem com o Google Maps, Twitter, xkcd, wikipedia, e outras ferramentas. Aqui o instalador e aqui um tutorial. Tudo em inglês

7) Mozilla Aurora: Esse nem disponível ainda está, são idéias, mas que acontecerem, revolucionarão o mundo dos navegadores web. Aqui os videos a respeito. Aviso que aqui os videos foram bem lentos de abrir.

Tuesday, July 22nd, 2008

Edições especiais de iPod

Muitos devem ter ouvido falar de uma recente edição especial de iPod dos Simpsons. Mas não é só a família amarela de Springfield que teve direito a um tocador da Apple só deles. Por isso, esse post vai listar algumas das edições especiais bacanas que foram lançadas em tiragens limitadissímas ao redor do globo (a maior parte no país mais legal do mundo). Não consegui decidir ainda qual eu iria comprar.

1. iPod Simpsons: Pra quem não viu ainda, essa é a edição dos Simpsons. Só 2000 vão ser lançados, nas versões: iPod Clássico de 80 ou 160 giga, iPod Nano de 4 ou 8 giga, iPod Shuffle de 1 ou 2 gigas e o iPod Touch de 8, 16 ou 32 giga. Têm ainda com o Bart andando de Skate, entre outros.

2. iPod U2: Para os fãs de rock, mais especificamente de U2, saiu essa versão muito legal preto com a rodinha vermelha, além da assinatura de todos os integrantes da banda do Bono Vox no verso do aparelho.

3. iPod Evangelion: Eu como fã desse anime fiquei louca por ter esse. Um iPod com o símbolo da Nerv no verso e nos fundos das telas. Os otakus devem ter ficado loucos pra comprar no Japão.

4. iPod Hello Kitty: Para os aficcionados pela gatinha sem boca mais famosa do mundo. Custava mais de 2000 doláres no Japão.

5. iPod Doraemon: Doraemon é um anime que fazia um baita sucesso no Japão. Todo japonês conhece o Doraemon, que é um gatinho robô até onde eu sei.

6. iPod Mickey Mouse: Muito lindo. O ratinho (ou camundongo) mais famoso do mundo estampado num iPod. Ainda vinha com um case muito legal. Só 500 iPods com o personagem de Walt Disney foram fabricados.

7. iPod Nighmare Before Christmas: Para os fãs de Tim Burton, uma edição com o filme do diretor mais dark do cinema.

8. iPod Snoopy: O cachorro de Charlie Brown e Woodstock no verso do iPod, numa caixinha muito legal. Bem que podiam ter lançado com o Linus esperando pela grande abóbora também.

Bom, devem ter outras edições especiais, mas foram essas que eu consegui encontrar pela Internet. Se vocês conhecerem outras mandem que eu acrescento na lista.

PS: Aqui uma lista com os acessórios mais inúteis de iPod bem interessante.

Wednesday, May 21st, 2008

Robôs criativos são possíveis?

Filmes como Inteligência Artificial de Steven Spielberg, ou o Exterminador do Futuro sempre despertam questões como se softwares e robôs um dia serão mais parecidos com os seres-humanos. Depois de assistir a uma entrevista com Marvin Minsky, diria que a resposta é sim. Por exemplo, algo bastante inerente aos humanos, como criatividade pode sim ser emulado.

Marvin Minsky é o maior pesquisador de Inteligência Artificial e considerado um o pai da área. O mais interessante não é apenas a pesquisa dele propriamente dita mas também suas idéias. Por exemplo, numa entrevista dada por ele que eu assisti em aula certa vez (que eu não achei no youtube pra linkar), ele é perguntado sobre o que é criatividade e se computadores podem tê-la. A resposta dele é genial. Ele diz que criatividade é fácil de recriar. Basta tentar todas as possibilidades. Por exemplo, se eu pintar todos os possíveis quadros numa folha, de digamos, tamanho A4 (o que é possível, apesar de inviável, devida a grandiosamente absurda quantidade de possibilidades), certamente sairão Monalisas, e outros quadros “criativos”.

Ou seja, um robô pode ser criativo, basta ele ir criando quadros exaustivamente na sua memória (mudando pixel por pixel), e ter uma boa função de avaliação para dizer se aquele quadro é bom ou ruim. Ou melhor ainda, o robô possuir uma boa heurística para poder de cara descartar os quadros que certamente são ruins, como um quadro todo branco.

Monday, May 12th, 2008

Minha primeira viagem para o Rio de Janeiro

Conforme indicado nesse post sobre asa-delta, fui para o Rio de Janeiro no fim de Abril. Mas não foi minha primeira vez na cidade maravilhosa, e esse post vai comentar minha primeira viagem pra lá.

Foi no fim de julho e inicio de agosto de 2006. Eu era bolsista CNPq do grupo de probabilidade e estatística da UFRGS já fazia quase um ano. Bem nessa época aconteceria a EBP (escola brasileira de probabilidade) e IMS (international meeting of statistics) no IMPA (instituto de matemática pura e aplicada).

Minha professora orientadora conseguiu ajuda financeira para o grupo. Assim, tive a chance de ir para o RJ e participar dos congressos.

A melhor parte é que meu namorado, que também era bolsista, foi (na realidade foi antes até, porque ele foi num terceiro evento, dessa vez sobre série temporais).


Eu na frente do IMPA

Bom, o congresso foi muito legal, muito interessante e proveitoso. Uma ótima oportunidade de ver como estava a pesquisa em probabilidade (e possíveis aplicações na computação), entretanto no quesito turismo praticamente não tivemos tempo de aproveitar a cidade, mesmo ficando uma semana, afinal, congresso ia das 8 horas até as 17. E era bastante cansativo. Os únicos dias que tivemos oportunidade de conhecer a cidade foi no dia que cheguei e no dia de ir embora.

Além disso, choveu todos os dias.

Mas claro, como nossa hospedaria ficava em Copacabana, foi possível conhecer a belissima praia, a fachada dos belos hotéis (como o Copacabana Palace), ir no Cristo Redentor (que ainda não era maravilha do mundo), conhecer o IMPA, passear rapidamente no centro, jogar truco de noite, conhecer o Spolleto (que até então não tinha em Porto Alegre), e comer uma tapioca maravilhosa.


O cantor Vinny e eu bem animada no aeroporto

Então foi uma viagem majoritariamente de estudos. Só deu aquele gostinho da cidade maravilhosa. Por isso, fiquei na expectativa de ir de novo, dessa vez apenas como turista. E a oportunidade surgiu agora no fim de abril de 2008, que contarei num próximo post.

Wednesday, May 7th, 2008

Momento cultural: A palavra software em Português

Vocês sabiam que existe uma palavra em português para a palavra em inglês software? Não, não é programa. Software em português é logiciário. Vem do francês logiciel. Como todo mundo já sabe, os franceses (ao contrário dos japoneses) evitam usar estrangeirismos. Por isso, lá inventaram essa palavra para descrever software. Hardware na França chamam de matériel. Faz sentido: matériel significa material, ao passo que logiciel tem a mesma raiz que a palavra lógico. Claro, o hardware é o material, e o software é a parte lógica.

Engraçado que ninguém no Brasil, e nem mesmo em Portugal, onde valorizam mais a língua portuguesa, conhece logiciário. Menos mal, porque a palavra é muito feia : P

Por sinal, aqui um post que fala sobre estrangeirismos muito legal.

Friday, April 4th, 2008

Propagandas que atacam outras propagandas: comerciais provocativos

Aqui em Porto Alegre pelo menos, o cursinho pré-vestibular Universitário (o segundo maior depois do Unificado) fez uma campanha publicitária em grande escala, que consisitia de uma foto de um aluno que passou na UFRGS (a universidade com o vestibular mais disputado do Rio Grande do Sul) e a frase: Fiz Universitário e passei na UFRGS.

Mas ai, o cursinho Monteiro Lobato fez então uma propaganda sensacional: consistia em tentar provar que o fato desses alunos terem feito cursinho no Universitário não estava correlacionado a sua aprovação. Eram frases como essas que eles colocaram em propagandas:

- Comi banana e passei na UFRGS
- Dormi bastante e passei na UFRGS
- Viajei para o Paraguai e passei na UFRGS

E assim por diante.

A propaganda do cursinho rival foi tão humilhante o Universitário mudou a frase. Agora é apenas a sentença Passei na UFRGS e a foto do aluno.

Eu acho muito legal essas propagandas mais ousadas, que provocam, cutucam o adversário com vara curta.

E esses dias vi mais uma dessas propagandas. Só que dessa vez era de um livro que ensinava SQL (linguagem para bancos de dados). A propaganda atacava livros que prometem ensinar linguagens de programação como Java, C++, Python, entre outras, em prazos curtissimos. Pra quem não sabe, é muito comum ver livros com o título Java em 7 dias, ou Aprenda Python em 21 dias, ou ainda C++ em x dias (x é uma variável no qual quanto mais baixo o valor, mais o livro vende).

Esses prazos na realidade são uma grande bobagem, porque de fato, pra fazer programas pouco maiores do que um Hello World você realmente consegue aprender nesse prazo, agora vê se em com 7 dias sem nunca ter visto Java na vida, com um livrinho você consegue passar em alguma certificação da Sun, por exemplo, ou mesmo cuidar de qualquer sisteminha maior.

Mas voltando, a propaganda que tinha nesse livro de SQL, que se chamava SQL for Begginers era o seguinte: This book is for humans, not for clocks. Adorei, e só quem conhece esses outros livros captou a provocação.

Friday, March 28th, 2008

Programação em placas gráficas, área quente na pesquisa em CG

Uma das áreas da computação que está vislumbrando mais inovações é a computação gráfica. Por quê ? Além da pesquisa tradicional, no qual tarefas difíceis como a pesquisa e o desenvolvimento de novos métodos de calcular iluminação cada vez mais realista e rápidos, métodos para calcular fluídos em movimento (especialmente água), pêlos, cabelos, grama (vegetação em geral), etc, são estudados, existe um campo quase que inteiramente novo (ou que pelo menos aumentou as possibilidades de abordagem de temas antigos): a programação de placas gráficas, GPU em inglês (graphic processor unit).

Pra quem não sabe, as GPUs estão no nível de desenvolvimento absurdo. Isso fica claro quando vemos para vender por preços relativamente acessíves placas gráficas com 512 Mb de Ram. Pensem bem, 512 só para lidar com a parte gráfica. É muita coisa. Mas não é só o tamanho da memória que as GPUs estão altamente desenvolvidas. Alguns dizem que, a Nvidia (a maior desenvolvedora de placas gráficas do mundo, a Geforce por exemplo, é dela) já gastou tanto em pesquisa de tecnologia para fazer placas gráficas cada vez melhores, que atualmente, eles estão num nível que seriam capazes de criarem processadores (CPUs) melhores que os da lider no mercado, a Intel, e que só não começaram a vender porque desembolsar rios de dinheiro para entrar numa competição onde o concorrente tem mais de 90% do mercado é ou dar tiro no próprio pé ou suícidio.

Essa afirmação acima, pode parecer exagerada para alguns, mas o nível de complexidade que as GPUs tem hoje está muito próximo do nível que as CPUs têm. Não é nenhum absurdo pensar que a Nvidia poderia fazer CPUs.

geforce placa poderosa
Vamos programar esse bichinho?

Mas além da velocidade e tudo mais que as GPUs estão oferencendo, a parte realmente legal é que ela agora está ficando parcialmente programável. Parcialmente porque, a GPU utiliza a arquitetura pipeline. Arquitetura pipeline, resumidamente, é um hardware que é composto de vários módulos menores, e esses módulos devem funcionar concorrentemente. A vantagem da arquitetura de pipeline é que enquanto um dado está sendo tratado no segundo módulo, outro pode ser tratado no primeiro (se esse não depender do dado que está sendo tratado no segundo módulo). Por exemplo, uma fábrica que monta carros usa a arquitetura de pipeline, pois num módulo, o os pneus são colocados, em outro o carro é pintado. Com essa arquitetura, é possível que dois carros(ou mais, depende de quantos módulos tem o seus sistema) sejam produzidos quase ao mesmo tempo, evitando subutilização dos recursos de hardware.

A GPU permite a programação de dois desses módulos.

A grande diferença é que dessa vez, usaremos os recursos da GPU e não da CPU, ou seja, vamos usar a memória da GPU e as instruções da GPU, não a memória RAM da CPU, e tampouco suas instruções. Em outras palavras, você vai progamar para o processador da placa gráfica, e não para o processdor de propósitos gerais do seu PC (a CPU).

As vantagem é que como a placa gráfica é processador dedicado para gráficos, ele tem muito mais vantagens que a CPU. Por exemplo, ela possui comandos nativos para lidar com vetores, pixels, etc. Mas a grande vantagem, na realidade, é que a placa gráica consegue lidar com mais de um pixel por vez, ou seja, é uma placa que pode processar vários pixels em paralelo.

Para programar a GPU temos agora a disposição várias linguagens, e a mais usada é a C for graphics, que como o nome dá a entender, é bastante similar a C, mas para placas gráficas ; )

Na realidade, antes já existiam linguagens, mas era muito similares a um assembly, o que inviabilizava a programação para a maior parte das pessoas porque programar em assembly é um saco : P

Mas voltando, C for graphics permite atualmente a programação de dois módulos das GPUs atuais, o vertex shader, e o fragment shader. Num próximo post eu entro em detalhes sobre o pipeline das placas gráficas e consequentemente falo das vantagens e possibilidades programando o vertex e o fragment shader.

Tuesday, March 18th, 2008

Sono louco na aula

Hoje eu fui escolher um caderninho para meu início de semestre (na verdade já começou faz duas semanas, mas melhor comprar antes tarde do que nunca). Nisso, eu pensei e me dei conta que pouca gente usa caderno para escrever durante as aulas na minha faculdade. A maior parte prefere apenas prestar atenção no professor, e mais tarde, estudar através de livros recomendados na bibliografia, ou mesmo pelos slides, já que em geral eles são disponibilizados. Mas pra mim isso não adianta, eu preciso anotar. Na verdade, nem tanto pelas anotações em si, mas por um motivo muito maior: se eu não fizer isso, eu durmo. Sim, escrever é uma ótima maneira de não dormir nas aulas.

O pior, é que nao importa o quão interesante a aula esteja, chega uma hora que me bate um sono louco, praticamente irresistível. Às vezes ele pode ser tão forte, tão poderoso, que eu simplesmente durmo nas posições mais impensáveis na cadeira. Acho que talvez eu seja capaz dormir de pé, tal como os cavalos (alguém me disse que eles dormem de pé, será que é verdade?). Claro que isso já me rendeu diversas situações desagradáveis em aula, como por exemplo, acordar com os risos da turma pois o professor ficou me encarando enquanto eu dormia, na esperança que eu acordasse.

sono total

Cada pessoa tem um horário que tem mais dificuldades de se manter acordado. O meu certamente é a primeira aula, a das 8:30. Pra início de conversa, eu nunca consigo chegar na hora. Pra chegar as 8:30 na UFRGS, eu preciso acordar as 6:30. Eu não nasci para acordar nesse horário. Invariavelmente eu chego as 9 horas. Minha sorte é que esse semestre, de segunda a quinta, minhas aulas são as 10:30. Não teve um dia que eu tenha me atrasado, tampouco dormido.

Eu acho que essa questão do sono é crucial no rendimento acadêmico. Por exemplo, das 5 reprovações que eu tive até hoje, 4 foram cadeiras ministradas nesse horário maldito das 8:30. Será apenas coincidência?

Eu acho que devia ser feito um estudo completo sobre esse assunto. Por exemplo, descobrir por meio de entrevistas, qual o horário que a maioria das pessoas fica mais dispersa, sem atenção. Dessa forma, as comissões de graduação de cada curso poderiam manejar os horários das cadeiras de tal forma que as matérias consideradas mais fáceis fossem ministradas nesses horários critícos, e as cadeiras consideradas mais difíceis (ou seja, as com maior taxa de reprovação), em horários considerados bons.

Sociedade injusta que acha que quem acorda cedo é trabalhador e quem acorda tarde não !!! Protesto : P

Monday, March 10th, 2008

Orientação a objetos

Muito se fala em orientação a objetos no mundinho da programação. É a modinha atual. Parece que toda linguagem precisa ter. A famosa linguagem C não tinha. Fazer o que? Meta por cima tudo que precisa para ter orientação a objeto e temos C++. PHP também não tinha. Solução? PHP5 incorporou tudo (e por causa disso é quase uma linguagem distinta das versões anteriores). Qualquer linguagem nova quase sempre apresenta essa facilidade. Até Javascript, que era pra ser bem simplezinha, já tem.

Mas afinal, o que é exatamente orientação a objetos?

Orientação a objetos é um paradigma de programação. Um paradigma de programação é uma forma de pensar na hora de codificar. Em geral, a primeira linguagem que aprendemos são linguagens com o paradigma procedural (como Pascal, C, Ada, Cobol, Fortran, Clipper). Linguagens procedurais são aquelas no qual nosso código é dividido em subrotinas (procedures) ou function (funções). Uma procedure é uma função sem retorno (pode ser visto como uma função que não retorna nada, void). Se você realmente quiser modularizar seu programa, o melhor que você pode fazer é dividi-lo em várias subrotinas/funções, e num nível maior, em várias bibliotecas. Antes da programação estruturada, usava-se nos códigos o recurso do goto, que tornava a maior parte dos programas ilegíveis. Os famosos códigos espaguete.

A programação orientada a objetos é uma outra visão de como programar. Quando for pensar na estrutura e lógica do programa, você não vai pensar apenas em quais váriaveis você vai ter, e quais funções você vai aplicar nelas. Você deverá pensar em quais os objetos que formam seu programa. Você decide o que é o objeto. Num cadastro de uma faculdade, seus objetos podem ser alunos, professores e matérias, por exemplo. Você escolhe quantos objetos terá, de forma que facilite na sua implementação.

Cada objeto seu será uma classe (que você pode pensar como um Record do Pascal ou Struct de C). Entretanto, você não vai apenas declarar quais são as váriaveis que farão parte de sua record (ou Struct). Você dirá também quais são as funções que podem ser aplicadas nesse objeto (essas funções que são declaradas dentro da classe são chamadas de métodos). Seus métodos só poderão ser aplicados nos objetos aos quais eles pertencem.

Ou seja, a partir de agora você não vai dividir seu programa apenas em funções, você vai dividi-lo em objetos (classes pra ser mais específica … um objeto é uma instância de uma classe). Essa pequena mudança parece mínima, e talvez de pouca valia, mas faz muita diferença.

Uma linguagem considerada orientada a objetos também deve proporcionar modificadores de acesso (para facilitar encapsulamento de dados e depuração), herança (facilita a legibilidade do código e facilita o reuso dele). Pode também oferecer sobrecarga, polimorfismo, entre outras facilidades.

Em suma, a principal vantagem é que com orientação a objetos é muito mais fácil organizar o teu programa.

Claro que um programador MUITO organizado pode fazer programas lindos em linguagens procedurais, legíveis e organizados (assim como pode fazer um programa lindo com goto). Mas se um paradigma (no caso, a orientação a objetos) ajudar, melhor. Assim como se um compilador consegue detectar erros em tempo de compilação, melhor. Uma vez aprendida essa “nova” forma de programar, horas de trabalho podem ser economizadas.

Mas veja bem, orientação a objetos, só vai trazer uma vantagem substancial se seu programa não for muito pequeno. Se for muito pequeno, você não conseguirá dividir seu programa em muitas classes, e não conseguirá fazer muito reuso de código. E nesse caso talvez ela aparentemente não pareça útil. Assim como metodologias de engenharia de software como RUP e XP parecem que mais atrapalham do que ajudam para projetos MUITO pequenos.

A título de curiosidade, existem outros paradigmas, não tão populares quanto a procedural e orientado a objetos. Um deles é o paradigma funcional (exemplos são linguagens como Haskell, ML, Ocaml). Outro paradigma é o lógico, e sua linguagem mais famosa é o Prolog. São paradigmas bem mais complexos que a orientação a objetos, e que possuem ainda algumas limitações que não permitiram seu uso em grande escala.