Quando se fala em escravos logo lembramos de filmes épicos sobre o antigo Egito. Pessoas obrigadas a trabalhar, sem quaisquer direitos. Mas afinal, existiam tarefas a serem cumpridas. E nada melhor do que ter indivíduos obrigados executá-las.
Mas a humanidade evoluiu, sendo o escravagismo abolido na maioria do mundo. Contudo, ainda existem tarefas, então como ter de volta o trabalho escravo para? Como construir uma nação fictícia, que dou o nome de Bananistão aqui, de pessoas obrigadas a trabalhar?
O primeiro passo é fornecer educação de má qualidade. Não apenas para ter massa de manobra, mas principalmente para a população não ter muito conhecimento nem interesse em matemática.
Assim, um assunto simples, como Progressão Geométrica, é decorado mas não compreendido. Baseado nele é feito o esquema de pirâmide. Ou mais próximo do dia-a-dia, os juros. O conceito é tão simples que uma fórmula é facilmente escrita, como na planilha que construí abaixo:
Nela eu considerei uma taxa de 8% ao mês. vc pode alterar o número de parcelas para conferir o valor final de um produto e quanto sairia de juros. E essa taxa está até muito conservadora comparada a aplicada no mercado de cartão de crédito.
Dessa forma, se você conseguir empurrar pessoas para uma dívida dessa elas irão trabalhar apenas para se sustentarem e manter essa dívida. Contudo, como convencer alguém a entrar nessa loucura?
Então chegamos no segundo passo. Implante na cabeça das pessoas que elas precisam de tudo via publicidade massiva. Mais ainda, torne esses produtos descartáveis: celulares mais avançados, roupas da moda, jóias. Sempre tem algo novo e melhor. Depois criamos sistemas de financiamento a juros 0, sem precisar de aprovação.
Como terceiro passo, convencemos as pessoas que a vida não é caótica. Que imprevistos não acontecem, que empregos são seguros. Acreditando, elas entram no parcelamento, sem perceber que estão vendendo o bem mais precioso que existe: o tempo. Sim, elas estão negociando agora o tempo que precisrão trabalhar para pagar essa dívida no futuro.
Juntando esses ingredientes com a Lei de Murphy, fatalmente boa parte dessa população estará endividada, ou melhor dizendo, escravizada. Mas por que não se rebelam?
Aqui vem o quarto passo. Crie um código de honra sobre pagamento de dívidas. Ensine desde criança que é feio ficar devendo. Cria um slogan, de uma nome bacana, como "nome limpo".
A grande verdade é que o Bananistão quer esconder a verdade, deturpar a realidade. Para que serve um nome? Ele não serve para nada, além de ficar sujo. Ele serve para dar a falsa ilusão de que o cidadão é parte fraca do negócio, quando não é.
Até que uma instituição financeira libere o recurso, ela possui todos os poderes. Após liberar, o devedor é que dita as regras. Sabendo de tudo isso, como se livrar da escravidão?
A primeira e melhor forma é simples: não tenha cartão de crédito, não faça financiamento. Assim vc só compra o que puder, só com o trabalho que já foi feito, e não vendendo tempo de trabalho futuro. Um outro bom efeito colateral é que você passa a ver o real valor das coisas. Agora um celular custa R$ 2.000 e não uma parcelinha de R$ 80.
A segunda maneira, pior, é se vc já entrou nessa. Nesse caso, haja como a parte forte da negociação. Não se limite ao que os ditos "especialistas" financeiros dizem, hackeie o sistema. Experimente não dar atenção as cobranças, a não ligar para seu nome sujo. Junte o dinheiro para pagar a dívida sem acrescentar nenhum juros. Deixe passar 4 anos sem pagar nada e experimente fazer uma proposta de pagamento sem juros, veja o que acontece. Acha que é difícil, então veja esse vídeo onde um devedor atua como parte forte e se divirta:
A verdade é que financiamento é negócio. Não é igual pedir dinheiro emprestado a parente ou amigo, não tem honra nenhuma envolvida. O que um operador financeiro faz é gerenciar risco, cobrar juros e taxas já colocando na conta aqueles que não pagarão, mitigando essas perdas nas costas de quem vive no cabresto do sistema.
No fim, o princípio das duas soluções é a mesma, e todo mundo conhece desde criança. Só existem duas maneiras de não perder um jogo contra um jogador mais experiente:
Não jogar
Jogar, mas seguindo suas regras, não aos do oponente. Quem nunca roubou dinheiro no jogo banco imobiliário? ;)
Mas e aí, achou o Bananistão parecido com algum país? Será que você conhece algum escravo? Será que você tem solução ainda melhor? Deixe seus comentários ;)
Há 5 anos eu era troll de lista de discussão por e-mail. Percebi então que eu perdia um tempo precioso com isso e que não obtinha nada de positivo. Pelo contrário, acabava fazendo inimizades.
Por conta disso, passei a me policiar. Meu primeiro algorítimo para evitar o problema foi o seguinte: toda vez que eu terminava um e-mail ou mensagem, antes de clickar em “enviar” eu me perguntava: “Alguém, inclusive eu, tem algo a ganhar com o que estou escrevendo?”. Quando a resposta era não, eu simplesmente apagava o e-mail. Eu diria que apenas com isso deixei de ser um troll, passei a enviar 90% menos e-mail e raras vezes entrei em discussão.
Exemplo do algorítimo: certa vez estavam reclamando do Brasil, dizendo que no exterior era muito melhor. Entrei na discussão: Ou você mudava para onde era melhor, ou ficava no Brasil entendendo que as coisas eram diferentes, deixando de reclamar em ambos casos, pois odeio choradeira de quem não toma ação para mudar a situação. Teve gente que concordou e ponderou sobre o assunto. Ou seja, realmente ajudei alguém com a opinião. Mas houve gente que disse que eu estava errado, que era direito reclamar, desabafar e protestar. Comecei a escrever a resposta, ressaltando a inutilidade do “mimimi”. Ao final me fiz as perguntas. Conclui que ninguém ganharia nada. O cidadão que queria desabafar no e-mail apenas ia ficar mais puto consigo e comigo. Quem tinha já concordado e ponderado sobre o que disse não se influenciaria com a opinião em contrário. Resultado: mais um e-mail inútil que não enviei.
Voltando à reflexão, o processo de escrita de e-mail de resposta em si era importante. Era o tempo necessário para eu destilar o “ódio” adquirido durante a leitura da discussão. Porém, isso tomava tempo. Então melhorei o algorítimo. Após ler a discussão e ficar com raiva, eu me perguntava: “Por que estou com raiva disso? No que isso afeta minha vida? A raiva existe apenas por que a opinião é diferente da minha?”. Então quando chegava à conclusão que aquilo na afetaria minha vida ou, principalmente, minha raiva advinha apenas de minha prepotência de achar sempre estar certo e o outro errado, simplesmente a raiva ia embora e sequer um e-mail de resposta eu escrevia. Conclui que se todo mundo pensasse igual, o mundo seria muito chato. Entrei assim no modo Zen, onde deixei de entrar em na maioria de discussões que não levam a nada e passei a realmente a tentar entender pontos de vista diferentes dos meus. A leitura do livro “Como fazer amigos e influenciar pessoas” também me ajudou muito nesse quesito.
Exemplo do novo algorítimo: há certo tempo um cidadão postou uma piada taxada de machista no grupo de Python do Facebook. Houve discussão acalourada, com um lado defendendo o banimento do membro e o outro defendendo liberdade de expressão, julgando a piada domo não sendo machista. Li a discussão. Cada lado já tinha esgotado os argumentos, não havia nada a acrescentar. Ninguém estava preocupado em entender outro lado, apenas querendo provar que sua opinião era a correta. Então se eu emitisse a minha, seria apenas mais um entrando na torcida e, talvez, me indispondo com o pessoal. E tem pessoas que gosto de ambos lados. Então não participei da discussão e preferi focar no que cada um dos envolvidos tem de bom. Em vez de discutir o sexo dos anjos, fui gravar uma vídeo aula para meu canal. Em um minuto esqueci a discussão e fiquei muito mais feliz, pois considerei ser muito mais útil ajudar as pessoas uma aula que ser apenas mais um torcedor. Obs: não estou julgando quem entrou na discussão. Cada um é livre para ser feliz da maneira que julgar mais adequada ;).
Por fim, existia apenas um problema no algorítimo: como definir qual discussão vale à pena entrar? Em qual discussão posso ajudar alguém com minha participação? Encontrei a resposta a reposta no livro “A Arte de Estar Sempre Certo” do Schopenhauer.
Em sua introdução consta, com minha tradução livre: “Em um mundo ideal a discussão e debate deveria almejar a verdade ou ao menos o entendimento mútuo, um acordo. Em tal mundo o desejo de cada pessoa bem intencionada seria identificar os objetivos que valem à pena e os melhores meios de atingi-los, onde as pessoas se esforçariam para resolver os problemas através da cooperação, superando desentendimentos e conflitos.
Mas o mundo é tudo menos ideal, e as pessoas buscam não a verdade, mas ganhar argumentos; elas não buscam o melhor para todos, mas somente o melhor para elas mesmas. Para a grande maioria das pessoas o interesse pessoal é mais forte motivador que altruísmo e, como resultado, elas buscam quaisquer meios para colocar seu nariz à frente na corrida de competição que é a vida”.
No transcorrer do livro, o autor passa então e descrever 38 falácias lógicas que as pessoas usam para ganhar argumentos. Ele alerta que o objetivo não é você usar para influenciar os outros, mas sim para se livrar deles em uma discussão. Mas do que isso, para você poder distinguir os discursos que buscam a verdade daqueles dos quais não vale à pena participar. Leia o livro e assista um debate político. Será extremamente engraçado vê-los utilizando todos os estratagemas, dos mais simples aos mais rebuscados...rs
Dessa maneira, venho aprendendo a identificar discussões infrutíferas e, ao fazer isso, utilizar o ensinamento do Dalai Lama: “É muito difícil argumentar contra o silêncio”.
E você, o que acha do assunto? Será que vou ajudar alguém? Essa é minha intenção. Mas se ele gerar discussão inútil, tenha certeza que não participarei ;)
Aprendi Orientação a Objetos em Java.
Inicialmente me foi ensinado a utilizar o construtor para inicializar
todas dependências que o objeto necessita para funcionar.
Sendo assim, o código da classe
Sorteador é perfeitamente válido:
package di;
public class Sorteador {
private long limite;
public Sorteador(long limite) {
this.limite = limite;
}
public long sortear(){
double numero = Math.random()*this.limite;
return Math.round(numero);
}
}
Contudo, o problema dessa abordagem
consiste na dificuldade de testar o método sortear. Como ele depende
de um número aleatório, o máximo que se consegue é verificar se o
sorteio se encontra dentro dos limites esperados, conforme código
SorteadorTest:
package di;
import static org.junit.Assert.*;
import org.junit.Test;
public class SorteadorTest {
@Test
public void testSortear() {
Sorteador sorteador=new Sorteador(10);
long sorteio=sorteador.sortear();
assertTrue(sorteio>=0);
assertTrue(sorteio<=10);
}
}
Para contornar o problema, poderíamos
componentizar com a finalidade de alterar o comportamento no momento
de teste. Com esse objetivo, criei a interface Randomizador:
package di2;
public interface Randomizador {
double random();
}
Para continuar executando o
comportamento original, criei a classe RandomizadorReal:
package di2;
public class RandomizadorReal implements Randomizador {
@Override
public double random() {
return Math.random();
}
}
Dessa maneira alterei o código do
Sorteador . Com essa nova abordagem é possível alterar o componente
de randomização utilizando o construtor sobrecarregado. Nessa caso,
a dependência do objeto é injetada de fora para dentro. Por isso
esse conceito é chamado de “Inversão de Controle” ou também
“Injeção de Dependência”:
package di2;
public class Sorteador {
private long limite;
private Randomizador randomizador;
public Sorteador(long limite, Randomizador randomizador) {
super();
this.limite = limite;
this.randomizador = randomizador;
}
public Sorteador(long limite) {
this(limite, new RandomizadorReal());
}
public long sortear(){
double numero = randomizador.random()*this.limite;
return Math.round(numero);
}
}
Com o código modificado é possível
escrever um teste com mais controle. Para isso, basta trocar o
componente RandomizadorReal pela classe RandomizadorMock, conforme
código a seguir:
package di2;
import static org.junit.Assert.*;
import org.junit.Test;
class RandomizadorMock implements Randomizador{
public double retorno=0;
@Override
public double random() {
return retorno;
}
}
public class SorteadorTest {
@Test
public void testSortear() {
RandomizadorMock mock=new RandomizadorMock();
Sorteador sorteador=new Sorteador(10, mock);
mock.retorno=0;
long sorteio=sorteador.sortear();
assertEquals(0, sorteio);
mock.retorno=0.5;
sorteio=sorteador.sortear();
assertEquals(5, sorteio);
mock.retorno=0.54;
sorteio=sorteador.sortear();
assertEquals(5, sorteio);
mock.retorno=0.56;
sorteio=sorteador.sortear();
assertEquals(6, sorteio);
}
}
Esses objetos que se utilizamos para
substituir componentes na hora de testes costumam ser chamados de
Stub ou Mock. Foi com esses conceitos em mente que migrei para a
linguagem Python.
Nela posso escrever classe similar a
primeira versão de Sorteador:
from random import random
class Sorteador():
def __init__(self, limite):
self.limite = limite
def sortear(self):
return round(self.limite * random())
Poderia empregar a mesma técnica para
componentizar o método sorteio. Contudo, Python tem uma
particularidade interessante: tudo, absolutamente tudo, é um objeto.
Inclusive as bibliotecas importadas em um módulo.
Para provar isso, é muito simples.
Basta chamar a função dir para inspecionar os elementos do módulo
di.py:
>>> import di
>>> [elemento for elemento in dir(di) if not elemento.startswith('__')]
['Sorteador', 'random']
Assim, é possível observar a função
random importada como sendo um de seus elementos. Ou seja,
bibliotecas importadas em um módulo funcionam como variáveis. Sendo
assim, em vez de injetar dependência, a biblioteca alvo pode ser
simplesmente alterada na hora do teste:
De início passei a utilizar essa
técnica mas achava que estava fazendo gambiarra. No entanto
descobri a biblioteca Mock do Python. Sua função patch serve
exatamente para isso, trocar uma biblioteca em tempo de teste por
outra. E ela ainda vai além, tomando o cuidado de retornar o
componente para seu objeto original após o teste, evitando assim
efeitos colaterais indesejados em outros testes.
Enfim, eu gostei muito dessa abordagem
distinta do Python. E você o que acha? É gambiarra ou apenas uma
forma prática de se fazer Injeção de Dependência?
Após
o grito “HHHHHHHHEEEEEEEEEELLLLLLLLLLLPPPPPPPPPPPPP!!!!!!!!!!!!!!!”
fecho o olho e aguardo o tiro de pistola. Contudo, ele não vem.
Continuo seguindo os jovens e em pouco tempo o segurança e sua
parceira desistem de me seguir.
Começo
então a pedir ajuda dos jovens, explicando que meu amigo tinha sido
sequestrado e corria risco de vida. Fala para ligarem para a polícia.
Depois de muita insistência, eles decidem me ajudar.
Um
deles bate na porta de um prédio. Aparece então o que seria o
síndico, com uma cara de sono danada. Ele então chama a polícia.
Cerca
de 10 minutos depois chega a viatura. Os jovens ficam de intérpretes,
umas vez que os policiais só falavam húngaro. Mesmo sem entender a
língua, no final do papo entendi o contexto. Os oficiais pediram aos
jovens para irem na viatura e ajudarem na comunicação. Um deles
responde que não, que já tinham se envolvido até demais.
Entro
então na viatura com dois policiais que não falam inglês e
seguimos em direção ao bar. No caminho, lembro da frase do gangster
“Minha cidade, minha polícia”. Penso que se ele tivesse dito a
verdade, aí sim eu iria vestir terno de madeira...rs.
Mas
na minha cabeça eu tinha que voltar o mais rápido possível. Mesmo
torto de bêbado, eu imaginei que começariam a espancar o Beraba,
então eu tinha que chegar antes que ele ficasse desfigurado...kkkk.
Parênteses:
nesse meio tempo o segurança retornou com a mulher. Disseram para o
Reginaldo: “Your friend is crazy, he almost beat me up. He took the
money and started to run away”. Traduzindo: “Seu amigo é doido,
ele quase me bateu. Pegou o dinheiro e começou a fugir correndo”.
O gangster olha pro Beraba e diz: “Now you are in a serious
trouble”. “Agora você está com um sério problema”. O sotaque
bizarro eu tentei reproduzir nessa gravação:
Enfim,
encham o saco do Beraba para ele contar a versão dele pois existem
partes engraçadíssimas ;)
Mas
continuando a história, eu chego no bar e o gangster está na porta.
Ele late alguma coisa com os policiais e depois me diz: “Vocês
entraram aqui e não quiseram pagar a conta. Seu amigo está no
Hostel. Eu vou colocar um advogado internacional atrás de vcs”.
Eu
respondo “Ok, se meu amigo estiver no hostel a salvo, pode mandar
seu advogado nos procurar em nosso país”.
Embarco
de novo na viatura com o policiais que me levam até o albergue.
Chegando lá toco o interfone e começo a falar em inglês, ainda
sobre efeito do álcool. Era o Beraba que tinha atendido...rs.
Subo
para o albergue e encontro o Reginaldo junto com um uruguaio. Os
policiais queriam que pagássemos a conta.
O
Beraba liga pro dono do hostel que fala que era melhor a gente pagar.
Então
o uruguaio da a ideia de ligarmos para a embaixada. Ligo e me indicam
o telefone de uma advogado da embaixada. Ele atende com voz de sono,
falando português com um sotaque extramente carregado. Ele conversa
ao telefone com os policiais e tenta nos tranquilizar. Eu digo que
queríamos uma escolta para levar a gente até a estação de trem
para irmos embora. Ele diz que não precisa, que a Hungria não era o
Brasil, que estávamos seguros, já que em nenhum momento nos
agrediram. Isso, segundo ele, aconteceu porque a lei lá realmente é
dura e funciona. Então ele diz que poderíamos ficar na cidade e
aproveitar, pagarmos somente se quisermos, e já desligou o telefone
meio sugado.
Enfim,
vamos para nossas camas. Mas quem disse que conseguíamos dormir.
Cada barulhinho no albergue e a gente já ficava alerta, esperando a
máfia entrar metralhando tudo...rs
No
outro dia nossa história ficou famosa. Todo mundo pedia para
contarmos, não só no albergue mas durante todo o resto da viagem.
Teve gringo nos encontrando no Vaticano, em Roma, e perguntando o que
tinha acontecido. Viramos celebridades...kkkk
No
fim, pensamos que se os mal feitores quisessem pegar a gente,
pegariam de qualquer jeito, mesmo que decidíssemos partir de manhã.
Então decidirmos ficar e aproveitar a cidade.
E
foi muito legal. Visitamos os banhos termais, piscinas aquecidas de
22 a 30 graus, a céu aberto, em um inverno de 4 graus. Foi
sensacional!
Além
disso, visitamos os castelos medievais. Lá tirei essa foto do
Beraba:
Startup é um assunto que entrou tanto
na moda que até novela tem abordado o assunto. Eventos pipocam em
todos os lugares. Percebo na comunidade de TI, e até fora dela, a
dicotomia: ser assalariado ou abrir uma startup?
Já experimentei os dois mundos. Fui
funcionário público, militar, e poderia ter seguido carreira
ganhando um salário razoável, com toda segurança e estabilidade.
Mas não estava feliz, pedi demissão.
Sai para iniciativa privada e foi
fantástico. Aprendi muitas coisas e tudo estava perfeito. Mas a
felicidade passou e então então fui picado pela mosca do
empreendedorismo. Cheguei abrir um negócio e depois, por fim, acabei
me tornando CTO em startup.
Mais uma vez tive um período
sensacional. Poder conviver com pessoas incríveis e ter uma
autonomia que até então não tinha experimentado. Mas quem já
passou por isso sabe que a vida glamourosa é coisa de filme de
cinema. Você trabalha ainda mais que assalariado e recebe menos, com
a promessa de ficar rico no futuro. A verdade é que realmente
deve-se estar apaixonado para seguir nessa vida. Mais do que isso, é
necessário fazer as contas para avaliar se realmente a fortuna vai
chegar no caso da empresa bombar.
Nesse turbilhão de trabalho várias
ideias me ocorriam e não podiam ser colocadas em prática por conta
do tempo demandado como CTO. Certo dia toda empresa participou do
“Day1”. Esse é um evento onde empresários relatam sua história
de sucesso, dizendo qual foi o dia em que perceberam que a empresa
iria decolar. Foi um divisor de águas em minha vida.
Na pegada de startup, sempre fomos
instigados a pensar na história que gostaríamos de contar em nosso
futuro. O intuito era querer mudar o mundo com a startup e ver um
propósito maior no que fazíamos no dia a dia. Me lembro de todos
meus amigos saindo do evento extremamente motivados e felizes. Sai
totalmente desmotivado. Não falei nada para não estragar a alegria
alheia.
Mas reparei atento nos palestrantes.
Enxerguei um padrão. A maioria contou a mesma história: “Trabalhei
muito, sacrifiquei feriados e a convivência com a família para
conquistar tudo isso. Agora estou vendendo a empresa para aproveitar,
vou recuperar o tempo perdido e aproveitar”. Passei um bom tempo
pensando nisso. Eles não me pareciam felizes, pelo menos não da
maneira que eu pensaria que estaria no lugar deles. Me perguntei:
“Como é que eles vão correr atrás do tempo perdido? Tem gente
ali que deve ter filho com 18, 20 anos e não deve ter participado da
vida dele. Como se recupera esse tempo?”.
Com um adendo muito importante: ali
estavam aqueles que “venceram”. Os “perdedores”, pelo menos
no Brasil, não costumam contar história. Imagine esses, que nem
sequer com o consolo de uma fortuna contam?!
Nessa mesma época passei a frequentar
comunidades de tecnologia e acabei vendo uma palestra do Henrique Bastos que me mostrou uma terceira opção: lifestyle business. Pesquisei, li blogs interessantes, como o do VinicusTelles.
Devorei livros sobre o assunto: 4 hour week work, The Incredible
Secret of Money Machine.
Durante esse processo de pesquisa e
auto conhecimento, não me lembro onde me deparei com a seguinte
pergunta: “O que você faria se ganhasse num concurso um salário
de R$ 20.000,00 vitalício?”. Por mais simples que essa pergunta
possa parecer, demorei certo tempo a responder. Depois de meditar por
algum tempo, cheguei em algumas respostas: “Daria mais atenção a
minha família, faria exercícios físicos, emagreceria, viajaria,
escreveria um livro, leria mais, faria software por diversão, daria
aulas”.
O ponto importante de chegar nessa
resposta foi a conclusão de que eu não precisava ter uma fortuna. O
que eu precisava era do bem infinitamente mais precioso que grana:
tempo! Mas a “matrix” não nos deixa ver isso.
Foi então que comecei a me preparar
financeiramente para ter tempo livre. Cancelei cartão de crédito,
parei de comprar bugigangas inúteis (ex: trocar de celular só
porque saiu marca nova). Diminui as contas até um patamar onde
apenas com um dia e trabalho por semana eu as honraria. Com
um detalhe importantíssimo: esse dia de trabalho é na faculdade,
dando aula, que já é/era justamente uma das atividades que eu
gostaria de fazer ;). Além disso, para me preparar para o pior caso,
o de não poder trabalhar por alguns meses, fiz uma reserva
financeira.
Falando assim até parece que tudo
é/foi fácil e instantâneo. Confesso que não foi. O cagaço bate, quase desisti.
Mas nesse momento refleti sobre o que
de pior poderia acontecer. É engraçado o que ocorre quando você
descreve seu medo. Ele deixa de ser aquele monstro perverso que você
imagina. Sendo do mercado de TI, sei que ele está extremamente
aquecido. Deixando a modéstia de lado, sempre recebi e recebo
ofertas de trabalho, de CTO de startup a trabalho assalariado. E isso
acontece com todos da área, não é privilégio meu. Logo, o pior
que poderia acontecer seria voltar para o mesmo ponto: trabalhar no
mercado. Nessa conjuntura, não fazia sentido nenhum não tentar uma
nova opção.
Então depois de alguns meses de
preparo, desde julho de 2013 passei a viver o chamado lifestyle
business. Não existe mais aquela frase “quanto eu tiver tempo
faço”. Com tempo livre, bateu a vontade, faço. Como agora que
estou escrevendo esse artigo =P.
E assim surgiram várias oportunidades
e projetos: Meu livro; Python Birds, curso de Orientação a Objetos com Animação,
projetos open source, vídeo aulas gratuitas. Nesse
processo, ainda descobri que não era necessário muito dinheiro para
viajar. Esse ano conheci Santa Rita do Sapucai, Brasília, Aracaju,
Lavras e Goiânia. Em todas elas o custo da viagem foi menor do que
eu gastaria ficando em casa! Mas isso é história para outro post.
Esse ano li mais livros do que toda
minha vida: 4 hour week work; Contrato Social; Revolução dos Bichos
(Animal Farm); A Arte de Estar Sempre Certo: 38 estratagemas; 5
livros Game Of Thrones; Como fazer amigos e influenciar pessoas; O
que é Marketing (Raymar Richers). Esses pelo menos que eu me lembre.
O importante, se você leu até aqui,
não é ficar imaginando se eu sou doido, corajoso, sortudo,
convencido ou qualquer coisa desse gênero. Pelo contrário, não sou
e não quero ser exemplo para ninguém. O principal é você saber
que existem opções diferentes das “40 horas semanais”. Mais
importante ainda é que a opção “startup” pode não ser a mais
recomendada para você. Não existe fórmula fechada, as rédeas de sua vida estão em suas mãos.
Então a pergunta que você deve se
fazer agora é: “Estou feliz com minha opção atual?”. Se a
resposta for sim, viva intensamente a segurança e conforto de seu
trabalho semanal; a adrenalina, agitação e desafios de sua startup;
os projetos a que você se dedica por conta do tempo livre conseguido
com seu lifestyle business.
Agora se a resposta for não, saia da
zona de conforto. Pare de culpar os outros por sua infelicidade. Só
cabe a você mudar a situação!
No fim do terceiro ano do ITA os alunos
se reúnem na chamada Comissão de Viagens (CV). Seu objetivo é
angariar recursos durante o quarto ano para financiar uma viagem
técnico cultural dos participantes pela Europa, vulgo mochilão.
Meu amigo Beraba, agora mas conhecido
como hacker do Facebook,
foi aclamado presidente da comissão. Eu fui diretor da CAPRO,
Comissão de Artigos Promocionais.
Depois de arrecadados os recursos,
embarcamos cerca de 40 pessoas no sucatão, o Boieng que o Lula
desovou para a Força Aérea. Naquele época o voo era fornecido
gratuitamente, já aproveitando a viagem para cumprir missão no
exterior. Então junto com a tripulação foram várias caixas de
peças de avião.
Aterrissamos em Madri e a viagem
começou animadíssima. 40 moleques felizes igual pinto no lixo.
Todos se organizaram em pequenos grupos. No meu havia 3 pessoas, eu,
Jandaia e o Beraba.
Na primeira noite fomos à uma rua de
balada espanholas. Lisos como todo estudante, tentamos dar um “Bob
Nelson” para entrar de graça. Ali escutamos uma frase de um
segurança que devíamos ter levado mais a sério: “No hai nada
gratis”.
A viagem prosseguiu e visitamos
diversas cidades. Na ordem: Madri, Barcelona, Paris, Amsterdam,
Bruxelas, Bruges e Toulouse. Nessa fizemos uma visita muito legal à
Air Bus. Se a memória não me falha, vimos um Beluga. Conclui
que qualquer coisa com asas voa:
Meu cartão de crédito não funcioanva em
nenhum lugar. Assim, o Beraba virou meu pai e passou a pagar tudo que
era de conta de cartão.
Durante toda a viagem seguimos um ritual. Íamos a um supermercado e comprávamos uma
garrafa de Absolut e energético. Essa vodka era mais barata que
Smirnof lá. Então uma era finalizada cada dois dias, durante as
baladas, passeios e albergues da vida.
Em Toulouse pegamos um voo para
Londres. Mas fomos apenas eu o Beraba. Jandaia prosseguiu para a
Russia sozinho.
Chegando na Inglaterra ficamos em um
dos melhores albergues da viagem,
próximo ao Hide Park. Chegamos de noite e tinha somente o dia
seguinte para turistar. Nesse dia caminhamos por toda Londres por
umas 7 horas. Foi desgastante.
Contudo, ao voltar para o Hostel, nos
esperava nosso energético. Resumindo, Beraba bebeu demais e se
passou no Hostel. Cedinho tínhamos que pegar um voo para Budapeste.
Foi muito legal porque fomos andando pelo parque por conta da
ressaca. Nada parava na barriga do “gordim”...kkk. Tenho um vídeo daquela
manhã:
Em toda viagem a gente comia só no Mc
Donaldos por conta da liseira. Mas a fama no Leste Europeu era das
coisas serem mais acessíveis. Isso e as baladas também. Era um
sábado, mas por conta da “enfermidade” do meu amigo, acabamos
não saindo naquele dia.
No domingo ele estava um pouco melhor,
mas não ao ponto de beber. E eu louco para sair. Naquela pilha toda,
acabamos indo em uma balada esquisitíssima. Antes de entrar bebi
toda minha parte da vodka, e também a do
Reginaldo. O lugar parecia uma construção velha da época da
segunda guerra. Na entrada havia umas cortinas de plástico no estilo
daquelas de açougue. Dentro tinha uma galera alternativa. Em algumas
mesas, havia banheiras em vez de banco para sentar. Mas só tinha
cueca lá.
Decidimos voltar para o Hostel. Eu já
estava totalmente embriagado. Heis então que brota um húngaro do nada
e nos convida para conhecer sua balada. Disse que a entrada era
franca e ainda ganhávamos uma cerveja. Deveríamos ter desconfiado.
Esmola demais...
Beraba me pergunta se quero entrar. Eu
muito doido, falei “Bora”. Pegamos nossa cerveja grátis e ao
entrar só tinha um cara no que parecia um porão-bar. Não deu 5
minutos, o Beraba falou para irmos embora porque aquilo estava
esquisto. Falei: “Partiu”.
Na saída o caixa falou que tínhamos
que pagar a conta. Perguntamos: “Que conta? Só pegamos a cerva
grátis e nem ela tomamos inteira!”. Ela então aponta para nossa
mesa. Estava cheia de bebidas. Champagne, whisky e algumas outras que
não estavam ali 5 minutos antes.
Mal começamos a argumentar e já havia
5 seguranças em nosso redor. Pensei: “a gente vai apanhar muito
hoje”. O interlocutar e aparentemente líder do bando era igual o
gangster do seriado Nip Tuck.
Começa então o bate papo “amistoso”.
O gangster passa a conta pra gente:
300.000 Forentis, a moeda húngara. Eu muito doido, começo a fazer a
conta de cabeça e em etapas. 250 Forentis igual a 1 Euro, 2.500 a
10, 25k a 100, 250k a 1000. Parei e disse: “Beraba, faz essa porra
dessa conta que eu to doidasso, na minha cabeça está dando mais de
1000 euros!”. Só ouço a reposta “deu 1.2k euros”. Pensei:
“Não vamos apanhar hoje, vamos morrer”.
Então a gente começa argumentar, e os
caras falando em húngaro entre eles. Pela expressão corporal
parecia que ia “azedar” bastante. Entre as ameaças o gangster
fala “Se vocês sumirem aqui, ninguém vai nem saber”.
Prontamente o Beraba pega meu passaporte, que era de militar, e diz
que estávamos em missão. O cara responde num sotaque bizarro “Do
you like to play games?” (você gosta de brincar?). “guarde isso
agora. Caso contrário, você vai ver o que vai te acontecer”. Acho
que o criador de jogos mortais deve ter ouvido nossa história para
criar o bordão .
Como todo bêbado é macho, eu digo
“Amigo, chama a polícia que a gente paga”. Logo ele responde
“This is my city, my police” (Essa é minha cidade, minha
polícia). Mas bêbado não desiste da macheza: “Então chama aí”.
O cara simplesmente caga pra mim. Cada vez eu tinha mais certeza que
nossas vidas estavam próximas do fim.
Vai ameça, vem ameaça. O álcool me
dá uma brilhante plano de ação: “Amigo, vou fazer o seguinte:
vou te dar toda grana que tenho e a gente fica acertado”. Enfio a
mão no bolso. e pego uma nota de 5 Forents, mais umas moedas. Junto
tudo em uma mão e dou porrada com a grana no balcão. Eu não lembro
da cara do Beraba, mas imagino. O gangster fala: “Are you crazy,
are you drunk?” (Você está doido, está bêbado?). A pronta
resposta “Lógico que tô bêbado, você não está vendo?”. Ele
retruca: “Vou te revistar e se achar alguma coisa você verá o
que vai te acontecer”. Cauteloso, eu digo: “Pera aí então que
eu to muito doido, deixa eu dar mais uma conferida”. Retiro do meu
bolso 50 centavos mais uma manteiga de cacau e dou mais uma
porrada no balcão...kkkkkkkkkkkkkkkkkkkkk. Obviamente o cara ficou
muito, mas muito puto. O Beraba diz que eu até levei um “pedala”
nessa hora, mas não lembro. Se era para morrer, que pelo menos
fosse tirando onda.
Por fim eles surgem com um plano de
pagamento. O Beraba iria até o caixa para retirar o dinheiro e eu
ficaria de refém no bar-porão. Eu pensei: “Beleza, espero que o
Beraba fuja. Com uma testemunha solta, não vão me matar. Como estou
anestesiado por conta da cachaça, nem vou sentir as porradas que vão
me dar até ele voltar para me buscar”. Não sei porque não falei
isso pra ele na hora em português, para ele fugir.
Beraba vai escoltado por um segurança
baixinho mais uma mulher. Eu embriagado fiquei enchendo o saco dos
que ficaram comigo: “Gente, que vida de merda vocês tem, ter que
ficar dando golpe para sobreviver deve ser uma foda”. Bêbado
insuportável, eles se afastaram.
Reginaldo volta com seus amigos em 5
minutos, cartão não funcionou. Então eles falam que é minha vez
de ir. Mandam o mesmo segurança baixinho e mulher. Meu pensamento
foi : “Sou eu então que tenho que fugir”. Morei no Rio de Janeiro e
por conta disso meditei: “Pessoal lerdo, mandar um segurança anão
e uma mulher só comigo”. Mas vi que ele estava com um casaco preto
e com a mão sempre no bolso. Pensei que naquele mato tinha coelho.
Mesmo assim, ao caminhar fui tentando
decorar o caminho para resgatar o Beraba caso eu fugisse. Me levaram
em uma avenida onde tinha o caixa. Insiro o cartão e ao pedir a
senha, olho feio para o segurança. Muito educados, eles viraram de
costas para não verem. Pensei: “Se fosse bandido carioca eu
já tinha levado uma coronhada e já estavam com minha senha e
cartão”.
Mas meu cartão não funcionou em
nenhum lugar da Europa, por que iria aqui? Parceiro, a Lei de Murphy
é implacável. Saquei o máximo, 100.000 Forents, saiu uma montanha
de dinheiro. O segurança diz: “Faltam 200k”. Tento fazer mais um
saque no mesmo valor. Consigo! Cartão “fela da puta”. Meu
racioncínio: “Os caras já vão ter o dinheiro e nós dois lá
naquele porão, não vai ter mais nada pra negociar”.
Então o santo álcool me deu coragem:
“Amigo, acabou a negociação. Tenho aqui 200k, que é mais do que
você merecem. Eu não vou voltar. Você traz meu amigo aqui e te dou
a grana”. O cara fica puto e pega no meu braço para me levar de
volta. Dou um tapa na mão delr, fazendo ele me largar. Repito “Acabou
parceiro, traz meu amigo e te dou a grana”.
Nisso vem uma mulher andando pela rua.
Eu peço: “Me ajuda, esse pessoal sequestrou meu amigo e querem me
matar, chama a polícia!”. A mulher saca o celular. O anão
segurança late algo em húngaro com ela. Pelo que entendi, deve ter
sido algo como “Não se mete ou vai sobrar para você”. Ela me
fala que não confia em mim. Eu digo: “Não confia em mim?
Maravilha, então chama a polícia!”. Ela se afasta rapidamente.
Mais uma vez sou puxado pelo braço.
Mais uma vez repilo com um tapa. Andando na rua aparecem dois
adolescentes. Mais uma vez peço ajuda. Eles tentam andar rápido para
me despistar. Eu sigo e digo “Eu vou seguir vocês. Eles estão com
meu amigo. Se for para eu morrer, vocês irão junto comigo agora”.
Cara, eu rio hoje imaginando se esse caras não cagaram na
calça.
A corrida maluca segue em frente. Eu
atrás dos jovens, o segurança e a mulher atrás de mim. Mas uma vez
sou agarrado. Me desvencilho com o velho tapa e digo num tom mais
alto: “Me larga”. A mulher responde: “Hei, fala baixo”. Penso
comigo: “Falar baixo?”. Junto todo ar nos pulmões e grito o mais
alto que já consegui na vida:
“HHHHHHHHEEEEEEEEEELLLLLLLLLLLPPPPPPPPPPPPP!!!!!!!!!!!!!!!”. O
grito ecoa por toda Budapeste. No finzinho eu fecho olho e aguardo o
tiro da pistola que eu achava estar na jaqueta do segurança.
Bom esse post já está enorme nesse
ponto, então vou deixar o restante para outro.
Só queria deixar um ensinamento dessa
história antes de você ir embora furioso por ter lido até aqui e
ter que esperar pelo final:
“No hai nada gratis”. Se te
disserem que a entrada é grátis, pergunte quanto custa a saída ;)
Além disso, intimo meu amigo Beraba a
escrever a versão dele dos fatos ;)
Ultimamente tenho evangelizado a
Plataforma como Serviço (do inglês PaaS – Plataform as a Service)
Google App Engine (GAE), utilizando a linguagem Python. Uma pergunta
me é feita de forma recorrente: “Renzo, é possível rodar Django
no App Engine? Funciona bem?”. Isso era de se esperar, visto que
Django é o framework web full-stack mais famoso dessa linguagem.
Versão curta:
Sim, é possível utilizar o Django no
GAE com o porte não oficial:
Na prática, você vive no pior dos
dois mundos: não consegue utilizar nem o Django nem o GAE 100%,
ficando com uma solução capenga. Então não use o Django no GAE!
Se você quiser usar o Django, use em
um stack padrão para ele. Seja Heroku, Amazon ou Digital Ocean.
Se quer usar App Engine, use com suas
apis. Apesar do medo do “vendor-lock-in”, em 4 anos nunca sofri
com isso. Se for para portar para outro host, melhor é usar o
Appscale (http://www.appscale.com/)
do que Django. Use um framework full-stack feito exclusivamente para
a plataforma:
https://github.com/renzon/tekton
Versão Longa:
DJango é um framework feito com SQL em
mente. Suas apps, painel de adminstração, ORM e scaffolding
dependem fundalmentalmente desse tipo de banco para funcionar 100%.
Assim, querer portá-lo para NoSQL me lembra a célebre frase “para
quem só conhece martelo, tudo é prego”.
Um dos grandes atrativos para
iniciantes é o painel de adminstração. Aliado ao scaffold,
é possível prototipar rapidamente aplicações web. Contudo, ao
tentar rodar o DJango-Admin no GAE, as limitações do Datastore
(https://developers.google.com/appengine/docs/python/ndb/) não
permitem o uso integral do painel. Além disso, a plataforma em si já
provê um painel de adminstração próprio, mesmo que mais rústico.
Mas as limitações desse banco existem
por uma razão: escalabilidade. Elas estão lá para permitir que sua
aplicação escale sem haver necessidade de alterar o código. E o
fato é que depois de conversar com engenheiro de grandes sites, como Facebook e Globo.com, conclui que mesmo trabalhando com SQL, várias
dessas limitações impostas acabam sendo necessárias nesse tipo de
banco para se atingir uma grande escala. Como exemplo a eliminação de joins para facilitar o cache:
Outra grande vantagem do Django é seu
ecossistemas de apps (módulos). Elas resolvem problemas recorrentes apenas
com a instalação de uma biblioteca. Para exemplifcar, procurei no
Google: “app django voting” e consegui uma para resolver votações
online: https://code.google.com/p/django-voting/.
Contudo, uma vez que se baseiam em Django + SQL, elas também
não funcionarão 100% no GAE. Basta a app precisar de um simples
join e sua funcionalidade não irá funcionar.
Tendo então comprometidas as duas
grande vantagens, sobra ainda uma outra muito interessante: geração
e validação automática de formulários a partir dos modelos. Isso
é extremamente útil, evitando replicação de código e reduzindo sua complexidade. Porém, para utilizar os formulários, pelo menos
o ModelForm, é necessário utilizar os modelos do Django.
Ao utilizar o ORM do Django, e algumas
outras apis, você irá perder uma grande vantagem do ndb: chamadas
assíncronas
(https://developers.google.com/appengine/docs/python/ndb/async). Com
elas é possível paralelizar as diversas buscas que devem ser feitas
em banco de dados durante uma requisição. Assim é otimizado o uso
de seus recursos gerando economia para seu bolso, uma vez que o
modelo de cobrança é proporcional ao tempo de uso. Logo, mais uma
vez um recurso não será utilizado 100%.
Ok, se te convenci nesse ponto de que
usar Django no GAE é “martelar parafuso”, então a pergunta
lógica a ser feita é: “O que uso para desenvolver?”
Quando comecei a usar a plataforma, o
projeto Django-nonrel não existia. Da mesma maneira, o micro
framework Flask também não. Mas o que percebi, acompanhando
discussões Flask versus Django na comunidade Python é que
microframeworks, como o primeiro, são preferidos por devs mais
experientes, pela liberdade de escolha que proporcionam. Mas para
devs iniciantes, um framework full-stack é mais adequado. E a razão
disso é muito simples: para um dev iniciante, é melhor contar com
as decisões feitas por profissionais mais experientes dentro do
framework do que bater cabeça tentando criar suas soluções.
Essa conclusão então me chamou a
atenção para a pergunta recorrente do início do post, que aqui
repito: “Renzo, é possível rodar Django no App Engine? Funciona
bem?”. Acabei meditando melhor, deixando meu preconceito contra
frameworks full-stack de lado, tentando entender o que realmente essa
pergunta queria dizer. Como fruto desse pensamento, acabei traduzindo
a pergunta para “Existe uma forma de automatizar o código no GAE
da mesma forma que faço com o Django?”. E a reposta é sim.
A solução então foi adaptar minha
biblioteca, o Tekton.
Ele foi construído em cima do framework padrão da documentação do
App Engine, o webapp2.
Sua versão inicial tinha a mesma filosofia do Flask.
E por conta do que comentei sobre esse tipo de framework, essa é uma
opção não familiar para devs iniciantes ou àqueles que conhecem as
facilidades do Django.
Passei então a analisar os pontos
fortes do Django e também do Rails. Minhas conclusões:
Seria legal ter scaffold para
prototipação
Seria legal ter validação automática
de formulários a partir de modelos
Seria legal ter a criação de código
html a partir de modelos
Seria legal ter um ecossistema de apps
mínimas para começar, e ir acrescentando outra com o tempo
Seria legal fornecer uma arquitetura
para permitir o uso das API's assíncronas do Google, ao mesmo tempo
em que se construa apps isoladas como as do Django
Seria legal documentar todas
ferramentas
Seria legal criar uma comunidade em
volta desse framewok
Para as primeiras 4 questões, segue o
vídeo:
Para as demais:
Apps:
Até agora escrevi 5 apps:
GAEBusiness. Arquitetura para camada de negócio que permite separar
apps e ainda sim executar código utilizando as vantagens da API
assíncrona;
GAEGraph. Lib que permite modelagem de dados no
banco como um grafo. Prove várias features interessantes, como
recuperação de nós, salvamento entre outras. Isso utilizando
memcache para aumentar performance e reduzir custos;
GAECookie. App de segurança de cookie
para validação de sessão e para evitar ataques CSRF;
GAEPermission. Plataforma de login com
Google, Facebook e Passwordless. Também prove camada de segurança
por lista branca (white-list) para controlar permissões em alto
nível;
GAEPagseguro. Plataforma de integração
com pagseguro.
Todas essas features podem ser
conferidas em https://pt-dot-tekton-fullstack.appspot.com/ e também
em http://adm.python.pro.br/
Quanto a documentação, vou
reescrever todo o livro https://leanpub.com/appengine
para conter essa nova abordagem. Após isso vou documentar todas
apps no Github.
Por fim, fica a criação da
comunidade. É isso que começo fazer agora! Assim, se você quiser
participar desse projeto ou tirar dúvidas, fica o endereço do fórum
para você se filiar: