Minha palestra no GAiN

Update: saiu o vídeo: Tendências para o futuro da Web: uma leitura a partir do trabalho do W3C – SAC/GAiN 2014.

Apresentei hoje cedo uma palestra no GAiN, um encontro de profissionais de comunicação e internet da minha igreja. Há um tempo que venho falando às pessoas que trabalham com internet na igreja sobre os padrões do W3C. Mas hoje tive a oportunidade de falar para gente que trabalha com isso de toda a América do Sul, de uma vez.

Muito obrigado aos organizadores pelo convite. Quem quiser conferir minha palestra no GAiN, sobre as tendências para o futuro próximo da web, pode encontrar a apresentação aqui: aqui.

Não sei se minha palestra foi gravada. Se eles publicarem lá, aviso por aqui.

Dúvida: URLs de categoria amigáveis

Um amigo me escreveu:

Ola Elcio,

vc tem algum tutorial de como reescrever a url para deixar mais amigável?

no momento eu tenho isso
http://www.meusite.com.br/index.php/category/produtos/produtos-especiais/

quero deixar assim:
http://www.meusite.com.br/produtos-especiais/

Muito bem, vamos lá. O primeiro passo é, se você não quer que as categorias apareçam uma dentro da outra, não usá-las de forma hierárquica no cadastro. Edite a categoria “produtos-especiais” e faça com que ela não seja mais filha de “produtos”. Isso deve deixar a URL dela assim:

http://www.meusite.com.br/index.php/category/produtos-especiais/

O passo seguinte é ir em “Configurações -> Links Permanentes” e configurar corretamente a estrutura de links permanentes, para retirar o “index.php” da URL. Escolha o formato que mais lhe agradar lá. Você vai precisar:

  1. Estar rodando Apache. Essa dica não vai funcionar em outro servidor web, a não ser que você acrescente uma boa dose de hacking.
  2. Ter o mod_rewrite habilitado no seu Apache.
  3. Que o PHP tenha permissão de escrita no arquivo .htaccess.

Tendo feito isso, a URL vai ficar:

http://www.meusite.com.br/category/produtos-especiais/

Por fim, você pode usar esse plugin: Top Level Categories. Ele consegue retirar aquele /category/ da URL, deixando o formato final da URL do jeito que você quer.

Boa sorte!

 

Mini-curso dominando o terminal do linux

É hoje à noite

DURAÇÃO: 2h

Aprenda os fundamentos do terminal do Linux, domine os comandos mais comuns mas, além disso, aprenda um novo jeito de pensar. Automatize tarefas e coloque seu computador para trabalhar por você.

Por que estamos oferecendo esse curso?

Durante os últimos anos eu tenho ensinado milhares de técnicos, programadores e webdesigners a ser mais produtivos. Treinei equipes inteiras de empresas como iG, Terra, Yahoo!, Locaweb, Magazine Luíza e Editora Abril. Além disso, tenho sido chamado para palestrar em grandes eventos técnicos em todas as regiões do Brasil.

Mas sinto que o Brasil (e provavelmente o mundo) tem uma carência enorme de conhecimento em computação. E essa carência não poderá ser preenchida apenas ensinando mais a quem já é especialista no assunto. Por isso, fiquei muito feliz quando o Maudy, do Ubuntu Dicas, me convidou para ensinar os segredos do terminal do Linux a iniciantes. E o resultado disso é esse curso que você poderá assistir hoje, quinta-feira, dia 30, às 20h.

Temos sentido, tanto na comunidade Ubuntu Dicas quanto no mercado em geral, um grande interesse dos usuários iniciantes em aprender os segredos do terminal do Linux. É uma ferramenta fantástica de automatização de tarefas, capaz de fazer seu computador trabalhar por você. E também é a porta de entrada para uma série de novos conhecimentos e, inclusive, para um novo jeito de pensar.

Por que você deve dominar o terminal?

Eu comecei minha carreira como programador Windows. Como todo usuário experiente de Windows, eu dominava uma porção de truques avançados do próprio Windows e de seus programas. Foi nessa época que comecei a estudar Linux. Um dia meu chefe na época apareceu com uma tarefa desafiadora para mim. Todos os dias chegava, no mesmo horário, um CD com imagens vindas das filiais. Sim, em CD, naquela época fazer esse tipo de coisa pela Internet ainda era muito lento. E essas imagens deviam ser preparadas para publicação no site. Não era uma tarefa complexa, precisava basicamente redimensionar as imagens e copiá-las para a pasta certa através de um programa de FTP.

Eu resolvi o problema usando um recurso do Photoshop para processamento em lote, chamado “batch” na versão em inglês. Criei uma action no Photoshop para ser executada com o recurso de batch e, todos os dias, quando o CD chegava, eu copiava o conteúdo para uma determinada pasta, abria o Photoshop, executava o processamento em lote e aguardava o Photoshop terminar. Ao final, abria um programa de FTP e copiava os arquivos para o servidor do site.

Era uma tarefa enfadonha, repetitiva e aquilo começou a me deixar desanimado. Eu passava as tardes me sentindo mal, antecipando o momento em que eu teria que parar meu trabalho para copiar as imagens e ficar olhando o Photoshop trabalhar.

Felizmente, foi nessa época que eu comecei a aprender Linux. E com um bocado de estudo e um pouco de esforço cheguei a uma sequência de comandos que resolvia o problema:

cd imagens_filiais/entrada
for i in *.jpg;do  
  convert -thumbnail 300x300 $i $i
done
mv entrada `date +%Y%m%d`
cd ..
rsync -razv . servidor:imagens_filiais/

Uma simples sequência de sete linhas. Claro, você pode achar esses comandos assustadores, e pensar que dá mais trabalho digitar isso tudo do que simplesmente copiar a pasta, renomear, executar a action no Photoshop, abrir o programa de FTP e copiar os arquivos. Acontece que só foi necessário digitar esses comandos uma vez. Criei um arquivo com essa sequência de comandos e, cada vez que o CD de imagens chegava, eu copiava as imagens para a pasta entrada e executava um único comando. Consegue imaginar meu alívio e alegria ao conseguir me livrar dessa tarefa repetitiva, colocando o computador para trabalhar para mim?

Não se assuste com os comandos. Eu também tinha medo deles e não entendia nada quando os vi pela primeira vez. Mas eles são simples, acredite. Muito simples. Se você entender os conceitos fundamentais, vai entender esses comandos e qualquer outro com que tiver que lidar, com facilidade. E é fácil entender, você vai ver.

Você vai gastar duas horas estudando hoje e com certeza, vai economizar muito mais do que duas horas na primeira tarefa repetitiva que chegar às suas mãos. E vai parar de ter medo do terminal.

Por que você deveria se inscrever para esse curso agora?

Por que o curso, com interação ao vivo, vai estar disponível apenas hoje, dia 30/01. Além disso quem se inscrever até lá vai receber também a apostila do treinamento e um bônus especial, preparado com carinho para quem quer avançar na automatização de tarefas. Esta é então uma chance única, uma oferta que não estará disponível depois de quinta-feira. Depois disso você poderá adquirir apenas o acesso à gravação do curso. A apostila estará disponível exclusivamente para quem adquirir o acesso até às 20h.

Nós temos tanta certeza que você vai gostar do curso que, para que você tenha certeza ao se inscrever, oferecemos a exclusiva garantia completa: se você assistir o treinamento ao vivo e, por qualquer motivo, não estiver satisfeito com o que aprendeu, você pode simplesmente escrever para a gente e obter seu dinheiro de volta. Todo o seu dinheiro de volta, sem letras miúdas, sem perguntas, basta mandar um e-mail.

Para quem é esse curso?

Se seu trabalho envolve lidar com arquivos em um computador e realizar tarefas que podem ser automatizadas, esse curso é para você. Se você apenas navega na internet, escreve textos e planilhas, por favor, não se inscreva. Mas se você precisa lidar com tarefas como capturar dados da internet, lidar com arquivos em grandes volumes, tratar texto, imagens, vídeos ou áudio, administrar servidores ou qualquer outra tarefa repetitiva que possa ser automatizada, você PRECISA fazer esse curso.
Eu tenho certeza que, se você trabalha assim com um computador, vai recuperar o tempo investido em estudar em no máximo uma semana.

Inscreva-se

Elcio Ferreira é sócio-diretor da Visie Padrões Web, empresa especializada no desenvolvimento de sites, sistemas web e aplicativos móveis. Já treinou e auxiliou equipes de desenvolvimento de centenas de equipes em empresas como Globo.com, Editora Abril, iG e Terra. Trabalhando com web há mais de quinze anos, Elcio é nome de referência no Brasil em padrões web e tecnologias abertas para a internet, sendo membro do grupo de trabalho de acessibilidade do W3C. Durante o ano de 2011, ministrou os treinamentos oficiais de HTML5 na sede do W3C Brasil.

Módulo Python: requests

Esqueça urllib e httplib: Requests resolve do jeito certo.

Você pode instalar via pip com:

pip install requests

Depois, veja como é fácil:

>>> import requests
>>> r=requests.get('http://visie.com.br')
>>> for k,v in r.headers.iteritems():print k,'=>',v
... 
content-length => 7669
content-encoding => gzip
accept-ranges => bytes
expires => Mon, 20 Jan 2014 13:18:30 GMT
vary => Accept-Encoding,Cookie
server => Apache
last-modified => Mon, 20 Jan 2014 12:38:24 GMT
cache-control => max-age=3, must-revalidate
date => Mon, 20 Jan 2014 13:18:27 GMT
content-type => text/html; charset=UTF-8
>>> r.status_code
200
>>> r.reason
'OK'
>>> r.content[:15]
'<!DOCTYPE html>'

Se você precisar fazer uma requisição HTTPS com autenticação e obter o retorno em JSON:

>>> r=requests.get('https://httpbin.org/basic-auth/user/passwd',auth=('user','passwd'))
>>> r.json()
{u'authenticated': True, u'user': u'user'}

Para fazer POST:

>>> r=requests.post('https://httpbin.org/post',data={'foo':'bar'})
>>> r.json()['form']
{u'foo': u'bar'}

Tudo muito, muito simples. E o módulo faz muito mais e está muito bem documentado. Olhe lá.

Fazendo o comando rm enviar arquivos para a Lixeira

Talvez você tenha um pouco de medo de usar o comando rm, porque ele exclui definitivamente os arquivos. Não há “lixeira”, e todos os métodos disponíveis para desfazer a deleção, como o ext2undel, não passam de boas tentativas com uma razoável chance de insucesso.

Você sabia que pode enviar um arquivo para a lixeira a partir do terminal, ao invés de apagá-lo? Para isso, você precisa instalar o pacote trash-cli. No Ubuntu, faça:

sudo apt-get install trash-cli

Em seguida você pode usar, no lugar do comando rm, o comando trash:

trash arquivo_a_apagar.txt

Você também pode manipular a lixeira com os comandos trash-list, restore-trash e trash-empty.

Substituindo o comando rm

E se quiser você evitar usar o comando rm por engano, insira no final de seu .bashrc:

alias rm=trash

Assim, cada vez que você digitar o comando rm, será na verdade executado o comando trash. E se você deliberadamente quiser excluir um arquivo, sempre poderá chamar o comando rm digitando uma contrabarra, assim:

\rm arquivo_a_apagar.txt

Mas você tem certeza que vai substituir o comando rm?

Na página do trash-cli o autor trata dessa questão. Ele diz que, embora você possa substituir o comando  rm pelo trash, você não deveria, porque os argumentos dos dois comandos são diferentes. Por exemplo, o comando rm exige o argumento -R para remover diretórios, o trash não. Então ele sugere que não o faça.

Mas, se você tem medo de apagar arquivos por engano, ele sugere uma outra abordagem. Crie um alias para o comando rm em seu .bashrc assim:

alias rm='echo "Este não é o comando que você quer executar."; false'

E pronto, você não vai mais executar o comando rm por engano, mas, do mesmo modo que no primeiro exemplo, sempre poderá executá-lo deliberadamente, começando com uma contrabarra.

PS1: o trash-cli é feito em Python, e muito bem escrito. Estudar o código dele pode ser muito instrutivo.

PS2: estou prestes a lançar, junto com o Ubuntu Dicas, uma novidade para quem quer aprender a usar o terminal. Se você é iniciante no terminal do Linux e gostaria de aprender os segredos para dominar o terminal, você precisa assinar a lista do Ubuntu Dicas.

Porque você deveria aprender várias linguagens de programação

tpp_xlargecover
O programador pragmático não está preso a nenhuma tecnologia.

Há um tempo eu li “The Pragmatic Programmer“, uma espécie de livro de auto-ajuda para programadores. Não é um livro técnico, não vai te ensinar técnicas ou tecnologias, mas fala de um jeito de pensar e traz uma coleção de conselhos daquele tipo que parece óbvio mas ninguém nunca faz.

Um desses conselhos era aprender novas linguagens de programação. Os autores recomendam que você se torne proficiente em uma nova linguagem de programação por ano. O que, eu sei, é muito difícil. Eu não tenho conseguido aprender uma nova linguagem por ano. Mas isso não invalida o conselho de que você deve aprender novas linguagens de programação.

Por que aprender linguagens de programação novas?

Cada linguagem de programação traz consigo um jeito de pensar, um conjunto de soluções e uma comunidade com cultura diferente. E isso enriquece você. O bom programador tem uma visão ampla e não está “preso” a uma única tecnologia.

Por exemplo, digamos que você esteja desenvolvendo um sistema em PHP e precise, de tempos em tempos, fazer parsing de feeds RSS cuja URL foi cadastrada pelos usuários. Digamos que você queira fazer o parsing em segundo plano, a cada meia hora. Claro, você pode usar SimplePie, mas ele não é tão “Simple” assim. Dê uma olhada na documentação. SimplePie é muito poderoso, tem uma porção de recursos, mas vai dar algum trabalho para instalar direito, montar seu script, testar e automatizar.

E se você procurar soluções em outras linguagens de programação? Quanto trabalho vai ter? Vamos ver o que Python tem para nós, usando o excelente módulo feedparser. O módulo feedparser está disponível no gerenciador de pacotes do Ubuntu, e também para instalação via PIP.

import feedparser
print feedparser.parse('https://elcio.com.br/feed')

Mais uma meia dúzia de linhas para ler as URLs e salvar os resultados no banco de dados e pronto, temos um arquivo simples com excelente performance para ser colocado no cron. Bom, falando em performance, esse é o típico processamento que vai rodar muito mais rápido se feito em paralelo. Processamento em paralelo com PHP é um parto, certo? Com Python você pode usar o módulo multiprocessing e fazer isso quase que em uma linha só.

Além de ferramentas, linguagens de programação carregam jeitos de pensar

Uma vez que você já tenha resolvido um problema em uma linguagem de programação, você consegue resolver o mesmo problema em qualquer outra, certo? Bom, quando você aprende uma linguagem nova, você acaba tendo que ler um bocado de código de outras pessoas. E isso te ensina novas soluções para os seus velhos problemas.

Isso é diferente de se aprofundar no estudo de sua linguagem atual. O aprofundamento vai fazer você ler mais códigos das mesmas pessoas, da mesma comunidade, da mesma cultura. Aprender uma linguagem nova faz você ler códigos de gente nova, com outra cultura. Na prática, aprender Python vai fazer você melhor programador PHP, aprender Smalltalk vai fazer você melhor programador Java, etc.

Porque Python

De todas as linguagens de programação que você poderia escolher para começar a aprender algo novo hoje, eu recomendo que, se você ainda não sabe Python, comece por ela. Python roda no Google App Engine, no AWS Elastic Beanstalk e é a linguagem de programação por trás da maioria das ferramentas de administração do Ubuntu. Se você quer construir pequenos scripts para automatizar tarefas em seu servidor, ou quer construir grandes aplicações web para rodar em Cloud, ou se quer criar ferramentas de processamento paralelo massivo, ou interfaces gráficas multiplataforma, Python vai servir.

E é, ao mesmo tempo, uma linguagem que possui recurso fantásticos e vai te ensinar coisas incríveis, e uma das linguagens mais fáceis de aprender que eu conheço.

Que tal começar agora? Leia o excelente “Dive Into Python“, faça os exercícios, depois tente desenvolver alguma coisa na linguagem. E veja se você não vai se tornar mais eficiente em sua linguagem atual.

“Jabá”: Python é a linguagem que escolhemos para a aula de integração multi-linguagem do DevOps Heroes, treinamento da Visie que acontece a partir do dia 27 em São Paulo. Quem estiver lá vai ver isso tudo funcionando na prática. As vagas estão se esgotando.

Pare de usar FTP

Há mais de dez anos que meus processos de deploy, isto é, colocar um site ou sistema em produção, não usam FTP. Qualquer bom provedor, nacional ou internacional, oferece ferramentas muito mais eficientes para o deploy de sites e sistemas. E isso inclui desde pequenos sites em WordPress ou HTML estático até portais com milhares de acesso por hora e grandes sistemas rodando em estruturas de cloud computing elástico.

Por que você não deveria usar FTP

FTP é um protocolo muito simples de troca de arquivos, que pode ser útil para uma porção de coisas. Mas não possui os recursos necessários para o deploy e controle eficiente de aplicações web. Entre os problemas com o protocolo FTP, podemos citar:

  1. Falta de integração com controle de versão: você está fazendo uma manutenção num site, cujo diretório tem 5MB de dados. Você alterou não mais que uma dúzia de arquivos, em pastas diferentes. Arquivos texto cujos tamanhos, somados, não passam de 200KB. Como você faz o deploy por FTP? Ou sobe o site todo, “por via das dúvidas”, ou precisa pinçar os arquivos que precisa subir, um a um, certo? Algumas ferramentas de transferência, como o Filezilla, conseguem “sincronizar” as pastas, mas eles fazem isso varrendo as pastas uma por uma e comparando as datas e tamanhos dos arquivos. Leva um tempão e, se algum outro programador alterou os arquivos antes de você isso certamente vai dar problemas. O que nos leva a um segundo ponto:
  2. Falta de recursos de “auditoria” e controle de deploys: não há como obter um log ou lista de quem fez deploy, quando e o que foi feito. Um problema recorrente em ambientes em que uma equipe trabalha com FTP é a sobrescrita de alterações já publicadas. Na pior das hipóteses, gerando perda de trabalho. Mas mesmo que a equipe tenha um ambiente interno de controle de versões e a sobrescrita no FTP seja fácil de resolver, pense na dor de cabeça de ter que explicar para o cliente que o defeito que foi corrigido ontem voltou ao ar hoje, mas já estamos resolvendo.
  3. Falta de automatização: deploy por FTP é feito à mão. Um homo sapiens navega nas pastas de seu computador e do servidor e arrasta o que deve ser atualizado de um lado para outro. Num processo chato e delicado. Se ele arrasta as coisas para a pasta errada, pode ser muito difícil consertar o problema. Pode ser difícil até entender o problema. E se você coloca um homo sapiens para repetir uma mesma tarefa vinte ou trinta vezes, ele certamente vai errar alguma.
  4. Falta de recursos para rollback automatizado: você subiu a alteração. Em seguida abriu o site e viu um “erro de conexão ao banco de dados”. Percebe então que subiu a versão errada, ou no lugar errado. Como voltar atrás? Voltar atrás com FTP é um processo ainda mais manual e trabalhoso do que subir o site. Já vi casos, e não foram poucos, em que foi preciso pedir ao provedor para restaurar o backup diário. E esperar por isso, claro.

O que você deveria usar então?

SSH e Git. Há uma série de ferramentas para deploy automático, como o Capistrano ou o Jenkins. Esqueça isso tudo no começo. Aprenda SSH e Git, e construa seu processo de deploy com isso. Você vai ganhar:

  1. Deploy realmente automático. Com um único comando.
  2. Integração real com o controle de versão. Isso significa que sempre será possível rastrear cada alteração. Também significa rollback automático, o que é maravilhoso.
  3. Controle simplificado de múltiplos ambientes. Precisa fazer deploy em um ambiente de homologação, para mostrar as novidades ao cliente? Um comando. Ele aprovou as novidades, e agora é hora de fazer deploy em produção da versão que foi homologada ontem? Um comando.
  4. Preparação para o futuro. O site cresceu e você precisa agora migrar para um serviço como o AWS Elastic Beanstalk, que oferece escalabilidade “elástica” sob demanda dentro da estrutura de serviços da Amazon. O processo vai ser praticamente indolor. O cliente precisa agora de deploys com zero de indisponibilidade, e você resolveu usar a estratégia Blue Green. Já tem tudo o que precisa.

Por isso, não se conforme em usar FTP. Se precisa estudar SSH e Git, estude, vai valer a pena. Se já sabe, está esperando o quê?

“Jabá”: uma boa maneira de aprender como mudar seus processos de deploy, e muito mais, é o treinamento DevOps Heroes da Visie, que acontece daqui a duas semanas.

 

Curso para iniciantes: aprenda a fazer site em WordPress

Esses dias eu tirei um tempinho para ajudar o pessoal do MyJobSpace com o site deles, e eles me convenceram de que seria uma boa ideia ensinar isso. Então lá vai:

Aprenda a fazer site para sua empresa em WordPress

Aprenda a fazer site sem programar. Se você é um empreendedor iniciante ou pequeno empresário, está começando, e não pode pagar para uma boa agência desenvolver um site para você, mas ao mesmo tempo não quer fazer seu site num desses “construtores de site” ruinzinhos que tem por aí, esse curso é para você.

Vou mostrar como você pode usar o WordPress para construir um site sem programar, instalando um tema que você pode comprar por aí com qualidade bastante boa para quem está começando, e vou mostrar os melhores plugins e o jeito certo de instalar e configurar cada coisa.

Em suma, vou te mostrar o melhor que pode ser feito com WordPress sem ter que programar, e quão longe você pode ir sem ter que contratar ninguém para fazer por você.

E quando você tiver que dar o passo seguinte, ou seja, seu negócio está crescendo e você precisa de um site projetado por um profissional especialmente para sua empresa, esse conhecimento vai te ajudar a contratar certo e avaliar direito o que for entregue.

Basicamente, não há pré-requisitos, você só precisa saber usar sozinho o próprio computador e navegar bem na internet. O resto a gente mostra aqui.

Para quem esse curso não é

Se você não é um empreendedor iniciando um negócio, mas está cuidando do marketing de uma empresa estabelecida, por favor, contrate uma

O Themeforest tem alguns templates realmente muito bons.
O Themeforest tem alguns templates realmente muito bons.

empresa especializada para produzir seu site. Se você é programador, ou tem vontade de aprender a programar, esse curso também não é para você.

Aprenda a fazer site

Agora, se você precisa ter algo apresentável, mas não exclusivo, se precisa produzir um site muito bom em pouco tempo e a custo próximo de zero, e não importa que seja com um layout comprado no ThemeForest, então inscreva-se, o curso é para você.

São 0,20 ou não são 0,20, afinal?

Um bocado de gente se mostrou decepcionada ontem com os dois líderes do Movimento Passe Livre que foram ao Roda Viva. Eles afirmaram categoricamente que o ato de ontem é pelos vinte centavos de aumento da passagem. E aí? Tinha uma multidão compartilhando no Facebook que não eram só vinte centavos, que estávamos protestando contra a repressão, a corrupção, as más condições de saúde e educação, os gastos exorbitantes com a Copa do Mundo e “tudo isso que a gente vê todo dia”. Afinal, são só vinte centavos?

Sim, são só vinte centavos

Você acha mesmo que, depois desse levante popular, todos os políticos eleitos do Brasil vão virar santos ou renunciar? Você acha que Haddad e Alckmin vão ceder suas cadeiras? Não, não vão. E você acha mesmo que cem mil pessoas vão sair às ruas para “acabar com a corrupção” até que a corrupção acabe? Digamos que seja uma marcha até que a corrupção acabe, a educação melhore e haja segurança, quando é que você vai se dar por satisfeito e sair das ruas? É claramente inviável que acampemos nas ruas até que haja escolas modelo para todas as crianças, que cada policial tenha salário digno, que cada bandido seja preso, que cada bairro tenha praças arborizadas com playgrounds e que tenhamos ônibus gratuito com ar condicionado para todos. Cada um de nós tem mais o que fazer do que acampar na rua. Não vai rolar.

E nem é bom que role mesmo. Não se constrói uma rede de escolas numa semana. Não há como resolver todos os problemas de São Paulo em um mês, nem em um ano. Você não ficar na rua tanto tempo gritando. Por isso, é bom que quando o povo saia para as ruas, haja uma proposta clara. A proposta, dessa vez, é apenas a revogação do aumento da passagem de ônibus. São sim, os vinte centavos. Se o Haddad e o Alckmin cederem os vinte centavos, podemos sair das ruas, por enquanto, só por enquanto.

Mas e o resto?

"Pela má administração e corrupção generalizada". Ah, tá. E você vai voltar para casa quando?
“Pela má administração e corrupção generalizada”. Ah, tá. E você vai voltar para casa quando?

Vivemos uma crise de representatividade política. Boa parte da população sequer vota, mesmo o voto sendo obrigatório no Brasil. Outra parte tenta organizar protestos de voto nulo ou boicotes à eleição. Ninguém está orgulhoso dos políticos que elegeu e o cidadão que não desistiu tenta, nas eleições, escolher o “menos ruim”. Votar no segundo turno, então, é uma tristeza.

A gente escolhe um representante, e ele esquece que deveria nos representar. Parece que ele passa a achar que tem quatro anos para fazer o que quiser, e volta a falar com o povo só nas próximas eleições. Eles se encafurnam em seu palácios e gabinetes, e deixam de ouvir. Durante as eleições eles estão todo dia na rua, na televisão, no Facebook, no Twitter, nos fazendo acreditar que se importam conosco. Depois da eleição eles somem.

E a gente vive reclamando que ninguém faz nada, que ninguém se importa, que no Brasil é assim mesmo. Um dia como ontem (e como hoje) serve para mostrar quem é o patrão. O patrão é o povo. O governador e o prefeito são nossos empregados, e temos a obrigação de mandar neles. Hoje, a questão é sim sobre a passagem. Mas é também sobre quem é que manda. Se a passagem não abaixar, podemos continuar até abaixar, e podemos fazer mais. Então, cedo ou tarde, vai abaixar. E quando abaixar, teremos mostrado quem é que manda. Isso é que importa. É por isso que o governador pôs a polícia na rua semana passada para descer borracha na galera. Para mostrar quem é que manda.

Governante tem que respeitar o povo, tem que ter medo do povo. Você é o patrão.

E depois que a passagem abaixar?

Rosa Parks lutou por um assento, Gandhi caminhou 400km para produzir sal. Era só um assento. Era só sal. Mas era para mostrar quem manda. Uma vez que você mostrou quem manda, abriu a porta para que mais coisas mudem.

Tem gente perguntando “porque não protestam contra o mensalão, a PEC 37, os gastos com a Copa, etc.”? E tem gente dizendo que está justamente protestando contra essas coisas. A questão é conseguir agora a redução da tarifa, e voltar para casa, com o gosto da vitória, de ter mostrado quem manda. E sair na rua de novo cada vez que um governante sair da linha.

Vão votar a PEC 37. É uma vergonha. A redução da passagem vai mostrar quem manda, e aí você vai poder mandar de novo.

Governantes que ignoram o povo

Obrigado São Paulo, agora vou aproveitar. Daqui a quatro anos eu volto a falar com vocês.
Obrigado São Paulo, agora vou aproveitar. Daqui a quatro anos eu volto a falar com vocês.

Alguma coisa aconteceu do tempo dos caras pintadas para cá. Foi a internet. Os protestos foram organizados pela internet, e ganharam força lá. Qualquer ser humano hoje, que faça qualquer tipo de trabalho que envolva as pessoas, está na internet. O Facebook pode não ser o melhor lugar do mundo para o debate inteligente, mas o povo está lá. Nosso prefeito esteve ativamente interagindo com o povo no Facebook e Twitter (através de acessores, eu sei, e não importa). Durante a campanha. Depois, sumiu.

Por isso a frase do momento é “Fulano não me representa”.

É uma utopia muito grande, eu sei, mas eu imagino o prefeito, da França mesmo onde ele estava semana passada, convocando as pessoas na última quarta para um hangout. Mostrando seus motivos e argumentos, e ouvindo as pessoas. Por que se eu sou empregado e meu patrão está tão furioso comigo a ponto de vir gritar na porta da minha casa, eu vou fazer questão de falar com ele.

O patrão, nesse caso, não aguenta mais. Por isso tanta gente na rua. Pela passagem sim, e para mostrar quem é que manda.

 E as urnas?

Vi também um monte de gente compartilhando uma imagem de uma urna com o texto “proteste aqui, idiota”. Muita gente dizendo “por que não protestam nas eleições”?

Ora, imagine que você é dono de uma lanchonete e combinou com seus funcionários que vai fazer avaliação com eles a cada seis meses. E nesse momento, vai aumentar salários de quem merece, vai conceder promoções, mas vai também dispensar os que não servem. Mas, três meses depois da última avaliação, você descobre desvios de conduta sérios de um funcionário. Ele está usando água da privada para fazer café, xingando as velhinhas que demoram a contar o dinheiro e mordendo o lanche dos clientes que reclamam, na frente deles. Você vai esperar mais três meses até a próxima avaliação?

É a mesma coisa. Eu não votei no Haddad no primeiro turno, no segundo fui obrigado. Não votei no Alckmin. Mas eu acho que mesmo quem votou nesses candidatos tem o direito, e a obrigação, de pras ruas agora. Não vamos achar governantes perfeitos e nossa ação para mantê-los na linha não pode acontecer apenas a cada quatro anos, mas a cada desvio de conduta.

Democracia direta já!

Numa democracia direta, o povo vota não apenas nas pessoas, mas nas decisões. O orçamento da prefeitura é feito com o povo. É o povo que decide se uma avenida será ampliada para carros ou para um corredor de ônibus. É o povo que decide se a verba vai ser destinada a aumentar o salário dos professores ou dos vereadores. Antes da internet, democracia direta era meio inviável para cidades do tamanho de São Paulo. Com a tecnologia que temos hoje, acho que está na hora de começar a pensar no assunto, não?

Também acho que é um longo e difícil caminho de uma estrutura política como a brasileira para uma democracia direta. Alguns vão dizer que é um caminho impossível, eu não acho. Mas não será fácil.

Enquanto isso, vamos fazer democracia direta do nosso jeito. Ao tomar uma decisão, os representantes eleitos do povo precisam ouvi-lo. Os legisladores deveriam estar agora no Facebook, no Twitter, na TV, nas ruas, perguntando a você, o patrão, o que você acha da PEC 37. Se não estão ouvindo, vamos fazê-los ouvir.

Artigo recomendado: A simple (and very rough) responsive table solution

Tabelas responsivas de um jeito fácil:

“There are a lot of very clever responsive table solutions available now. There are solutions that flip the table on it’s side, convert it to a pie chart, gradually reduce the columns, allow users to determine columns, and even allow partial scrolling across the table. All of them are very clever.”

Leia mais: http://www.maxdesign.com.au/2013/03/22/simple-responsive-table/

Artigo recomendado: Terá a Internet se tornado o incrível mundo dos reclamões? – youPIX

Quando a internet surgiu essa não foi a ilusão que criei pra mim. Não sei se você já parou pra pensar, que o mundo se transforma tão rapidamente, que a única maneira de ficarmos confortáveis é criar uma ilusão de estabilidade. Leia mais: http://youpix.com.br/colunistas/tera-a-internet-se-tornado-o-incrivel-mundo-dos-reclamoes/

Sampa JS, recomendo

Alguém me perguntou há pouco o que eu acho do Sampa JS, por que eu não vou, por que eu não apoio o evento e etc. Resolvi responder por aqui, já que talvez mais alguém pode ter essa dúvida (se é que isso importa para alguém, né?)

Vamos lá, assunto pessoal: eu sou adventista do sétimo dia, por isso dedico o sábado a atividades não-profissionais: tempo com a família, trabalho voluntário de ajuda aos necessitados, estudo da Bíblia e oração. Por isso, não tenho ido a boa parte dos eventos de nossa área. A maioria acontece aos sábados. Em alguns outros, como o excelente Tableless Conf, eu simplesmente não consegui agenda para ir (ando trabalhando demais.)

Então, para quem estava curioso, é só isso.

Aliás, eu recomendo muitíssimo o Sampa JS, se você puder ir. Parece que vai ser um evento e tanto!

Artigo recomendado: Two Things About Conditionals in JavaScript

Detalhezinho sobre a linguagem que vale a pena conhecer, e uma boa dica de lógica sobre um erro muito cometido por iniciantes:

“We shouldn’t be fearful of writing about what we know. Even if you write from the most basic point of view, about something which has been ‘around for ages’, you’ll likely be saying something new to someone. That’s because there is no else if in JavaScript.”

Aprenda SVG!

SVG é suportado em tudo quanto é navegador hoje, incluindo o Internet Explorer 9. Isso significa que, num futuro próximo, você vai poder usar SVG sem medo. Enquanto isso, para boa parte das necessidades, você pode usar SVG com uma biblioteca de compatibilidade com IEs antigos, como a Raphaël e a svgweb.

Dá uma olhada nesse exemplo. Exibe o código fonte e você vai ver que isso aí foi feito com umas 300 linhas de javascript.

Qual o segredo?

SVG é um formato de XML para a descrição de gráficos vetoriais. O que significa que, diferente do que acontece com canvas, com SVG os objetos que você exibe na tela são de fato objetos, nós do DOM, na árvore do seu documento. Então dá uma olhada nesse outro exemplo. A animação do logo em cima e o gráfico interativo em baixo, tudo isso tem umas 35 linhas de Javascript apenas.

Então fica a dica: estude SVG. Tenho certeza que vai ser útil.

 

SQL Executioner

Olha que útil: SQL Executioner, um plugin WordPress que te dá uma tela no painel para a execução de SQL, substituindo para muita coisa o phpMyAdmin ou ferramentas semelhantes:

wordpress-sql-executioner-screenshot

Acabou de salvar um cliente da Visie que hospeda o site num provedor que não nos dá facilidades como acesso SSH ou um bom painel de controle.

Claro, use com cuidado, e desinstale depois de usar.

Escolha com cuidado suas regras

É impressionante a facilidade com que certas discussões técnicas ficam parecendo discussões sobre moral, ética ou futebol. Parece que é difícil entender o fato de que fazer uma escolha técnica diferente da sua não vai condenar ninguém ao inferno.

Veja, por exemplo, a questão da validação do W3C. Algumas páginas do site da Visie não passam na validação do W3C. E a gente não está nem aí para isso. Entenda bem, nós acreditamos na importância dos padrões web. A empresa se chama “Visie Padrões Web”. Mas acreditamos que padrões web são importantes porque tornam seu site acessível, compatível, rápido e indexável. Também são importantes porque formam um excelente conjunto de tecnologias para o desenvolvimento. Desenvolver direito com padrões web é a melhor relação custo X benefício.

Nada disso tem a ver com estar “certo”, politicamente correto, ou com conseguir ganhar um selinho. Tem a ver apenas com encontrar a melhor maneira de deixar meus usuários satisfeitos. Ponto.

O validador é uma ferramenta e tanto. Principalmente para quem está aprendendo HTML ou precisa corrigir um problema misterioso num site. Eu uso muito o validador em treinamentos. Mas ele não é um juiz, um crivo obrigatório sem o qual seu site não deveria nem ser publicado.

Javascript

Javascript é uma linguagem muito flexível, que permite muitas escolhas diferentes de modelagem, de técnica de codificação e até de estilo do código. E isso é um terreno muito fértil para os inventores de regras. Existem mil maneiras de preparar Neston. Nenhuma é mais “certa” do que a outra, o que define o que é certo são seus objetivos.

Não, não estou falando sobre a polêmica dos ponto-e-vírgula no código. Embora esse seja um assunto interessante, não é tão importante. Estou falando de algo mais.

Leia, por exemplo, o excelente artigo do Willian Bruno sobre orientação a objetos. Antes de criticá-lo, preciso dizer que o Willian usou uma abordagem muito didática, e escreveu código impecável. Vale a pena a leitura. A única coisa que eu recomendo ao leitor é que entenda que a abordagem usada não é a única correta.

Começando com o estilo de código para orientação a objetos. Tem gente que escreve construtores de objetos literais, como o Willian fez. Tem gente que escreve funções construtoras, para ser chamadas com new, e atribuem propriedades e valores dentro do construtor. Tem gente que escreve funções construtoras e atribui propriedades e métodos ao seu prototype. Há grandes diferenças de sintaxe e ligeiras diferenças nos resultados obtidos ao usar cada técnica. O ponto é: não escolha as regras de alguém como as suas sem entender primeiro os porquês.

Outro ponto tem mais a ver com a modelagem do que com estilo de código. O Willian usa um pattern bastante popular hoje em Javascript, o Module. E faz com ele controle de visibilidade, fazendo com que apenas um método seja visível fora do módulo. Esse estilo de modelagem, embora bastante popular, está longe de ser o único correto. Embora programadores Java e C sejam incentivados a se preocupar muito com isso, a maioria dos programadores Ruby usa com muita parcimônia o controle de visibilidade e a comunidade Python tem vivido muito bem sem esse recurso. Você pode escrever módulos com excelente nível de encapsulamento sem controle de visibilidade.

A mesma coisa se aplica a quase qualquer escolha em tecnologia. NoSQL não é a bala de prata que vai salvar a próxima geração de ERPs, mas vale a pena conhecer. Os novos recursos do HTML5 não vão tornar a jQuery desnecessária, mas você precisa conhecê-los. O Sublime Text não me fez largar o Vim, mas valeu muito a pena gastar um tempinho para ter uma segunda opção.

Moderação. Não é futebol. Não é religião. É só técnica.

 

Pare, pense, e faça alguma coisa!

Este é um blog sobre tecnologia e desenvolvimento, e eu tenho sido muito criterioso em evitar posts sobre outros assuntos. Mas dessa vez eu não me aguentei. Hoje li esses posts:

Se você ainda não os leu, por favor, leia agora. Depois você volta aqui e continua a ler o meu.

Não levou a sério? Cara, vai lá, lê os dois posts, você vai perder um minutinho só em cada um. Vale a pena.

Leu? Bom queria falar de 3 assuntos: carros, bicicletas e trabalho.

O primeiro texto é sobre carros. Os outros dois sairão nos próximos domingos.

Tenho um sedã popular. Comprei novo, há três anos. Está na hora de trocar. Não amo meu carro, embora goste muito do conforto e comodidade que ele traz a minha família. Já me disseram para trocar meu carro por um “melhor”, mas “melhor”, nesse caso, significa mais caro, mais imponente ou maior. Nenhum desses três adjetivos significa melhor para mim. Não é raro que eu deixe o carro na garagem e vá de transporte público a alguma reunião. Não é raro também, ver nas pessoas cara de espanto ao saber que eu cheguei até ali sem um carro. “Está tudo bem? Quer uma carona? O que houve com seu carro?” São as reações mais comuns.

Por quê? Claro, por uma série de motivos, incluindo o fato de que tem muita gente que realmente te julga pelo carro em que você anda. Mas há um outro motivo, que talvez seja mais doloroso: não ter um carro, em São Paulo, é muito ruim. Dependendo do seu caminho, andar de transporte público é desumano.

Fiz uma experiência simples. Escolhi quatro shopping centers, cada um em uma zona da cidade, e tracei as rotas no Google Maps da minha casa até lá agora:

Lugar de carro de transporte público
Zona Oeste 0:23 1:25
Zona Leste 0:30 1:20
Zona Norte 0:23 1:20
Zona Sul 0:33 1:10

Está certo, é domingo. Se seu trajeto puder ser feito de Metrô e for hora do rush, o carro perde feio. Dependendo do trajeto, é melhor até ir andando a pé pela rua do que de carro. Você olhou bem para a tabela acima? Se eu for a um shopping agora com minha família, de carro, em qualquer lugar da cidade vou gastar cerca de uma hora em deslocamento, ida e volta. Se formos de transporte público, levarei duas horas e meia, se der sorte.

Qual o resultado disso? Simples, quem puder vai andar de carro, sempre que puder. O jovem de classe baixa arruma o primeiro emprego e começa a se planejar para comprar um carro, para se livrar do ônibus, mesmo que o carro custe mais de um ano de salário. São Paulo tem 11 milhões de habitantes e 6 milhões de carros. Não cabem 6 milhões de carros nas ruas.

A matemática é simples. São Paulo tem cerca de 14 mil quilômetros de ruas e avenidas. Se todos os 6 milhões de veículos da cidade forem colocados em fila, encostados um no outro, a fila terá quase 27 mil quilômetros. Mesmo a cidade tendo centenas de avenidas com várias pistas, é fácil ver o que acontece.

A solução não é fazer mais avenidas. Nosso modelo de cidade feliz não pode ser um lugar onde todos tenham bons carros e possam dirigi-los livremente. Não porque eu ache que pessoas de determinada classe social, cor da pele, religião ou time de futebol não mereçam ter um bonito SUV de oito lugares. Simplesmente não cabe, não há espaço para isso. Nós precisamos de outro modelo de felicidade. Precisamos de uma cidade em que sair de carro seja apenas uma das boas opções.

Enquanto continuarmos achando que quem tem um carro é mais importante do que quem anda à pé, deixando de dar preferência ao mais frágil no trânsito, xingando o sujeito que teve a coragem de fazer alguma coisa ao deixar o carro em casa e sair de bicicleta, buzinando para o motorista que parou antes de uma esquina para o pedestre passar, vamos estar transmitindo uma mensagem a toda a sociedade: importante é quem tem carro. Nossas crianças estão ouvindo a mensagem. Nossos governantes também.

Isso tem muito a ver com você, que não sairia de casa sem carro nem que estivesse em Londres. Não estou dizendo que você precisa deixar de andar de carro, que isso é crime. O que estou dizendo é que, se você não quer ser obrigado a deixar o carro em casa, você precisa parar de pensar em avenidas e viadutos, e começar a pensar em tornar a cidade boa para todos. Ao votar, ao escrever, ao conversar, você deveria fazer o que estiver ao seu alcance para que São Paulo tenha transporte público excepcional, e que andar a pé, de bicicleta, de moto ou de Pogobol seja maravilhoso. É o único jeito de cabermos todos aqui.

Papo de Maluco

Hoje estava brincando com Requests e tive essa ideia maluca:

import requests
import re

def Ed(text):
params=dict(server=’0.0.0.0:8085′,charset_post=’utf-8′,
charset=’utf-8′,pure=1,js=0,tst=1,msg=text)
return re.sub(‘<[^>]*>’,”,re.sub(r’\n+$’,”,
requests.get(‘http://www.ed.conpet.gov.br/mod_perl/bot_gateway.cgi’,
params=params).text))

def SeteZoom(text):
params=dict(server=’127.0.0.1:8088′,pure=1,js=0,tst=1,msg=text)
return re.sub(r’\n+$’,”,
requests.get(‘http://bot.insite.com.br/cgi-bin/bot_gateway.cgi’,
params=params).text)

msg=’Oi!’
while True:
print ‘SeteZoom: %s’ % msg
msg=Ed(msg)
print ‘Ed: %s’ % msg
msg=SeteZoom(msg)

Teste aí, o resultado às vezes é mais inteligente que muito chat entre seres humanos por aí…