Let it flow

A nice Sunday morning read:

http://code.flickr.net/2015/09/01/the-data-freshener/

But it amazes me that, as an industry, we’re still dealing with these kinds of problems (synchronizing data between different layers) after all these years.

I remember first coming across this issue back in 2003/2004 when developing a Windows Forms + ADO.NET front-end connecting do a SQL Server Back-end.

Sure, the technology stack is completely different and Flickr’s scale is way way bigger, but the problems are fundamentally the same.

One would have guessed that after all these years, we would have learned a couple of lessons from the database replication/synchronization field, applied them to the problem at hand and stopped reinventing the wheel.

Maybe we could all learn something from fluid dynamics.

Data should flow between the different layers the same way a shot of vodka flows when poured into a glass of cashew juice. Hic!

Bom Retiro Aluga

Hoje faz um mês da minha primeira visita ao Bom Retiro para ver a situação por lá.
Algumas semanas antes eu tinha visto em algum lugar – não lembro se na TV ou na internet – que o comércio de lá estava em crise.
Depois de ouvir de vários colegas que a imprensa estava trabalhando contra o governo exagerando os efeitos da crise, eu resolvi ir lá ver com os meus próprios olhos.
Fui numa quarta-feira a tarde (22/07/15) levando a minha câmera “pequena” (uma mirrorless) e em 34 minutos eu fiz as 26 imagens nos locais indicados no mapa abaixo:

Clicando em cada marcador no mapa acima, é possível ver a imagem feita naquele local. Para ver o mapa em tela cheia, clique aqui.

Se preferir, pode ver as mesmas imagens no álbum abaixo. Clique nas laterais da imagem para avançar ou retroceder no álbum.

Bom Retiro Aluga

Fiz uma segunda visita ao bairro numa quinta-feira a tarde (13/08) levando novamente a minha câmera “pequena”. A idéia era percorrer as ruas que eu não tinha percorrido durante a primeira visita. Em 1:11 eu fiz 57 fotos de pontos comerciais diferentes. Todos fechados.

Infelizmente, ao chegar em casa, percebi que eu não tinha registrado as coordenadas de GPS – provavelmente por mau-contato entre ele e a câmera. Por conta disto, eu planejei uma terceira visita ao bairro para refazer na medida do possível o trajeto da segunda visita, mas coletando as coordenadas de GPS de cada um dos locais fotografados.

As imagens desta segunda visita estão abaixo, mas sinta-se a vontade pra pular diretamente para as imagens da terceira visita que em grande medida são os mesmos lugares da segunda.

Bom Retiro Aluga II

Na terça-feira passada (18/08) eu fiz a terceira e provavelmente última visita ao bairro com a intenção de coletar material pra esta série. Diferentemente das duas primeiras vezes, eu levei a minha câmera “grande” com uma grande angular. A idéia era captar um ângulo de visão mais aberto onde desse para ver melhor as outras lojas em torno de cada um dos pontos comerciais fechados. O resultado desta última visita foram 104 imagens coletadas nos locais indicados no mapa. Como no mapa anterior, clicando-se no marcador abre-se a foto correspondente. Para ver o mapa em tela cheia, clique aqui.

Se preferir, veja as fotos no álbum abaixo: Bom Retiro Aluga III

Por fim, elaborei um slide-show com 130 das imagens coletadas durante a primeira e terceira visitas. O vídeo é meio longo com pouco mais de 14 minutos, mas hey… São 130 fotos cada uma delas com pelo menos uma loja fechada pra alugar.

O mapa consolidando a primeira e terceira visitas pode ser visto em tela cheia aqui.
Alguns detalhes importantes: Eu procurei deixar de fora os pontos comerciais fechados que não tinham uma placa de “Aluga-se”. Também procurei deixar de fora sobre-lojas e residências que tinham placas de “Aluga-se” ou “Vende-se”. Se eu tivesse coletado material destes lugares, o volume de imagens provavelmente teria triplicado.
Embora eu tenha tomado o cuidado de não incluir lugares repetidos, pode ser que um ou outro tenha passado desapercebido. Se você encontrar algum, por favor avise-me.

Aprendendo JavaScript – da perspectiva de um desenvolvedor .Net

Eu venho futucando com JavaScript pelo menos desde 1998 ou 1999. Talvez um pouquinho antes.
Mas a grande verdade é que eu nunca peguei pra aprender a linguagem – e uma plataforma correspondente – com o mesmo empenho e na mesma profundidade que dediquei a outras como, por exemplo, Clipper ’87 e 5; Microsoft Access (Access Basic e depois VBA); Visual Basic e por fim C# e VB.NET.

Sempre que precisei fazer alguma coisa que fosse executado num browser, eu partia de uma base fundamental de conhecimento (boa parte da qual aplicável a outras linguagens) e aprendia o resto sob demanda, muitas vezes na base da tentativa e erro, mexendo aqui e ali até conseguir fazer a coisa funcionar – ou desistir.
Muitas vezes, uma parte do conhecimento adquirido na execução da tarefa acabava se perdendo já que no dia-a-dia, o meu foco estava focado em aplicações front-end nativas (que rodam fora do browser) e sistemas back-end usando outra technology stack.

Bom… Há pouco mais de uma semana eu fiz umas fotos lá no Bom Retiro e vi no material uma boa oportunidade de brincar com uma idéia que que venho querendo implementar já há algum tempo.

A idéia era distribuir num mapa marcadores apontando para os locais onde cada foto foi feita. Clicando ou tocando no marcador, abre-se um painel flutuante com a foto correspondente.

Se a resolução do dispositivo que você está usando for baixa, talvez você prefira ver o mapa rodando em tela cheia fora do blog. Neste caso, siga este link, mas não se esqueça de voltar pra cá!

Durante a prototipação eu encontrei as dificuldades costumeiras para quem detém somente um conhecimento básico de uma das ferramentas que está usando – nesse caso JavaScript – e nenhum conhecimento do restante do ferramental: JSON, JSONP, jQuery (que acabei não usando) e as APIs do Flickr e do Google Maps.

Mas o que me deixou particularmente frustrado foi uma hora em que eu estava tentando fazer o painel flutuante funcionar. Na pressa e não tendo lido a documentação com a atenção necessária – especialmente o trecho

The content of the InfoWindow may contain a string of text, a snippet of HTML, or a DOM element. To set the content, either specify it within the InfoWindowOptions or call setContent() on the InfoWindow explicitly.

, eu passei o olho no trecho abaixo
e traduzí isso usando o meu conhecimento de C# e VB.NET como sendo um construtor com um parâmetro nomeado – parâmetro este que seria atribuído à propriedade content do InfoWindow Como eu estava reaproveitando o InfoWindow pra exibir as diferentes fotos, era necessário alterar seu conteúdo cada vez em que o marcador fosse clicado e para isto, eu atribuía o conteúdo a infoWindow.content em outra parte do código. O problema é que infoWindow.content que na terminologia do JavaScript é uma propriedade está implementado no que seria equivalente no .Net a um campo (public instance field) e não uma propriedade (property) Num campo, o código externo referencia o campo diretamente, enquanto que numa propriedade o acesso se dá pelo que chamamos property accessors que nada mais são que rotinas que são executadas para obter ou atribuir um valor à propriedade. O detalhe é que a rotina pode fazer outras coisas além disto, como por exemplo, atualizar a UI com o valor recebido. Pois bem, InfoWindow.content não tem o código necessário para atualizar a UI. Depois de bater um pouco a cabeça eu acabei descobrindo que deveria usar InfoWindow.setContent() e então o problema foi resolvido. Depois deste episódio e levando em conta que muitas das coisas que estou querendo fazer envolvem JavaScript, resolvi tomar vergonha e estudar o assunto na profundidade que ele merece. Para tanto, comprei o JavaScript: The Definitive Guide.

O livro é um calhamaço com mais de 1000 páginas sendo que destas, umas 700 podem ser lidas sequencialmente. As outras 300 tem o formato referência “guia” de referência para a linguagem e os recursos client-side do JavaScript. Tendo lido um pouco mais que 250 páginas, posso dizer que estou gostando bastante. Os primeiros capítulos foram os mais interessantes, já que foram apresentadas uma série de particularidades e nuances da linguagem – que eu não conhecia – de uma forma que foi possível mapeá-las com facilidade ao meu conhecimento existente na plataforma .Net e suas linguagens. Em vários momentos, eu lembrei dos livros de especificação do C#, VB.NET e do CLR via C# – excelentes títulos para quem quer dominar os conceitos fundamentais de .Net que servem de base para tudo que vem acima: ASP.NET, WPF, WCF, etc… Uma das primeiras coisas que me surpreendeu – e que tomei nota:

Mas tem muito mais: Particularidades sobre escopo de variáveis em funções aninhadas (closures) ou durante a execução de eval(), “herança” via prototypes, sutilezas do strict mode, funcionamento dos objetos nativos do JavaScript, delete, loop for in e por aí vai…

O nível de detalhe com o que o autor trata cada assunto me agradou bastante. Pelo menos enquanto ele trata de tópicos sobre os quais eu tinha nenhum ou pouco conhecimento, mas ficou meio chato em alguns trechos onde o mapeamento do conhecimento de JavaScript para C# é mais direto ou quando ele cria polyfills e outras alternativas para implementar em ECMAScript 3 recursos nativos do ECMAScript 5.

Neste último caso, eu achei que o código apresentado nem sempre tem o mesmo nível de qualidade e atenção a detalhe que o texto que o acompanha. Lendo o texto, em mais de uma ocasião foi possível elaborar o código mais simples e/ou mais robusto que o apresentado no livro.

O primeiro exemplo que me vem à cabeça, são os exemplos de código onde ele define o prototype de um construtor. Vários dos exemplos iniciais criam objetos para prototype do zero descartando no processo, o prototype original – ao invés de construir em cima dele. Embora as duas formas tenham os seus usos e aplicações, me parece que é mais usual ir adicionando os novos membros (propriedades e funções) em cima do prototype existente.

Outro trecho cansativo é o capítulo onde ele tenta emular no JavaScript, caraterísticas de orientação a objetos nativas a linguagens como Java (e C# apesar dele não ter citado este último) como encapsulamento, abstração, etc.

Muita gente deve querer e pedir por este tipo de exemplos, mas a impressão que dá, é que se está tentando forçar a linguagem a ser uma coisa que ela não é. As soluções apresentadas podem apetecer a quem reza unicamente pela cartilha da orientação a objetos, mas me deixaram imaginando se não seria o caso desse pessoal abrir a mente e abraçar outras abordagens, como a programação funcional ou mesmo procedural – não no lugar da, mas em adição à orientação a objetos.

Com ou apesar destas ressalvas, da parte que li até agora, numa escala de 1 a 5 eu daria nota 4 para o livro.

Agora deixa eu voltar pro livro porque eu estou doido pra descobrir quem matou o objeto que apareceu lá no Garbage Collector 😉

Inauguração da Ciclovia da Avenida Paulista

Meu plano original para o último domingo era ir no Fotroca, mas eis que surgiu uma oportunidade que eu não poderia perder: A Av. Paulista seria fechada ao trânsito de veículos para a inauguração da Ciclovia da Av. Paulista.

A oportunidade perfeita para abrir o tripé no meio dos cruzamentos ao longo da avenida e fazer algumas panorâmicas 360 graus – ou como o Google gosta de chamar, photo spheres.

Caso você nunca tenha navegado por um photo sphere, clique na imagem e arraste para os lados ou para cima e para baixo para mudar o ângulo de visão para qualquer direção 360 graus.

Seguem três das que já estão prontas.

 

 

 

Coletei material para fazer outros, mas ainda não terminei de processá-los.

Estes e mais algumas outras dezenas de photo spheres feitas ao redor da cidade de São Paulo podem ser encontrados lá no Google Views.

Vai tomar banho!!!

Tendo nascido em Seattle – um lugar frio, desde sempre eu fui acostumado a tomar banho quente e por isto nunca fui muito fã de água fria.

De uns 15 anos pra cá, isso virou uma certa aversão e chegou num ponto em que muitas vezes eu deixava de curtir pequenos momentos como tomar um banho de rio durante uma trilha ou passar férias na praia e voltar de lá sem ter dado sequer um mergulho no mar.

Mas com certeza, o pior foi em fevereiro de 2012 quando fui para a Antártida, tive a chance de uma vida de fazer polar plunge e não fiz! Tudo para evitar o desconforto de entrar na água gelada…

Ainda no primeiro semestre de 2012, eu fui fazer o Curso Básico de Montanhismo no CAP. Na montanha em geral e no curso em particular, nos colocamos em várias situações de desconforto. Foi durante o curso, que pela primeira vez eu tive contato com a noção de que se submeter a situações de desconforto não é de todo ruim. Pelo contrário, podem haver aspectos positivos na forma de como passamos a enxergar o mundo, aquilo que nos cerca, as situações que nos são colocadas e o mais importante: como reagimos a isso tudo.

Mas vamos deixar o CBM para um próximo post e voltar à questão da água fria por que no final do ano passado, eu cruzei com um vídeo bem interessante sobre a Terapia do Banho Gelado – ou Cold Shower Therapy no original em inglês. Assiste o vídeo. Vale a pena.

Hoje fazem 6 meses que estou tomando banho frio.

Não dá pra dizer que eu virei um trator e saí resolvendo tudo o que eu gostaria e não resolvo pra não enfrentar uma situação de desconforto, mas já tirei várias coisas da minha To Do List que eu que eu vinha protelando por meses. Acredito que seja um bom começo.

 

P.S: Desde 11 de dezembro de 2014, só tomei banho quente em 3 ocasiões – curiosamente, todas no verão. Até agora foi relativamente fácil. Se conseguirei atravessar o inverno fazendo isso, aí já é outra questão 🙂

Nike+ versus RunKeeper Ultimate Smackdown

Terminei o último post falando que iria entrar nos prós e contras dos sistemas Garmin e Nike+, mas alguns problemas neste último fizeram com que eu decidisse testar outros sistemas.

A app (a parte do sistema que roda no celular) do Nike+ é excelente, mas o website não lida muito bem com nada que saia do caminho feliz.

Para ficar só com dois exemplos:

  1. É possível conectar o Garmin Connect ao Nike+. Com isso as corridas registradas num relógio Garmin são importados para dentro do site do Nike+. O problema é que se você tiver estabelecido uma meta/objetivo, ele não é atualizado.
  2. Se por algum motivo você precisar excluir uma corrida, a distância não é subtraída dos totais do período (semana, mês).

Para piorar, se você acionar o suporte da Nike, eles sempre mandam deslogar, limpar os cookies, arquivos temporários, etc e logar novamente. Só que isso nunca resolve o problema. O problema só é resolvido depois que eles mexem em alguma coisa do lado de lá.

Segue um trecho do diálogo de um dia particularmente inspirado…

As coisas chegaram num ponto tal, que eu resolvi buscar alternativas. Durante todo o mês de Maio eu testei o RunKeeper. Entre os meus amigos que estão atualmente logando corridas usando algum sistema, este parece ser o mais utilizado.

O RunKeeper tem uma versão gratuita e outra versão paga que custa 10 doletas por mês ou 40 doletas por ano. Com esse esquema de preços, está claro pra mim, que o que eles querem é te vender a anuidade. A mensalidade está ali só pra fazer você pensar que está fazendo um puta negócio ao comprar um ano inteiro pelo preço de 4 meses. Desconto de 67%? Prefiro acreditar na existência parcelamento no cartão de crédito sem juros. E de gnomos.

Como a idéia era testar o sistema, eu optei, é claro, pela versão gratuita. Durante todo o mês de Maio eu usei o RunKeeper para logar todos os meus treinos e uma prova de 15 milhas.

Durante esse período, eles não perderam absolutamente nenhuma chance de tentar me empurrar a versão paga usando banners no próprio app e uma avalanche de e-mails.

O problema é que a versão gratuita da app e o site são muito fraquinhos… Mas muito! Quando comparado ao ofertado pela Nike (mesmo com o site bugado), a versão gratuita do RunKeeper é de dar dó!

Eu entendo que o RunKeeper precisa fazer dinheiro de algum jeito e que eles não tem toda a musculatura e as outras fontes de receita que a Nike tem, mas essa estratégia de fornecer crippleware pode no longo prazo acabar lhes fazendo mais mal do que bem na medida em que as pessoas tem chance de conhecer outros sistemas que oferecem mais recursos.

Uma trial da versão full provavelmente resolveria o problema. Se é pra ter uma versão gratuita, que ela pelo menos tenha recursos que façam com que eu queira usar o sistema. Uma vez que eu queira usá-lo, pode ser que eu me interesse em ter acesso a outros recursos pelos quais eles poderiam cobrar.

No comparativo entre Nike+ e RunKeeper, mesmo com os bugs no site eu fico com o Nike+.

Neste mês de Junho estou testando a versão gratuita do Strava. Em um post futuro eu conto pra vocês como foi.

Meanwhile, keep running!

Keep Running

Como eu estava dizendo no final do último post, entre o final de 2009 e o começo de 2010 eu estava levando os treinos bastante a sério, então resolvi comprar um relógio com monitor cardíaco. Acabei comprando um Garmin com GPS embutido.

Em junho, eu resolvi pegar um contador de passos pra monitorar cadência e uma balança eletrônica Tanita BC-1000 que além de medir o peso calculava percentual de gordura entre outros indicadores. Mas para poder usar a balança, precisei pegar um relógio compatível, o Forerunner 310XT.

Com tudo isso, o sistema oferecido pela Garmin coletava muito mais indicadores do que o oferecido pela Nike, então a partir de julho eu deixei de logar corridas usando o Nike+.

2010 foi o ano das duas provas mais importantes do meu “currículo”.

Em setembro, juntamos um grupo de pessoas na ITGROUP e montamos algumas equipes de 2, 4 e 8 pessoas para correr a Maratona de Revezamento Pão de Açúcar. Eu acabei correndo em dupla com o Eduardo Gomes. Ele fez o primeiro trecho e eu fiz os quase 20Km finais – até hoje a minha maior distância.

No último dia do ano eu e o Alexandre Tarifa corremos a São Silvestre. Apesar de bem melhor condicionado do que na primeira tentativa dois anos antes, desde pelo menos o finalzinho de outubro eu não vinha treinando bem.

Lembro-me de que pelo menos até a metade da prova eu ainda não sabia se completaria a prova. Eis que aparece uma energia sei lá vinda de onde, a confiança foi aumentando e quando cheguei no pé da Brigadeiro eu só tinha uma certeza: Eu iria completar a prova.

Quando eu virei a esquina com a Paulista eu lembro de ter pensado “É só isso, Brigadeiro?!? Brigadeiro, você é um fanfarrão!!”. Cruzando a linha de chegada veio aquela descarga de endorfina ou sei lá o que e uma puta sensação de euforia. Eu tinha vencido a Brigadeiro! Eu tinha completado a prova!

Na época, apesar do sistema da Garmin ser capaz de coletar muito mais indicadores que o Nike+, ele também tinha lá os seus problemas e por conta disto com o lançamento da app Nike+ que usava o GPS do iPhone, em abril de 2011 eu voltei a logar corridas no Nike+, em adição ao Garmin.

No próximo post, eu vou entrar um pouco mais nos prós e contras de cada um dos sistemas que fizeram que eu optasse por usar ora um, outra outro – quando não os dois ao mesmo tempo – e as implicações disto ao tentar analisar o meu histórico de corridas.

Run, Alfred! Run!

A primeira vez que loguei uma “corrida” foi há exatos 7 anos: 27/04/2008.

Na época eu corria munido de um Nike+ iPod Sport Kit que nada mais é que um contador de passos e um adaptador conectado ao iPod. Apesar de primitivo comparado com o que temos hoje, foi a primeira vez que tive uma forma automatizada de registrar a minha atividade física.

Primeira Corrida
Minha primeira “corrida” no Nike+

Eu pus corrida entre aspas porque essa primeira não foi exatamente uma corrida – foi uma caminhada. A meta era caminhar por uma hora e neste tempo eu percorri estimados 5.5Km.

Na época eu era um sedentário e devia estar pesando alguma coisa em torno de 90Kg. Eu já tinha tentado emplacar uma rotina de atividade física, mas nunca colou. Sempre apareciam coisas mais interessantes para fazer. Ou para não fazer.

Alfred Myers na Times Square em 19/04/2008
Com cara de Biscoito Traquina na Times Square em 19/04/2008

Uma coisa bacana do sistema do Nike+ era que ele mandava os dados da atividade para um website onde você poderia acompanhar a sua evolução. Para um cara como eu fissurado em tecnologia, números, métricas, etc, era o paraíso. I was hooked.

Num primeiro momento eu tratei de aumentar o tempo da caminhada para alguma coisa em torno de uma hora. Depois eu fui introduzindo a corrida na medida em que o fôlego deixava. A quantidade e a duração das corridas dentro de cada sessão foram aumentando gradativamente até que em agosto eu corri quase 5Km ininterruptos – pela primeira vez na vida adulta.

Quase 5Km
Quase 5Km correndo direto

Apesar de ter chegado perto, ainda ia demorar um pouco para que eu chegasse à marca dos 5Km.

Em 31/12/2008 eu resolvi ir pra São Silvestre de alegre. Era óbvio que eu não completaria os 15Km da prova correndo, mas eu queria ver o quanto eu conseguiria correr e mais importante, ver como era fazer parte daquela festa. Fiz os primeiros 4Km correndo e depois alternei corrida e caminhada como sempre. Subi a Brigadeiro toda andando e ao virar a esquina com a Paulista, eu vi a chegada e corri até cruzar a chegada. Durante todo o percurso, a galera toda na rua gritando, incentivando, batendo palmas. Quando você chega de volta na Paulista pro trecho final, toda essa energia mexe contigo ainda mais. Acho que pela primeira vez na vida eu tive uma descarga de endorfina. I was hooked! Again!

São Silvestre 2008
São Silvestre 2008

No comecinho do ano seguinte eu incluí a corrida como uma das resoluções de 2009 e de fato ao chegar no final do ano, eu tinha aumentado bastante o número de quilômetros rodados.

A brincadeira tinha começado a ficar “séria” e entre o final de 2009 e o começo de 2010 o Nike+ ainda não suportava monitores cardíacos. Foi então que eu resolvi comprar um relógio com monitor cardíaco. Mas isso vai ficar para o próximo post… 🙂

 

P.S.: Hoje era dia de treino e achei que ao invés de fazer os 12Km planejados inicialmente, seria interessante correr os mesmos 5.5Km da primeira corrida para fazer uma comparação. 00:30:01 contra 01:00:48. Metade do tempo. Que tal? 😀

7 anos depois
7 anos depois, os mesmos 5.5Km da primeira “corrida” na metade do tempo.

Bye, bye Locaweb! Não sentirei saudades…

Meu primeiro domínio de internet foi criado para a empresa que tenho no começo de 1999.

Já faz bastante tempo e sinceramente não lembro se hospedei de cara na Locaweb ou se eu hospedei primeiro no provedor de internet da cidade onde morava na época e depois transferi pra Locaweb.

Em todo caso, o primeiro registro transações com a Locaweb que eu ainda tenho data de 2006.

Em todo esse tempo como cliente da Locaweb, a sensação que fica é que a Locaweb é um provedor de hospedagem que não dá problema – desde que você não precise mexer no que está lá. E isso pode ser um problema bastante sério num ambiente como a internet onde as coisas estão mudando – e por consequência sendo mexidas – o tempo todo.

O plano contratado na Locaweb consistia basicamente em um site e “n” caixas de e-mail.

O site não dava problema já que como eu não estava mais operando a empresa, não tinha o que mexer. Inclusive, depois de um tempo por falha minha, a hospedagem descartou os arquivos do site que ficou vazio desde então. Até aqui, tudo bem.

Já a parte de e-mail eu continuava usando, principalmente para uma idéia que eu tive para diminuir a quantidade de spam que eu recebia. A idéia consistia em criar um alias específico para cada site que exigisse um endereço de email para fazer login.  Todos os alias apontavam para a mesma caixa de e-mail e assim, tudo ficava concentrado numa única caixa postal. Caso o endereço do alias vazasse para algum spammer, era só questão de excluir aquele alias em específico. Um pouco trabalhoso, mas extremamente eficiente.

Pois é… Aqui começam os problemas: Toda vez que eu precisava criar um novo alias, eu tinha que esperar no mínimo duas ou três horas para que o alias entrasse em funcionamento. Não muito eficaz já que geralmente os sites te enviam um email com link de confirmação assim que você pressiona o botão de conclusão do cadastro. Na minha santa paciência, eu interrompia o cadastro, criava o alias, e continuava o cadastro horas depois.

Agora compare isto com o Google Apps que contratei no ano passado. Os alias entram em funcionamento instantaneamente!

Há algumas semanas quando eu decidi usar WordPress, a minha primeira opção foi a de usar o contrato que eu já tinha com a Locaweb.

Mais uma vez começam os problemas…

O meu site estava hospedado num servidor Windows Server 2003. Abri um chamado para atualizar para a versão mais recente que eles disponibilizam: Windows 2008.

Entre o pedido e o início do atendimento algumas horas depois, eu acabei descobrindo que o ambiente Windows oferecido por eles não disponibilizava todos os recursos necessários para o funcionamento total do WordPress. Um dos recursos do WordPress não suportados eram as URLs amigáveis.

Pedi para o helpdesk para que eles segurassem o upgrade até que eu entendesse melhor a situação. Pesquisando o material disponibilizado no site deles, não encontrei muita coisa além da falta de suporte para URLs amigáveis.

Em todo caso, como as URLs amigáveis são importantes para SEO, eu resolvi entender melhor a oferta de Linux deles para uma eventual mudança de plataforma. No entanto, eles não tem nenhum comparativo entre os recursos disponibilizados para cada um dos ambientes para auxiliar nesta decisão.

Como eu já não tinha mais nenhuma dependência em componentes de infra-estrutura do Windows para rodar o site, que afinal seria refeito do zero, resolvi arriscar a ida para o ambiente Linux mesmo com conhecimento zero da plataforma.

Nesse momento, o atendente me informou de que eu precisaria fazer um backup local de todos os meus e-mails. Mas peraí! A oferta de e-mail da Locaweb não roda na mesma infra-estrutura do servidor web. É provável que nem rode em Windows! Segundo o atendente, isso era necessário já que a mudança de plataforma exigia o término do plano atual e a contratação de um novo plano seguindo a estrutura atual de preços. Ou seja, eu poderia fazer upgrade do Windows e continuar com o plano atual, mas se quisesse migrar pra Linux, teria de mudar de plano.

Nem tudo era ruim. A nova estrutura de planos era mais barata, mas agora eram dois problemas: Backup dos e-mails e mudança de plano/contrato. O problema não era técnico. Era um problema simplesmente burocrático. Alguém lá inventou essa regra que agora estava sendo imposta a mim.

Eu que não gosto nem um pouco de ser forçado a fazer coisas que não fazem sentido, desisti de migrar pra Linux e reiniciei o processo de upgrade para Windows 2008 para fazer uma experiência e ver até que ponto o WordPress era suportado.

Depois deles terem feito o upgrade, eu comecei o processo de tentar instalar o WordPress. Primeiro usei o instalador deles para instalar o MySQL, pré-requisito do WordPress. Depois tentei usar o instalador deles pra instalar o próprio WordPress, mas o instalador deu pau. Acionei o helpdesk e eles terminaram de instalar.

Nesse momento, o WordPress estava funcionando no site principal. Depois de pesquisar bastante e apanhar um pouco eu consegui botar até as URLs amigáveis pra funcionar. Pensei: “Agora vai!”

Apanhei mais um bocado para descobrir que para instalar plug-ins eu tinha que escancarar as permissões de escrita nas pastas necessárias. E apanhei de novo para descobrir como fazê-lo já que a versão mais recente do Painel de Controle da Locaweb não suporta a funcionalidade. Tive que navegar por links e links entre a versão atual e versões antigas do site (que ainda estão no ar) para achar a ferramenta que possibilitava isso.

Mas enfim, as URLs amigáveis estavam funcionando e eu tinha conseguido instalar alguns plugins. Aleluia!!!

O próximo passo era testar com o blog, já que o blog já tinha bastante conteúdo. Configurei um domínio adicional (este aqui, o alfredmyers.com), importei o conteúdo e BAM! As URLs amigáveis não funcionavam no domínio adicional. Passei o dia todo pesquisando e tentando criar uma regra que funcionasse em domínios adicionais – sem sucesso.

Enfim, tinham me convencido a migrar pra Linux. Mas para isto, eu teria de resolver o problema de fazer um backup local dos e-mails. Vejam que isto é um problema quando você não usa um cliente local de e-mails há 18 meses. Tirando as apps de celular Inbox by GMail (pra uma conta GMail que tenho) e do GMail (pra conta de email do Google Apps), eu não uso clientes locais de e-mail pra nada. No laptop só uso webmail. Para. todas. as. contas.

Depois de passar horas vasculhando emails e excluindo tudo o que não era mais necessário, cheguei a umas vinte e poucas mensagens que eu achava que realmente precisava guardar. Dei forward de cada uma delas para minha conta no GMail onde seria fácil encontrá-los com a ferramenta de buscas.

Problema do email “resolvido”!

Fui dormir pensando em no dia seguinte solicitar a migração pra Linux, mas quando acordei, me veio a idéia de que talvez fosse bom manter a hospedagem Windows na Locaweb e contratar hospedagem Linux em algum outro lugar. Assim, eu teria um ambiente Windows disponível caso decidisse desenvolver alguma coisa (todo o meu know-how de desenvolvimento é em ambientes Microsoft) e um outro ambiente em Linux onde eu poderia rodar o WordPress. De quebra, eu poderia ver como é trabalhar com outros hostings que não a Locaweb. A idéia parecia interessante.

Como eu já tinha comprado vários domínios com a name.com, me pareceu razoável contratar o hosting com eles. Em 25 minutos eu:

  • contratei e paguei por um ano de hosting Linux;
  • alterei os registros de DNS do blog (alfredmyers.com) saindo da Locaweb para o name.com;
  • instalei MySQL e WordPress usando uma ferramenta que eu não conhecia, o cPanel;
  • fiz um backup do conteúdo deste blog no servidor anterior;
  • restaurei o blog neste servidor;

25 minutos! Deixa eu repetir: 25 minutos!! 25 minutos!!!

Vejam… Eu me bati por dias tentando por a coisa toda pra funcionar na Locaweb e em 25 minutos tudo estava instalado e funcionando no name.com.

Quer dizer, quase tudo. No laptop que usa servidores DNS do Google, o site apontava para o novo host. Em devices que usavam servidores de DNS brasileiros, o site continuavam apontando para a Locaweb.

Um breve parênteses: Não dá pra fazer uma comparação direta entre os tempos gastos na Locaweb e no name.com já que houveram várias indas e vindas na Locaweb, mas dado que o instalador de WordPress deles não funcionou e que cada iteração com o help-desk leva no mínimo 2 ou 3 horas pra ter resposta, a diferença de tempo para executar qualquer procedimento é bem significativa.

Voltando: Depois de dois dias esperando que revogassem a autoridade sobre o domínio, já cansado, fui direto pra Ouvidoria e abri uma reclamação. Na sequência liguei pra eles e a moça que já estava com o meu caso em mãos, providenciou a liberação. Em instantes, os servidores DNS brasileiros estavam apontando para o novo host. Agora sério… Me diz: Precisava eu abrir um caso na ouvidoria e ligar?

Ficou claro pra mim, que havia alguma coisa muito errada na minha relação com a Locaweb. Mas sem saber, eles próprios se encarregaram de desfazer a única amarra que ainda me prendia a eles: o email.

Entrei na Central de Atendimento para solicitar o cancelamento de contrato e mais uma vez, o sistema havia sido alterado. Já não era mais possível cancelar o contrato pela web. Era preciso ligar para eles e assim o fiz.

Na saída, ao terminar o cancelamento eu perguntei se eu não teria problemas com a Locaweb não revogando a autoridade sobre o meu domínio principal. A moça muito prestativa e atenciosa disse pra eu ficar descansado que tudo estaria resolvido quando os registros de DNS fossem propagados em no máximo 72h. 240h depois, eles ainda não o fizeram…

Bye, bye Locaweb! Não sentirei saudades…

Porque usar WordPress?

Continuando de onde parei no último post, eu estava escutando o podcast do Tim Ferriss enquanto corria. No episódio em questão, ele estava num bate-papo com Matt Mullenweg, um dos criadores do WordPress.

Entre outras coisas, eu fiquei sabendo que o WordPress havia deixado de ser uma plataforma somente para blogs e tinha evoluído para ser um CMS (content management system – sistema de gerenciamento de conteúdo). Soube também que o WordPress era usado em 22% da web!

Chegando em casa eu dei uma pesquisada e descobri ainda que:

  • Existem por baixo 2.500 temas diferentes para WordPress;
  • Mais de 37.000 plugins;
  • Um dos plugins em particular, o JetPack, cuidava de alguns dos problemas de desempenho que andavam me preocupando lá nos portfólios do 500px;
  • Encontrei vários artigos falando sobre temas de WordPress voltados para fotógrafos e fotografia;
  • Você pode criar seu site ou blog no WordPress.com usando a infra-estrutura gerenciada pela Automattic ou rodar fora do ambiente deles, self-hosted.
  • Existe um amplo ecossistema em torno do WordPress com milhares de desenvolvedores, web designers, etc. Com isto é fácil encontrar suporte.

Decidí prototipar um site no WordPress.com. Em menos de dois dias, eu estava com um protótipo de site com a estrutura básica de navegação montada e com cerca de 50 páginas e mais de 200 imagens no ar.

Estava decidido: Os sites seriam construídos com WordPress!

Comparando os recursos oferecidos pelo WordPress.com com o que eu teria disponível se optasse por self-hosting, ficou claro pra mim que eu teria que partir para o self-hosting. Só para ficar em dois exemplos, nem o Google Analytics, nem o Google Adsense são suportados no WordPress.com, mas existem plugins para ambos na versão self-hosted.

O próximo passo era decidir pela empresa de hosting, mas isso vai ficar para o próximo post…