Kindle

Março 4, 2012

Faz algum tempo já que comprei um Kindle da Amazon. Embora não leia com muita frequência, das vezes que precisei (longas esperas em aeroportos, dentro do avião), ele foi uma aquisição útil.

Nesse post vou comentar minhas impressões e registrar respostas para dúvidas que tive ao comprar o aparelho.

Vantagens

A principal vantagem de um leitor como o Kindle sobre tablets é o uso do e-ink. Por causa dessa tecnologia o Kindle não precisa de luz para exibir o texto, mas por outro lado é necessário luz ambiente para poder usá-lo, da mesma forma que um livro de papel. Isso permite um maior tempo de leitura sem que a vista fique cansada.

O aparelho possui uma película protetora fosca para reduzir o reflexo. Entretanto, ainda acho um pouco incômodo quando há uma fonte de luz muito próxima incidindo diretamente na tela, como por exemplo uma luminária de mesa ou mesmo as lâmpadas dos aviões.

Outra grande vantagem do uso do e-ink é a duração da bateria. Se o wi-fi estiver desabilitado, um Kindle pode ficar mais de um mês sem recarregar.

Formatos aceitos

O Kindle possui um formato próprio, o .azw, enquanto o formato padrão dos livros não comprados pela Amazon é o .mobi, que também é aceito, além do .txt.

Ele aceita arquivos .pdf também, mas minha experiência não é muito boa com a versão de 6 polegadas. Como o Kindle não reconhece o texto do pdf, o melhor que ele pode fazer é diminuir a escala para a página caber na pequena tela. Outra possibilidade é manter o tamanho original, mas aí provavelmente será preciso scroll horizontal (mesmo visualizando no modo paisagem), o que dificulta o fluxo de leitura. Talvez com a versão DX, de 9.7 polegadas em modo paisagem esse problema seja evitado.

Rede Wi-fi

O Kindle usa wi-fi para baixar os livros armazenados na Amazon. Existe um navegador embutido onde é possível acessar alguns sites como Wikipedia e também fazer compras diretamente pelo site da Amazon. Existem versões que usam 3G.

É possível ainda fazer a transferência de arquivos por um cabo USB.

Funcionalidades

Além do navegador, existem algumas funcionalidades do software embutido no Kindle:

* Dicionário – procura o significado de uma palavra no dicionário simplesmente posicionando o cursor sobre a mesma (o dicionário inglês já vem instalado, mas é possível instalar dicionários em outras línguas);

* Conversor de texto para voz: funciona com quase qualquer formato no qual o Kindle seja capaz de reconhecer as palavras (por exemplo .txt, mas não .pdf). O som fica “robotizado”, mas não dá pra fazer milagre com um conversos automático;

Livros

Existem muitos títulos disponíveis gratuitamente na internet, principalmente aqueles mais antigos. Outra possibilidade é baixar textos na web longos demais para se ler em um computador. Alguns aplicativos como o instapaper fazem um trabalho razoável em converter em formato aceito pelo Kindle.

Adquirir livros pela Amazon é bem simples. A principal dificuldade para estrangeiros é a necessidade de um cartão internacional. Descobri que a Amazon também aceita cartões pré-pagos internacionais, como o travel money, que é uma opção mais segura.

Os livros comprados ficam armazenados na nuvem associados à sua conta, então você pode trocar de aparelho ou ler os livros no aplicativo Kindle para computador sem ter que adquirir novas cópias.

Leitura adicional

[1] Garota sem fio – Review Kindle

Anúncios

Buenos Aires

Janeiro 22, 2012

Estive em Buenos Aires a trabalho durante a semana passada inteira. Não pude conhecer muito da cidade pois só tive tempo para fazer turismo no último dia. De qualquer maneira, esse post será um breve registro de minhas experiências na Argentina.

Transporte

Os ônibus são muito baratos, pois parecem que contam com subsídio do governo. Diferentemente do Brasil, lá você paga um valor proporcional à distância até seu destino. Mas mesmo no caso mais caro, creio que não chega a 2 pesos. Além disso, só se aceitam moedas como pagamento.

Para quem está nas proximidades do centro, o metrô (conhecido por subte) é uma boa opção, custando 2.50 pesos (mapa). A linha A é particularmente curiosa devido a seus vagões de madeira.

Linha A - Subte

Táxis não são muito caros. Usei essa opção entre no trecho Aeroporto-hotel. Aliás, o número de táxis é muito grande comparado ao número de veículos particulares. Só é preciso tomar cuidado com taxistas mal-intencionados.

Comida

Do ponto de vista gastronômico, tive recomendações de experimentar o bife de chorizo e bife de lomo que são dois cortes bovinos. Eu gostei bastante. Também tive o privilégio de ir a um churrasco (asado) tipicamente argentino. Diferentemente daqui (pelo menos de São Paulo), o churrasco é feito em fogo mais baixo, deixando a carne assar por mais tempo, resultando em uma textura mais macia.

Lugares

No tour de um dia, visitei alguns lugares famosos como a Casa Rosada, a Catedral Metropolitana, o bairro Puerto Madero, o bairro do Boca, incluindo o estádio do Boca Juniors e el Caminito.



El Caminito

Outras atividades

Durante a semana também fui a um show de tango e pratiquei um esporte chamado padél, que é uma espécie de tênis, só que mais leve, com quadra menor e raquetes que madeira. Eu nunca tinha ouvido falar, mas de acordo com a wikipedia é o segundo esporte mais popular na Argentina!

Conclusão

Algumas impressões: achei as calçadas muito estreitas, pelo menos na parte central da cidade; Achei curioso que alguns bares possuam entregadores para levar o café na bandeja até escritórios próximos; Os argentinos que conheci do trabalho são bastante educados e receptivos.

Senti falta de saber falar espanhol para poder me comunicar melhor e também gostaria de ter tido mais tempo para visitar outros pontos turísticos.


Retrospectiva 2011

Dezembro 31, 2011

Agora que estamos no final do ano, vou fazer uma retrospectiva dos principais acontecimentos de 2011.

Primeiro Semestre

O primeiro semestre foi bastante cansativo, mas também produtivo.

Artigos. Escrever artigos é uma das coisas que mais me motivam do meio acadêmico. Desde o final de 2010 estávamos escrevendo um artigo que acabou sendo aceito em uma conferência chamada CGA (Computational Geometry Applications). Logo no começo do ano, um resumo estendido nosso foi aceito no CTW (Cologne-Twente Workshop). Quando comecei a escrever minha dissertação, enxergamos a possibilidade de escrever ainda outro artigo, que foi aceito no Sibigrapi. Mais detalhes aqui.

Google Summer of Code. Durante o primeiro semestre, fui aceito no Google Summer of Code, para trabalhar com um projeto de computação gráfica. Tive que conciliar esse projeto com a escrita da minha dissertação e a escrita para o Sibgrapi! Felizmente, no final deu tudo certo. Escrevi vários posts sobre esse projeto.

Google Code Jam. Não consegui me classificar para a penúltima fase, mas acabei ficando entre os 1000 classificados e ganhando uma camiseta :)

Sibgrapi. Fui apresentar nosso artigo aceito para o Sibgrapi em Maceió. Foi meu primeiro congresso e a primeira vez que apresentei em inglês e para um público grande. Escrevi um post contando mais sobre o evento.

Defesa do mestrado. Depois de aproximadamente 2 anos de trabalho árduo conclui meu projeto de mestrado com a defesa da minha tese.

Emprego em otimização. Graças à indicação do Carlos, estou trabalhando em uma empresa de otimização. Até o momento estou aprendendo bastante sobre desenvolvimento de software em Java, além de ler artigos e implementar soluções para problemas de escalonamento.

Segundo Semestre

No restante do segundo semestre as coisas foram bem mais calmas.

Codefest. Participamos de uma competição onde deveríamos atacar um problema de otimização, tendo duas semanas para implementar uma solução. No final deixamos de levar o prêmio devido a uma bobeira, conforme descrevi aqui.

Haskell. Decidi começar a aprender Haskell com o objetivo de melhorar minhas habilidades de programação. Tenho me surpreendido com a elegância de alguns trechos de código que tenho visto e com a própria sintaxe da linguagem.

Blog

O blog está prestes a completar 3 anos e contando com esse post, são 97 no total. Tenho conseguido manter minha resolução de postar uma vez por semana.

Os posts mais acessados este ano foram: Algoritmo de Branch and Cut, Ponto dentro de polígono e Dijkstra e o caminho máximo.

Os termos mais utilizados em engines de busca foram: “soccer“, “aisec” e “ray tracing“. Um termo de busca curioso é “obter o poligono simetrico cgal“, que apareceu 89 vezes e eu nem faço ideia do que seja isso!

O blog teve, em média, 42 visitas por dia, com um total de 16k desde o seu início. O dia com mais visitas foi 30 de Novembro com 104 visitantes.

Resoluções para 2012

Para 2012, já me matriculei em dois cursos online de Stanford: Probabilist Graphical Models e Natural Language Processing.

Eu gostaria de aprender mais sobre mineração de dados (data mining) voltado ao suporte de tomada de decisões e também sobre otimização/programação estocástica, que considera fatores de incerteza, muito presentes nos problemas que atacamos na indústria. Dado isso, acho que o curso de modelos gráficos probabilísticos ajudará a reforçar minha base de probabilidade (que é bem fraca).

O curso de processamento de linguagem natural eu peguei mais por curiosidade e ainda não decidi se vou realmente fazer.


Defesa do Mestrado

Setembro 11, 2011

Segunda-feira passada foi a defesa da minha tese de mestrado. Felizmente correu tudo bem e fui aprovado :)

Do trabalho

O título da minha dissertação foi “Mapas de Símbolos Proporcionais”. O nome ficou bem genérico e não dá nem para saber do que se trata, hehe. Talvez fosse melhor “Problemas de otimização combinatória envolvendo mapas de símbolos proporcionais”.

Mapa de símbolos proporcionais com as maiores cidades brasileiras

De qualquer maneira, basicamente o que fizemos foi abordar dois problemas envolvendo esse tipo de mapa através de programação linear inteira, buscando soluções ótimas. Fizemos estudos teóricos mostrando que a formulação utilizada é forte, além de encontrarmos desigualdades adicionais. Também desenvolvemos técnicas de pré-processamento usando divisão-e-conquista e finalmente contribuímos com a paralelização de uma abordagem heurística.

Da banca

A banca da defesa foi composta pelo meu orientador, o prof. Pedro e pelos professores Carlinhos do IME-USP e o prof. Hélio do IC.

O prof. Carlinhos é um dos grandes responsáveis pela organização da maratona e por isso devo boa parte de minha formação a ele. O prof. Hélio foi o responsável da disciplina de estrutura de dados da qual eu fui monitor em 2010 e também foi meu professor de computação gráfica.

Ambos foram bem tranquilos na arguição, tendo apenas sugerido algumas correções ortográficas e uma melhor explicação aqui e acolá.

Da apresentação

Eu sou bastante tímido e tinha pavor de apresentar em público. Acho que os seminários do LOCo fizeram com que eu me acostumasse a apresentar, pelo menos quando se trata do meu próprio trabalho.

fonte: http://www.greenlights.org/blog/wp-content/uploads/2011/05/ostrich.jpg

Além disso, aprendi várias técnicas com meus orientadores sobre como apresentar melhor. Eis algumas delas:

  • Olhar para a platéia (esse é difícil :P)
  • Não ler os slides (além de te deixar de costas pra platéia, você não convence que sabe o conteúdo da palestra)
  • Não voltar slides. Se você sabe que vai precisar mostrar um slide que apareceu antes, duplique-o na confecção da apresentação. Se não der pra fazer isso, pelo menos avise que está voltando os slides para a plateia não ficar perdida.
  • Use “nós” ao invés de “a gente”. A vantagem é que no primeiro caso podemos usar sujeito oculto, o que torna a fala mais agradável de se ouvir.

Do aprendizado técnico

Embora eu não tenha me dado conta na hora, acho que aprendi bastante coisa no mestrado, principalmente sobre programação linear inteira e desenvolvimento de software em C++. Até então eu só tinha feito programinhas de ~100 linhas para resolver problemas de maratona, sem usar muitos conceitos de orientação de objetos.

No mestrado fiz as coisas pensando em reuso, o que acabou sendo muito bom, pois tive que utilizar código que eu havia escrito depois de um ano. O código ficou com umas 10.000 linhas.

Embora tenha usado bibliotecas como CGAL e XPRESS, se eu fosse reescrever meu código, teria usado mais bibliotecas como por exemplo a Boost.

Do futuro

Acadêmico: Há algumas tarefas possíveis para complementar o que fiz no mestrado e minha ideia é realizá-las assim que sobrar um tempinho. Mesmo não tendo certeza se voltarei para um doutorado, eu gosto bastante de publicar :) e isso me motiva a continuar pesquisando.

Profissional: Pesquisa em áreas como geometria computacional é rara de ser encontrada fora da academia, pelo menos no Brasil. Eu ia fazer meu mestrado em geometria, mas meu orientador sugeriu um problema que no final das contas usou bastante otimização combinatória e eu sou grato pelo rumo que as coisas tomaram. Graças a isso estou trabalhando em uma empresa de pesquisa operacional. Otimização em geral é uma área com aplicação direta na indústria e por isso é possível encontrar algumas empresas do ramo no Brasil.


Sibgrapi 2011

Setembro 4, 2011

Nessa última semana aconteceu o Sibgrapi 2011, que é uma conferência brasileira de abrangência internacional de computação gráfica, padrões e imagens. O evento foi sediado em Maceió, Alagoas. Tivemos um artigo aceito para essa conferência e fui lá apresentar.

O Sibgrapi deste ano foi composto por diversos mini-cursos, palestras de pesquisadores de renome na área, apresentações orais dos artigos (em inglês) e apresentação de pôsteres (artigos e também teses de iniciação/mestrado/doutorado).

Mini-cursos

Acho que a parte mais interessante de conferências são os minicursos. Nessa edição do Sibgrapi, cada mini-curso foi dividido em duas partes.

Houve um particularmente interessante, sobre fotografia computacional, onde eles explicaram alguns conceitos básicos sobre ótica e fotografia e falaram dos principais temas dessa área.


Imagens com diferentes tempos de exposição (fonte)

Foram discutidas diversas técnicas de composição de imagens. A mais legal pra mim, sem dúvida é a do high dynamic range (HDR), que consiste em usar imagens com diferentes tempos de exposição (como no exemplo da figura acima) para compor uma imagem visualmente mais atraente (como no exemplo da figura abaixo). Outros exemplos impressionantes podem ser encontrados nesse site.


Imagem composta (fonte)

Falaram também sobre light fields, que pelo que entendi consiste em representar mais informação a partir de um dado ponto de vista. Um exemplo disso é essa câmera que tira fotos com diferentes focos que podem ser escolhidos depois, na própria imagem. Veja exemplos aqui.

Assisti também a um tutorial sobre OpenCV, mas só peguei a primeira parte, pois a segunda conflitava com o horário do tutorial sobre fotografia computacional.

Apresentação de artigos técnicos

Havia sempre duas seções paralelas de apresentações de artigos técnicos, o que impossibilitou assistir a todas elas. Pelo que pude perceber, uma linha era voltada à computação gráfica e a outra à processamento de imagens. Acabei escolhendo apenas seções de computação gráfica.

Pra dizer a verdade, entendi muito pouco dos trabalhos apresentados, mas os que mais me chamaram a atenção foram de modelagem de terrenos em tempo real usando CPU-GPU (link) e texturização de modelos 3D com poucas características geométricas (link).

Apresentei nosso trabalho em uma seção de visualização. Trata-se de uma solução para uma das variantes do problema de mapas de símbolos proporcionais que abordei no meu mestrado (link). Pretendo comentá-la em um post futuro.

Pôsteres de teses

O projeto mais interessante era a tese de mestrado de Adriana Schulz (IMPA) que estudou animação computadorizada, mais especificamente para simulação de coreografia. Esse site tem diversos vídeos bacanas!

Fato curioso

Embora os artigos tivessem que ser apresentados em inglês, os mini-cursos foram ministrados em português. Além disso, as palestras dadas por convidados brasileiros também estavam sendo dadas em português. Aí houve uma hora em que na seção de dúvidas, um cara fez a pergunta em alemão. Depois de todo mundo ficar com cara de pastel, ele repetiu em inglês, criticando o fato de uma palestra de conferência de nível internacional ter sido dada em português. A partir de então, só tivemos palestras em inglês :)

Turismo

Aproveitei minha ida a Maceió para conhecer alguns pontos turísticos de Alagoas. A cidade de Maceió em particular tem uma boa estrutura para turismo, com empresas de transporte e serviço de guias. Consegui visitar a praia do Gunga, onde existem falésias compostas de camadas coloridas.


Camadas coloridas das falésias

Também fui a Maragogi, famosa por suas piscinas naturais, onde se pode mergulhar em meio a peixes coloridos e corais.


Piscina natural em Maragogi

Conclusão

Foi a primeira vez que apresentei em inglês e para um público desconhecido. Acredito ter sido um bom ensaio para a minha defesa que ocorrerá logo mais.

Os passeios nos últimos dias também serviram como um descanso relâmpago, pois esses últimos três meses têm sido bem puxados :)


Dicas para o mestrado

Agosto 28, 2011

Agora que estou terminando o mestrado, vou aproveitar e compartilhar dicas que me ajudaram a manter a produtividade durante esse período. Principalmente depois que você termina as disciplinas, manter o foco e a motivação em um mesmo problema durante um ano é bem complicado. As dicas que apresentarei a seguir tentam essencialmente auxiliar nessa tarefa.

Tenha uma lista de tarefas

Essa é a famosa to-do list. Detalhe as tarefas o máximo possível, como por exemplo como pretende abordá-la. Coloque até as tarefas mais simples, pois em dias pouco produtivos, cumprir tarefas, mesmo que pequenas, trará uma sensação de dever cumprido.

Se sua lista estiver no computador, recomendo que não apague as tarefas cumpridas, mas sim risque-as. Ver uma grande quantidade de tarefas cumpridas pode ser interessante para manter a motivação e evitar aquela sensação ao final do dia de “o quê que eu fiz hoje?!”

Comecei com o google docs. Num primeiro momento coloquei todas as tarefas com itens e ia riscando conforme fosse cumprindo. O problema é que com o tempo você perde o foco das tarefas não realizadas mais antigas.

Passei então a separar as listas por semanas, copiando as tarefas da semana anterior que não tivessem sido cumpridas. O chato disso é que sempre tem aquelas tarefas que você fica postergando e então as tarefas da semana vão acumulando.

Recentemente migrei para o velho papel e caneta, mantendo uma lista de tarefas diárias, com o mesmo esquema de copiar tarefas não cumpridas. A vantagem de fazer no papel é que copiar a tarefa dá muito mais trabalho, o que eu esperava que fosse um motivador a mais para cumpri-la. Bom, isso nem sempre funciona, pois há vezes em que acabo deixando de copiar e a tarefa fica esquecida. Escrevo essa lista logo que começo a trabalhar, mas posso adicionar itens ao longo do dia.

Para me organizar, mantenho as folhas num fichário. Assim eu posso de vez em quando dar uma passada para procurar tarefas não cumpridas. Em suma, esse método não é perfeito, mas foi ao qual eu mais me adequei.

Além dessa lista, de maior granularidade, eu mantenho uma lista no remember the milk. Lá eu coloco tarefas menos específicas e que não necessariamente precisam ser feitas no mesmo dia. Acho que é o uso mais comum de uma to-do list. Ela me ajuda a compor a minha lista diária no papel.

Local de trabalho

Isso varia de pessoa para pessoa, mas eu particularmente não consigo trabalhar em casa! Durante todo o mestrado preferi ir à Unicamp, mesmo gastando 1h30 para ir e voltar.


Laboratório de otimização e combinatória

Em casa há muita fonte de distração. Além disso, no laboratório há outras pessoas trabalhando, o que acaba incentivando você a parar de enrolar e trabalhar também. Uma desvantagem é que às vezes você precisa de mais concentração e a conversa atrapalha. Nesses casos, se não for usar o computador, costumo ir pra biblioteca (que infelizmente não é assim, tão silenciosa).

Horário de trabalho

Sempre tive um horário de trabalho fixo, entrando e saindo nos mesmos horários, trabalhando cerca de 8h por dia.

A flexibilidade de uma pós-graduação te permite agendar compromissos, como ir ao médico, em qualquer horário. Mas é preciso tomar cuidado para que isso não ocorra frequentemente. Sempre que eu vejo que trabalhei muito menos do que as 40h semanais, procuro compensar aos Sábados ou Domingos. Não gosto de compensar durante outros dias da semana porque para mim, trabalhar mais do que 9h por dia não rende.

Quanto à divisão de tarefas, procuro sempre realizar as tarefas mais “intelectuais”, como ler artigos ou livros, estruturar um programa, na parte da manhã. Já na parte da tarde deixo para implementação.

Reuniões

Faço reuniões semanais com meus orientadores. Essa frequência dependerá mais do orientador do que de você, mas não custa conversar e expor seus motivos. A princípio parece tentadora a ideia de só fazer reuniões quando tivermos algo para mostrar, mas para mim, a ausência de deadlines leva à procrastinação e consequentemente à baixa produtividade.

Obviamente isso só funciona se você se preocupa em não chegar a uma reunião com as mãos abanando :)

Conclusão

Essas dicas me foram úteis, mas não quer dizer que sejam para outras pessoas. Entretanto, foi lendo dicas de outras pessoas que eu pude experimentar diversos métodos e, mesmo descartando a maioria, consegui aproveitar alguns.

Um blog sobre produtividade pessoal que eu gosto é o efetividade.net. Eu costumava acompanhar também o lifehacker, mas o volume de posts lá é muito grande.


Mapas de Símbolos Proporcionais

Abril 17, 2011

Sexta-feira passada apresentei uma palestra na série de seminários do LOCo. Falei sobre o problema que estou atacando no mestrado.

Um mapa de símbolos proporcionais emprega símbolos para exibir eventos associados a alguma localidade e intensidade. O símbolo é posicionado no local de ocorrência do evento e a sua área fica sendo proporcional à intensidade desse evento. Focamos em mapas que usam círculos opacos como símbolos. A figura abaixo é um exemplo representando as populações das maiores cidades do Brasil.

Note que há sobreposição entre os discos. Dependendo da ordem em que os empilhamos, pode ser que haja mais ou menos porções dos discos visíveis. Há casos ruins em que a borda do disco fica totalmente encoberta, como na figura abaixo.


Não podemos inferir o centro nem o raio do disco com bordo escondido.

Para tentar fazer com que o desenho tenha bastante borda visível, usamos uma métrica que consiste em maximizar o comprimento visível total dos discos. Com isso em mente, é possível definir um modelo de programação linear inteira, com um modelo que atribui cada disco a um nível.

Além do modelo básico, desenvolvemos algumas desigualdades adicionais para tornar o modelo mais forte, nos baseando em propriedades geométricas, que impedem certas configurações de acontecerem.

Também desenvolvemos duas técnicas de decomposição de instâncias. Um jeito trivial de decompor instâncias é considerar componentes de discos conexas de maneira independente.

Nossa primeira técnica de decomposição vem da observação que um disco que está contido no outro sempre pode ser desenhado por cima em uma solução ótima. Dessa forma, em uma instância como a da figura abaixo, a componente {a, b} pode ser desenhada de maneira independente de {c, d, e, f} e na hora de construir a solução ótima, basta desenhar a solução obtida para {a, b} em cima da solução {c, d, e, f}.

Componente {a,b} está contida em {f} e pode ser resolvida separadamente.

Podemos definir um grafo Gs sobre os discos de S, com conjunto de vértices correspondendo aos discos e há uma aresta (i, j) em Gs se os discos correspondentes se interceptam. Falei sobre esse tipo de grafo em um post anterior.

A outra técnica consiste em remover um ponto de articulação de Gs e replicá-lo nas componentes conexas resultantes, como na figura abaixo.


O disco f representa um ponto de articulação em Gs. As figuras (ii), (iii) e (iv) são as componentes resultantes de sua remoção, com f replicado.

Mostramos que é possível resolver cada componente com o ponto de articulação replicado de maneira independente. Depois, basta juntar os discos mantendo a ordem relativa de cada sub-solução. Isso pode ser feito através de uma ordenação topológica.

Implementamos todas essas ideias e reportamos os resultados. As instâncias testadas foram as mesmas de um trabalho anterior no qual nos baseamos. As técnicas de decomposição foram efetivas na redução do tamanho das instâncias e o resolvedor XPRESS conseguiu resolver nosso modelo para quase todas as instâncias. Porém, ficaram algumas componentes sem serem resolvidas, o que nos motiva a procurar novos modelos e novas desigualdades.

Esse nosso trabalho foi aceito na Computational Geometry and Applications 2011.