Fome

August 28th, 2012 § 1 comment § permalink

Você sai. Não por escolha. Mas sai.

E você chora, e come, e arrota, e se move, e cai, e olha, e caga, e dorme, e sente fome, e peida, e sorri, e toca, e pega, e rola, e se firma sobre seus pés, e balbucia, e gargalha, e continua indo porque você não entende.

Você simplesmente não decide.

E você vê, e joga, e faz amigos, e fala, e come, e pede. E você caminha, e corre, e demanda, e cai, e chora, e sonha, e você abre a sua boca porque alguém mandou que você abrisse, e remédios são péssimos, mas você faz porque você não consegue fazer por si próprio e, na maioria das vezes, você simplesmente tem que tolerar o que lhe mandam fazer.

Você simplesmente não decide.

E você aprende—que o mundo é maior do que você imaginou e que há mais para saber do que você simplesmente tem condições de descobrir. E você corre porque o vento na sua face e a chuva em sua pele são as melhores coisas do mundo inteiro. E você chora porque subiu em um muro que você não achou que era tão alto quanto realmente era e caiu. E você sorri mais uma vez, porque ela sorriu de volta para você e isso lhe fez se sentir de uma maneira que você não entende de verdade mas que parece ter algo de certo mesmo assim. E você deixa comida em seu prato porque está satisfeito o bastante e, pela primeira vez que você entende isso, você chora, porque alguém disse que isso era algo que você não deveria fazer. E você gargalha, porque algumas vezes, você e somente você, pode decidir qual sobremesa você vai ter.

Você simplesmente decide.

E você aprende—dessa vez, que o mundo não é tão grande quanto você imaginava e que todo o conhecimento que você precisa, você já tem; ninguém mais precisa lhe ensinar nada. E você luta e se arranha porque parecia ser importante naquele momento mas vocês trocam um aperto de mão depois porque isso importa mais ainda e vocês serão amigos por tudo o que há de vir. E você olha para ela e evita seus olhos porque, por alguma razão que não entende, você não se sente mais confortável perto dela; e você chora, mas escondido dos outros porque chorar não é algo que você faz, e você se gaba, e você grita, e você toca a si mesmo e, surpreso, descobre que o seu corpo pode fazer coisas que você jamais imaginou possíveis. E você ri em voz alta olhando pela janela de um avião porque o sol se pondo nas nuvens é algo que você jamais vai esquecer e ter escolhido estar ali, naquele momento, foi a melhor coisa que você já fez.

Você simplesmente decide.

E você aprende—dessa vez, que, sim, o mundo é grande, e que a vida não é tão fácil quanto você imaginava e que também ela não é justa. E você corre, descendo pela estrada a cento e quarenta quilômetros por hora no topo de sua moto porque isso é liberdade como ninguém jamais experimentou; e você se descobre de repente com alguém gritando com você porque você esqueceu algo que achou que não era importante mas que, você descobre depois, teria poupado bastante dinheiro para alguém, em algum lugar. E você tenta por si próprio, porque, no final das contas, fazer isso não parece ser tão difícil e você tem sucesso e cresce e deixa tudo para trás porque, no final das contas, a única coisa que realmente importava era você mesmo. E você gargalha com ela pelo puro prazer dessa coisa magnífica que vocês fizeram juntos e, subitamente, você percebe que a imortalidade tem gosto de talco.

Você simplesmente decide.

E você aprende—dessa vez, que o mundo pode ser grande mas que o que realmente importa são as partes dele que você aprendeu a conhecer e amar, e que, por mais longe que você esteja de casa, sempre haverá algo a que se apegar e lembrar. E você chora porque acha que não pode continuar sozinho mas você continua porque isso é o que você decidiu. E você ri novamente porque raios podem cair—e realmente caem—duas vezes no mesmo lugar. E você pula e sente o vento passando forte ao seu redor e o mundo nunca pareceu tão grande e cheio de vida. E você capota e não sai ileso mas as cicatrizes fazem você entender que o finito é tão importante quanto tudo mais, e você continua indo porque, no fim, essa é a vida que você queria e que fez para si mesmo. Você não aceitaria outra coisa.

Você simplesmente decide.

E você aprende—dessa vez, que o mundo não era tão importante assim e que a maior coisa que já andou sobre sua superfície foi sua própria forma orgulhosa e você não se enfurece porque você já fez sua paz consigo mesmo. E você olha para trás e sorri para tudo que foi e beija as mãos frias dela e chora por um momento porque você queria ir primeiro—mas, ao mesmo tempo, você percebe que se alguém tinha que sofrer um pouco mais, melhor que fosse você. E você olha para a frente, sorrindo pelo que deixa no mundo. E você continua indo, até que seu corpo não consegue mais ir.

E você sai. Não por escolha. Mas sai.

Windows (many lives)

June 7th, 2012 § 4 comments § permalink

Eu sempre tive essa fascinação com prédios velhos, cujas cores apagadas pelo tempo e descaso escondem histórias. No cair da noite, quando o mundo parece desbotado por um breve período de tempo, quando a própria realidade oscila entre o possível e o estático, esses velhos edíficios parecem conter todas as verdades.

Eu passo e olho para um casal já no fim da meia-idade, falando baixo enquanto cumprimentam o porteiro, subindo os degraus rumo ao saguão e aos elevadores. Naquele breve momento, eu queria ser o mundo, escutar todas as pequenas histórias, todas as conquistas insignificantes, todas as derrotas que só fazem sentido para duas pessoas—todos esses pedaços desgarrados de incontáveis instantes.

Ah, eu sei. Entenda, eu tenho inveja da onisciência divina. Eu me sento aqui e olho para o mundo e eu não queria somente viver a minha própria vida. Eu não queria somente experimentar a minha própria dor porque, sabendo somente dela, não sou capaz de entendê-la.

O que dizem os oráculos? Eu não sei, mas cada janela é um derramar de narrativas, todas com seus próprios significados, uma tessitura impenetrável da qual somos capazes de ver somente uma ou outra linha quando ela nos toca depois de incontáveis batidas das asas de uma borboleta.

Eu queria ser o mundo.

Clojure, Midje e Emacs

April 17th, 2011 § 0 comments § permalink

Esses dias comecei a brincar mais sério com o Clojure e decidi gastar um tempinho configurando o meu ambiente para a linguagem. Foi mais simples do que eu pensava, embora alguns passos dependam de configurações do lado do projeto também.

A primeira coisa é instalar o ambiente. Eu estava usando anteriormente uma versão solta em um diretório mas como o uso o Mac OS X, decidi usar o brew:

~$ brew install clojure clojure-contrib
~$ brew install leiningen
~$ lein plugin install swank-clojure 1.3.0

O primeiro comando instala o Clojure e algumas bibliotecas opcionais (que todo mundo usa na verdade) e o segundo instala uma das ferramentas de build mais usadas para a linguagem (que será útil depois para os projetos).

Finalmente, o último comando instala o plugin do Swank para o Clojure, para ser usado com o Slime. Isso também assume que este último esteja instalado. Caso contrário, basta seguir as instruções oficiais. Um único detalhe é que a versão do Swank usado pelo swank-clojure não gosta muito do autodoc do Slime–basta não carregá-lo (o que é padrão).

Em segundo lugar, o que precisei adicionar ao meu .emacs foi o seguinte:

(require 'clojure-mode)
(require 'midje-mode)
(require 'clojure-jump-to-file)

(add-hook 'clojure-mode-hook 
          (lambda ()
            (progn (midje-mode)
                   (paredit-mode +1)
                   (setq inferior-lisp-program "/usr/local/bin/clj"))))

(eval-after-load 'clojure-mode
  '(define-clojure-indent
    (fact 'defun)
    (facts 'defun)
    (against-background 'defun)
    (provided 0)))

O código acima assume que o diretório onde o clojure-mode e o midje-mode estão está apropriadamente adicionado as caminhos de carregamento do Emacs.

As primeiras três linhas são os requires necessários para carregar o ambiente. O midje-mode é um modo para o Midje, um framework de testes para o Clojure que me pareceu mais interessante que a opção padrão, o clojure.test.

O hook eu useu para carregar automaticamente o midje-mode em arquivos .clj para não precisar fazer uma distinção entre testes e arquivos comuns. Eu gosto de usar o paredit também mas é opcional. Finalmente, eu configuro qual é o aplicativo do Clojure em si.

O código para depois da carga do clojure-mode é usado somente para configurar indentações específicas para o Midje e é opcional também.

Para criar os projetos em si, é hora de usar o Leiningen:

~$ lein new my-project

Isso cria um diretório my-project já configurado com tudo o que é necessário para um projeto básico (com um arquivo .gitignore de bônus).

O próximo passo é configurar as dependências do Midje no arquivo project.clj:

(defproject books "1.0.0-SNAPSHOT"
  :description "My project"
  :dependencies [[org.clojure/clojure "1.2.1"]
                 [org.clojure/clojure-contrib "1.2.0"]]
  :dev-dependencies [[midje "1.1"]])

Depois disso é só usar o comando abaixo para atualizar as dependências:

~$ lein deps

É interessante também copiar a tarefa do lein que roda os comandos do Midje: é simplesmente baixar o arquivo midje.clj e copiá-lo para um diretório chamado leiningen dentro do projeto. Depois disso é possível rodar o comando lein midje para conferir os testes.

Com isso, já é possível usar lein swank para iniciar uma conexão dentro do projeto e, depois de abrir algum arquivo do mesmo no Emacs, rodar slime-connect para conectar o Emacs ao Slime. Um vídeo bom para introduação ao Midje no Emacs está disponível no YouTube. As mensagens quando um teste passa são bem divertidas. :)

Happy hacking!

The Wise Man’s Fear

April 16th, 2011 § 0 comments § permalink

Essa madrugada–não consegui parar depois de chegar na metade do livro–terminei de ler The Wise Man’s Fear, o segundo volume na trilogia The Kingkiller Chronicle de Patrick Rothfuss.

Eu já tinha mencionado o primeiro livro aqui há algum tempo como uma leitura essencial dentro do que a fantasia tem para oferecer nos últimos anos, dando um gostinho do que o livro conta: a história de Kvothe, aventureiro, arcanista e músico.

I have stolen princesses back from sleeping barrow kings. I burned down the town of Trebon. I have spent the night with Felurian and left with both my sanity and my life. I was expelled from the University at a younger age than most people are allowed in. I tread paths by moonlight that others fear to speak of during day. I have talked to Gods, loved women, and written songs that make the minstrels weep.

You may have heard of me.

Pelo pequeno trecho acima já dá para ver que Rothfuss não quer saber dos heróis usualmente hesitantes que a fantasia geralmente apresenta. Quando o primeiro livro se abre, Kvothe é o dono de uma hospedaria em uma vila, sob um outro nome, seus atos vivendo quase como uma lenda embora estejam há apenas poucos anos no passado. Sob um outro nome, ele é procurado por um cronista a quem decide contar sua história em três dias–daí o nome e formato da trilogia.

Dentro da história que ele conta, o começo já é fatídico, espelhando a história exterior: Kvothe perde toda a família em uma idade em que a maioria das outras pessoas não saberia nem ao menos conseguir comida por conta própria e isso o lança em uma caminho trágico e espetacular.

Embora os livros se passem, na maior parte, com um Kvothe adolescente, os livros não são de forma alguma fantasia juvenil. Embora Kvothe às vezes seja maduro de mais para a sua idade, Rothfuss consegue tornar isso não só aceitável como parte integrante da história, mesclando sucesso e falhas com maestria, demonstrando a profunda inteligência e profunda ingenuidade do personagem ao mesmo tempo.

Como eu não quero contar mais da história para não atrapalhar quem não leu, basta dizer que os dois livros representam o que há de melhor sendo escrito do gênero hoje. Um dos grandes méritos do livro, na minha opinião, está no passo forte e consistente de Rothfuss que consegue construir uma mitologia resistente e completa que dá ao mundo uma profundidade enorme ao mesmo tempo que não caí nos erros de outros escritores, descrevendo em excesso partes da história que são desnecessárias para a construção maior dos livros. Um belo exemplo no segundo livro é o momento em que Kvothe faz uma viagem longa e isso é resumido em meras duas páginas enquanto uma outra cena em que ele bebe com os amigos é descrita em detalhes e se prova depois essencial para a compreensão de um mistério.

Tudo isso torna quase certo o fato de que Rothfuss será capaz de terminar bem e satisfatoriamente o seu conto no próximo livro não deixando que sua série se arraste por dez, doze livros como outros autores.

Desnecessário dizer, o primeiro livro foi um enorme sucesso no ano da sua publicação e os fãs ficaram conseqüentemente ansiosos pela continuação que estava prevista para dois anos depois. Foram necessários quatro anos para o segundo livro mas a espera valeu a pena. Agora é voltar a esperar pelo terceiro e último livro que provavelmente vai demorar o mesmo tanto. É o único problema com a trilogia. :)

Nowhere Man

April 9th, 2011 § 3 comments § permalink

Hoje é dia quinze, né? Pelo menos eu acho que é. Acho que esqueci de como o tempo passa aqui na rua.

Sabe, não é como se os dias fossem iguais uns aos outros, do jeito que é pra todo mundo. Sabe quando o cara trabalha de segunda a sexta, todo dia do mesmo jeito, chega no trabalho de manhã cedo, rezando pro chefe não perceber que ele chegou atrasado, come no almoço c’os compadres no mesmo horário, naqueles botequinhos legais na esquina da firma, vai embora na mesma hora, pra pegar o trem lotado, fazer baldeação na Luz, chegar em Tucuruvi com muito esforço?

Sábado e domingo, bem, sábado e domingo são mais ou menos a mesma coisa, eu acho. Sábado é churrasco c’os amigos ou passeio no shopping. Domingo, casa da sogra, ou casa da mãe. Pelo menos é o que acho que as pessoas fazem normalmente. Tem o Jão aí que diz que é assim, ele vai pra casa da irmã todo fim de semana e é isso o que ele diz que acontece. Eu nunca fui lá, claro, mas é isso que o Jão diz que acontece.

Aqui na rua, o tempo não passa direito. Todo dia é tão diferente, todo dia é tão cheio de coisa pra fazer, diferente, que você nem repara direito. De dia, de noite, parece tudo a mesma coisa. Muda um pouco, eu acho. Muda a hora que a polícia passa aqui, muda um pouco o tanto de gente que passa por tal e tal lugar, mas nem tanto assim, sabe. Você acaba dormindo onde consegue achar um lugar pra dormir, mas isso é até tranqüilo porque sempre dá pra achar um lugar escondidinho onde ninguém pertuba você.

Você se acostuma, sabe. Vira parte da paisagem, eu acho. Tem hora qu’eu olho no olho de alguém e a pessoa meio que dá aquele pulo como se um poste de repente tivesse criado vida e falado com ela. Mas eu não ligo, não. Depois de tanto tempo, até isso pára de importar. Você vira mesmo parte da cidade, um lugar nenhum, uma pessoa nenhuma. Dá pra viver.

Cast a Spell

April 5th, 2011 § 0 comments § permalink

Meu último texto aqui no blog foi sobre como compilar o LLVM no Mac OS X. Para os curiosos que me perguntaram o motivo disso, a resposta está aqui: Spell.

Leitores antigos do blog sabem que linguagens de programação são um dos meus interesses primários dentro do campo da computação. Desde que eu comecei a programar, eu sempre brinquei com a construção de linguagens, embora até então não tivesse tomado tempo para realmente tentar fazer um esforço ponta a ponta usando tecnologia mais recente.

Com o desenvolvimento do LLVM, as coisas ficaram bem mais simples para alguém que queira construir uma linguagem e produzir algo que realmente tenha alguma utilidade prática–seja esta simplesmente para aprender alguma coisa nova ou seja para construir algo que seja realmente passível de uso em circunstâncias de produção.

Eu me interessei pelo LLVM assim que li sobre o projeto, mas até então não tivera oportunidade de usar. Spell é o meu primeiro esforço na direção, combinando o que eu aprendi sobre o assunto nos últimos tempos com a vontade de experimentar com algum um pouco mais consitente no campo que não a criação de simples VMs.

Spell não é, de forma alguma, uma linguagem para produção. Antes, é um projeto para o meu aprendizado e o de quaisquer outros interessados em ver com uma linguagem pode funcionar. Eu usei alguns atalhos–como o Treetop para fazer a análise léxica e parte da análise sintática–mas o que está no repositório deve servir com uma referência simples ao que pode ser feito em uma linguagem.

Por exemplo, Spell implementa closures e o código demonstra os trade-offs que foram feitos para fazer isso possível. Outros caminhos estão lá que eu pretendo explorar no futuro, como mecanismos similares à Spineless Tagless G-Machine (.ps) e a geração de código para garbage collection através do próprio LLVM.

De resto, construições são bem-vindas. Havendo interesse interesse em aprender também, basta fazer um fork do repositório e implementar o que quiser. Há bastante coisa com que se fuça lá–afinal de contas, lanças magias é sempre algo divertido. :)

Compilando o LLVM como uma biblioteca no Mac OS X 10.6

January 15th, 2011 § 0 comments § permalink

Esses dias andei brincando um pouco com o projeto ruby-llvm, cujo propósito é criar bindings em Ruby para o LLVM usando o Ruby-FFI. Para aprender sobre o projeto, adicionei alguns testes para a funcionalidade já existente e corrigi alguns pequenos problemas.

Para fazer isso, eu precisei compilar a biblioteca compartilhada do LLVM, que na maioria das plataformas é algo trivial. De fato, normalmente só é necessário especificar o flag abaixo no script de configuração:

./configure --enabled-shared

Eu uso o brew, na verdade, mas o princípio é o mesmo:

brew install llvm --shared

Entretanto, a compilação acima, embora passe limpa no Mac OS X, resulta nos seguintes erros quando a biblioteca é carregada no Ruby-FFI:

dyld: loaded: /Users/<user>/llvm/2.8/lib/libLLVM-2.8.dylib
dyld: lazy symbol binding failed: Symbol not found: 
    __ZN4llvm2cl6Option11addArgumentEv
  Referenced from: /Users/<user>/llvm/2.8/lib/libLLVM-2.8.dylib
  Expected in: flat namespace

dyld: Symbol not found: __ZN4llvm2cl6Option11addArgumentEv
  Referenced from: /Users/<user>/llvm/2.8/lib/libLLVM-2.8.dylib
  Expected in: flat namespace

Trace/BPT trap

Depois de algumas investigações e uma troca de e-mails com Takanori Ishikawa, eu cheguei ao seguinte patch que resolve o problema e permite que o LLVM seja compilado limpa e corretamente como uma biblioteca compartilhada:

diff --git a/Makefile.rules b/Makefile.rules
index 9cff105..44d5b2d 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -497,7 +497,7 @@ ifeq ($(HOST_OS),Darwin)
   # Get "4" out of 10.4 for later pieces in the makefile.
   DARWIN_MAJVERS := $(shell echo $(DARWIN_VERSION)| sed -E
's/10.([0-9]).*/\1/')

-  SharedLinkOptions=-Wl,-flat_namespace -Wl,-undefined,suppress \
+  SharedLinkOptions=-Wl,-undefined,dynamic_lookup \
                     -dynamiclib
   ifneq ($(ARCH),ARM)
     SharedLinkOptions += -mmacosx-version-min=$(DARWIN_VERSION)

As opções acima mudam os namespaces para o padrão de dois níveis do OS X e a resolução de nomes para acontecer em tempo de execução.

Usar essas opções não parecer ter causado qualquer problema em outras partes do LLVM mas eu estou curioso para entender porque não são usadas por padrão pelo projeto, especialmente considerando que muitos outros projetos fazem justamente isso como descobri depois. De fato, as opções anteriores parecem ser um legado dos dias pré-10.3 do Mac OS X. De qualquer forma, fiz essa pergunta na lista LLVM-dev.

Enquanto isso, o patch funciona para mim. Também disponibilizei uma versão modificada para o brew. YMMV.

Sobre jedis, ninjas e samurais

January 8th, 2011 § 14 comments § permalink

Geeks de todos os tipos adoram se colocarem como os equivalentes tecnológicos de alguma sociedade guerreira–real ou imaginada–que exiba uma quantidade excessiva de coolness no dia-a-dia. Eu não posso culpar ninguém que faz isso porque eu também já fiz a mesma coisa muitas vezes.

É claro, eu nunca gostei tanto de Star Wars. Sendo um fã de Star Trek, eu sempre considerei Star Wars como algo que você superava quando crescia–bom para crianças, mas não para muito além disso (por favor, sem ameaças de morte, estou brincando–bem, nem tanto assim). Star Wars é fantasia e Star Trek é ciência. Claro, os Jedi são muito mais legais e eu preferiria andar com um sabre de luz do que com um phaser mas me dê um torpedo quântico qualquer dia ao invés de qualquer arma do Império ou da República.

E há sempre os samurais–aquela velha escola, valorosa, sempre envolvida em negócios por conta de honra, muitas vezes sem qualquer esperança de sucesso. De Seven Samurai a The Last Samurai–e não dá para esquecer os livros do Eiji Yoshikawa–nós ocidentais sempre admiramos a forma como esses guerreiros japoneses se conduziam, considerando o seu Caminho do Guerreiro como algo a aspirar.

Finalmente, há também os ninjas ou shinobi. Não muito populares hoje em dia, mas houve um tempo em que eram a febre entre a população mais jovem. Como os samurais, a arte deles também era baseada em princípios de honra e dever–embora, no seu auge, eles fosse mais equivalentes a guerrilhas ou equipes Black Ops do que o modelo mais Special Forces dos samurais.

Mas uma coisa que todas ordens tem em comum é que elas eram bem monásticas, baseadas em códigos estritos sobre como proceder, treinamentos estritos ao longo dos anos e especialmente, disciplina–em muitos casos, com o peso da honra coibindo qualquer relação além da com os companheiros de armas.

Como geeks geralmente gostamos de nos comparar essas ordens porque elas são, bem, fascinantes, e sempre estavam fazendo coisas além no normal, com seus procedimentos arcanos para lidar com situações acima do que uma pessoa normal poderia encontrar.

Mas há algo que é sempre esquecido sobre essas ordens–como mencionado acima, elas eram primariamente e acima de tudo sobre disciplina; sobre um modo de vida ordenado que permitia com que a pessoa se concentrasse no que realmente importava. Tanto o treinamento histórico e real dos samurais e shinobi quanto o imaginado, inspirado pelos anteriores, dos Jedi exigia um compromisso com a disciplina que supera qualquer outra coisa que a pessoa precisaria fazer no curso de sua existência como membro dessas ordens. E, acima de tudo, requeria compromissos entre o possível e desejado e o necessário.

O que me traz ao meu ponto.

Nos últimos quatro ou cinco anos, eu fui parte de quase dez times diferentes. Já vi equipes sucederem a falharam, se recuperaram e continuarem, se unirem e se tornaram grandes, acabarem e seguir com suas vidas. Em resumo, fui parte de um número enorme de situações em que pude participar ou observar como times interagem e fazem as coisas acontecerem.

E em todos esses anos, uma das coisas mais importantes que separou os times ruins ou medianos dos grandes times foi a disciplina, que geralmente a parte mais desprezada nos exemplos que os fãs desses grupos tentam emular quando escolhem seus heróis.

É um tanto irônico que pessoas professem gostar tanto de metodologias ágeis porque estas criam ordem do caos através de times auto-gerenciáveis–times que não precisam de muita direção para fazer e acontecer, times que não precisam ser monitorados continuamente para garantir que estão indo na direção certa–esqueçam de que gerar ordem do caos exige disciplina.

A verdade é que agilidade em times só acontecem naqueles que são disciplinados e que entendem o que se ganha e o que se perde quando um projeto tem que ser cumprido. Sim, agilidade tem tudo a ver com encarar mudanças mas isso só significa que você tem que conseguir trabalhar muito bem com seus pares e com a organização como tudo–entendendo o que está mudando e quais são os meio-termos a serem alcançados–para realizar seus objetivos. Mudança sem contexto, sem disciplina, só gera caos. E isso é que muitos parecem esquecer quando se encantam com o Scrum e suas disciplinas irmãs.

Eu estava falando com um amigo outro dia e estávamos discutindo o fato de que muitos programadores usam a desculpa do ADD para procrastinarem ou para justificar distrações. Geeks, ele estava dizendo, são notórios pela sua baixa capacidade de atenção.

Eu acho–e disse para ele–que o contrário é o correto. Os verdadeiros geeks são disciplinados o suficiente para manter o seu foco e continuar no que estão fazendo a despeito das distrações. Você precisa ser muito focado se quer depurar aquele heisenbug que está mantendo você acordado nas últimas 40 horas, fazendo com que seu servidor capote a cada hora e meia. Você precisa de disciplina para continuar afundando na documentação, indo e voltando para encontrar aquela informação elusiva de permitirá que você otimize a sua rotina para que ela rode em massas de dados enormes. E você precisa de um senso forte de direção para participar de um time sem controle gerencial direto em um ambiente que está mudando continuamente.

Em resumo, disciplina é o que separa os diletantes dos artesãos. É que faz as coisas acontecerem e que realmente cria grandes times. Não quer dizer que você tenha que ser um mala sobre horários, procedimentos ou qualquer coisa assim. Não significa que você não possa se divertir ou que tenha que seguir passos ordenados toda vez que vai fazer alguma coisa. Mas significa que você tem que praticar e pensar e se focar até que isso se torna uma segunda natureza, até que você se torne um mestre no que está fazendo.

E isso é o que ninjas e samurais e Jedi fazem. Eles não param, não correm quando a proverbial situação fica preta. Eles–você sabe–simplesmente vão lá e fazem, e fazem bem.

Fazendo aquilo com o Groupon

January 2nd, 2011 § 6 comments § permalink

Há uma grande discussão acontecendo agora sobre o modelo de negócios do Groupon. Depois que a empresa recusou a oferta de aquisição do Google, a pergunta que todo mundo está se fazendo é se os donos o Groupon são insanos ou brilhantes, tão confiantes no seu modelo de negócios e na habilidade do mesmo de ir além de qualquer oferta que o Google possa fazer–e isso depois da oferta ter sido dobrada duas vezes.

John Battelle é um dos que pensam que o Groupon fez a escolha certa. Ele escreve:

Good sources have told me that Groupon is growing at 50 percent a month, with a revenue run rate of nearly $2 billion a year (based on last month’s revenues). By next month, that run rate may well hit $2.7 billion. The month after that, should the growth continue, the run rate would clear $4 billion.

Battelle atribui isso a uma combinação de fatores: relacionamentos, localização e timing–veja o artigo para uma explicação maisprofundo do que torna o Groupon quase que irresistível para pequenos negócios. E como ele nota em seu artigo, a run-rate demonstrada até agora pelo Groupon é o triplo do que o próprio Google experimentou em seus anos iniciais.

Eu estava conversando com um amigo outro dia sobre compras coletivas e ele disse que o maior problema que afetaria e eventualmente mataria o modelo de negócios dessas empresas seria o churn, isto é, o fato de que muitas dessas ofertas estão criando problemas para os pequenos negócios usando a plataforma. De fato, há dezenas de histórias sobre pessoas sendo maltratadas porque chegaram com um cupom do Groupon ou equivalente local e o negócio em questão já estava irritado por estar perdendo dinheiro com esses clientes. Eu escutei várias dessas histórias em primeira mão e em muitos casos, os donos tinham calculado incorretamente o que podiam ou deveria oferecer e ficaram descontendes com a experiência com um todo, consequentemente se tornando menos e menos interessados em trabalhar novamente com compra coletiva.

Eu acredito que o churn que estamos vendo é somente uma conseqüência da forma como novos mercados funcionam. Se o Battelle está correto–e eu acredito que sim–o churn se tornará cada vez menor à medida que os negócios encontrem seus sweet spots no ecossistema. Eu não vejo porque, por exemplo, o Groupon não possa oferecer uma ferramenta que permita que os negócios entrem com alguns parâmetros e depois deduza o preço relativamente ideal para uma certa oferta. De fato, isso nunca vai ser exatamente precisa mas dará aos negócios usando a plataforma uma maneira de evitar os problemas mais extremos.

Em última instância, porém, eu acredito que o Groupon será bem sucedido porque está mudando a forma como as pessoas se relacionam com os negócios locais. Recentemente, falando com dois outros amigos, eles me contaram como os clones locais estão tendo um impacto em seus padrões de compra.

Um deles, divorciado, nos seus quarenta, disse que não janta fora mais a menos que tenha um cupom. Esses cupons o estão ajudando a aumentar o price point dos seus gastos e, consequentemente, melhorar os locais que ele pode freqüentar. Com a ajuda dos cupons, ele está indo para locais mais caros mais vezes por semana. Essa é uma mudança grande que está beneficiando o meu amigo e os pontos que ele gosta. Como os negócios estão se tornando mais cuidados e aumentando os gastos colaterais, como bebidas e outros–algo perfeitamente aceitável–isso faz com que o resultado seja proveitoso para todos envolvidos.

O outro amigo, com seus trinta anos, disse que que compras coletivas estavam na verdade ajudando que ele transasse mais. Ele é solteiro e está usando uma variedade de cupons–restaurantes, spas, roupas, pequenos itens–para impressionar e interessar mulheres. Ele ainda está usando uma quantidade considerável de dinheiro mas o Groupon e seus similares estão fazendo com que ele gaste esse dinheiro de forma mais eficiente em direção ao seu objetivo–que, sejamos sinceros, incluem no momento transar tantas vezes quanto possível no menor período de tempo. E é quase auto-evidente pela forma que mercados funcionam que qualquer coisa que ajude pessoas a conseguirem mais sexo–ou encontram qualquer medida de satisfação sexual–está em condições muito melhores de ser bem sucedido.

E aqui você tem o resumo final: pessoas estão fazendo mais sexo com o Groupon. E isso torna a sua posição mais forte ainda. Battelle está correto–do ponto de vista dos pequenos negócios–e meu amigo também está correto–do ponto de visto do consumido.

E dos dois modos, o Groupon vence.

Contrate-me

December 14th, 2010 § 4 comments § permalink

Atualização: Obrigado a todos que me ajudaram divulgando esse texto e a todos com quem conversei nas semanas subseqüentes. Recebi excelentes propostas e conheci muita gente que está fazendo coisas impressionantes. E como todo fim tem um próximo começo, minha nova casa é a ThoughtWorks Brazil. Que venha a próxima iteração.

Depois de quase três anos de WebCo e Abril Digital, chegou a hora de me despedir dessa etapa da minha vida e partir em busca de experiências novas. Esse foi um tempo intenso e completo, mas, como diria um certo Oráculo, “tudo que tem um começo tem um fim.”

Sendo assim, estou imediatamente disponível para projetos e contratações–full-time preferencialmente, mas aberto também a propostas de outros tipos.

Meu objetivo é trabalhar em alguma empresa que acredite em pessoas como o motor e motivo central do desenvolvimento de software, que acredite concretamente no Manifesto Ágil e que exerça a arte de desenvolver. Posso contribuir seja fazendo parte de um time ou estando à frente de um.

Meus interesses primários são: Web, metodologias ágeis, linguagens dinâmicas, plataformas, e arquiteturas distribuídas em larga escala.

Se estiver interessado ou conhecer alguém que esteja, meu contato de e-mail e GTalk é ronaldoferraz at gmail dot com.

Um currículo resumido se encontra no Linked In.