Balloon vessel

by Zeh on June 17, 2009

Balloon vessel

Começou aos poucos: um dia alguém avistou um saco de bolas dentro do metrô. “Alguém deve ter esquecido”, foi o que pensaram. “Algum entregador deixou aí. O pessoal da limpeza vai achar pro setor de achados e perdidos”, diziam. Teve quem achasse graça.

Mas mal sabiam eles que este não era só um caso isolado. Ele se repetiu no dia seguinte, com um saco de bolas diferente. E depois. E depois. E aí já não era mais um saco de bolas. Eram dois. Três. Meia dúzia. Uma dúzia. Duas dúzias. Centenas. Milhares. A graça acabou bem rápido.

Rapidamente eles tomaram o espaço dos homens e mulheres nos vagões dos trens do metrô. A situação ficou insustentável. Ninguém conseguia mais ir trabalhar; o metrô estava tomado por sacos de bolas. Eles ocupavam os bancos, os corredores, a área das portas, até os assentos reservados. Como saber se um saco de bolas é mais ou menos idoso?

“Faça alguma coisa!”, repetiam os cidadãos. “Esses sacos não deveriam estar aqui!”, diziam outros. É verdade. Mas estavam. E tinham tanto direito quanto qualquer um de utilizar o metrô. Teríamos de ligar com isso. Os sacos de bolas haviam chegado para ficar.

Foto e título por Juliana Mundim

Aprenda programação orientada a objetos no dia dos namorados

by Zeh on June 12, 2009

Há algumas semanas atrás, o grande @mjlogan publicou uma frase em sua conta do Twitter que achei genial:

@mjlogan: Gata, pode vir populando que meu array já está inicializado. #pedreiro_geek

Era mais uma – de muitas – cantadas geek que estavam circulando naquele dia no Twitter (e que continuam circulando) com a hashtag #pedreiro_geek (ou #geekpickuplines na versão gringa). Neste caso, bastante voltada pra programação.

Ler isso fez com que uma verdadeira lâmpada se acendesse acima da minha cabeça. Ou seja, estava sem fazer porra nenhuma e pensei, “Caralho, dá pra fazer um monte de cantadas toscas desse tipo relacionadas a programação!“.

Quem me conhece sabe que sou um solteiro convicto, mas a oportunidade me pareceu boa demais pra deixar passar. Sabe aqueles momentos em que a inspiração bate e você não liga muito pras consequências? Então. Foi aí que acabei despejando uma torrente de frases parecidas na minha conta no Twitter, mas todas relacionadas a Object-Oriented Programming, ou OOP (Programação Orientada a Objetos, em português). Quem teve a honra prazer sorte infelicidade de acompanhar os tweets não deve ter entendido muita coisa, porque elas são realmente muito voltadas pro mundo OOP; no máximo, pode ter achado uma ou outra engraçadinha.

Como o search do Twitter não parece funcionar pra coisas muito antigas, não dá mais pra listar tudo que postei através de um simples link. Mas como a data é bastante propícia, decidi postá-las aqui para guardá-las pra posteridade.

No entanto, pro bem da humanidade, e pra ter algum propósito minimamente útil neste artigo, decidi colocar explicações de cada frase junto de cada uma delas. Pra quem não entendeu nada quando as escrevi, pode ser uma oportunidade de entender o quão genial razoável cada uma das frases era; pra quem está aprendendo OOP, pode ser uma oportunidade de sacar alguns conceitos através de exemplos, digamos, pouco ortodoxos; e pra quem já sabe, pode ler sem precisar de muitas explicações, no máximo utilizar as descrições pra ver se acertou, e talvez, quem sabe, achar um pouco de graça.

Seguem abaixo as cantadas oop, na ordem em que foram postadas. A explicação de cada uma delas está escondida; clique na setinha no final de cada frase para ler a explicação correspondente.

Nota: os links que coloquei na explicação, bem como as expressões que usei, são dos conceitos originais em inglês (porque foi assim que aprendi), mas é só clicar no link pra versão em português na página da Wikipedia que se abre pra achar o equivalente em português. Além disso, alguns dos conceitos explicados nas frases do começo não são repetidos mais além, então vale a pena ler na sequência porque as explicações podem parecer meio vagas mais pro final da lista.

Gata, você é uma constante na minha classe estática. Show ▼

Gata, no Singleton do meu coração, você é a instância default. Show ▼

Gata, se meu coração é o Model, você é o Controller e eu sou o View.Show ▼

Gata, não tem Garbage Collection que consiga fazer eu te esquecer. Show ▼

Gata, eu ter esquecido o dia do seu aniversário é culpa de um memory leak. Show ▼

Gata, sua classe é final. Show ▼

Gata, não tem longint grande o suficiente pra dizer o quanto eu gosto de você. Show ▼

Gata, vou extender meu coração só pra fazer um override no toString() pra escrever seu nome nele. Show ▼

Gata, sua classe não tem clone(). Show ▼

Gata, você implementa ILoveYou. Show ▼

Gata, todos os meus overloads têm você como parâmetro. Show ▼

Gata, meu dispose() é disparado automaticamente se sua referência for removida da instância. Show ▼

Gata, me diz qual o método da sua API que retorna seu coração. Show ▼

Gata, sua instância é única. Show ▼

Gata, quero te extender pra classe MyGirl. Show ▼

Gata, vamos fazer um composition que instancia nós dois. Show ▼

Gata, depois que eu terminar com você, vão escrever um capítulo novo sobre você no Gang Of Four. Show ▼

Gata, depois que eu terminar com você, não vai ter refactoring que faça você me esquecer. Show ▼

Gata, o unit testing de minha classe só retorna válido se ele te encontrar. Show ▼

Gata, depois de ser instanciada, deus removeu sua classe do repositório. Show ▼

Gata, não tem encapsulamento que esconda o que eu sinto por você. Show ▼

Gata, não dá setar o que sinto por você pra null. Show ▼

Gata, meu o command pattern tá preso em loveYou(). Show ▼

Gata, minha paixão está em loop infinito. Show ▼

Gata, todas as entradas do meu iterator apontam pra você. Show ▼

Gata, você não tem factory, é base class. Show ▼

Gata, você provocou uma exceção no init() do meu coração. Show ▼

Gata, não tem especificação que explique sua classe. Show ▼

Gata, você conseguiu acessar uma propriedade do meu coração que era protected até eu te conhecer. Show ▼

Gata, depois de te conhecer, deu um lock na instância do meu coração. Show ▼

Gata, não tem pattern que explique o que sinto por você. Show ▼

Gata, meu try é pra dizer o que sinto por você, pra catch seu coração, e finally te conquistar. Show ▼

Gata, quero adicionar um listener em todos os seus eventos. Show ▼

Gata, você é tão única que seu prototype é private. Show ▼

Gata, todos os seus erros são fatais para meu coração. Show ▼

Gata, espero a documentação que me ajude a conquistar seu coração. Show ▼

Gata, universo = universo.replace(/([\.-,;\s]+s|^s)o(l$|l[\.-,;\s])/im, “você”); Show ▼

Nota final: não garanto a eficácia de nenhuma das cantadas listadas acima. Use por sua própria conta e risco.

E, por favor, não leve a sério.

Aos mestres, com carinho

by Zeh on June 6, 2009

Hoje foi a última aula da oficina de Flash Lite 3.0 que dei no Senac São Paulo (a quem estiver curioso, o conteúdo ensinado está aqui, e os arquivos usados e criados estão aqui).

Não sou professor, mas como andei dando alguns desses cursos livres (gratuitos, abertos pra alunos de graduação de Design de Interfaces, contando como atividade complementar) e como acho que vai demorar muito tempo até eu repetir a experiência, achei que seria legal falar um pouco do negócio aqui.

Senac

Comecei a dar essas aulas em 2007, com uma oficina de Flash Lite 2.1 pra minha própria sala, não só para difundir um certo conhecimento que eu tinha, mas também pra contar como horas de atividade complementar tanto para mim como para minha sala (precisávamos disso de acordo com o currículo do curso). Depois da primeira, acabei dando outras oficinas de Flash e Processing também pra minha sala, e esta última, de Flash Lite 3.0, para outro semestre do mesmo curso, cada uma com carga horária total entre 16 e 20 horas.

Para mim, uma das vantagens de dar essas aulas foi a oportunidade de aprender a expor melhor alguma informação. Nunca fui muito bom de explicações com o propósito de ensinar, e nunca tinha dado nenhum tipo de aula (na verdade, sempre tive um certo preconceito contra a prática), então acho que aprendi bastante nesse sentido – não só como elaborar o discurso do aprendizado e o roteiro de uma aula, mas até como falar melhor em público.

No entanto, uma coisa que eu não esperava muito bem – que eu não imaginava que seria tão diferente – é o quanto entendi da visão da sala e da rotina de cada aula a partir do ponto de vista de quem está lá na frente falando e explicando – do ponto de vista do professor.

E aí, neguinho, em verdade lhe digo, ser professor é treta.

Senac

Uma das coisas mais difíceis de dar aula é preparar cada aula. Como é algo invisível pros alunos, é algo que pode passar despercebido, por isso acho que muita gente não leva em consideração. Mas, pelo menos no meu caso, eu tinha de passar horas preparando cada uma das aulas, bolando o roteiro do que seria passado e de que forma; eu gastava mais tempo pra planejar cada aula do que pra efetivamente dar a aula.

E nem é tanto uma coisa de conhecimento – de ser obrigado a pesquisar o assunto porque não o conhecia tão bem. É porque, por mais que você saiba um assunto, você precisa ter um roteiro decorado e testado pra poder dar uma aula real. Não dá pra sair improvisando; diferente de uma aula, quando você trabalha de verdade, criando algo pra você mesmo usando uma tecnologia qualquer, existem mil coisinhas que podem sair erradas, com erros de sintaxe ou seja o que for, mas que qualquer desenvolvedor pode resolver rapidamente. Já numa aula, isso causa uma quebra perigosa na linha de pensamento dos alunos, já que qualquer coisa fora do normal te força a parar e se concentrar em resolver o problema ao invés de continuar despejando o conhecimento.

Eu conheço muito de Flash, etc etc, afinal já trabalho com a plataforma há uma década; ainda assim, em determinados momentos, em aulas anteriores, tive de parar de falar e explicar algo porque tive algum resultado inesperado no que estava montando em tempo real como exemplo (geralmente, porque não tinha testado o roteiro de aula suficientemente e me deparei com algum problema inesperado na plataforma ou no programa). O foda é que nesses momentos eu tenho de reverter pro meu modo desenvolvedor e começar a depurar o que tinha dado de errado, e só aí virar e explicar pra sala o que aconteceu. É uma coisa bem chata e quando isso acontece deve dar ao aluno a impressão de que o professor é meio retardado e não sabe do que está falando. Sei que já tive momentos parecidos assistindo a aulas de outros professores, e agora entendo um pouco melhor o lado deles.

E outra coisa que pude sentir na pele é que muitas vezes os alunos não tratam o professor como gente, mas sim como alguém que está lá realizando um serviço opcional, que ninguém tem a obrigação de gostar ou aceitar.

Espero que nesse sentido ninguém me entenda mal, até porque todas as turmas pra quem dei aula foram super legais e só tenho a agradecer pelo tempo que me aturaram. Mas o que quero dizer é que quando você está lá na frente, é muito fácil se sentir meio frustrado quando você olha pra sala e percebe que só metade está ouvindo o que você está falando (o resto escrevendo no MSN/lendo email/falando com colega/vendo vídeo), ou quando você olha pra lista de presença e percebe que só metade da turma compareceu, como se o tempo que você perdeu pra preparar a aula fosse inútil e não compensasse o tempo que o aluno gastaria assistindo-a. É algo que eu mesmo também sou culpado de quando era aluno, e algo que só saquei de verdade quando também fiquei em pé lá na frente ficando com a boca seca de tanto falar.

Professor também é gente. Então, a meus professores, o meu muito obrigado.

Sobre pizzarias e seus atendimentos

by Zeh on June 3, 2009

O post anterior sobre o texto da pizza acabou sendo mais lido do que eu esperava. Bacana. No entanto, acho que tem uma parte que eu gostaria de deixar mais clara pra quem não entendeu.

No follow-up que o Luli postou sobre o texto, um leitor fez o seguinte comentário:

On 15.05.09 Raul said:
Concordo! Os clientes só deveriam existir para nos pagar mesmo…ta loko..parece que só querem fazer a gente trabalhar….

Obviamente é um comentário feito de forma sarcástica; o que ele realmente parecia querer dizer é que o texto era reclamação de gente que não queria trabalhar.

A todo mundo que leu o post anterior e não sacou, não concordou, e até mesmo a todo mundo que concordou, tem um detalhe que talvez tenha passado em branco: eu amo meu trabalho. Não estaria trabalhando há 15 anos na mesma área e com basicamente as mesmas tecnologias se não curtisse o que faço. Até porque quem trabalha nessa área sabe que trabalhar muito mais do que 8 horas por dia é muito comum. O cliente principal que inspirou o texto da pizza foi um cliente que me fez trabalhar todo dia até muito mais tarde, muitas madrugadas, e diversos finais-de-semana. Achar que o texto é coisa de preguiçoso é ridículo. Não tenho nada contra trabalhar; tenho, sim, contra trabalhar pra criar algo inútil (que sabíamos que seria descartado) num horário que vai muito além do originalmente planejado, por meses a fio.

Mas se você for parar pra analisar, o problema principal que o texto da pizza fala sobre nem é tanto o cliente, mas sobre a empresa (agência ou estúdio web). É uma coisa que o Luli falou bem no pequeno comentário em resposta:

On 21.05.09 Radfahrer said:
O Zeh tem razão, Raul e LéoFlôr. O desconhecimento de como funciona o processo de produção de um website, associado à gigantesca desinformação do mercado e a ganância (ou desespero) de alguns donos de agências e profissionais de atendimento é que é o grande culpado. O cliente só pede o que pede porque dizem para ele que ele pode pedir.

Só pra dar ênfase: O cliente só pede o que pede porque dizem para ele que ele pode pedir. Perceba que logo na introdução do texto eu deixei claro que aquela era uma empresa que tinha como uma de suas principais características abrir as pernas pro cliente. O problema não é o cliente não saber o que quer e mudar de idéia constantemente: é a agência aceitar isso como coisa comum.

Tudo isso eu estou escrevendo porque quero mostrar o outro lado. (drum rolls)

Depois de ter saído da empresa que me levou a criar essa lista maldita, eu estava extremamente descontente com minha área de trabalho. Fiquei achando que o normal era ficar trabalhando finais-de-semana e madrugadas fazendo trabalhos medíocres que, em 90% das vezes, não iam pro ar. Estava pensando seriamente em mudar de profissão.

A sorte – inesperada – é que imediatamente após sair de lá eu fui pra uma outro estúdio, a Grafikonstruct. E seis meses de GK foram suficientes pra mudar minha visão sobre o mercado de forma assustadora.

Pra falar de forma resumida, na GK eu trabalhava menos horas (fazia um horário humano), era mais feliz (porque fazia um trabalho que fazia sentido, e que ia pro ar, e que era mais desafiador), o estúdio cobrava menos, eu ganhava mais (ambos porque menos trabalho era desperdiçado), e os trabalhos eram mais eficientes pro cliente (porque eram criados pra solucionar um problema, não pra satisfazer o ego do cliente).

Ou seja, tudo ao contrário.

E qual era a diferença entre a GK e a empresa anterior? O relacionamento com o cliente. Na GK, o atendimento era real. Não sei nem se dá pra chamar de atendimento. Se o cliente pedia algo sem noção, a gente dizia que aquilo era algo sem noção. Se pedia algo que levaria muito tempo e teria um retorno mínimo, a gente dizia isso pra ele. Se ele se mostrava complicado e não sabia o que queria, mesmo após meses de diálogo, a empresa abria mão do cliente. Simples assim. Não quer dizer que tudo fosse mil maravilhas na GK, pois todo lugar tem seus problemas e suas encrencas, mas era um paraíso comparado à empresa anterior.

Foi a experiência na GK que me fez entender que o que conta não é tanto o cliente (ou seu tamanho, ou seu nome), e sim a postura que a própria agência ou estúdio adota. Se você está numa empresa que acha que trabalhar bem é se virar pra fazer o que o cliente acha que quer por mais esdrúxulo que o pedido seja, você vai acabar fazendo um trabalho horrível, constantemente tendo de se virar pra atender algum objetivo inatingível. E aí jogar tudo fora.

Já se você está numa empresa que adota uma postura de conhecimento do mercado, de indicar pro cliente o que é certo e o que errado, é o contrário. Você vai trabalhar não só em prol de algum objetivo claro, mas também um que faz sentido pro problema do cliente.

Essa experiência é o que me leva a dizer que “existem empresas e empresas”, coisa que faço sempre que falo sobre a área, seja em conversas com amigos, seja em apresentações. Não dá pra julgar como é a qualidade do ambiente de trabalho de uma empresa só pelo que ela produz ou pelos clientes que ela tem. O atendimento, ou a forma como a empresa se posiciona frente ao cliente, faz uma puta diferença. Tem empresa que quer fazer de conta que trabalha simplesmente atendendo aos caprichos do cliente e acaba produzindo um trabalho medíocre ao custo de muito suor. Mas tem empresa que vê o problema do cliente e quer solucioná-lo de verdade, mesmo que isso crie atrito com o cliente quando este é menos informado. E eu já sei em que tipo de empresa gosto de trabalhar.

Se o cliente te liga hoje pedindo 5 pizzas diferentes e diz que só vai pagar pela pizza que ele gostar mais, e você aceita, pode esperar que amanhã ele vai te ligar de novo, mas dessa vez pedindo 10 pizzas diferentes, e de novo só disposto a pagar por uma. E aí a culpa é do cliente e sua incerteza, ou de quem aceitou fazer as pizzas?

E pra emendar, um vídeo razoavelmente relacionado. Não tem muito a ver com minha experiência na tal empresa que levou ao texto da pizza, mas é algo também comum pra quem trabalha na área, pelo menos pro pessoal de planejamento e vendas.

Filmes para nerds

by Zeh on May 31, 2009

Agora que me finalmente me livrei da faculdade e de outras urgências parecidas, uma das coisas que preciso voltar a fazer é ir no cinema.

Coincidentemente, tem alguns filmes que estão pra sair que tão be deixando bem hypado pra assistí-los.

Um é Surrogates, um thriller de ficção científica que estréia em 25 de setembro. É também baseado numa HQ que infelizmente nunca ouvi falar (acho que ler mais HQ ocidental é outra coisa que preciso fazer). A produção lembra o estilo do Eu, Robô, e é meio que um Matrix às avessas onde pessoas usam corpos cibernéticos para viver vidas diferentes. Questão interessante (nota: o trailer abaixo é meio spoiler, principalmente no final).

Parece ter o argumento típico de um filme de ação, mas também parece ter valores de produção bons o suficiente pra, quem sabe, talvez, oxalá, chegar aos pés de Minority Report (que, pra mim, como fã de ficção científica e desenvolvedor de interfaces, se encontra num nível além).

Outro que me deixou salivando é District 9, que estréia 14 de agosto. Esse filme tem toda a pinta de ser um filme de ficção científica bem mais roots, baseado mais no aspecto humano da história toda (a exemplo do que caras como Arthur Clarke, Isaac Asimov e Philip K. Dick faziam) ao invés de ser um filme-de-ação-com-tecnologia. O engraçado é que, ao mesmo tempo, ele faz um paralelo muito forte com uma situação global bem real, a ponto do trailer enganar quem assiste sem saber que se trata de um filme de ficção científica.

Sempre curti muito ficção científica. Um dos motivos principais que me levou a aprender inglês foi exatamente o fato de que eu queria (e tentava) ler livros deste gênero que não seriam nunca lançados em Português (ou nunca teriam uma tradução à altura). E a impressão que me dá é que, salvo raras exceções, filmes e séries do gênero hoje acabam sempre descambando pra mero pano de fundo de um roteiro medíocre, de modo a criar algo que atenda um mínimo denominador comum – tipo uma novela ou um romance, mas com lasers no fundo de vez em quando. Ver esses trailers me deixou bem mais otimista com relação ao gênero na telona.

Não, não vi Star Trek ainda.

Aí eu acordo atrasado…

by Zeh on May 20, 2009

…e a primeira coisa que vejo é isso.

Visa Twitter

Cacildis!