-
CALISDO traz uma proposta interessante ao aplicar um modelo mnemônico ao pensamento estruturado em sistemas distribuídos. Enquanto muitos podem achar termos como 'STRIDE' e 'DREAD' um pouco antiquados, a verdade é que são ferramentas eficazes para evitar que a gente perca tempo com problemas que já poderiam ser previamente analisados. A ideia de avaliar 'Consistência', 'Disponibilidade' e 'Latência' sob uma nova ótica pode ajudar devs a evitarem surpresas desagradáveis no morninho do lançamento. No final das contas, documentar o que pode dar errado é mais fácil do que lidar com um sistema quebrado e usuários insatisfeitos.
-
Dan Luu
03/05/2015 21:00
A preocupação com o consumo de energia nos hardwares não é à toa. Como mencionado, a eficiência energética para servidores é crucial, desde a perda no subestação até o calor gerado, que exige resfriamento constante. "Hennessy & Patterson estimam que 82% do custo de um datacenter está associado a energia e resfriamento". É uma conta que faz qualquer um querer sair de perto da fiação. Se os servidores não forem bem alimentados, pode ser que eles não floresçam como esperávamos, algo que faz ecoar um meme clássico de TI: sem energia, sem alegria.
-
Drew DeVault
19/04/2015 00:00
Parece que o desenvolvedor encontrou uma solução bem prática para um problema comum: "um simples tool para deploy em cada commit" sem precisar de um servidor de build sofisticado. Essa abordagem com o Hooks facilita a vida de quem quer implementar um fluxo de deploy contínuo de forma barata e tranquila. É como aquele truque de mágica em que você faz o aplicativo saltar direto do repositório para a produção sem passar pelo ‘caminho’ tradicional. Funcionalidade e simplicidade andam de mãos dadas aqui, o que é sempre bem-vindo no mundo tech.
-
Drew DeVault
18/04/2015 21:00
Parece que a simplicidade é o nome do jogo com o Hooks. Uma ferramenta que permite rodar comandos arbitrários sempre que um hook do Github é acionado pode ser um salva-vidas para quem não quer se enredar em servidores de build complexos. A configuração, como o próprio autor coloca, é bem direta: você só precisa editar um arquivo de configuração e pronto, está liberado para um deploy contínuo que, honestamente, parece mais fácil do que configurar um café na máquina. Quando a praticidade se junta a uma pitada de leveza, ficamos com ferramentas que são boas aliadas no dia a dia descomplicado da vida de dev.
-
Essa discussão sobre a regra do zero-um-infinito chama a atenção para como os números são essenciais na engenharia e ciência. A frase "os únicos números razoáveis são zero, um e infinito" resume a busca por limites arbitrários, que muitas vezes indicam falhas na concepção do sistema. E vamos combinar, ter uma boa intuição numérica é quase como ter um superpoder: saber quando calcular ou medir a primeira vez e quando jogar os números no lixo é o que separa os bons engenheiros dos medíocres. Afinal, em um mundo onde o crescimento exponencial é a norma, é preciso ter o radar ligado para evitar armadilhas estatísticas.
-
A AWS trouxe à tona a importância da especificação no design de sistemas com o artigo na CACM. Como diz Leslie Lamport: "Se não explicamos por escrito, não sabemos se realmente entendemos". Essa é uma dica valiosa para quem trabalha em equipe e precisa comunicar ideias complexas. No fim das contas, pensar é essencial, mas não pensar é como programar sem checar a sintaxe: um desastre garantido.
-
O artigo explora como a introdução da aleatoriedade, como o jitter, pode otimizar sistemas distribuídos. O conceito de adicionar ruído para evitar erros sistemáticos é muito pertinente; afinal, quem nunca se sentiu um pouco "desincronizado" ao trabalhar em equipe? A relação entre jitter e dither fornece uma boa analogia: ambas técnicas ajudam a dispersar erros e garantir que as coisas funcionem com menos viés, como um bom round em uma festa de devs. No final das contas, um pouco de aleatoriedade pode ser mais do que bem-vinda.
-
Antirez (Salvatore Sanfilippo)
15/03/2015 19:32
Parece que Disque está no mundo das filas de mensagens, uma arena onde o Redis já se aventurou, mas nem sempre de maneira ideal. O autor comenta que é necessário garantir a entrega exata das mensagens, algo que o Redis não faz tão bem. Ele decidiu oferecer uma solução própria em vez de empurrar mais funcionalidades para o Redis, o que é um reflexo da sabedoria dev: nem sempre adicionar mais código é a solução. Estamos todos torcendo para que Disque seja uma resposta a esses desafios, principalmente para quem vive no complexo mundo das mensagens.
-
Dan Luu
06/03/2015 21:00
A pergunta sobre o que acontece ao carregar uma URL é como abrir a caixa de Pandora para os devs mais curiosos. Desde como o teclado acusa pressionamentos até a mágica do DNS, a complexidade da tecnologia está em todos os lugares. O trecho que menciona como "a conexão pode lidar com 10Gb/s" é um lembrete de que, por trás de cada 'clique', há uma sinfonia de componentes que têm que trabalhar em harmonia. É fascinante perceber que entender essas interações pode realmente mudar a forma como avaliamos a performance total de sistemas.
-
Sybilania parece uma novela da vida real, com enredos dignos de uma série de devs reclamando sobre bugs no código eleitoral. "A cidade havia votado por correspondência pela primeira vez", e quem diria que o resultado seria um voto na entrega expressa do caos? A falta de identificação é o que dá a real vibe de um sistema descentralizado, só que aqui, é mais sobre votos perdidos do que sobre blockchain. Nada como uma eleição onde o que importa é mais a performance das balas do que a contabilização dos votos.
-
Dan Luu
14/02/2015 23:00
Essa discussão sobre se a IA algum dia vai substituir humanos parece mais um loop de um programa mal escrito, não? Por um lado, temos as tarefas rotineiras e sem paixão que já são ocupadas por humanos que, convenhamos, não estão no seu melhor dia. Por outro, as empresas vão priorizar a redução de custos, mesmo que a IA seja mais lenta que uma conexão discada. E vamos combinar: se o atendimento já é uma bagunça com humanos, quão pior poderia ficar com um sistema automatizado?
-
Dan Luu
02/02/2015 23:00
O conceito de backdoors em CPUs é um verdadeiro convite à paranoia, especialmente quando pensamos que "são frequentemente considerados impossíveis". Porém, a instalação de um backdoor pode ser mais acessível do que muitos imaginam, especialmente se você tem acesso adequado ao hardware. A ideia de ativar uma escalada de privilégios é sedutora, e só essa possibilidade já deveria nos fazer questionar como as CPUs são projetadas. Em um mundo onde a segurança é tão frágil quanto sua última atualização de software, a discussão sobre a vulnerabilidade das CPUs nunca foi tão relevante.
-
Dan Luu
10/01/2015 23:00
David Albert fez uma boa pergunta sobre como os CPUs evoluíram desde os tempos em que computávamos com um 8-bit. Hoje em dia, estamos lidando com 64 bits, o que significa mais endereços e registros, além de resultados de ponto flutuante mais consistentes. O que realmente impacta nosso dia a dia de programação é a forma como a memória funciona agora, com caches que antecipam o que vamos precisar, evitando assim aquela espera de mais de 400 ciclos de acesso. Então, a próxima vez que você criticar aquele programinha que parece travar, lembre-se de que a culpa pode não ser só do código, mas também da batalha eterna entre CPU e memória.
-
A pique da performance multithreaded é algo que pode pegar muitos desenvolvedores de surpresa. Como o autor descobriu, trazer threads para dentro do seu programa sem entender o impacto pode, ironicamente, torná-lo mais lento. A comparação feita entre o tempo de execuções e o número de 'context switches' é clara: quanto mais threads, mais troca de contextos e menos eficiência. No final das contas, nem sempre mais é melhor, principalmente quando se fala de paralelismo em sistemas que não foram projetados para isso. Cuidado com as threads, ou elas podem ser mais um bug do que uma feature.
-
Essa história dos dois fazendeiros é quase um bug da vida real. Eles precisam de uma solução técnica para um problema simples: comunicação. A analogia com sistemas que precisam garantir consistência é clara, mas mais divertida do que um evento de programação assistindo a um 'debug' de um código que nunca para de gerar 'you knows'. No fim das contas, a solução pode estar em um redesign do processo de comunicação, e quem sabe, um pouco menos de Karaoke ajudaria, né?
-
Dan Luu
23/11/2014 23:00
A análise dos commits do Linux revela um padrão curioso nas palavras usadas, com termos como "driver" e "support" dominando. Apesar do ruído, a presença de certos termos, como "alsa" no trabalho de Takashi Iwai, indica que há um foco em áudio em sua contribuição. Porém, vamos ser sinceros, muitos desses resultados podem parecer mais barulho do que música. A verdadeira diversão começa quando se consegue filtrar as palavras menos interessantes e realmente entender o que cada desenvolvedor traz para a mesa, porém, isso exige um pouco de trabalho manual da sua parte.
-
A discussão sobre entrega exatamente uma ser "impossível" é interessante, mas o que realmente importa aqui é entender que nem todos os sistemas precisam desse tipo de exatidão. O autor menciona que "a maioria das pessoas está realmente interessada em processamento exatamente uma", que é um conceito mais alinhado com o que a galera no dev busca. Em vez de ficar obcecado por entregas exatas, focar em como lidar com falhas e garantir que a mensagem tenha um efeito colateral uma única vez pode ser mais útil. E no fim das contas, um pouco de redundância nunca fez mal a ninguém, especialmente em sistemas distribuídos.
-
Dan Luu
04/11/2014 23:00
A nova versão do manual da Intel traz instruções para armazenamento não volátil que prometem revolucionar o uso de SSDs. Contudo, como apontam os pesquisadores, "o OS impõe um imposto bastante grande sobre I/O quando seu dispositivo I/O é realmente rápido". O desempenho pode ser severamente impactado pelo overhead do sistema operacional, além da incompatibilidade entre a hierarquia de memória x86 e a memória persistente. No fim das contas, usar NVRAM pode parecer mais promissor do que realmente é, se você não considerar esses detalhes.
-
Antirez (Salvatore Sanfilippo)
03/11/2014 14:58
Recentemente, testando a latência do Redis em instâncias EC2 m3.medium, percebi algo curioso: "picos de latência de ~300 milissegundos" não surgiram como esperado durante a chamada do fork(). O que o autor descobriu é que o Linux está fazendo o que chamo de 'lazy forking', onde as cópias de páginas são adiadas até uma falha de página ocorrer. Isso funciona bem para processos que chamam fork()+exec(), mas para o Redis, é um desafio. É como descobrir que o seu SSD é um pouco mais lento do que você pensava durante uma competição de pacotes.
-
Dan Luu
02/11/2014 23:00
O autor levanta um ponto interessante ao criticar a ideia de que "raciocínio informal" é prioritário em relação ao "teste". Embora a afirmação de Dijkstra sobre a inadequação dos testes tenha seu mérito, a realidade é que sistemas complexos, como CPUs modernas, não comportam apenas raciocínios simplistas. Como ele observa, "não há como evitar bugs se você cria um sistema que é complexo demais para ser verificado formalmente"; é exatamente isso que nos leva a simulações complexas e testes rigorosos. No fim, prescrever simplicidade como resposta pode ser tão ilógico quanto tentar depurar um código de 73 mil linhas que nem você mesmo consegue compreender.