2010 July 31, 11:21 h
Atualização: Agora já é tarde, o OneManga encerrou suas operações no dia 30/07. Você ainda pode pegar estes scripts e atualizar para outro site similar. Fork it!
Se você é leitor de manga deve conhecer o site One Manga, um dos maiores sites de fansubbers de manga. Fiquei sabendo ontem que o site vai fechar as portas devido à maiores restrições das editoras norte-americanas.

Há algum tempo atrás eu fiz um pequeno script em Ruby para baixar os mangas que eu leio pois preferia ler offline (não gostava de ficar esperando uma página ficar carregando de cada vez). Aproveitando acabei de fazer outro que gera um PDF com as imagens para poder ler do meu iPad ou Kindle.
Não demorem! Em breve não haverá mais o site e o conteúdo dele vai se perder!
2010 July 30, 15:36 h
I originally wrote this yesterday for the Brazilian audience but I think the theme is universal enough to publish it in English as well. Let me know what do you think.
Every once in a while, the subject around “Where are Women in Technology?” pops up.
This conversation usually takes place when I am attending some conference, so the logical argument ends up falling around this:
And case closed! The problem is that women feel embarrassed because of the booth babes and that is why they reject this area. I sincerely think that this couldn’t be far from the truth.
I have published a survey in the Brazilian version of my blog to figure out the proportion of the male and female audience I have. This is the result for the first 3 days after I published the article:

2010 July 30, 04:02 h
De vez em quando, acaba surgindo o assunto sobre “Onde estão as mulheres da nossa área?”
Como normalmente essa conversa surge quando estou participando de algum evento ou conferência, o argumento logicamente acaba caindo aqui:
E caso encerrado! O problema é porque as mulheres se sentem embaraçadas por causa das booth babes e por isso rejeitam a área. Sinceramente, acho que isso não poderia estar mais longe da verdade.
Deixei uma pequena pesquisa nos 3 primeiros dias após ter publicado este artigo, perguntando aos leitores deste blog quem é homem e quem é mulher. O resultado foi o seguinte:

2010 July 30, 01:42 h
Este é um pequeno truque para a seguinte situação: estou abrindo um dialog box via Ajax (e para isso existem vários plugins como os de jQuery, de YUI e assim por diante). O formulário que se abre serve para fazer upload de imagens ou arquivos. A primeira vontade é usar algo como um remote_form_for e enviar um POST via Ajax. Mas isso não é possível para situações de upload – Javascript não deveria mesmo ter privilégios para acessar arquivos na sua máquina local, a menos que você use Firefox e use esta configuração. O que fazer?

2010 July 29, 16:08 h
For the longest time, since I migrated my blog from Mephisto to Enki, I lost a few of my interviews and didn’t notice it. Fortunately I had an old backup from where I could recover all of them, so if you missed some of the interviews, here they are again: Dr. Nic
Geoffrey Grosenbach
Chad Fowler
David Black
Ola Bini
Carl Youngblood
Jamis Buck
John Lam
Avi Bryant
Avi Bryant
Adrian Holovaty
Peter Cooper
Hal Fulton
Evan Phoenix
2010 July 25, 13:29 h
Porto Alegre estava com o clima frio, bem frio, mesmo assim nossos grandes amigos cariocas do #HoraExtra não deixaram de esquentar o show no #FISL. Coisas que só acontecem quando você está se divertindo: eles tiveram a idéia de, em vez de ficar assistindo palestras, por que não codificar? Codificar qualquer coisa sempre é exercício, e exercitar é essencial para não definhar.
Eu não participei da codificação mas a idéia foi inspiradora porque me bateu uma grande nostalgia. Quando começamos a programar, começamos porque gostamos. Programar sempre foi algo divertido, descompromissado, desafiador, não importa se é útil, não importa se é bonito, não importa se é completo. Mas com o passar do tempo nós nos “profissionalizamos” e de repente programar passou a trazer várias preocupações: “mas tem utilidade?”, “mas pra fazer completo dá trabalho”, “mas tem que planejar antes”, “mas vai custar caro, ou demorar muito”. Vários “mas”, “mas”. E aí programar já não é mais divertido.
Por isso essa idéia trouxe de volta um pouco desse espírito. Por que não escrever e publicar aplicativos pequenos, só pela diversão de fazer algum código? Foi assim que durante os 4 dias do #FISL eles publicaram nada menos do que 6 aplicativos, uma média de 1.5 aplicativos por dia! E para isso não foi preciso muita coisa: bastou juntar 3 ou 4 pessoas numa mesa, criar um repositório no Github e depois fazer deployment no Heroku, tudo hiper simples.
2010 July 23, 16:34 h
Pessoal, por demora minha acabou não saindo a descrição das minhas palestras na programação impressa do FISL. As duas serão no sábado, dia 24 (amanhã!), a partir das 11hrs da manhã. Me ajudem a divulgar! A primeira será no auditório do Prédio 5 das 11h até as 13h. Lembrando que é um pouco afastado do prédio 41 principal então comecem a chegar cedo. Ecossistema Ruby on Rails – Ruby on Rails é muito mais do que apenas um mero framework web MVC. Esse é apenas a ponta do iceberg. A parte mais imp...
2010 July 19, 05:03 h
Atualização 09/04/12: Este screencast foi liberado para visualização gratuita. Acesse este post
Atualização 29/08: Adicionei mais algumas informação no final deste artigo. Se você comprou o screencast, leia o adendo no final.
Antes de mais nada, para que ninguém fique preocupado, entre este screencast e o anterior eu não fiz nenhum post “normal” do blog, mas em breve os conteúdos de sempre, sobre Ruby, Rails, agilidade, os Off-Topics, irão retornar.
Este episódio é uma introdução ao venerado editor de textos Vim para quem ainda não tinha visto ou estava apenas começando e precisava de um “empurrão” para seguir adiante. Agora não há desculpas!
Este screencast não está mais à venda. Aguarde, em breve será liberado gratuitamente. Obrigado a todos que colaboraram até agora

E assista ao Preview:
Vim é um dos editores de texto mais antigos no mundo Open Source. Considerado por muitos como “difícil demais para aprender” ou “antigo demais e obsoleto” este screencast vai mostrar que, muito pelo contrário, Vim é um editor completo, robusto, estável, sofisticado e versátil e ainda totalmente apropriado para os desenvolvedores mais exigentes.
2010 July 12, 12:05 h
Atualização 09/04/12: Este screencast foi liberado para visualização gratuita. Acesse este post
Finalmente, segue meu projeto de screencasts com o primeiro episódio Instalando um Ambiente Ruby.
Este screencast não está mais à venda. Aguarde, em breve será liberado gratuitamente. Obrigado a todos que colaboraram até agora

E assista ao Preview:
Este screencast é destinado àqueles que querem começar com Ruby mas ainda não sabem bem como instalar um ambiente. Explico alguns dos fundamentos de Ruby como por exemplo o que é um $LOAD_PATH e como Rubygems são carregados e organizados. Mais: como criar uma Gem simples para entender os conceitos. Nos ambientes Ubuntu e Mac instalamos Ruby via RVM que é a forma mais moderna e flexível. Infelizmente não existe RVM para Windows, então mostro como fazer uma instalação simples. Este tutorial pode ajudar também quem já começou com Ruby mas não conhece RVM ou tem dúvidas sobre como Rubygems funcionam.
2010 July 06, 05:43 h
Atualização 02/07/2010: Eu esqueci que o máximo de caracteres de uma chave de memcached é 250. Como estava gerando chaves dos posts usando os permalinks, obviamente em muitos casos vai dar mais de 250. Então o que eu fiz foi gerar as chaves normalmente, criar um digest SHA1 e truncar até 250. Isso deve resolver. Descobri isso porque estou usando o plugin exception_notifier e hoje comecei a receber dezenas de e-mails com a exception Memcached::ABadKeyWasProvidedOrCharactersOutOfRange. Fica a dica :-)
Aproveitando o episódio de ontem da lentidão do meu site, resolvi fazer um pequeno ajuste adicionando memcached à equação.
Recordando, eu estou usando ETAGs para economizar processamento. Leia meu artigo sobre ETAG para entender do que isso se trata. Basicamente a primeira vez ele vai ao banco, busca os dados, abre o template ERB, gera o HTML e envia de volta ao usuário, o caminho padrão. Com ETAG, na segunda vez ele checa que o dado no banco não mudou e devolve apenas um cabeçalho “304 Not Modified”, evitando o processamento do template ERB e transporte do HTML. Só isso dá uma boa acelerada na requisição.
Porém, eu gero o ETAG usando o campo ‘updated_at’, ou seja, eu preciso acabar indo ao banco e buscar essa informação. Algo parecido com isso:
1 2 3 4 5 |
def show @post = Post.find_by_permalink(*([:year, :month, :day, :slug].collect {|x| params[x] } << {:include => [:tags]})) etag = @post.updated_at.to_i fresh_when( :etag => etag, :public => true ) unless Rails.env.development? end |
O método find_by_permalink é específico do meu blog (veja o código do Enki para referência). Daí uso o método fresh_when para gerar o cabeçalho caso necessário. O ponto é: ele vai executar o find ao banco em todas as requisições. No caso que aconteceu ontem, com muitas requisições simultâneas, isso pode se tornar um ponto de contenção crítico, mesmo se a query for muito rápida.
2010 July 05, 18:34 h
Hoje à tarde tive uma das primeiras quedas do meu site por acesso concorrente. Não sei precisamente porque caiu, mas acho que tenho uma idéia. Para quem é curioso sobre infraestrutura, talvez fique interessado.
Para quem não sabe, desde fevereiro ou março eu mudei meu blog pra Linode. Contratei o menor slice deles, um de 512MB de RAM. Pra um blog deveria ser mais do que suficiente. Ele dificilmente consumia mais do que 450MB de RAM. Em termos de processamento também nunca foi pesado.
Porém hoje de manhã eu twitei sobre o RubyConf Latin America. Poucos minutos (ou segundos?) depois meu site estava devolvendo erros 502 bad gateway pra muita gente. Eu mesmo estava sofrendo lentidão para logar via SSH nele. Então, o que aconteceu?
2010 July 05, 11:04 h
Brazil went official in the worldwide Ruby on Rails conference roadmap with 2008’s “Rails Summit Latin America”. This was the very first big conference around Rails in the continent and a very successful one, gathering more than 550 attendees each year. We had more than 20 speakers, 2 full days, 2 parallel sessions with real-time translations.
Now, it is 2010, and I have decided that Rails Summit is no more …
2010 July 05, 11:03 h
Em 2007 realizamos um evento comunitário pequeno mas muito legal chamado RejectConf 2007, com o apoio do IME-USP, da Caelum, e muitos participantes que viriam a se tornar conhecidos na comunidade. Não lembro direito os números mas acho que foram umas 70 pessoas.
Em 2008 eu queria um evento grande. Por coincidência, ao mesmo tempo em que eu tentava contatar a Locaweb, ela me procurou. Acabei indo trabalhar lá e antes mesmo de pisar dentro do escritório eu já estava viajando para Portland para o RailsConf 2008, com o objetivo de fazer contatos e conseguir palestrantes. O evento foi batizado de Rails Summit.
A organização começou em Julho e o evento seria já em Outubro. Isso foi bem apertado. Mas o resultado foi um sucesso: mais de 550 pessoas, 2 dias inteiros, 2 sessões paralelas, mais de 20 palestrantes. Em 2009, com mais experiência, fizemos a segunda edição do Rails Summit. Foram excelentes eventos.
Finalmente, chegamos em 2010. Eu saí da Locaweb e muitos me perguntaram se o Rails Summit iria continuar. E a resposta é: o Rails Summit acabou …
2010 July 01, 00:25 h
Atualização 09/04/12: Este screencast foi liberado para visualização gratuita. Acesse este post
Atualização 12/07: Otimizei os vídeos e os tamanhos caíram de 1GB para 214MB. A versão iPhone ficou com 156MB. Quem já comprou pode baixar novamente usando os mesmos links que receberam por e-mail. A vantagem é que a qualidade é praticamente a mesma, mas com peso muito menor.

Esta é a gravação em forma de screencast da palestra que ministrei esta semana na USP sobre o tema “Entenda Software da Maneira Correta”, no evento Wire 2010.
O mundo de TI está cheio de processos, metodologias, consultorias, certificações, MBAs, mestrados, etc e ainda assim é comum ver projetos de software sofrendo para saírem com qualidade. Por outro lado, temos milhares de programadores, muitos hobistas, voluntariando para criar software sem coordenação central, saindo com código de alta qualidade que muitos dependem no dia a dia, desde Linux até Firefox.
Este screencast não está mais à venda. Aguarde, em breve será liberado gratuitamente. Obrigado a todos que colaboraram até agora
Dentro dessa premissa, assista este screencast para saber o que Open Source, Darwin, Galvão Bueno e até Dwayne “The Rock” Johnson tem a ver com o modelo correto de desenvolvimento de software.
Parte deste tema eu discuti no meu outro blog, no artigo Processos, Metodologias e o Cérebro Humano e me inspirei também no paper de Ko Kuwabara, Linux: A Bazaar at the Edge of Chaos.
Quando o pagamento for confirmado você receberá um e-mail com o link para o download. O vídeo tem 214MB de tamanho em formato de 800×600 com 1h e 10min de duração. Acompanha versão em iPhone com 156MB em formato 480×360. Veja um Preview abaixo:
E se quiserem saber mais sobre este assunto e também ver como é o formato de uma palestra minha gravada como screencast, assistam a minha palestra “Desmembrando Pessoas”, que apresentei pelo Encontro Locaweb no começo do ano e coloquei gratuitamente aqui: