chester's blog

technology, travel, comics, books, math, web, software and random thoughts

Coding Dojo no Apontador

14 Nov 2010 | Comments

O Encontro Ágil 2010 (que merecia seu próprio post) se destacou pelo face-to-face: os open spaces e interações entre participantes foram tão produtivos que a tradicional carência de conectividade sem fio da USP trabalhou a favor. E foi justamente uma dessas interações, o Coding Dojo (saiba o que é um) organizado pelo Bruno Gola (com o forte apoio do Asa) que me inspirou a organizar uma sessão equivalente no Apontador. Segue uma visão geral da experiência:

Preparação

Devido à heterogeneidade do público potencial (e também para levar o ambiente já preparado), era razoável escolher a linguagem com antecedência. Usamos Python por tres motivos: é fácil de aprender na hora para quem nunca viu, o código fica compacto e legível, e a expoisção a uma linguagem nova é um bônus extra (de fato, um dos pontos positivos mais enfatizados na retrospectiva).

A estação de trabalho era o meu Mac do trabalho mesmo, então usei o TextWrangler, um editor básico com sintaxe colorida e que permite alternar facilmente entre o programa e o teste. Deixamos o editor ocupando 2/3 da tela, e o restante dividido entre o console (posicionado estrategicamente para garantir a visibilidade do OK ou FAILED do teste) e o cronômetro – ter as duas coisas na tela dá mais segurança e tranquilidade à dupla.

Uma reprodução do jeitão da tela durante o Dojo no Apontador (clique para ampliar)

Eu queria um cronômetro offline – apesar da internet do Apontador ser boa, é sempre bom reduzir riscos. Adorei o Coding Dojo Screenlet, escrito pelo próprio Gola, cuja cor de fundo (vermelho/verde) reflete o status do teste, ajudando a audiência saber quando (não) é apropriado se manifestar, mas ele só existe para Linux. A solução foi o timer do Hora Agora (criado pela Bani), que, aliado à interface minimalista do Chrome, resolveu super bem: o alarme ininterrupto garantia que o piloto, ao sentar no teclado, não esquecesse de reiniciar o timer (usando o parâmetro “?t=05:00″, era só dar reload na página).

Num dojo (e em TDD no geral) é uma boa idéia que, quando viável, o teste seja executado automaticamente sempre que você salva o arquivo. Conseguimos isso graças ao uso de nose + tdaemon (que ainda dá o resultado em popups do Growl), mas tem outras alternativas por aí como o autotest e o watchr. Outra idéia é rodar todo o ambiente do Dojo online, usando o CyberDojo. Opções não faltam: escolha conforme a linguagem, ambiente e gosto – o importante é deixar tudo preparado antes de começar!

No Dia

Após uma rápida introdução ao conceito de dojo e às “regras do jogo” (a Karen recomenda esses dois resumos), compilamos no quadro uma lista ordenada dos participantes – o que evita confusão na hora de trocar a dupla. A lista foi pela ordem em que as pessoas se voluntariaram, mas acho válida também a sugestão do Gola de alternar entre pessoas mais e menos familiarizadas com a tecnologia.

Dojo era novidade para quase todos os presentes, então pareceu razoável começar com um problema introdutório (RandoriKata), e fizemos o RomanNumbers (não por acaso, o mesmo que foi feito no Encontro Ágil). Foi interessante ver como a dinâmica e a técnica de solução de um mesmo problema variam em dojos diferentes.

Conclusão

A retrospectiva foi parte importante da experiência – ajudou a medir o que aprendemos juntos, onde acertamos e onde poderíamos melhorar. E me chamou a atenção ver que, mesmo não sendo o objetivo principal do dojo resolver o problema em si, o pessoal não quis ir pra casa sem ver todos os testes funcionarem. Não tenho dúvidas sobre o impacto positivo que isso terá no dia-a-dia de cada um.

Organizar um dojo não é coisa de outro mundo (gastei mais tempo escrevendo esse post do que preparando) – só é preciso realmente ter um espaço com projetor, comida e interessados. Recomendo reservar entre 1h30 e 2h para a brincadeira, e levar o ambiente pronto, deixando o encontro focado em programar e interagir.

Abrace a simplicidade e ajude as pessoas a seguirem as regras, mas sem pressão. Não perca de vista o aspecto lúdico e não-competitivo do evento, e o resto sai por conta. O pessoal se animou a compartilhar o código e marcar os próximos logo de cara. E o Apontador está considerando promover **dojos abertos para visitantes – interessados, manifestem-se! **

Chester, por Ila Fox

07 Nov 2010 | Comments

Já tem um tempo que eu queria voltar a ter uma ilustração para dar uma carinha mais simpática ao blog. Eu usava uma caricatura do Serginho (que ilustrava alguns artigos que escrevi para o Último Segundo) que é fantástica, mas retrata um Chester de dez anos, onze quilos e incontáveis cabelos atrás.

A Ila Fox publica todo dia uma ilustração nova no blog dela, e eu sempre curti o estilo. Resolvi então encomendar com ela o mini-Chester que vocês vêem aí embaixo. Curti tanto o resultado que estou usando um corte como avatar no Twitter e em outras redes.

O Chesterzinho é uma ilustração da Ila Fox

Curtiu? Vai lá na lojinha da Ila e encomende a sua também. Ela é muito atenciosa, eficiente e, acima de tudo, profissional – nem ligou de desenhar o Apple II, mesmo sendo MSXzeira de raiz :-) (essa antítese é meio que o Corinthians x Palmeiras da era 8 bits…)

Google Developer Day 2010

01 Nov 2010 | Comments

GDD2010-logoA maratona de eventos do mês foi concluída com a edição deste ano do Google Developer Day em São Paulo. É um evento bastante concorrido (afinal, é gratuito, bom e ligado ao Google), o que deve tornar a escolha dos participantes um desafio interessante – mesmo para aqueles cuja missão já é meio que organizar/classificar o universo…

Esse ano o processo de inscrição incluiu uma provinha que gerou bastante “mimimi” nas listas e redes sociais: uns questionaram a eficácia de um teste tão básico (e para esses recomendo ler sobre FizzBuzz e programadores que não programam), outros se sentiram injustiçados com a eventual não-convocação. O fato e que ela ajudou: qualquer pessoa que você encontrasse lá esse ano era, em maior ou menor grau, apaixonada por código. Não era bem assim em anos anteriores, e isso fez diferença no café/happy hour. Sabem como é: developers, developers, developers!

A organização também melhorou em todos os aspectos: da alimentação (que já era boa) aos os brindes (incluindo uma camiseta bem bacana) e internet, tudo pareceu funcionar melhor. Tinha mais gente que nos outros anos, e o pessoal xingou muito no twitter esse aspecto. Pessoalmente, achei que acomodaram bem – e que o GDD escala.

O conteúdo era, como se esperava, um grande showcase de tecnologias Google. Como recém-convertido a Android (e vindo do ADL Bootcamp), fiquei empolgado com a ênfase dada à plataforma – que não sucumbiu à miopia das operadoras, como eu temia no meu primeiro contato, em 2007. De qualquer forma, com três palestras simultâneas divididas em quatro trilhas (Android, Cloud, APIs e Chrome/HTML5), era difícil achar um horário em que nada interessasse (só deixei de ver dois blocos, para fins de socialização e uma merecida soneca nos pufes).

As palestras eram mais abrangentes que profundas (ao menos as que eu vi) – o que, para autodidatas, é um fantástico “mapa da mina” sobre o que explorar no universo de tecnologias que o Google disponibiliza. Em particular gostei de ver novamente o p@ falando sobre AppEngine e outros tópicos, e o Ryan Boyd destrinchando OAuth e OpenID. O que deu menos certo, a meu ver, foi a participação de empresas que usam as APIs do Google: a intenção de levar “gente que faz” para mostrar seus cases foi boa, mas rolou desde constrangimento de ex-funcionário até palestra tomada pelo “jabá”.

Mas essas coisas acontecem, e nem de longe tiram o brilho do evento. Pelo contrário, esse mesmo espírito de abertura conduziu ao fechamento do evento com apresentação dos GTUGs (Google Technology User Groups) do Brasil (onde o Paulo Fernandes do SP-GTUG sorteou vários brindes) e ao happy hour, no qual Googlers e civis papearam bastante. Em resumo, o casamento entre tecnologia e fator humano tornou o evento um sucesso, que espero ver novamente em 2011.

RubyConf Brasil 2010

31 Oct 2010 | Comments

Logo RubyConf 2010Um complemento bacana a participar da PythonBrasil foi estar na RubyConf Brasil 2010. O evento sucede os Rails Summit, e na mesma tradição desses tem a LocaWeb como organizador, mas com empresas como a Gonow (onde o Akita, pioneiro do Rails no Brasil, trabalha atualmente) e a Caelum (que vem expandindo sua posição já consolidada no mundo Java para os novos fronts do desenvolvimento) aparecendo em destaque.

Apesar da internet ter deixado a desejar (em particular no primeiro dia), o evento contou com estrutura ótima: comeu-se bem (não teve almoço, mas estávamos sobre um shopping center), o espaço foi suficiente (não tão grande quanto o dos anteriores, segundo os veteranos, mas coube todo mundo) e o local era de facílimo acesso.

As palestras focaram muito em aplicação das tecnologias que se consolidaram no mundo do Ruby nos últimos tempos. Eu, que andava um pouco afastado da tecnologia, curti muito a abordagem. Houve um espaço para “desconferências”, que funcionaram bem, mas eram um pouco formais demais, talvez desestimulando quem tivesse um recado mais curto para passar.

Como sempre, o lado social é importante. Houve um happy hour no Bar Opção (no qual fiquei pouco tempo, o cansaço dos eventos anteriores já se acumulava) e a impressão que ficou ao conversar com as pessoas é que as empresas estão ficando mais receptivas ao uso de linguagens dinâmicas – possivelmente um movimento em sintonia com a crescente adoção de práticas ágeis na gestão do desenvolvimento de software.

Toda essa vibração em torno de Ruby on Rails me faz ver que é questão de tempo até que apareçam as primeiras aplicações Ruby on Rails usando a Apontador API. Ela ainda não dispõe de biblioteca oficial para esse ambiente, mas com módulos como RestClient e oauth-plugin, creio que os rubistas não terão grandes dificuldades (e se estiverem, estamos lá para ajudar).

Android Developer Lab Bootcamp

31 Oct 2010 | Comments

Karen e Lucas ganhando o Lego MindstormsQuase como um “esquenta” para o GDD, o Google marcou na véspera (e no mesmo local) o Android Developer Lab Bootcamp, cuja proposta foi ocupar metade do dia com um “bootstrap” da tecnologia, no qual desenvolvedores participaram de:

  • Uma apresentação rápida sobre Android (na qual ganhei um bonequinho de vinil respondendo a uma pergunta);
  • Uma demonstração na qual cada participante reproduziu¹ em seu micro o passo-a-passo da construção de um aplicativo;
  • Um desafio: adicionar um feature ao aplicativo em um intervalo de tempo reduzido. Os poucos que conseguiram ganharam camisetas, e participaram do sorteio de um Lego Mindstorms.

¹ O método utilizado foi uma aplicativo template, no qual o código dos features era “des-comentado” a cada passo (procure por “Step 0″). Parece bobo, mas na prática essa técnica alia o hands-on com a agilidade de algo pronto – gostei.

Uma pequena confusão foi causada pelo fato de o site do evento pedir para baixar as ferramentas, mas não para instalar as mesmas previamente. Algumas pessoas mal conseguiram concluir a configuração do ambiente, outras tantas perderam momentos preciosos da apresentação nesse processo de configuração. Mas no final deu tudo certo, e eu, recém-convertido ao Android, já estou com idéias envolvendo a migração de antigos projetos J2ME para a nova plataforma…

Bonequinho do Android que eu ganheiDesagradável mesmo foi o gaiato que se aproveitou do surgimento do FireSheep (que permite a pessoas sem conhecimento técnico capturar cookies de autenticação de sites como o Twitter) e da ausência de criptografia da rede Wi-Fi do evento (não que só isso seja garantia de segurança total, mas a falta dela viabiliza a coisa). Eu normalmente sou paranóico quando estou em redes públicas, mas acreditava que num evento desses o pessoal estaria mais focado em programar do que em brincar de “ráquer”. De qualquer forma, o Sheepsafe parece uma alternativa bacana para heavy users de redes públicas minimizarem esse tipo de inconveniente.

Finalmente, vale mencionar que quem ganhou o prêmio foi uma dupla, composta pelos meus amigos na foto: Lucas Uyezu e Karen Zamlutti – esta última também colega de IME/USP e integrante do time do Apontador. Detalhe: eles mal se conheciam, e trabalharam em par por iniciativa e inclinação natural a metodologias ágeis. Fica a lição.

Participando (e palestrando) na PythonBrasil[6]

26 Oct 2010 | Comments

Estive na PythonBrasil[6], isto é, no “6º Encontro Brasileiro da Comunidade Python”, que rolou em Curitiba entre 21 e 23 de Outubro. Por conta da aula na UNESP, só pude chegar na sexta (22), mas ainda assim deu pra aproveitar bastante.

Alguém tuitou que este foi um encontro orientado a pessoas, e é verdade: todos lá estavam muito acessíveis – sem deixar de lado o perfeccionismo e profundidade no conteúdo, os palestrantes estabeleceram um diálogo muito positvo com todos os presentes, dentro e fora das palestras.

Uma das marcas da comunidade Python é receber bem todos os interessados, e este aspecto foi contemplado pela ilustre presença do Fabio Akita (@AkitaOnRails), que, à exemplo do que fez no QCon, mostrou onde a comunidade Ruby/Rails acertou e errou ao longo dos anos, deixando lições inestimáveis para os pythonistas que souberam enxergar além das diferenças.

Outro destaque foi o Pedro Valente (@pedrovalente), o elo perdido entre o jornalismo e o desenvolvimento de software. Ele agitou o #freecep nos open spaces e apresentou a versão python-ativada da sua consagrada exposição sobre extração de dados públicos “na marra” – que deixava uma dica para que eu fizesse (mais) uma lightning talk sobre o Cruzalinhas.

Eu achava que o assunto já tinha sido abordado o suficiente (falei dele no FISL 11 e no QCon), mas dado que a palestra original do Pedro Valente foi justamente o que me inspirou a criar o site, achei que não faria mal em complementar a apresentação dele (mesmo sem ter ensaiado ou feito slides próprios para a ocasião). Mas ver o pessoal abraçando à idéia de que serviços públicos implicam em dados públicos já valeu: o @botobr está tentando reproduzir o lance em Curitiba, o @jbochi abriu o fonte do Tô a Pé, entre outros.

De qualquer forma, eu estava no evento como palestrante: fui falar da Apontador API, a iniciativa do Apontador em abrir suas APIs (um assunto que merece seu próprio post, a seu tempo). Fiquei muito satisfeito com a resposta do público: não foram passivos, fazendo perguntas contundentes (acerca da qualidade, da relevância e do posicionamento do produto diante de alternativas) e dando sugestões muito coerentes (que já dispararam ações lá dentro). Audiência qualificada é tudo!

Os slides estão disponíveis no SlideShare (e abaixo), e incluem incluem exemplos básicos de uso da biblioteca Python (cujo código-fonte é livre e também pode ser obtido no github). Ficam os meus agradecimentos à organização pela oportunidade, ao público pela receptividade e a todos os participantes por um excelente evento!

Aula sobre Mashups Web na UNESP (SECCOMP 2010)

24 Oct 2010 | Comments

Um prédio do Campus (fonte: site UNESP)A organização da XVIII Semana da Ciência da Computação (SECCOMP 2010) me convidou, por intermédio do Eduardo Maçan (o Kevin Bacon do software livre: todo mundo no meio o conhece), a ministrar uma aula (mini-curso) sobre mashups web para os alunos de Ciências da Computação no último dia 21.

Por se tratar de um tema pouco convencional, optei por uma abordagem mais descontraída: as origens musicais do tema foram ilustradas com um videoclip de música do Girl Talk e os exemplos iam de sites comerciais como o BuscaPé e o surreal Mobzombies.

Este panorama foi complementado por um passeio através de diversas tecnologias relevantes para quem quer integrar e misturar as fontes de dados e APIs existentes na web. A apresentação desta parte teórica (com links úteis no final, incluindo o ensaio que foi a base principal da aula) está disponível no SlideShare.

A prática foi feita em duas partes: um exercício usando o excelente Yahoo! Pipes para mesclar diferentes fontes de informação; e uma brincadeira simples, mas completa, na qual os alunos usaram a Apontador API para encontrar bares próximos à universidade e apresentá-los em uma página usando a API do Google Maps.

Foi uma experiência gratificante, na qual espero ter ajudado a mostrar para o pessoal que está chegando agora a importância da programação baseada no ecossistema Web 2.0, deixando um “hello world” sobre o qual eles possam criar coisas interessantes.

Exposição Sanrio 50 Anos: Hello Kitty, reloaded.

08 Oct 2010 | Comments

Unha com desenho da Hello KittyEntrar em uma loja da Sanrio, a empresa por trás da Hello Kitty, é uma experiência interessante por si só (e fica a dica: é um lugar infalível para presentes femininos de última hora). Mas uma exposição de arte cuja temática são os personagens do “universo HK”, em releituras de artistas tão variados quanto Allan Sieber, Guto Lacaz (quem lembra dele na Chiclete com Banana?) e Lovefoxxx é imperdível, e fui com a @bani conferir.

A cantora do CSS não foi a única do meio musical: Lucas Silveira, vocalista do Fresno, fez um dos quadros mais simpáticos. Mas minha peça favorita foi a do grupo Laborg: nela, um bloco com pequenas esculturas monocromáticas recebe uma projeção multicolorida e milimetricamente ajustada. Com isso a personagem muda de roupa e de cara o tempo todo, a TV começa a passar telejornais nacionais, enfim, mil coisas que rolam ao mesmo tempo. Eu, que costumo torcer o nariz para “arte multimídia”, fiquei de queixo caído.

Mas o ponto épico de surrealismo japonês foi a pintura de unhas computadorizada. Essencialmente, você escolhe entre algumas dezenas de figuras, e as moças simpáticas pintam sua unha, prendem seu dedo na impressora e BAM: você tem seus personagens favoritos literalmente à mão. A brincadeira é mais dirigida a meninas, acho, mas era bizarro demais para não experimentar (e o passeio não seria completo sem isso). O resultado foi uma Hello Kitty no indicador, que vai ser infernal de explicar lá na Vila Ema…

Se você não está muito por dentro desse universo, não se preocupe: a exposição abre com uma introdução sobre cada um dos personagens. Nela você vai saber que a altura da Hello Kitty corresponde a cinco maçãs (se são maçãs estilo Turma da Mônica ou Fuji eu já não sei) e o peso equivale a três; que a Kuromi não se bica com a My Melody; e se for observador como a Bani vai notar a quase ausência do Tuxedo Sam – seria o “distúrbio alimentar” dele pegando mal?

No final da exposição você ainda ganha um imã de geladeira, e se quiser fechar a noite com chave de gato, pode esticar até a Bendita Hora Pizza & Arte (Moema), que está oferecendo uma Pizza Hello Kitty. A gente ficou pelo shopping mesmo, mas se for como aparecia em um dos monitores, eu quero experimentar!

Enfim, é uma exposição divertida e com entrada franca, vale a passada para quem está em SP. Está no Shopping Iguatemi (8o. 9º. andar), e abre das 12h às 21h durante a semana, das 10h às 22h no sábado e das 14h às 20h no domingo. Mas ela só vai até o dia 14 desse mês, então agilize!

E pra fechar: as peças expostas estão sendo leiloadas pela internet. Topa levar uma pra casa?

UPDATE: Eu e a Bani fomos contemplados com duas pizzas Hello Kitty (que estavam excelentes, parabéns ao pessoal da Bendita Hora). A falta de flash atrapalhou, mas tiramos duas fotos.

Eleições 2010 – em resumo: 43, 430, 133, 4340, 13 e 43!

01 Oct 2010 | Comments

Sei que está um pouco em cima da hora, mas fiz posts sobre meus candidatos em 2002, 2004 e 2008 (em 2006 eu estava ocupado com o Golpe), e, para não perder o costume, chegou a vez de 2010. Para compensar o atraso, dessa vez vou falar de todos os cargos.

Era de se esperar que a idade me trouxesse um pouco mais perto do conservadorismo – o que não aconteceu. A sabedoria popular diz que “se você não foi comunista até os 30, é um insensível. Se continuou sendo depois dos 30, é um insensato”, e creio que meu viés é para o segundo grupo. Claro, marxismo passa longe há tempos, mas ainda acredito que o governo deve atuar coibindo os excessos do capital e, ao mesmo tempo, estimulando-o e gerenciando o caos quando as inevitáveis crises ocorrerem. Centro-esquerda para uns, centro-direita para outros, abraço a primeira alcunha, que me deixa dormir melhor à noite.

Essa visão explica minha relação de longa data com o PT. Sempre admirei duas características nele: o compromisso em ser a “reserva moral” da política (apoiado no baixo índice de denúncias de envolvimento de integrantes com corrupção e afins) e o bom senso de, quando governo, fazer na prática o que o PSDB propõe na teoria, isto é, uma social-democracia com o mínimo necessário de compromisso para permitir a governabilidade. Isso tudo meio que caiu por terra com os mandatos presidenciais.

Talvez eu tenha mudado, mas o partido mudou muito mais do que eu. Não me considero “traído” como tantos, e reconheço que ainda há quadros muito bons. Tampouco nego que foram realizadas transformações profundas, em particular na esfera federal. Mas é evidente que o PT hoje passa longe da reserva moral e que a falta de escrúpulos nas alianças permite até afagos na família Sarney. Fica cada vez mais claro que a continuidade no poder só daria razão aos que defenderam o caminho torpe ali dentro. Continuísmo é ruim para o país, mas é pior ainda para o partido.

Se alguém ainda duvida que o terceiro mandato seria danoso para a legenda, basta observar o que dois deles fizeram com o PSDB – hoje uma sombra decrépita do movimento de reação à crise de valores do PMDB que o originou. A isso posso juntar minha desconfiança da autonomia/capacidade de Dilma, e tenho na a insatisfação com a tal “transferência de prestígio” a cereja do bolo para descartar qualquer possibilidade de votar nela para presidente.

Infelizmente, esse estado de coisas do PSDB (sem contar a aliança com o “Democratas”) tira o Serra da jogada para mim (uma pena, já que minha histórica antipatia por ele cada vez mais se revela puro pré-conceito – muita gente de bem diz que ele, pessoalmente, não é nada do que pregam). Plínio é anacronismo demais pro meu gosto, o que me levou a considerar (e, por fim, votar em) Marina Silva (43), do PV.

O Partido Verde deveria ter sido a primeira opção avaliada, levando em conta minha simpatia pelos verdes no Brasil e no mundo (que, ao contrário do que muitos pensam, não defendem “as plantinhas”, e sim modelos sustentáveis de desenvolvimento, nos quais leva-se em conta sim que as pessoas têm que colocar comida na mesa, mas que isso não pode ser à custa da saúde ou do futuro da humanidade) e também o fato de que eles já oferecem Ricardo Young (430) como uma excelente opção para o Senado. Este último, aliás, complemento com Marta Suplicy (133) – que tem currículo e serve para reiterar que não creio que o PT “se perdeu”, apenas não deveria assumir o terceiro mandato presidencial.

Confesso que declarações ambíguas de Marina sobre assuntos do meu interesse, como a liberdade de culto (em particular dos sem-culto, i.e., ateus), a legalização do aborto, a descriminalização da maconha (dois itens cuja correlação com melhorias nos mais diversos índices sociais me parece óbvia) e o casamento gay (um direito fundamental num estado laico e igualitário) me deixaram com um pé atrás no início. Mas é fato que não se faz campanha no Brasil (país “110% católico”, como disse certa vez João Pedro Stedile) empunhando estas bandeiras com afinco, então relevo um pouco.

No geral o partido tem programa, possui quadros e simpatizantes capacitados para assessorar (isso é tão importante quanto a capacidade do presidente em si), e a candidata tem garra e princípios. Não dá pra pedir muito mais que isso – ainda mais num pleito onde candidato a senador que bate em mulher (Netinho) e candidato a deputado não-alfabetizado (Tiririca) lideram as pesquisas (nenhum preconceito contra analfabetos, mas eles são inelegíveis: é lei, e não é à toa), então fecho com ela.

Para Deputado Federal, o Alê Yousef (4340) foi uma ótima dica do Barba – segue uma linha de transparência online e de botar as cartas na mesa em assuntos como os discutidos acima. Foi chefe de gabinete da Soninha Francine (que eu lamento profundamente não ser candidata) e isso tudo garante a ele meu voto.

Na esfera estadual não estou tão assertivo, mas voto em Aloízio Mercadante (13) para governador. Novamente vale a pena injetar mudança: a política educacional em particular deixou a desejar nesses anos de PSDB. Mercadante promete acabar com a aprovação automática – um câncer de manipulação de dados que eu vi nascer bem de perto quando era programador na Secretaria de Estado da Educação (há quase 20 anos), e que só se fez alastrar até hoje. Quero ver isso.

Me falta um nome para deputado estadual, então minha opção é pela legenda (PV – 43), que, por afinidade ideológica agiria como apoio e bússola moral num governo de estado do PT, e pelos mesmos motivos como oposição consciente ao PSDB, favorito nas pesquisas. Ou ao menos é o que eu espero…

UPDATE: Os últimos posts do blog do FMC (aka Chicão ou Dr. FMC), amigo dos tempos de BBS, me fizeram ver que o voto mais coerente para garantir a “bussola moral” ao governo estadual seria no PSTU (50), e é com eles que eu vou. Ou seja, minha “cola” atual é 43-430-133-4340-13-50!

JavaScript: The Good Parts (O Melhor do JavaScript)

27 Sep 2010 | Comments

Douglas Crockford, autor de JavaScript: The Good PartsNão ia escrever sobre esse livro, simplesmente porque não teria muito a acrescentar, mas o Lucas me convenceu de que valeria a pena nem que fosse só pra convocar as pessoas a ler. Se você programa em JavaScript (mais ainda: se não programa ou não gosta dela por ter tido experiências ruins), preste atenção:

Douglas Crockford é possivelmente um dos caras que mais manjam de JavaScript do mundo: um dos responsáveis pela padronização e disseminação do JSON, ele teve papel fundamental nos comitês que deram (e ainda dão) o rumo da linguagem – quem foi ao QCon teve a oportunidade de ouvir algumas histórias “do front” em primeira mão.

Ele começa desmontando o primeiro mito comum sobre a linguagem: revela que JavaScript não é um mero subset de Java (embora esse fosse o “argumento de venda” nos seus primórdios), e sim algo mais parecido com Lisp ou Scheme: uma linguagem funcional extremamente poderosa, que permite escrever código muito elegante – se for usada corretamente.

Muitos dos problemas que eu tive no passado com JavaScript eram causados por desconhecer este aspecto da linguagem. Ao tratá-la como uma linguagem script qualquer, não apenas eu escrevia muito mais código do que o necessário, mas também encontrava erros difíceis de debugar porque a abstração de Java/C que eu projetava nela simplesemente não correspondia à realidade. Como disse o Crockford no já mencionado QCon, “programar em JavaScript sem entender closures é como programar em Java sem entender classes”.

Com esse elefante fora da sala, o livro começa a mostrar como as coisas realmente funcionam na linguagem. E nesse ponto vem a explicação do título original: ele argumenta que algumas partes da linguagem simplesmente não se prestam à construção de código de qualidade, convidando o leitor a esquecê-las sem cerimônia! O livro se concentra nos construtos e conceitos que você precisa entender para escrever código que adere à característica funcional e prototípica da linguagem, em detrimento de tentar emular o que se faz em outros ambientes (em particular em linguagens OO como SmallTalk e Java).

No final ele lista as “partes ruins” (bem como as “partes péssimas”), detalhando em cada caso se a questão é conceitual (como no caso das variáveis globais), de implementação (o suporte a Unicode limitado em 16 bits é um exemplo) ou um conflito entre escolhas de design (ex.: ter um tipo único obriga a aritmética a trabalhar sempre com ponto flutante, o que nem sempre é uma boa idéia). Temas correlatos como JSLint e o já mencionado JSON encerram a exposição com chave de ouro.

É uma leitura excelente, mesmo para veteranos em JavaScript – desde que estejam abertos a uma revisão de conceitos. Ganharão em troca uma relação renovada com a linguagem, e entenderão porque seu uso pipoca até além das barreiras do browser – não que o uso neste já não fosse o bastante para torná-la uma das linguagens mais usadas da atualidade e justificar um carinho especial para com ela.

Optei pela edição nacional (“O Melhor do JavaScript“) pelo preço e disponibilidade, e me surpreendi com a qualidade da tradução. Os códigos têm seus comentários traduzidos, mas variáveis e todo o resto ficam intactos (isso é importante quando o autor começa a viajar, ex.: definindo “that” como complemento a “this”). Tirando e pequenos detalhes de editoração (ex.: o uso de aspas simples que “abrem e fecham” no código, coisa que não rolaria na vida real), a adaptação é bastante competente.