O Plone Symposium e porque você devia ir
Eu sempre recomendo que coisas importantes recebam a devida atenção.
É por isso que não me incomodo muito em ver sites descartáveis sendo feitos com tecnologias como ASP, JSP ou PHP naquele modelo antigo que mistura apresentação com lógica. É como na construção de cenários - você não vai usar madeira se isopor e lycra resolverem. Concreto armado, nem pensar. Site descartável é como aqueles escritorios que são erguidos para vebder apartamentos na planta: ele só precisa ficar lá até vender unidades suficientes para começar a obra. Depois disso, vai ser derrubado. Ele nunca vai desenvolver uma goteira ou ganhar mais um piso.
Com sites, a situação é parecida.
Se seu site for só um cartão de visitas feito pra dar seu e-mail de contato ou telefone, tudo bem você montá-lo com qualquer coisa. HTML estático está bom demais.
Por outro lado, se você precisa viver com um site, é bom fazê-lo direito. É importante separar a aparência dele (que pode mudar radicalmente a qualquer tempo) do conteúdo (que tende apenas a aumentar) e de eventuais aplicações que rodem dentro dele (se seu CMS deixar você fazer esse tipo de coisa).
É por conta disso que eu gosto tanto do Plone. Ele traça uma linha muito nitida entre conteúdo e forma e, por conta de como é construído, em torno de um banco de objetos (e não um banco relacional, como a maioria dos concorrentes) ele torna ridiculamente simples fazer aplicações de workflow ou de gestão de conhecimento.
E quando eu digo ridículo, é porque, tipicamente, você só precisa gerar alguns diagramas UML e entregá-los a uma ferramenta que faz o resto.
Uma digressão rápida: no meu livro, guardar documentos dentro de um BD relacional, como faz o SharePoint, é motivo para justa-causa. Guardar ponteiros para um sistema de arquivos é apenas marginalmente melhor. Mas isso é material para outro artigo, não para esse.
E aí eu entro na parte realmente importante: se você tem problemas com sua intranet e gostaria que ela fosse mais manejável, compatível com mais navegadores (diga a verdade - é um porre quando a empresa padroniza em IE 6 porque fez a burrada de crira aplicações importantes que não rodam nem mesmo nas versões posteriores dele, quanto mais em navegadores mais modernos), que pudesse guardar seus documentos do Office (ou do OpenOffice, ou do iWork, se você tem Macs), que tivesse uma busca que funciona (porque você quer encontrar os documentos que colocou lá), que tenha undo sem nunca precisar de um restore do banco de dados (porque todo mundo erra de vez em quando) e que, no geral, envelheça mais graciosamente do que aquelas coisas com que você está acostumado, dê uma olhada no Plone.
Eu sei... Eu sou - e assumo - um fanboy do Plone. O dieblinkenlights é feito em Plone. Por vários anos o Plone pagou - não paga mais - minhas contas. O DBL é feito em Plone porque eu sou muito preguiçoso e não quero ter dores de cabeça com o site. Ele simplesmente funciona e tem sido assim desde que ele existe. E é assim que um CMS tem que ser.
Na semana que vem acontece em São Paulo o Plone Symposium South America. É a primeira edição do evento e vale a pena você ir. Vale a pena, não importando se você usa ou não Plone. Mesmo que você seja um usuário de Joomla, Drupal ou, coitado, de Sharepoint, vale a pena ir. Vale a pena para saber o que o outro CMS, aquele que você não usa, tem para oferecer.
Na pior das hipóteses, você sai com uma lista de features para serem implementados no seu que deve manter seu pessoal de desenvolvimento ocupado por algum tempo.
Mas, se você tiver mesmo sorte, você sai de lá um usuário de Plone.
Seus usuários vão agradecer.
Nota: este artigo também foi publicado no Webinsider, em http://webinsider.uol.com.br/index.php/2009/11/19/em-defesa-do-plone/.
A bit of vaporware (or "Microsoft's Secret Newton Killer")
One of the funniest things about Microsoft is how predictable they are. Each and every time they perceive a threat to their cash cows - be it Windows, Office or completely new models of software distribution, they have the power of concocting an underwhelming and barely credible product that is either utterly fictitious, as to damage the sales of their competitors that actually have taken the time to develop real products, or is so infuriatingly flawed that it hampers the credibility of the whole model its competition is trying to steer the market towards.
I first observed it with Windows for Pen Computing, a response to the Newton, to the Momenta and to the GEOS-based Tandy and Casio über-PDAs. Then there was the Cairo/WinFS database/file system that was never delivered, a more generic confusion tool for the times some other vendor promised a better way to manage data. It span decades without as much as a working prototype.
I also remember the flurry of multi-touch things after Jeff Han demo went viral. From Surface to silly interaction on a precariously balanced notebook screen. There was a video of that one here, but Microsoft canned Soapbox as soon as they realized they could not compete with a Google-backed YouTube and the video is toast.
More recently, we saw Project Natal overpromise a sci-fi worthy way of interacting with games, complete with a special-effects covered video, over the more realistic and obviously less impressive offerings from Sony and Nintendo that were actually being launched. Did you see articles on the stuff being introduced at the same show? Me neither. It was all Project Natal.
Milo and Kate is quite impressive, but if Microsoft can do that, I don't know why they are wasting their time launching Windows versions - they could release a notebook version of HAL-9000. Or Skynet.
And now, under the buzz of a gigantic iPod Touch, an iNewton or whatever the Apple tablet may be called, Microsoft shows this: the "astonishing" (according to Gizmodo) Microsoft tablet, with software working so well you can't possibly trace its Windows heritage.
It's like Apple pretending the Knowledge Navigator was to be a real product about to launch instead of a fancy concept.
But, again, that's the Microsoft and that's why we love them.
At least I do. They make me laugh.
And, just to finish it off, the classic video of the Longhorn PDC2003 video. Unless you want to be disappointed with Courier or Natal, consider how this video relates to the actual shipping Windows Vista:
Vivendo no Windows, parte 3 - a reinstalação
Durabilidade
É um fato conhecido que instalações de Windows "apodrecem". À medida em que programas são instalados e desinstalados, discos são fragmentados e desfragmentados e atualizações são aplicadas umas sobre as outras, aparentemente, coisas se estragam, a máquina fica esquisita e chega, finalmente, a hora de formatar o HD e reinstalar tudo.
E nem mencionei o problema de malware crônico que aflije usuarios de Windows desde que a internet deixou de ser um clube para cientistas bem educados para se tornar um antro de marginais dispostos a tomar seu computador de você.
É verdade que o Windows tem feito progressos expressivos. Nos meus dias de Windows 95 e NT, um Windows apodrecia em mais ou menos um ano. Seis meses, se você instalasse um Visual Studio ou algo parecido. Foi com o NT4 que eu adquiri o hábito de ter uma partição do disco para o sistema operacional e programas e outra só para os meus dados, hábito que persiste até hoje no meu Ubuntu. O Windows 2000 foi um bom progresso. Com ele minhas instalações sobreviviam por cerca de um ano de uso pesado (naquele tempo eu ainda desenvolvia quase que exclusivamente para as plataformas da Microsoft). O XP marcou uma outra melhoria - elas passaram a durar mais tempo. Pode ser que eu tenha parado de programar para Windows e que isso tenha facilitado a vida das ferramentas de auto-limpeza dele, mas pode também ser que o sistema tenha ficado melhor. Do Vista não ouço muitas histórias de horror. Por outro lado, ninguém usa o Vista há tempo suficiente para ter problemas sérios. E, com a chegada iminente do Windows 7, nem vão.
A verdade é que, se você não maltratar muito a sua máquina Windows (instalado coisas vindas de lugares suspeitos, por exemplo) é bem capaz que ela dure anos sem precisar de uma reinstalação. O máximo que você pode precisar é instalar o PageDefrag (não funciona no Vista, até onde eu sei) e deixar que ele faça seu trabalho quando necessário (apesar do nome, ele desfragmenta o registry e outras coisas importantes também).
Nada do que você faça vai transformar o Windows em um ótimo sistema operacional, mas, pelo menos, você pode evitar que ele se torne um transtorno.
Isso tudo, claro, não evita outra mazela da vida com computadores: problemas de hardware.
O HD clicando
Um tempo atrás, meu computador de trabalho (um Dell D-630, mais feio do que bater na mãe, mas robusto como um tanque) começou a dar sinais de que o HD estava prestes a falhar - o HD começou a produzir cliques altos. Como eu notei o problema logo, avisei o pessoal que cuida das máquinas para que se preparasse para receber um paciente terminal e já pedisse o HD novo para a Dell, evitando perdas de tempo.
Fazendo back-ups depressa
Nessas horas, a primeira coisa a se fazer é um back-up de tudo o que é importante.
Como o código-fonte em que eu estava trabalhando está em um Subversion, eu simplesmente fiz um commit e mandei para o servidor, onde ele fica seguro.
Não fosse a tragédia de usarmos Exchange, eu não precisaria fazer nada com o e-mail. Como a empresa usa Exchange, de tempos em tempos eu tenho que mover e-mails antigos para fora do servidor, onde eles têm back-up, para a máquina (e o HD) que ia parar a qualquer momento. O Exchange simplesmente não sabe lidar com muito e-mail. O mailbox de trabalho que eu usei por uns 5 anos acumulou uns 4 gigas de dados, sempre no servidor. O meu mailbox no Gmail tem uns 2 gigas. O meu no Exchange não pode passar de 100 megas. Copiei o .PST para um pendrive.
É por coisas assim que ordens judiciais para que uma empresa entregue e-mails de 2 anos atrás são um pesadelo de administradores de sistemas Windows. Bem-feito. Quem mandou deixar usarem Exchange?
Para os logs do Pidgin (não - eu não uso o Live Messenger nem no Windows) eu adotei a solução que já vinha adotando - rodei o rsync nas pastas dele para o pendrive, onde só as mudanças foram copiadas. Eu já usava o procedimento para consolidar os logs entre meu computador de trabalho e meu computador pessoal, então, não precisei me preocupar muito com isso.
Eu tenho também no meu computador uma coleção de revistas em PDF. Para essa coleção, também uso o rsync para sincronizá-la com a outra cópia dela (ou o original), que fica no meu computador pessoal (que, apesar de ser um netbook minúsculo, costuma ficar em casa e é onde eu estou escrevendo isso).
Os podcasts que o iTunes baixou e outras coisas maiores foram compactados e copiados para um servidor na mesma rede.
Eu sei que o Windows tem um "assistente de migração", mas, como eu mantenho meus dados separados de todo o resto, a única coisa que ele poderia preservar era precisamente todo o lixo e restos de programas instalados que eu queria aproveitar para remover. Além disso, ele pode levar muito tempo para rodar e, se o HD morrer antes dele terminar, você acaba com precisamente nada.
Ele também é inútil quando você está reinstalando a máquina por causa de algum vírus que foi contraído porque alguém baixou um programa vindo de um site suspeito na Estônia. O malware provavelmente será parte do back-up. Na verdade, nenhum back-up que você não possa inspecionar detalhadamente pode ser um vetor para uma reinfecção. É uma péssima idéia.
O resultado
Configurar máquinas Windows é muito chato e demorado. Depois de instalar a imagem padrão da empresa, para qualquer extra você tem que caçar o disco de instalação do programa (ou caçá-lo na web) baixar o instalador, rodar o instalador, passar atualizações de segurança, rebootar várias vezes... Depois de receber a máquina com a instalação padrão, eu levei mais de dois dias para voltar ao meu nível normal de produtividade.
Em contrapartida, a máquina ficou mais "redonda". Parece um pouco mais rápida. Continua um Windows com todos os problemas e pequenas insanidades que eu já comentei antes, mas, ainda assim, o progresso foi sentido.
A profunda insanidade desse processo todo me choca. O jeito Linux de fazer a coisa (através de repositórios e controle de pacotes) é muito mais racional.
Adendo: se livrando de um HD
Quando levaram meu HD embora eu perguntei o que ia acontecer com ele. Muitas empresas não se preocupam com isso, mas eu me preocupo. São dados de trabalho, cronogramas, orçamentos, contratos e mais um monte de coisas que não deveriam nunca sair do prédio. Muitas vezes adicione a isso dados pessoais, certificados digitais de bancos e outras coisas que seriam a festa de um ladrão de dados. Quando seu técnico for devolver seu HD ao fabricante, pergunte o que ele vai fazer. Se ele disser que vai excluir a partição, faça-o ler esse parágrafo. Se seu HD ainda funciona você precisa gravar algo por cima dos seus dados. Contra malfeitores medianos, zeros bastam para todos os dados menos importantes, mas, se você mais paranóico e quiser se prevenir contra malfeitores competentes e com recursos, eu indicaria gravar dados aleatórios no seu disco. Tanto no caso dos zeros como no caso de dados aleatórios, eu uso o dd. É um utilitário de linha de comando comum a vários sistemas Unix-like. E, mais legal, é livre - grátis e vem com código, pra você ter certeza de que ele faz o que você quer que ele faça.
Afinal, com segurança de dados não se brinca.
Este artigo também está disponível no Webinsider, em http://webinsider.uol.com.br/index.php/2009/10/04/vivendo-no-windows-parte-3/
An Emacs cheatsheet as a mindmap
I have been using Emacs for some time now. It has a very steep learning curve, but its power and elegance make it my editor of choice for just about everything. So, inspired by this article, I decided to create my own Emacs cheatsheet. There are many Emacs cheatsheets, but all of them use a tabular format that is not, in my noob opinion, the best way to convey such information: you can interpret the Emacs commands as a tree-like keystroke structure and many important commands use two or more steps.
I started a mind-map for the keystroke trees with the commands I use the most (and some of the ones I find the most amusing). The plan is to make a navigable cheat sheet like the Mercurial and Git ones you can get here and here, plus some tips on what to add to your ~/emacs.d/init.el file.
You can get the very, very early version of the mind-map (in Freemind format) here or just look into the image that follows.
All the heavy magic is also missing, like the "smart paste" Marco Baringer does about 1:45 into the What is Ajax screencast that relates to the David Crane's Ajax in Action book (that I still don't know how is done).
I would appreciate any advice from Emacs veterans and newbies alike, so, feel free to comment.