polvo à galega Profile picture
CTO na @appcumbuca | Threads de tecnologia no fixado | Inimigo da orientação a objetos
Miss noubody Profile picture 1 subscribed
Jun 6 12 tweets 4 min read
Já que esse parece ser o tema da bolha dev de hoje, vamos falar sobre IDEMPOTÊNCIA.

O que é?
Pra que serve?
Como eu uso?

Pra saber tudo isso, siga aqui no fio. 👇 Image Idempotência é um conceito extremamente simples vindo da matemática.

Uma função é idempotente se aplicar ela 2 vezes retorna sempre o mesmo resultado que aplicar ela uma vez só.

Por exemplo, a função f(x) = x * 1 é idempotente - f(f(x)) é igual a f(x).

1/10 Image
Apr 2 24 tweets 6 min read
Desde que eu fiz a thread sobre o backdoor do xz, aconteceu bastante coisa. Talvez o mais importante: Conseguiram analisar o backdoor e entender a intenção dele.

Segue aqui no fio que eu te conto tudo. 🧵


Image Ah, e se você não leu o primeiro fio ainda, vou pedir pra você ler ele antes, ele passa o contexto necessário pra entender tudo aqui. 1/23
Mar 30 22 tweets 7 min read
Tá, mas e se eu contar pra vocês que nos últimos dias tá rolando uma história de intriga digna de filme de espionagem, tudo em torno de uma tentativa de invadir máquinas no mundo todo?

Vem na thread que vou te explicar. 🧵 #bolhasec Image O "xz" é uma aplicação de compressão usada em várias distros linux. Ele em geral atinge taxas de compressão menores que o tradicional gzip, ao custo de usar mais memória, então ele vem sendo escolhido pra cada vez mais aplicações. Até aí tudo ótimo. Image
Mar 13 36 tweets 7 min read
A @rinhadebackend acabou de terminar, então em homenagem a todos os envolvidos nessa iniciativa FODA vou falar de algo que muita gente desligou pra ter menos latência (😏), e sobre por que você não deve fazer isso num sistema real.
Isso mesmo, vamos falar de garantias ACID! 🧵 Image Primeiramente, o que significa ACID?
ACID é uma sigla que se refere às 4 garantias que um banco de dados SQL te dá em relação a transações:

Atomicidade

Consistência

Isolamento

Durabilidade

E o que é cada uma dessas? 1/35
Mar 1 22 tweets 6 min read
O sistema operacional é um "cara" com quem a gente já tá tão acostumado a interagir que é fácil até esquecer que ele tá lá, rodando o código. Vamo falar um pouco sobre a história dos SOs e o que, de fato, eles fazem. 🧵 Image Pra começo de história, por que se chama "sistema operacional"? Esse termo é uma tradução do inglês "operating system", que também poderia ser traduzido como "sistema operante" ou "sistema operador". E esse último termo é o mais interessante. (1/21)
Feb 26 35 tweets 8 min read
Uma coisa que eu falo muitas vezes e que causa alguma polêmica é que C não é uma linguagem de baixo nível. Mas por que eu insisto nisso? É porque é vital pra entender linguagens compiladas. Segue aqui no fio pra entender. 🧵 Image Vamos começar com um problema "filosófico": Qual é o *significado* de um programa? I.e., dado o *texto* de um programa, como podemos saber o que aquele programa vai fazer? (1/33)
Feb 16 8 tweets 2 min read
Volta e meia o pessoal que tem interesse na linguagem me pede ajuda pra achar vagas com Elixir. Essa semana foi boa em termos de vagas aparecendo na comunidade, então decidi trazer aqui caso alguém tenha interesse 👇🧵 #MyElixirStatus Vaga de Dev Sênior Erlang/Elixir na Klarna (Suécia): jobs.lever.co/klarna/ebd1d1e…
Nov 23, 2023 16 tweets 4 min read
Talvez você já tenha ouvido falar que "No Linux tudo é um arquivo". Mas o que exatamente é que isso significa, na prática? 🤔

A questão aí é que "arquivo" no Linux não significa exatamente o que a maioria das pessoas pensa quando pensa em "arquivo". Quer entender melhor? 👇🧵 Quando pensamos em "arquivo", a maioria das pessoas pensa em algo como um arquivo de texto, ou um vídeo, ou um PDF. O que é que todas essas coisas têm em comum? Bom, eles são todos sequências de bytes salvas em alguma forma de armazenamento durável.
Nov 3, 2022 21 tweets 5 min read
A pedidos, eu vou fazer a coisa que avisam todo dev Haskell pra nunca tentar fazer: Eu vou tentar explicar o que é uma Monad. E eu juro que não é tão complicado assim. (Imagem por @impurepics) 🧵(1/21) Image Até hoje, o jeito melhor jeito de explicar Monads que eu já vi é com exemplos. E o primeiro exemplo que eu queria dar é o de Promises em JS. Promises em JS não são *exatamente* Monads, mas são o mesmo conceito geral. Já explico. (2/21)
Mar 24, 2022 8 tweets 5 min read
@friidakhalo @sseraphini Resumo:

var cria uma variável local, mutável e hoisted
let cria uma variável local, mutável e não-hoisted
const cria uma variável local, imutável e não-hoisted

Ainda tem uma quarta opção que é declarar sem nenhum keyword, que cria uma variável mutável global. @friidakhalo @sseraphini Hoisting é um termo que parece complicado, mas que significa que se você declarar uma variável em qualquer lugar dentro de um bloco, ela se comporta como se tivesse sido declarada no começo do bloco.

Por ex.:

(() => {
console.log(x);
var x = 1;
})();

Imprime 1
Mar 24, 2022 4 tweets 1 min read
Não sou da astronomia, mas:

Na prática significa que, diferente da terra, onde a gente tem um limite claro entre "atmosfera" e "planeta", em planetas gasosos a densidade só vai aumentando gradualmente, de forma quase contínua, à medida que você se aproxima do centro Então júpiter (e outros planetas gasosos como Urano e Netuno) têm uma fase gasosa ao redor de uma fase líquida ao redor de um núcleo sólido (feito de HIDROGÊNIO METÁLICO), mas os limites entre as fases não são definidos
Mar 21, 2022 13 tweets 7 min read
@zanfranceschi @sseraphini OK, resposta séria:

Uma monad é um tipo que encapsula algum efeito "adicional" ao compor funções. Podemos falar de tipos que *são* monads e da *interface* monad. Um tipo que é uma monad é um tipo que implementa a *interface* monad. @zanfranceschi @sseraphini Então você pode pensar numa monad como uma interface comum pra especificar computações que têm alguma lógica a mais quando são compostas. Por exemplo: O tipo Maybe representa computações que podem falhar. (+)
Mar 20, 2022 21 tweets 5 min read
Pessoal, preciso pedir desculpas para vocês.

Ontem, querendo falar um pouco sobre as equivalências entre programação funcional e imperativa, eu EMPOLGUEI um pouquinho e falei besteira. Quero explicar por que eu errei e aprofundar um pouquinho mais nesse tema. Colem:

👇 Eu falei no tweet de ontem que todo loop imperativo pode ser convertido em uma aplicação de reduce. Isso não é bem verdade. Na *grande maioria* dos loops imperativos você pode sim converter, mas existem alguns casos em que não dá, e vou falar sobre eles aqui nesta thread. [2/21]
Mar 19, 2022 8 tweets 2 min read
Boa parte do problema na discussão em torno de design patterns é que as pessoas querem só memorizar o GoF e achar que isso vai resolver todos os problemas. Sendo que, pela própria ideia de padrão de design como proposta pelo Christopher Alexander, um padrão tem sintaxe e gramática. Se a "linguagem" (no sentido de espaço de problemas a resolver, não linguagem de programação) na qual usamos padrões evolui, o padrão também precisa.
Mar 18, 2022 4 tweets 1 min read
É EXTREMAMENTE difícil fazer uma lista de "decisões mais idiotas do STF" mas bloquear o Telegram pelos motivos dados deve estar fácil nas top 10 É impressionante aliás o quanto essa desculpa de "combater fake news" é versátil, essencialmente qualquer canetada que se queira passar pra proibir qualquer meio de comunicação digital pode ser justificada assim.
Jan 12, 2022 17 tweets 10 min read
@malwaresss @sseraphini Peraí que Kubernetes e containers são dois conceitos totalmente separados.

O Kubernetes é um orquestrador de containers. Agora, pra explicar o que é um container é um pouco mais complicado. Vamo lá: (+) @malwaresss @sseraphini Eu acho a forma mais fácil de explicar o que é um container começar explicando o que é uma VM. Uma VM é uma "máquina virtual" (VM = Virtual Machine). Um computador sendo simulado pelo teu computador.
Apr 14, 2021 10 tweets 2 min read
Esses dias eu descobri que, por coincidência, o candidato favorito à eleição do Peru tem o mesmo nome que eu (só mudando uma letra - meu sobrenome foi aportuguesado): Pedro Castillo.

Fiquei curioso e fui ver quem é a figura. E, bom... Ele com certeza é uma entidade. 🧵 (1/10) Pedro Castillo é professor e líder sindical, e candidato à presidência do Peru pelo partido Marxista-Leninista-Mariateguista "Perú Libre". (2/10)
Sep 28, 2020 4 tweets 1 min read
Um princípio que eu acho bem importante em todo processo de aprendizado pessoal é lembrar que os retornos de qualquer processo de aprendizado são decrescentes. Quanto mais você aprende, mais difícil fica aprender coisas novas, e o ganho de aprender coisas novas fica menor também. Vale (aproximadamente) o princípio de Pareto: cerca de 80% dos efeitos vêm de cerca de 20% das causas. Nesse caso, uns 80% dos resultados do aprendizado vêm de uns 20% das coisas aprendidas.
Sep 28, 2020 4 tweets 1 min read
Eu sei que eu falo demais disso, mas a falta de crítica do brasileiro é uma parada que nunca vai me descer.

Amigos de verdade falam pros amigos quando o trabalho deles tá ruim. Isso não é desincentivo, é acreditar que seus amigos podem ser as melhores versões deles. Amigos de verdade falam pros amigos quando eles tão errados. Isso não é "chatice", é acreditar que seu amigo é capaz de aprender e não querer que ele quebre a cara.
Sep 23, 2020 4 tweets 1 min read
Na minha foi C. Algum tempo depois de cursar a aula introdutória eu fui estudar C independentemente e descobri que eu não sabia absolutamente nada de C. Me lembro do professor dizendo coisas como "se um int dá overflow, ele começa de novo a contar do valor mínimo" ou "se você ler depois do fim de um array dá segfault"
Sep 22, 2020 21 tweets 4 min read
Conforme prometido mais cedo: Uma thread sobre ReCAPTCHA, o sistema de identificação de bots do Google. Acho que todo mundo em algum momento já teve que completar uma paradinha dessas de "não sou um robô". Mas pra que isso existe e como funciona?