✪ Felippe Profile picture
software engineer, frontend specialist, curious generalist, open sourcerer, classic cars keeper, father. a strange carbon-based lifeform — posts are my own.
Aug 30, 2024 34 tweets 6 min read
Vamos scrappear o twitter direto no browser e coletar uns bagulho interessante? Então segue essa thread aqui que eu vou te mostrar como usar o browser, o console e umas 30 linhas de JS pra baixar uma lista dos seus followers em segundos

🧶 Bom, quando falamos de scrappear o twitter a galera já entra em panico pq o twitter aplica uma coisa chamada:

Virtualization/Windowing

Vc pode ter visto essa palavra e pensado "é o que?!".
Jul 9, 2024 5 tweets 1 min read
dica pra vc que coda em node + mongo: o código abaixo levanta um server mongo efemero na memória, pra executar basta salvar isso como "local-mongod.mjs" por exemplo e chamar no terminal "node local-mongod.mjs". vc pode inserir dados pre carregados ali. ótimo pra testes. Image tbm é possível usar esse server pra alimentar instancias locais de um aplicação em development mode, vc pode usar qualquer driver mongo pra se conectar na URI que foi gerada normalmente. é um server como qualquer outro. não esqueça de instalar a dependencia sendo importante antes
Jul 1, 2024 15 tweets 3 min read
Tinha essa thread pronta, então lá vai:

Falácias sobre Opala:

- é uma barca (errado, é um carro pequeno)
- é pesado (errado, é bem leve)
- bebe MUITO (depende MUITO)
- ss é separated seats de bancos separados (errado!)
- é caro pra manter (depende, geralmente errado)

Explico: 1. Opala é uma Barca

O opala mede 4.5m. Em sua época esses carros eram chamados de "Pony Cars" ou "Pôneis" (incluindo o Mustang), pq eram menores que os de cavalaria absurda e realmente grandes. Pega um Charger 69 por exemplo com seus 5.25m de comprimento.
Mar 18, 2024 6 tweets 1 min read
vamos falar de um dos principais economizadores de recurso do desenvolvimento web (infra, grana, observabilidade): CACHE

sério galera, junto com os requisitos de alguma feature, implementem um discovery pra analisar possibilidades de cacheamento, salva muita grana + vou dar um exemplo:

na firma tinha um campo de busca antigamente. uma vez UI/UX previu que esse campo deveria abrir uma lista de buscas recentes, que quando clicadas fariam a busca novamente, aquele classico: mais buscados por vc
Jan 17, 2024 8 tweets 2 min read
em casa alugada TUDO o que vc usufrui foi previamente financiado por vc mesmo/a sem nenhuma possibilidade de retorno ou acumulo nem a curto/medio/longo prazo (cerne do capitalismo) da sua parte, apenas da parte do locatário: vc queimou dinheiro para adquirir uma necssidade básica pra entrar: vc paga
pra sair: vc paga
se quebrar: vc arruma
se arrumar: não será seu
se não cumprir com os ponto acima: vc paga

depois de sair, vc não tem nada a não ser a lembrança de ter pagado para viver num lugar que não é seu.
Jan 12, 2024 19 tweets 5 min read
Postei que gosto de dirigir de madrugada e que por isso Cerveja sem álcool (zero) é ótimo pra mim e algumas pessoas alertaram que posso acusar no bafometro mesmo assim. Fiquei intrigado e fui pesquisar e descobri umas coisas legais. Segue o fio

👇 Vc é pego quando: Conforme o § 1°, inciso I do art. 306, quando o resultado do teste do bafômetro ou do exame clínico indicar concentração igual ou superior a 6 decigramas de álcool por litro de sangue ou igual ou superior a 0,3 miligrama de álcool por litro de ar alveolar.
Jan 10, 2024 4 tweets 1 min read
tempos atrás (+2 anos) comentei que compras online no crédito em locais não previamente autorizados deveriam pedir autorização via notificação (3DS Auth). qdo trabalhei pra uma operadora bancaria implementei isso num service. usei hj um app que consome o codigo que eu mesmo criei existem muitos cenários de fluxo para usar 3DS. é um protocolo com uma spec já bem robusta, pra ver se é útil no seu cenário ou se vc precisar/quiser criar um 3ds server, aqui a spec:

w3c.github.io/3ds/
Nov 7, 2023 15 tweets 4 min read
Bom, a resposta da enquete abaixo é SSRF, ou: "Server-Side Request Forgery", ou seja: forja de requisição do lado do servidor. Na thread explico porque, e falo de um bonus: Auth Id via body rs 😖
Image Vamos primeiro ao motivo de não serem as outras opções

XSS (Errado)

Vulnerabilidade que aparece ao manipular um input de dado para injetar scripts maliciosos na aplicação. Pra isso, esse input tem que estar num fluxo de execução (ex: eval, svg, innerHTML, etc). Não é o caso.
Nov 1, 2023 12 tweets 3 min read
acho que essa curiosidade ou duvida ja deve ter passado na cabeça de alguns/mas devs por aí. vou tentar responder nessa thread de maneira bem resumida uma das tecnicas de fazer um teclado desse: o ponto central desse problema é ser capaz de gerar todas as combinações numericas de um array de arrays numericos. se vc pensar assim, depois de resolver isso, vc vai gerar um novo array com todas as combinações numericas possiveis geradas pelos botoes (arrays) escolhidos.
Aug 23, 2023 14 tweets 4 min read
"Oh não meu mundo caiu, não posso continuar minha task pq tenho os contratos mas a API não tá pronta"

Deixa de ser chorão Front Ender. Nesta thread vou mostrar uma das tecnicas pra mockar comportamento de requests diretamente no front. Depois vc substitui pra chamas reais

👇 Essa é nossa factory, ela "finge" ser uma request, e retorna os dados que definirmos em data, seta as opções na response, e o tempo de resposta como sleep. Vc pode modificar de acordo com suas necessidades. Código no ALT da imagem: function mockRequest(data, options, sleep = 200) {     const response = new Response(JSON.stringify(data), options);          return new Promise((resolve, reject) => {                 setTimeout(() => {             options.status >= 400 ? reject(response) : resolve(response);         }, sleep)     }); }
Aug 17, 2023 19 tweets 4 min read
Em Go vc tem ponteiros. Vc pode obter o endereço de uma variavel assim:

x := 1;
p := &x;
v := *p;

Logo p esta "referenciando" o endereço de x. E v está "dereferenciando" o valor do endereço em p, que ali seria 1.

E se eu quisesse fazer isso em JS? R: Então, não dá.

Thead 👇 Obs: Essa thread não visa "comparar" JS com Go. Isso seria o mesmo que comparar uma banana e um bife: não tem o menor sentido prático a não ser que vc tenha um contexto muito especifico seu. A ideia aqui é ver as particularidades de cada lang.
Jul 25, 2023 8 tweets 2 min read
como falar mal de JS:

- null é um objeto que pode ser extendido com Object.create()

- não é e não será realmente multi-threaded

- undefined é uma global e não é palavra reservada

- setTimeout/setInterval esperam na call stack, logo não são confiáveis

+ - setTimeout/setInterval executam code evaluation, portanto pode ser inseguro se chamado com string

- a Date API é um ctrl+C/V de uma API de datas bem antiga do Java, e é toda inconsistente

- Web Elements é uma spec que segue confusa devido a briguinha de vendor

+
Jul 13, 2023 5 tweets 1 min read
Numeros da CV-Keep

Active Users: 2k
DB: Mongo Atlas Free (512MB)
DB Current Size: 53MB
Host: Heroku Basic (7.00 USD/m)
Mailer: SMTP (60R$/anual)
Front MEM: 34MB de 512MB
Front First Load: 638kb
Front Usage Size: 0 (sim 0: SW + Cache)
Custo anual: USD 144.00
Custo mensal: USD 12 Front first load é o que ele precisa carregar pra trazer a pagina pela primeira vez (ta até grande, da pra diminuir BEM).
Jul 13, 2023 10 tweets 2 min read
Skills que vi serem valorizadas e analisadas nas ultimas empresas que atuei como senior, incuindo a atual (MELI):

- conhecimento tecnico abrangente
- conhecimento arquitetural
- capacidade apurada de liderar e ensinar
- conhecimento de mercado/business

+ - saber definir padrões robustos
- identificação de oportunidades
- benchmark: saber comparar / analisar

- pesquisa: capacidade apurada de pesquisa, experimentação, poc para tomada de decisão

+
Jun 30, 2023 23 tweets 4 min read
se eu te disser que vc pode isolar quase qualquer elemento DOM dentro de um shadow-dom. e que vc pode criar estilos on-the-fly, e escopa-los dentro do seu shadow-dom de forma totalmente isolada. isso vanilla e sem precisar de um custom/web component? pois é...

siga a thread 👇 se vc não sabe o que é um shadow-dom: basicamente é uma porção do dom isolada da raiz (root). significa que ela não será afetada pelo entorno. pra saber mais:

developer.mozilla.org/en-US/docs/Web…
Jun 16, 2023 12 tweets 3 min read
⭐️ Dicas para negociar, a thread ⭐️

Bom, tenho negociado bastante nos ultimos anos. Negociado salarios, negociado carros antigo (o qual ja comprei e vendi alguns: fuscas, chevette, corcel, opala). Gosto do assunto, então aqui vão algumas coisas que aprendi:

👇 1. Nenhuma oportunidade é a melhor da sua vida

Esse papo de que tem coisas que vem uma vez na vida e vão: bullshit. Até tem? Tem, mas são poucas, então não dá pra negociar levando isso em conta. Oportunidade é o escambau, procure ver vantagem real, não oportunidade imaginária.
May 30, 2023 12 tweets 3 min read
Em design de frameworks, libs e ferramentas em geral, é comum deixar uma opção "debug", que se ligada mostra logs mais detalhados sobre o que está acontecendo.

nessa thread vou mostrar um pattern bacana pra fazer um "debug mode" sem encher sua aplicação de IFs:

🧶👇 function debug() {     const noop = new Proxy({}, { get: () => () => void 0 });      return debug.active ? console : noop; } vc pode copiar o código acima chegando o ALT da imagem. o que esse código faz?

- declara uma função debug que retorna o "console" se a propriedade active esteja true, ou uma "no operation function" caso esteja false.

o uso fica assim: Image
May 16, 2023 5 tweets 1 min read
a verdade é que muitos de nós só somos programadores pq devs MUITO FODAS abstraíram as coisas num nível super elevado de forma que meros mortais como nós conseguissem programar com uma velocidade razoável e sem se desesperar a cada linha de código. "ain eu não, eu programo em C, eu sei programação funcional, eu sou foda e vcs são pato"

rs, ta... fecha seu terminal e começa bootando seu tty aí antes de entrar nessa conversa jovem dev
May 8, 2023 5 tweets 1 min read
se tivesse escritório da empresa próx. de casa eu estaria lá

o que ferra o presencial são as horas de transporte, engarrafamento, stress, mudar de estrutura de vida ao mudar de trampo

problema não é trabalhar presencial, mas a perda não remunerada de de tempo, saúde e liberdade se for colocar na ponta do lápis, essa é uma forma oculta de "pagar pra trabalhar". pq no fim eu vendo duas coisas:

1. tempo
2. competencia

se eu to dispendendo tempo, mudando minha estrutura de vida pelo o UNICO e EXCLUSIVO motivo de atender a empresa, to PAGANDO pra trabalhar
May 6, 2023 8 tweets 2 min read
vejo muito na internet grupos de pessoas que defendem PJ pela liberdade e a extinção da CLT

minha tia é advogada trabalhista. atualmente o maior numero de processos vem de PJ processando empresa pra obter reconhecimento de vínculo depois de ser dispensado (geralmente por doença) claro que minha tia per-si não representa dado suficiente pra afirmar nada. tbm não to falando que PJ é ruim e CLT é bom, ou o contrário. apenas criticando a irredutibilidade de algumas pessoas em assuntos que são pessoais e tem muitas camadas.
May 5, 2023 5 tweets 1 min read
pra mim a mudança para com IA vai ser quando eu puder usar NLP (Natural Language Processing) para passar tarefas e ENSINAR a IA a efetuar tarefas pra mim que antes ela nem conhecia. ex, uma IA chamada Lucy que eu posso dizer:

Lucy, se vc fizer uma http request assim e assado usando JS pra esse endpoint todo dia às 7h da manhã, vc vai ligar a cafeteira da casa, vc pode fazer isso pf todo dia exceto aos sabados e domingos?

Lucy: Ok