A saga do community college canadense

Essa é uma boa vantagem de se mudar pro exterior: todo mundo acha que você está no topo do mundo, acendendo charuto com nota de 100 dólares e tal. Quando eu falo que vim “estudar fora”, nêgo acha que fui fazer mestrado em Harvard. Na verdade, eu fiz um curso que não vale nem um bacharelado em uma escola que não é nem uma faculdade. 

Bem-vindos ao mundo do community college!

Prólogo: Como assim “community college”?

community college é tipo uma “meia-universidade”. É um conceito difícil de entender porque não tem equivalente no Brasil. Na terra da Dilma do Temer, mesmo que você estude numa uniesquina da vida, no fim tu ganha um diploma e recebe o grau de bacharel, reconhecido pelo MEC e tudo. No caso do college, ele te dá um título de “meio-bacharel”, já que o curso tem metade da duração (2 anos). Pra piorar a confusão, o título que o aluno recebe no final chama-se… diploma.

Meu caso é menos pior: como meu curso tem 3 anos, no fim eu receberei um glorioso… (soem os tambores)… advanced diploma de engenharia de software. E como eu já tenho um bacharelado, eu consigo completar o curso em 2 anos e ainda fazer dois semestres de estágio (o tal do co-op que já comentei aqui).

O público-alvo do community college é, basicamente, a sobra do público-alvo das universidades – gente que não passou, que não consegue pagar, etc. Por isso, quando me matriculei, já vim esperando o pior.

O curso termina semana que vem e, depois de seis semestres, posso afirmar que minhas expectativas foram totalmente superadas… para pior, obviamente. Pra vocês sentirem o drama, vou contar pra vocês os causos separados por curso.

Curso: “Comunicação acadêmica”
Proposta do curso: Ensinar inglês no contexto acadêmico, como escrever relatórios, etc.
O que aprendi: Como provar que não colei ao escrever minha “redação-hambúrguer”.

No meio do semestre, o professor sorteou uns temas e deu um trabalho de pesquisa pra fazer em casa. Coisa séria, tinha que escrever cinco páginas no “padrão ABNT” daqui, citar outros textos, troço cheio das nove horas. Como eu gosto de escrever (e de padrões), fiz um textão fuderoso, formatei impecavelmente, e mandei.

Na semana seguinte, chega um email do professor me chamando pra uma reunião com ele antes da aula. O email não mencionava o motivo nem nada. Achei esquisito, mas confirmei. Chegando lá, o cara me solta a bomba…

– Então, como você bem sabe, a minha turma só tem estudantes internacionais e eu sei que o nível geral de inglês é bem básico…

“Bem básico” é elogio – muita gente na minha turma simplesmente não conseguia se comunicar em inglês. Sem exagero: se o prédio pegasse fogo e a pessoa precisasse discar 911 pra pedir socorro, ela morreria queimada. Mas o meu college não quer perder matrículas, então aceita esse povo mesmo assim.

O professor continuou:

– Eu recebi as redações da turma e não entendi nada, porque praticamente todas elas vieram com um inglês impecável. Então estou achando que não foram eles que escreveram. A sua redação, particularmente, estava muito boa, então eu preciso que você me prove que foi você mesmo que escreveu.

E aí ele me fez um monte de perguntas sobre o tema, sobre por que eu escrevi o que escrevi, e acabou convencido. O resto da turma ficou com zero e levou um belo torra.

Essa história da cola – ou “desonestidade acadêmica”, em termos mais educados – é uma das coisas que mais me incomodou.

Curso: “Negócios e tecnologia da informação”
Proposta do curso: Ensinar tudo aquilo que todo bom programador não se interessa em saber.
O que aprendi: Tudo sobre náutica e sobre o mercado imobiliário de Toronto.

Bob, o professor deste curso, ficava se gabando o tempo todo de ser o coordenador do curso de Gerenciamento de Projetos da Universidade de Toronto (a “UFMG” ou “USP” daqui, em termos de reputação). No entanto, todas as aulas do Bob se resumiram a:

  • Bob contando que tem um barco e de tudo que faz com o bendito barco.
  • Bob contando de quando ele trabalhava na Xerox em 1980.
  • Bob contando que vendeu a casa e comprou um apartamento.
  • Bob contando que tem uma namorada – que também vendeu a casa e comprou um apartamento.
  • Repita os assuntos acima até a exaustão.

Mas o mais legal foram as provas que fizemos, que tinham uma inovação surpreendente: questões repetidas. O cara reaproveitava questões de provas passadas nas provas seguintes. Não era nem uma paráfrase – as questões eram idênticas. E, pra melhorar ainda mais: as questões eram todas copiadas da internet, do site da editora do livro que ele (não) usava no curso.

Eu parei de assistir a aula do Bob logo no primeiro mês do curso. E fiquei aliviado de não ter torrado dinheiro e tempo na Universidade de Toronto…

Curso: “Conceitos avançados de bancos de dados”
Proposta do curso: Ensinar conceitos básicos de bancos de dados.
O que aprendi: Sempre pode piorar.

Esse curso foi tão ruim, mas tão ruim, que no lugar das minhas anotações de aula eu fiz uma lista das cagadas do professor, pra reclamar depois. Saca só a lista:

  • Numa aula, ele projetou uma lista com uns 25 itens sem o menor sentido e falou: “isso é o trabalho de conclusão de curso de vocês”. Depois, ao invés de mandar pra todos uma cópia da lista, ele mandou a gente anotar manualmente os itens, porque assim a gente seria “forçado a prestar atenção neles”. Na semana seguinte, como ninguém tinha entendido o que ele queria que fizéssemos, uns alunos foram tirar as dúvidas com ele. Ele ficou furioso: “mas eu já falei!!!”
  • Numa aula prática, ele deu pra turma uns 10 exercícios… todos com a mesma resposta. Pra piorar, o enunciado das questões era algo tipo “escreva uma consulta para extrair dados da tabela XYZ”. Adivinha se ele deu pra gente a estrutura e/ou o conteúdo da tabela XYZ?
  • Vários exercícios de “extraia os dados do banco de dados” não tinham resposta ou a resposta era um conjunto de dados vazio, tipo, “escreva uma consulta para calcular o total de vendas do usuário John Smith”, e a tabela de dados nem tinha um John Smith.
  • Várias aulas terminaram mais cedo porque ele olhou pra turma e falou: “vocês estão com cara de cansados”.
  • No meio do curso ele inventou de usar uma ferramenta da Adobe para aulas online. Aí ele passava metade do tempo da aula configurando a ferramenta, enquanto a gente olhava pra parede. Na segunda metade da aula o troço não funcionava e, quando a gente questionava, ele respondia: “vai digitando aí!”.

Curso: “Tecnologias emergentes”
Proposta do curso: Falar do que há de mais recente no mercado de software. Só que o professor usava slides com dados de 2001…
O que aprendi: A pagar o pato da turma que fica copiando trabalho.

Quase teve guerra civil nesse curso. Logo no começo do semestre o professor deu um trabalho em grupo pra turma, e obviamente a cola foi desenfreada. Por algum motivo eu me esmerei muito mais do que o normal com esse trabalho e entreguei o código-fonte mais lindo da minha vida, um primor de software, Bill Gates ficaria orgulhoso.

Na semana seguinte da entrega do trabalho, o professor mandou um e-mail cabeludíssimo pra turma toda, dizendo que tinha analisado minuciosamente todo mundo que colou e que ia mandar os nomes todos pra coordenação do curso caso as pessoas não assumissem a cola. Nem precisa dizer que eu fiquei rindo até a orelha quando vi esse e-mail.

Minha alegria durou só até o dia da próxima aula. O professor voltou atrás do nada e decidiu que, como tinha muita cola, ele ia cancelar o trabalho e redistribuir os pontos de outro jeito. Eu quase surtei – juntamente com a outra meia dúzia (literalmente) de gente que tinha feito o trabalho honestamente, e só depois de muita briga com o bendito do professor é que ele aceitou manter as coisas como estavam.

Cursos: “Integração de sistemas” e “Data warehouse”
Proposta dos cursos: Não sei, parei de me importar com isso.
O que aprendi: A ignorar o fato de que eu paguei o salário desses professores inúteis com o dólar a R$ 3.

Esses foram, de longe, os “melhores dos piores” cursos. Toda semana tinha uma aula teórica e uma aula prática, cada um com um professor. O da teoria chegava na aula atrasado, projetava o primeiro slide, depois tergiversava o resto da aula sobre como esse conhecimento é importante para o mercado, que os salários são ótimos, que a gente tinha muito que aprender aquilo… basicamente, passava a aula falando que o conteúdo era muito importante e não explicava a porra do conteúdo. Aí a aula acabava, ele notava que não passou do primeiro slide, e mandava o povo ler as coisas em casa.

Um dia ele deu uma prova e eu fiz uma pergunta sobre uma das questões. A resposta dele foi rir da minha cara – literalmente – e dizer que “se eu prestasse atenção nas aulas eu saberia”. Eu escrevi uma reclamação formal no papel da prova, dizendo que essa não era a postura que eu esperava de um professor. Ele me respondeu por e-mail alguns dias depois, reclamando que a culpa era minha de ficar o tempo todo no laptop durante as aulas.

Detalhe: o laptop é porque, ao invés de usar lápis e papel, eu faço as anotações das aulas no Evernote. Ou melhor, fazia, porque depois dessa palhaçada eu desisti de frequentar as aulas desse cara.

Ah, e tem o professor da aula prática, que era ainda mais perdido – mas perdido no nível de confundir o dia/horário da aula e simplesmente não aparecer, e de quando aparecer, entrar na sala e perguntar “o que eu tenho que ensinar hoje mesmo?”.

Mas é tudo choro e ranger de dentes nesse seu curso?

Apesar da maior parte dos professores serem desastrosamente ruins, os bons deram cursos bem produtivos. Nunca vou me esquecer da primeira aula de programação de jogos pra web, por exemplo: logo na primeira aula o cara botou a gente pra usar umas DEZ ferramentas/linguagens/tecnologias diferentes logo na primeira meia hora de aula – basicamente, ensinando a coisa mais importante em desenvolvimento de software: ficar confortável quando tu não tem a menor idéia do que está fazendo.

Teve também um professor de “APIs e microsserviços” que protagonizou um dos momentos mais satisfatórios do curso. No final do semestre ele resolveu que, ao invés de uma prova final, a turma faria um projeto de software e teria que integrar umas três tecnologias diferentes e demonstrar no último dia de aula. A turma foi praticamente toda contra, com a desculpa de que já tinha “trabalhos demais”, mas o motivo real deles quererem a prova é que ela é mais fácil pra colar…

Quando o professor anunciou o trabalho, um dos alunos – obviamente um dos grandes coladores – fez uma cara de coitadinho e um discurso triste de que ele tinha num-sei-quantos trabalhos pra entregar nas próximas semanas.  O professor deu a resposta mais linda de todas:

Amigão, o choro é livre. Imagina se você tá no trabalho, seu chefe chega pra você e fala ‘cara, eu preciso que você faça um projeto integrando esse e esse sistema, é pra daqui a duas semanas’. Você vai virar pra ele e falar ‘ah cara, não quero fazer isso não, será que tem como você me dar uma prova ao invés disso’?”

Entre todos os alunos com quem convivi, salva-se só algo tipo 2% da turma. Destaque para – sem bairrismo, juro! – a turma da américa do sul e da américa central: 

  • Fui fazer um trabalho de Java com uma venezuelana e empaquei numa parada maluca que o professor não sabia explicar e cuja documentação online parecia grego. A menina ficou acordada até as três da manhã só pra resolver o negócio.
  • Tinha também o “mexicano mágico”: no grupo do curso de Android eu estava fazendo o papel de “arquiteto de software” e volta e meia eu soltava umas ideias meio vagas, tipo “isso aqui devia ser um singleton” ou “podíamos usar Retrofit nessa integração”. O cara pegava essas frases soltas e, sem pedir explicações, aprendia as paradas por conta própria e, alguns dias depois me aparecia com os troços lindamente integrados no projeto e funcionando redondinhos.
  • Num dos meus empregos de meio-período, na escola mesmo, trabalhei com uma brasileira que fazia o design das telas do sistema e eu implementava. Normalmente, designer costuma ignorar a parte técnica, pedir uns troços impossíveis de implementar e depois reclamar que não tá bom. Essa menina era o oposto – ela lia a documentação técnica do projeto, entendia o que era possível ou não e só depois desenhava. Chegava a escorrer uma lagriminha de alegria quando ela me mandava um layout novo…
  • Por fim, o melhor programador que conheci ao longo destes dois últimos anos por aqui foi um colega paulistano. Trabalhei com ele num projeto onde deram pra gente um sistema antiquado e pediram pra acrescentar um monte de novas funcionalidades. O cara sugeriu reescrever o sistema do zero usando uma tecnologia mais moderna. Pra provar que essa seria a solução mais eficiente, refez o sistema inteiro… em DOIS DIAS.

Epílogo – Valeu a pena?

Bom, esse calvário todo foi a forma que eu escolhi pra me atualizar pra trabalhar de novo com software sem quebrar (muito) as minhas economias, usar os estágios pra pavimentar o caminho pra um bom emprego, conseguir um visto de trabalho pra digníssima e também os futuros requisitos pra residência permanente. E todos os objetivos foram cumpridos.

Pensando racionalmente, acho que a minha decepção é um tanto quanto injusta. Eu não podia mesmo esperar educação nível MIT pagando o preço de Uniesquina. No entanto, não sei se recomendaria esse mesmo caminho para outras pessoas. Talvez valesse mais a pena economizar mais um bocado e pagar por um mestrado ao invés de outra (meia) graduação.

Mas o que importa é que deu certo, estou plugado de novo na Matrix, e não pretendo mais tomar a pílula azul.

A política de backup d’O Primo

Já que estamos há MESES sem assunto por aqui, vamos fazer um momento “utilidade pública” e falar de uma coisa importante mas que ninguém comenta: backups.

Sim, backups. Fazer backup é um saco, pouquíssima gente faz, daí um dia seu HD resolve fritar e aí, meu caro, TREVAS. Eu digo isso por experiência própria: em 2003 eu perdi um HD de 40GB com tudo meu dentro. Até hoje eu, que sou desapegado pra tudo nessa vida EXCETO arquivos de computador, sinto falta de algumas coisas que tinham nele.

Mas eu aprendo com meus erros, e desde então eu possuo um esquema todo especial para backups. Eu tenho orgulho dele: primeiro porque é uma nerdice das grossas – e por isso estou contando aqui, pra você ficar rindo da minha cara -, segundo porque ele já me salvou a pele várias vezes.

É um esquema complexo, mas que é:

  • Simples de usar
  • Não depende de ferramentas especializadas de backup (acho todas lentas e platform-specific demais). Eu uso apenas um programinha free de sincronização da Microsoft, chamado SyncToy. Ele é simples e rápido, e é só disso que eu preciso.
  • Usa pouquíssimo hardware adicional: um HD externo (de 500GB, mesmo tamanho que o do notebook), um pen drive de 8GB e meu iPod (de 160GB).
  • Não depende de conexão internet (porque cada hora pego uma pior que a outra em cada hotel/cliente que visito)
  • Isola fisicamente as mídias de backup para minimizar perdas caso eu seja assaltado na rua ou caso invadam minha casa (eu penso nisso mais do que devia, confesso)
  • Não me toma muito tempo pra atualizar, e
  • É customizado para maximizar a segurança de cada tipo de coisa que preciso backupear.

Para cada tipo de dado que eu backupeio existe um processo específico, baseado na frequência de modificações que aquele conteúdo sofre e no quanto aquele dado é precioso/inestimável pra mim (não falei que você ia rir da minha cara?).

A coisa toda é mais ou menos como na figura abaixo:

Esquema de backup

Minha principal “instância” de backup é o HD externo de 500GB. Ele guarda tudo: músicas, fotos, arquivos pessoais e de trabalho. Todo sábado eu espeto o HD no notebook, abro o SyncToy e em questão de minutos tá tudo backupeado. Mas esse é o “varejão”: os arquivos mais importantes/valiosos tem backups adicionais. Os meus 40 GB de MP3, por exemplo, são objeto de uma constante curadoria e possuem valor inestimável, portanto, além do HD externo, elas também ficam no iPod. Então eu tenho minha music library, inteira, sempre em TRÊS lugares diferentes: o notebook, o HD externo e o iPod. Além disso, os 16GB mais “recentes” da minha library sempre estão também no iPhone – o que ainda é um “semi-backup adicional”.

Já os arquivos de trabalho, além de backupeados, ficam também criptografados, porque senão quem me roubar terá acesso fácil a dados confidenciais das inúmeras empresas que atendo/atendi. Assim sendo, eu guardo minhas coisas de trabalho em dois  “drives virtuais”, um de 5GB (para arquivos recentes, de projetos em andamento) e outro de 10GB (para projetos encerrados – meu “arquivo morto”), criados com o TrueCrypt. TrueCrypt é lindo: é encriptação military-grade e de graça. Quando chego no trabalho, eu pressiono uma combinação especial de teclas, digito uma senha enorme (mais de 20 caracteres) e voilá, aparece um novo drive no meu Windows Explorer com todos os meus arquivos de trabalho, organizadinhos. Se eu dou um “lock” (Win+L), desligo ou hiberno o computador, o TrueCrypt automaticamente “tranca” novamente meu drive virtual, então não tem sequer o risco de roubarem meus arquivos enquanto eu não estou em frente ao notebook.

Mas a maior praticidade desse “drive virtual” do TrueCrypt é que ele fica todo armazenado num “arquivão” único de extensão .tc, encriptado, que eu guardo na minha pasta “Meus Documentos”. Assim sendo, quando eu faço meu backup para o HD externo, os arquivos de trabalho são backupeados também. Só que eu mexo nos meus arquivos de trabalho todo santo dia, então se me roubarem no ônibus de volta pra casa eu poderia perder semanas de trabalho. A contramedida pra isso é simples: todo dia, antes de ir embora, eu enfio meu pendrive no computador e faço um rápido “sync” do meu drive virtual de trabalho com uma réplica dele, que fica no pen drive, também encriptada. E carrego o pendrive no bolso, para o caso de roubarem minha mochila com o notebook dentro. Essa “paranóia extra” me salvou a pele recentemente – não porque fui assaltado, e sim por um problema no notebook. Mas essa é uma história para outro post.

Apesar de bem planejado, meu sistema de backup ainda tem falhas: meus emails e calendário de compromissos, por exemplo, ficam todos no Google, e só lá. Claro que se me assaltarem eu não perco nenhum arquivo, mas ainda assim há o risco de descobrirem minha senha e “sequestrarem” minha conta. Outra falha é que no sábado todos os meus discos de backup estão fisicamente no mesmo lugar (meu apartamento), então se ele pegar fogo ou for assaltado eu perco tudo de uma vez. E ainda outra falha é que podem me obrigar, por coerção, a dar a senha dos meus arquivos de trabalho – e olha que o TrueCrypt tem um recurso de plausible deniability justamente pra esses casos, eu é que não configurei ainda.

Mas, paranóias à parte, fica a dica: é MUITO recomendável que você faça um backupzinho dos seus dados – mesmo que em DVD ou só de vez em quando. Confie em mim: você vai precisar.

O Primo’s Data Transformation Saga

network Era dezembro do ano passado e, enquanto todos achavam que a década estava acabando, eu me perguntava como iria fazer para ganhar dinheiro em janeiro, já que recebo por dia trabalhado e meu cliente brasiliense e governamental iria, obviamente, trabalhar a 10% de sua capacidade entre o Natal e o carnaval – o que significava “férias forçadas” pra mim.

Daí me toca o telefone. Era o consultor-líder de outro projeto, perguntando se eu podia ajudá-lo, em janeiro, a desdobrar umas metas de venda para o departamento comercial de uma empresa. Era uma semana de trabalho – mas trabalho chato, de micreiro. Só que iam me pagar como consultor-sênior e o trabalho era a exatamente dois quilômetros da minha casa, em São Paulo.

Então lá fui eu topar tudo por dinheiro no palco.

Acontece que esse negócio de “desdobrar meta” não é nada simples: é pegar uma meta de alguns BILHÕES de reais e dividí-la para cada um dos SESSENTA MIL clientes, o que obviamente envolve muitos dados. Tradicionalmente, meus colegas consultores – que raramente são profissionais de TI – sempre deram um jeito de fazer o trabalho com a única ferramenta que conhecem: “programando” com fórmulas de duas, três linhas de comprimento em planilhas de Excel enormes, facilmente propensas a erro e cuja manutenção é um pandemônio. E normalmente eles não conseguem porque esbarram nas limitações “físicas” das planilhas do Excel, que “só” aguentam um milhão e quarenta e oito mil linhas.

Aí você pensa: “Isso é muita gambiarra, é praticamente um data warehouse feito em Excel, vocês deviam arrumar alguém de TI pra construir um sistema pra isso”. Mas meus colegas consultores, ao invés de pensar nisso, dizem: “Não cabe no Excel? Então vamos fazer no Access, que aguenta mais linhas!”. E ao invés de abandonar a gambiarra eles vão para um software aonde cabem ainda mais gambiarras.

AccessError

O Microsoft Access é um enigma pra mim. Ele é marqueteado como um banco de dados para aplicações simples, como um sisteminha de vendas e estoque pra tia Neusa, dona da papelaria da esquina. Ou seja, o Access te entrega toda a funcionalidade complexa de um banco de dados (integridade referencial, consultas em SQL, etc.) para situações onde um caderninho de estoque ou uma planilha de Excel resolveriam. E quando você tenta usar o Access como um banco de dados de verdade, descobre que ele é absurdamente lento e armazena no máximo 2 gigabytes de dados.

E então você lembra dos bilhões de reais da meta divididos entre os milhares de clientes e pensa: “Ah, então é nessa hora que eles arrumam alguém de TI pra construir um sistema decente pra fazer o trabalho, né?”.

Não, meus caros. É nessa hora que eles me ligam.

E o meu trabalho ainda tinha mais alguns agravantes:

  • Eu tinha que entender um desdobramento antigo que havia sido feito por outro consultor pra poder descobrir como desdobrar a meta nova. Felizmente ele tinha deixado um “passo-a-passo” de como atualizar tudo… um passo-a-passo com sessenta e cinco passos do tipo “Execute a consulta X no arquivo Y”, “Importe os dados da tabela Z no banco de dados K”, “Copie os dados da coluna G da planilha XPTO do Excel para a coluna F da planilha Y”, e por aí vai. Era o equivalente digital da foto do começo deste post.
  • O último nível de desdobramento (o dos clientes) estava todo feito usando o CNPJ do cliente, e me pediram pra abandonar os CNPJs e fazer tudo com um tal “código de cliente”. E tem CNPJs que tem dois códigos de cliente vinculados. E tem clientes novos que não tinham meta no desdobramento velho e tinham que receber meta no novo.
  • Eu deveria desdobrar todas as metas para 2010. Os dados para um mês de metas ocupavam 2GB no Access. E o Access tem aquele limite de no máximo 2GB por arquivo, então eu normalmente trabalhava migrando dados de um arquivo Access para outro e esperando esse outro arquivo entupir e o Access dar pau. Aí eu migrava tudo de novo pra um terceiro arquivo, e assim por diante.
  • Eu tinha que trabalhar no Access evitando ao máximo consultas do tipo união (UNION ALL no SQL) e subconsultas (consultas dentro de consultas), porque qualquer um desses dois recursos colocava o Access no modo “velhinha de óculos com uma caneta marca-texto e uma régua comparando os dados de duas folhas de papel linha a linha”. Ou seja, era MUITO lento. E ainda assim, usando as consultas “rápidas” do Access, eu levava mais ou menos uma hora para desdobrar cada mês de dados de metas. Qualquer erro no desdobramento poderia implicar num retrabalho de, no mínimo, mais doze horas. E eu tinha apenas 40 delas disponíveis pra terminar tudo.

E foi assim que passei a semana perdido entre dezenas de Excéis e Acceses, empurrando dados de um arquivo pra outro. Tinha uma planilha que era tão complexa que, depois de qualquer mexidinha nela, o Excel travava por quinze minutos recalculando as fórmulas e referências cruzadas. Minha sequência de trabalho envolvia tantas coisas em paralelo que eu tinha que desenhar fluxogramas numa folha de papel, indicando aonde eu estava e como os dados iam de um arquivo pra outro, senão eu me perdia. Ontem foi o último dia de trabalho. Eu almocei um McDonalds em frente ao computador, sobrevivi o resto do dia à base de café e uma tortinha de maçã (também do McDonalds) e, lá pelas oito da noite, quando minha cabeça já doía e eu já apertava Enter pensando “ok, dê-me logo o próximo pau que vou ter que resolver”, eis que me aparece a tabela final, com as metas novas, certinhas e todas divididas por cliente.

Sabe, é um trabalho tão frustrante e gambiarrado que no fim você não tem exatamente aquela sensação de dever cumprido: é mais um misto de alívio por ter conseguido sair vivo do outro lado do buraco. Mas pelo menos fiquei menos falido nesse começo de ano…

Pequenas sagas do meu filho devorador de tweets

Quando me perguntam quando é que eu vou ter filhos, usualmente eu respondo:

– Eu já tenho um cachorro e um website, e eles já dão trabalho suficiente.

As encrencas que Pavlov me arruma eu já vivo contando por aqui. Já as do Blablabra

Mini-saga 1: O backup que desbeckapeia

Foi assim: era sexta feira e eu estava mexendo na parte do código do Blablabra que separa as palavras de dentro dos tweets. Era cedinho e eu havia acabado de colocar uma alteração na versão de produção (a que fica no ar), e notei que uma coisa estava errada e algumas palavras poderiam estar sendo duplicadas na tabela onde elas ficam guardadas. “Ah, tudo bem. Vou voltar um backup e consertar os registros errados”.

Aí fui lá no painel de controle do meu provedor de hospedagem (Dreamhost) e mandei voltar o backup de duas tabelas – tabelas que, é bom salientar, são o “coração” do site. Como elas são enormes (a maior delas tinha DEZ MILHÕES de linhas na época), deixei o backup restaurando e fui fazer outras coisas. Aí chega um email todo serelepe do Dreamhost, avisando que o backup havia sido restaurado.

Maravilha. Me ajeitei na cadeira, dei aquela esticada nos dedinhos sobre o teclado e falei, sorridente: “Vamulá acertar isso agora”. Tentei abrir uma das tabelas e… erro de “Table not found”. Tentei abrir a outra e deu o mesmo erro. Achando aquilo meio esquisito, resolvi olhar o banco de dados e meu queixo caiu: não somente o backup não havia sido restaurado como as tabelas originais haviam sido apagadas.

Sim, as tabelas tomaram Doril e simplesmente desapareceram. Aí eu morri, ressuscitei, fiquei branco de medo, vermelho de raiva e, sobretudo, furioso pela injustiça da coisa toda: pô, eu teoricamente tomei minhas precauções, eu tinha backups, backups são como uma vacina para a lei de Murphy, eles são feitos pra SALVAR a sua vida nessas horas – não complicá-las ainda mais!

Então, com o coração na boca, abri um chamado no suporte do NightmareHo… digo, Dreamhost. Eles tem uma opção no formulário que serve pra você indicar a gravidade/urgência do problema e eu fiz questão de escolher a mais séria delas, intitulada: “OMG TÁ TUDO DANDO PAU TEM GENTE MORRENDO!!!!” (não, isso não é exagero, a opção do menu deles tem exatamente este texto). E ainda assim eles demoraram QUATRO HORAS para me responder. E ainda disseram:

“Pedimos desculpas. Tudo que eu posso fazer é restaurar um backup mais antigo do seu banco de dados que esteja funcionando”.

Só que isso ia me fazer perder AINDA MAIS dados de outras tabelas. O retrabalho seria enorme, eu perderia umas 24 horas de tweets monitorados e, pra piorar, dali a algumas horas eu tinha pegar Bethania no trabalho e, de carro, viajar 600 kms para passar o fim de semana em Belo Horizonte.

A sorte é que ela foi bastante compreensiva e me deixou ficar o sábado e o domingo debruçado em cima do notebook, pegando carona no wi-fi da casa da sogra e reprocessando MILHÕES de tweets gravados na base para recompor as tabelas perdidas. Era a opção menos pior – e mais rápida, considerando que a simples troca de dois emails com a turminha do Dreamhost levou quase oito horas. Mas no fim deu tudo certo e o Blablabra se recuperou plenamente de sua primeira grande baleiada.

Mini-saga 2: O backup que AINDA desbeckapeia

Aí ontem, depois do almoço, eu estava dando uma conferida nos trending topics do Blablabra quando o site, de repente, sai do ar. E não somente o site: o banco de dados não entrava mais, FTP caiu, Shell/SSH caiu, e até este blog, que fica na mesma hospedagem, havia ido pro limbo. “Pfft, aposto que alguém chutou a tomada do servidor lá no Dreamhost”, pensei.

Deve ter sido o caso, porque uns cinco minutos depois foi tudo voltando pro ar. Só que o Blablabra parou de mostrar os gráficos e os resultados das buscas. Fuça daqui, fuça dali, e achei o problema: uma tabela corrompida no banco de dados.

Acontece que não era uma simples tabela: era uma daquelas tabelas da mini-saga anterior. E, sim, era a de dez milhões de linhas – que, naquela altura do campeonato, já tinha VINTE milhões. Aí apertei o botãozinho vermelho que desliga tudo (bem, na verdade é uma variável de configuração do Blablabra cujo nome é, convenientemente, “SERIOUSLY_BROKEN_MODE”) e, com o coração na boca, fui pensar no que fazer.

É óbvio que “restaurar um backup da tabela” é a opção mais óbvia, simples e indolor, mas depois da saga anterior eu estava feito cachorro mordido por cobra que fica com medo de linguiça (especialmente agora, que não tem mais trema na palavra). Mas dessa vez não tinha jeito, eu precisava dos dados do backup, então fui lá e marquei uma opção de “restaurar a tabela com um nome diferente e não mexer nas tabelas originais”.

Enquanto o sistema restaurava os dados, fui pesquisar minhas opções e resolvi tentar dar um comando chamado REPAIR TABLE. Eu estava descrente, já que a tabela estava realmente detonada e eram vinte milhões de linhas. “Nunca vai funcionar”, pensei eu. Mas dei o comando mesmo assim e fiquei lá, com o coração na mão, feito um médico que deu um choque pra reanimar um paciente e agora está lá, olhando o monitor cardíaco, esperando que ele dê algum sinal de vida. Acontece que, no meu caso, este instante de suspense demorou mais de uma hora.

E quando eu já estava achando que era EU quem ia precisar de desfibrilador, *plim*! O “repair table” terminou de “repairzar” a tabela e – surpresa! – eis que ela havia ressuscitado dos mortos, perfeitinha, com todos os dados, como se nada tivesse acontecido. Deixei tudo funcionando e fui resolver outras coisas.

Aí, no finalzinho da tarde, eu fui checar meus emails e tinha um do Dreamhost, avisando que a restauração daquele backup que eu pedi havia terminado. “Bom, nem preciso mais da tabela antiga, deixa eu ir lá apagá-la”. No banco de dados a tabela antiga estava lá e havia sido restaurada com um nome diferente, do jeitinho que eu pedi. Só que a tabela original, a que eu tinha consertado milagrosamente… desapareceu.

Mas dessa vez foi mais fácil recuperar os dados. Bastou ficar urrando de ódio por uns cinco minutos, esmurrar bastante as paredes e depois reprocessar alguns milhares de tweets para recompor os dados perdidos…

Sobre a terceira dimensão, foie gras, browsers e largura de banda

Dia desses eu li, não lembro onde, que uma das estratégias de Hollywood para – adivinhe! – coibir a pirataria eram os filmes em 3D. Neles a “experiência” só é completa para o espectador se ele estiver no cinema, com os tais óculos especiais, então as cópias piratas não fariam sentido.

Mas hoje eu vi que a nVidia está anunciando uma tecnologia de 3D “real” para jogos de computador onde você usa – adivinhe! – óculos especiais e enxerga as cenas do jogo em três dimensões.

Aí eu fiquei pensando no futuro da pirataria de filmes, somei uma coisa com a outra e… adivinhe!

Hoje aconteceu a pesagem oficial do “Perder Para Ganhar” que a equipe aqui do projeto de Dead Cow City organizou. É um concurso inspirado no programa de TV homônimo, onde a meta era perder 5% do seu peso em um mês – e quem perdesse menos que isso pagaria para quem perdesse mais peso.

Sim, tinha dinheiro no meio. Sim, é ridículo. E, sim, eu estava participando. Mas eu empurrei a coisa com a barriga (hein, pegou essa) e não mudei muito minha rotina ou meus hábitos alimentares – que, felizmente, já estavam bem saudáveis desde meu último exame de sangue, que deu colesterol altchééézimo e uma leve esteatose hepática – vulgo “fígado gorduroso”. Sabe foie gras? Pois é. 

Saldo final da brincadeira: perdi 2,5 kg. E também 40 reais, já que fiquei bem longe dos 5% de meta.

Acabou que com o Firefox 3 eu abandonei mesmo o meu browser predileto: o Opera, que usei consistentemente pelos últimos cinco ou seis anos.

Tudo começou quando, no lançamento da versão 3, o Slashdot publicou um teste dizendo que o Firefox novo era muito mais eficiente no uso de memória que todos os outros browsers. Aí resolvi pagar pra ver, já que o abuso de memória do FF era um dos fatores que me afastava dele.

Em termos de velocidade o Opera continua sendo, comprovadamente, absurdamente mais rápido pra tudo – MENOS para as coisas do Google (Gmail, Google Reader, Google Calendar, etc), que uso o tempo todo. E aí veio o golpe de misericórdia: as extensões do Firefox, que nunca me atraíam o suficiente porque o que muitas delas faziam já era funcionalidade nativa do Opera. Acontece que eu só conhecia mas nunca tinha usado Greasemonkey, Firebug, FoxyTunes e a mais super-duper-útil de todas: Read It Later – a salvação dos que trabalham sob firewalls e precisam separar links para ver depois, na internet livre e desimpedida do hotel…

… que por sinal é excelente e me permite até o luxo de ver minha esposa pela webcam. E também meu cachorro, que fica desorientado quando ouve minha voz e não me vê no apartamento. Hoje ele até chorou, tadinho.

Quem diria: no século XXI, “largura de banda” significa “qualidade de vida”…

A série "bugs inacreditáveis" é, sim, uma série

Depois que escrevi o último post fiquei me lembrando das vezes em que esbarrei com problemas de computador, digamos, “desafiadores”…

Lá pelos idos de 1998 eu trabalhava no suporte de um provedor de internet chamado Easy Way. Uma vez fui atender um chamado de um cliente no Ed. Acaiaca, famoso prédio do centro de Belo Horizonte. As ruas no entorno do prédio estavam uma confusão porque um cara havia pulado do prédio e caído em cima de um táxi. Achei que aquilo seria a única coisa bizarra do dia…

A conexão (via modem, lembra?) do computador do cliente estava instável: discava, ficava um tempo e caía. Testei todo o básico (configurações da internet, linha telefônica, etc.) e nada de descobrir qual era o problema. Até que, num dos testes, eu larguei o mouse pra falar alguma coisa com o cliente e a conexão caiu no mesmo instante.

Parecia bruxaria, mas naquele estágio eu já estava acreditando em qualquer coisa. Aí mandei conectar e fiquei mexendo o mouse sem parar. Tudo funcionou. Então tirei a mão do mouse e… PLEC! Desconectado!

O diagnóstico? Bem, os nerds mais old school talvez se lembrem que os modems tinham duas configurações físicas, que se ajustava com um jumper, na própria placa: A porta serial (COM) e o canal de interrupções (IRQ). E o modem estava configurado pra usar o mesmo IRQ do mouse.

20080602_2
Um modem das antigas, com os jumpers da placa em destaque. Lembra?

Agora avance na linha do tempo de 1998 para 2008 e voilá! Estamos nos dias atuais, trabalhando com consultoria em gestão e usando um notebook Dell Vostro 1000, feio como a fome mas barato e funcional. Os tempos mudam mas os problemas bizarros continuam…

Sabe, tem certas funcionalidades tão básicas do seu Windows que você duvida que um dia elas vão dar problema – como o Ctrl+C, Ctrl+V ou o botão “Iniciar”. Eu também achava isso, até que, recentemente, precisei alternar para outro programa e o Windows cismou de não mostrar a famosa janelinha do Alt+Tab.

É isso mesmo, meu Alt+Tab parou de funcionar. Esta descrição por si só já é assustadora, mas o pior é que o Windows mostrava a janelinha com os programas abertos por uma fração de segundo – cada hora uma fração de segundo diferente – e depois sumia novamente.

Como todo bom ex-técnico de suporte, tentei isolar o problema: fechei todos os programas abertos, matei – um a um – todos os processos do Task Manager, entrei no Windows em modo de segurança, atualizei driver de vídeo, depois reverti para o driver que veio com o notebook, olhei BIOS… e o problema insistia em se repetir. Eu já estava começando a me conformar com um lento e doloroso system restore quando tive a idéia de testar se aquilo não era algum pau físico no teclado do notebook.

Baixei um tal Passmark KeyboardTest, programinha feito especialmente pra esse tipo de teste. É um belo programa: ele mostra a imagem de um teclado e indica visualmente quando alguma tecla é pressionada, mostra o código da tecla sendo recebido pelo sistema operacional, etc. Só que, sem que eu tocasse em NADA, o programinha mostrava a tecla “Power” sendo pressionada, religiosamente, de um em um segundo.

20080602

E sabe o que é pior? Meu teclado NÃO TEM ESTA TECLA!

Deu medo, mas na verdade a investigação do problema ficou mais fácil a partir desse ponto. No fim, descobri que um programinha que veio com o notebook – um tal Dell QuickSet, que interfere no teclado porque ajusta o funcionamento daquelas teclas customizadas para notebook (Fn+F8 para projetar num datashow, por exemplo) – não estava sendo iniciado junto com o Windows. Foi só rodar o programinha e a “tecla fantasma” parou de ser pressionada. O Alt+Tab voltou a funcionar corretamente e todos viveram felizes para sempre.

Quero só ver no dia em que eu resolver fazer o upgrade pro Windows Vista…

Da série “bugs espetaculares” (ou: TI não é uma ciência exata)

O post aí debaixo ficou pronto ontem, lá pelas onze da noite. Aí eu cliquei “Publish” e nada do WordPress postar.

Aí passei as últimas DUAS HORAS tentando descobrir por que o WordPress parou de querer postar coisas no blog. Reinstalei o WordPress duas vezes, chequei todas as configurações, testei com dois browsers diferentes, limpei o cache dos dois umas 10 vezes, fiz uns 15 posts de teste e… nada.

Aí comecei a tentar as alternativas menos óbvias e consegui resolver o problema. Era simples:

  • Com o computador conectado via wireless: NÃO funcionava.
  • Com o computador conectado via cabo de rede: Funcionou.

Agora me explica o que isso tem a ver com o problema…

TI: A loira gostosa mas limitada

Quatro e meia da tarde e eu estava no meio de uma reunião que começou às dez da manhã. Mentalmente exausto e absurdamente entediado, abri meu editor de texto (Notepad++) para fazer umas anotações. O programa automaticamente reabriu os últimos arquivos abertos: no caso, era um arquivo deste blog chamado .htaccess (arquivo de configuração usado em servidores web para configurar umas coisinhas).

Aí estava lá o .htaccess cheio de código e, num impulso, o primeiro pensamento que me veio à cabeça foi:

“Eu queria trabalhar é com isso”

Voltei pro hotel no fim do dia e, no táxi, não conseguia parar de pensar nisso. Eu tenho um amor platônico com essa mulher ingrata que é a TI. Ela é atraente, eu sou louco por ela e nos demos muito bem no nosso período juntos (uns 8 anos, contando empregos, estágios, faculdade e curso técnico). Já a minha “parceira” atual (a consultoria de gestão) é aquela mulher difícil, que dá trabalho e que te enche o saco o tempo todo. Ao contrário da TI, a convivência com a consultoria nunca é fácil – e é justamente por isso que você evolui. Eu levei muita porrada nos meus cinco anos de consultor – e devo continuar apanhando por muito tempo. Mas o que aprendi com toda essa ralação é incomensurável.

Foi por isso que o .htaccess me deixou com saudades da TI: antes éramos só eu e um computador, então tava tudo dominado, fácil, divertido e gostoso; hoje em dia tudo são reuniões infindáveis, clientes difíceis, colegas picaretas…

Entretanto, aprofundar minha relação com a TI seria um beco sem saída. Para nerds (como eu), TI é uma área sexy, interessantíssima, mas vai sempre ser “área meio”, sempre será ferramenta. E o “como usar” da ferramenta está na gestão. TI é meio que uma loira maravilhosa, mas limitada e sem muita chance de progredir na vida. E a gestão é a mulher feia e tosca, mas forte e decidida: é quem faz as coisas acontecerem.

Por isso, apesar do sofrimento, meu “casamento” com a consultoria foi a melhor escolha profissional que já fiz.

E mais: na época em que mudei de área eu nem fazia idéia, mas conhecimento gerencial faz toda a diferença quando se trabalha em TI. Pra provar isso, basta uma olhada nas faixas salariais da turma da tecnologia:

  • Analista de sistemas/programador – $57,500 a $96,750
  • Desenvolvedor web sênior – $76,250 a $108,250
  • Gerente de projetos – $76,500 a $111,500
  • Administrador de Banco de Dados – $88,750 a $122,750
  • Gerente de TI (CTO – Chief Technology Officer) – $107,250 a $165,250

(dados dos EUA, retirados do 2008 IT Salary Guide, em dólares, por ano e em ordem crescente)

Note que as palavras “Gerente” e “Administrador” vão aparecendo conforme o salário aumenta. Há uma tendência clara em TI onde você passa a valer mais conforme vai ficando bom em gestão, e não conforme vai ficando bom em TI. Não é como economia ou medicina, onde quanto mais você sabe da sua própria área, melhor.

Então é assim. Hoje eu sofro na mão da consultoria e fico com dor de cotovelo pela TI que abandonei. Mas sigo em frente porque, no futuro, quem sabe eu não arrumo uma “Gerência de TI” – um mulherão sagaz e inteligente, mas sexy como uma… er… “garota de programa”.

P.s.: Eu falo mais sobre as complicações de TI ser “área meio” neste outro post: A TI e o eterno foco em si mesma.

Internet via celular – Futuro próximo mas distante do Brasil?

Saiu anteontem, no Slashdot: Ericsson prevê para breve a extinção dos hotspots wi-fi. O motivo?

O crescimento rápido da banda larga via celular vai tornar os hotspots Wi-Fi irrelevantes… hotspots em lugares como a Starbucks estão se tornando as cabines telefônicas da era da banda larga.

Ou seja, todo mundo vai ter internet rápida, via celular, em qualquer lugar.

Enquanto isso, no Brasiu-siu-siu, para enviar este post eu ligo meu celular no notebook e uso a rede GPRS da Tim, com velocidade de dial-up, caindo toda hora e pagando R$ 50 por 1 GB de transferência (é a opção mais barata, por incrível que pareça).

Lá fora fala-se em WiMAX, HSPA e o escambau, e aqui o melhor que temos, até onde eu sei, é a Vivo com seu EV-DO, que funciona só em algumas cidades e que, às vezes, fica num cai-não-cai danado. E meu 1GB de transferência ficaria em R$ 100 na mão deles.

A saga do notebook novo – Capítulo Final?

Resumo para quem ligou agora seu televisor (os links tem os posts detalhados): tive a idéia super-idiota de comprar um notebook no Mercado Livre. Quase levei um golpe, mas escapei. Aí oito meses depois o notebook novo começou a dar uns paus bizarros que muita gente pelo mundo também está tendo e não achando solução, então encomendei outro computador… que chegou na última sexta.

Assim sendo, este post está sendo escrito direto do notebook novo – um Dell Vostro 1000, comprado pelo site da Dell e "customizado" pra ficar com a mesma configuração do maldito HP Pavilion DV6045nl (série DV6000).

Até agora o notebook novo é só alegrias:

  • Tem garantia "de verdade" de 1 ano – coisa que só se sente falta quando precisa (meu caso);
  • Foi baratíssimo: o modelo mais básico custa R$ 1.700, e minha configuração, praticamente igual a do HP, saiu a uns R$ 1.200 a menos do que paguei (trouxa, trouxa, eu sei, eu sei);
  • Vou pagar em suaves prestações (10x sem juros);
  • É bem mais leve que o HP;
  • Não esquenta como o HP – que mais parecia um George Foreman Grill e era inviável de usar no colo ou por longos períodos;
  • Vem com Windows XP (que, na atualidade, é uma opção muito melhor que o Vista);
  • NÃO vem entulhado de crapware, aqueles programas inúteis que deixam o micro lento e você tem que ficar horas desinstalando.

Na funcionalidade ele está bem, mas por fora… ele é feio pra carvalho. A começar pelo nome: "Vostro"? Como assim? Parece uma palavra escrita errado – e toda hora me lembra a palavra "colostro". E a feiúra do nome reflete na máquina: ele parece um protótipo de chão de fábrica, ou um computador robustecido daqueles que instalam em viatura de polícia, ou simplesmente um notebook que esqueceram de pintar – o que é verdade, já que ele é, basicamente, a "caixa" de vários outros modelos da Dell sem nenhum acabamento.

Notebook Dell Vostro 1000

Também não gostei do teclado, que é meio duro, possivelmente por causa de um tal "revestimento de mylar", contra respingos. Outro ponto negativo são alguns conectores importantes (energia, rede e dois USB) colocados na parte de trás ao invés das laterais, ficando bem ruins de acessar.

O setup inicial foi até rápido – umas quatro ou cinco horas e a maioria dos meus programas do dia-a-dia já estavam "positivos e operantes". Agora é deixar passar um tempo e ver se a minha urucubaca não afeta esse novo notebook. Vou rezar pra Deus, Alá, Iemanjá, Plutão, Kratos e Alanis Morrisette pra não acontecer nada.

Quanto ao notebook maldito, se souberem de alguém que queira comprar um HP Pavilion seminovo e meio lesado (pra aproveitar as peças ou consertar e revender), me avisem aí nos comentários.