A experiência de trabalhar na Lambda3: primeiros seis meses

Hoje, completei 6 meses de Lambda3! E vim aqui contar um pouco de como tem sido essa experiência.

Tem sido maravilhosa! É um lugar realmente muito bom, tanto tecnicamente quanto em termos de ambiente de trabalho. As pessoas são bem legais e você tem muita liberdade para ser quem realmente é e para tomar decisões. O trabalho em equipe é de verdade em equipe e funciona muito bem.

Toda equipe de desenvolvimento tem ao menos uma pessoa com mais experiência na cultura de trabalho da empresa, e também tem um profissional especializado em fazer com que a agilidade aconteça de fato. É o/a agilista. Sabe aquilo de entregar mais valor o mais cedo possível, evitar desperdício, ser transparente e organizar o trabalho a ser realizado de forma eficiente? Então… A pessoa agilista vai estar lá facilitando que tudo isso aconteça.

A qualquer momento do dia, podemos descansar, jogar videogame, pingue-pongue ou qualquer outro jogo, conversar, comer, tomar café, deitar na rede… Ninguém vai ficar te vigiando ou julgando por isso. Cabe a você fazer isso com responsabilidade. Isso às vezes gera dúvidas sobre qual seria a medida certa de equilíbrio. E ter essas dúvidas é bom, faz parte do processo de amadurecimento, que culminará com você sabendo se gerenciar sozinho, o que é bastante desejável em uma empresa que não tem gerentes :).

Já ouviu falar de democracia organizacional? Funciona mais ou menos assim:

Ler mais

A arte

Qual é a sua relação com a arte?

A minha é meio esquisita. Não a entendo, às vezes. Sei escrever, fotografar, fazer trabalhos artesanais, música… Mas, no dia-a-dia, isso parece quase nada mudar na minha vida ou na sociedade. Às vezes, acho até que atrapalha pra caramba.

A arte tem papel fundamental na vida do ser humano. Mas, na minha vida, não consigo dar à arte o devido espaço. Quando dou, parece que faltam outras coisas… Tipo tempo para dormir!

Quanto mais industrial fica a cultura, mais se produz e menos se tem acesso a coisas boas do passado. Isso, só até certo ponto, é normal, depois já é anormal. É difícil levar certos tipos de arte, das bem acessíveis mesmo, à população em geral, acostumada ao enlatado.

Enquanto isso, grande parte dos artistas está imersa em suas artes malucas que mais ninguém entende. E ficam fazendo arte só para eles mesmos.

A classe média também parece não se esforçar muito, prefere consumir aquilo que mais se consome. Se toca X na festa, ouço X. Se tem Y no Netflix, vou ver Y.

No fim, parece que quase ninguém está se expressando de fato, seja na produção ou no consumo da arte.

Esse papo é velho, mas o fato é que a arte é importante demais para ser negligenciada. Ao mesmo tempo, eu também não tenho solução. Se é que algo assim se soluciona.

E assim segue desafinada a orquestra chamada Terra…

Em 2019

Em 2019, eu:

  • Não escrevi este post, por isso estou escrevendo agora!
  • Visitei Jaboticabal e o velho amigo Raphael
  • Fiz jejum por cinco dias e meio
  • Montei o álbum de fotos da minha filha de zero a dois meses
  • Produzi o vídeo do nascimento da minha filha
  • Conheci o maravilhoso figo de Valinhos
  • Vendi meu cavaquinho
  • Aprendi Clojure
  • Participei da CONCAFRAS
  • Ensinei Clojure
  • Encontrei por acaso o Oberom
  • Revivi meu Twitter
  • Fiz três processos seletivos
  • Me exonerei de um cargo público
  • Conheci Portugal
  • Me despedi dos amigos de Campinas
  • Aprendi React
  • Palestrei em inglês sobre Clojure
  • Entrei na Lambda3
  • Comecei a aprender Angular
  • Me mudei para São Paulo
  • Fui patrono de uma nova turma de formandos
  • Acabei com os cupins daqui de casa
  • Comecei a aprender TypeScript
  • Uni um amigo meu a uma amiga da minha esposa
  • Retomei contato com velhos amigos escrevendo mensagens de feliz natal e de feliz ano novo
  • Li Harry Potter and the Goblet of Fire
  • Vi minha filha completar três anos
  • Comprei ingressos para o show do Roberto Carlos de 2020

Palestra Teaching Clojure

Participei hoje e ontem do evento TheConf em São Paulo. Ontem de manhã, dei uma palestra contando a experiência de ter ensinado a linguagem de programação Clojure, num curso de extensão do IFSP Campinas. Foi muito legal! Seguem os slides:

Teaching Clojure – Palestra em inglês ministrada no TheConf 2019

Operador vírgula: o ilustre desconhecido

Você já quis inserir um elemento num vetor e obter o vetor numa tacada só? Já quis que o vetor.push(el) do JavaScript retornasse o vetor em vez de o tamanho?

Se já quis e ficou frustrado, saiba que tem como fazer! Existe um operador que serve exatamente para esses momentos:

vetor.push(el), vetor

Como assim, André? Que operador? Que raio foi isso aí?

Sim! Esse é o mágico e desconhecido operador , (vírgula) da linguagem C, herdado por JavaScript. Ele avalia cada expressão e dá como resposta o resultado da última:

// Os parênteses são necessários aqui porque 
// o operador vírgula tem uma precedência baixíssima

const resultado = (expr0, expr1, expr2); // resultado = expr2

Já fazia uns 15 anos que eu me perguntava para quê ele servia na prática, e, hoje, finalmente, encontrei a resposta! O operador vírgula serve quando você está num ponto do código que precisa de uma expressão e você quer causar um efeito colateral.

Você talvez já o tenha visto no incremento de um for com mais de uma variável: for (int i = 0, j = 0; i < 10; ++i, ++j). Nesta resposta do StackOverflow tem um outro exemplo de uso, para fazer leitura de dados. É tipo quando a gente faz assim em Java:

while ((byteLido = inputStream.read()) != -1) {
// ...
}

O while pede uma expressão booleana. Entregamos uma para ele, mas, antes disso, damos uma mexidinha no estado do sistema!

Se você já fez programação funcional com vetores em JavaScript, provavelmente já sentiu falta das funções cons e conj do Clojure, ou : do Haskell.

Dá para simular essas funções assim: [elemento].concat(vetor) ou vetor.concat([elemento]). Meio feião e cria um vetor bobo para jogar fora pouco depois. Vamos usar isso para fazer uma implementação recursiva de cauda da função zip:

function zip(v1, v2) {
const loop = (ret, v1, v2) =>
v1.length === 0 || v2.length === 0 ? ret : loop(
ret.concat([[v1[0], v2[0]]]), v1.slice(1), v2.slice(1));
return loop([], v1, v2);
}

Ficou razoável… Mas que colchetaiada!

E com push, como ficaria? Normalmente, evitamos alterar variáveis. No caso, ret é um vetor novo, então não tem muito problema. Além disso, evitar criar vetores extras pode ser uma boa aqui porque estamos em JavaScript, que não tem as otimizações comuns em linguagens funcionais. Ficaria assim:

function zip(v1, v2) {
const ret = [];
function loop(v1, v2) {
if (v1.length === 0 || v2.length === 0) {
return ret;
} else {
ret.push([v1[0], v2[0]]);
return loop(v1.slice(1), v2.slice(1));
}
}
return loop(v1, v2);
}

Eita… Um monte de ; {} return! Nem parece mais programação funcional. loop era só uma funçãozinha de uma expressão só, agora virou um trambolho, devido a termos que mudar de ? para if/else.

E com se usarmos o operador vírgula?

function zip(v1, v2) {
const loop = (ret, v1, v2) =>
v1.length === 0 || v2.length === 0 ? ret : loop(
(ret.push([v1[0], v2[0]]), ret), v1.slice(1),v2.slice(1));
return loop([], v1, v2);
}

Opa… Aí, sim, hein! push só é executado quando os tamanhos dos vetores são diferentes de zero, e o resultado da expressão entre parênteses será ret. Causamos um efeito colateral maroto e inofensivo.

Simples ou complicado, claro ou obscuro, o fato é que agora está explicada a existência desse misterioso operador!

Espantoso? Nem tanto… O comando do em Clojure faz a mesma coisa!

Twitter episódio 3: A Volta Dos Que Não Foram

Criei minha conta no Twitter acho que em 2009. Usei o nome de usuário awvFi, diferente do awvalenti que eu costumava usar em quase todo lugar, e uso até hoje.

Descobri acho que em 2010, no Facebook, um usuário awvalenti que não era eu! Fiquei chateado, pois sempre usei esse nome por aí e de repente haveria alguém “se passando por mim”. Pois bem, resolvi que ninguém iria fazer isso no Twitter! Criei uma segunda conta lá, com usuário awvalenti, usando meu e-mail da faculdade. Essa conta ficou parada lá, servindo apenas para ninguém mais criá-la e usá-la!

Bom… Muitos anos se passaram e muita água rolou! Em 2016, apaguei minha conta @awvFi do Twitter. Esse nome nem fazia mais sentido para mim, pois o apelido Fi é antigo e já nem uso mais.

Ocorre que, nos últimos anos, ouvi tanto o pessoal da minha área falar em contato pelo Twitter que fiquei pensando se não poderia ser uma boa voltar a usá-lo. A conta já tá lá, mesmo, não é? @awvalenti, só esperando um primeiro acesso… Ninguém catou, já que eu reservei, hehe.

O problema: obviamente, eu não lembrava a senha; afinal, criei só para ninguém mais criar, certo? Quanto ao e-mail cadastrado, eu já não tinha acesso havia uns bons anos. Volta e meia, eu pensava:

Bom, é só eu ir lá na faculdade, trocar uma ideia com o pessoal da TI, pedir um acesso durante 5 minutos ao antigo e-mail. Aí eu redefino a senha do Twitter, troco o e-mail cadastrado e é sucesso!

Bom, eis que, nesta última segunda-feira, recebi uma piadinha por WhatsApp, que me lembrou de uma parecida que eu mesmo havia feito no meu antigo Twitter @awvFi. Resolvi entrar no site e fazer uma busca para ver se encontrava a tal antiga piada, mesmo com a conta deletada. Qual não foi a minha surpresa ao deparar com isto:

Ler mais