-
Antirez (Salvatore Sanfilippo)
09/11/2018 14:31
Com a chegada do RESP3, a evolução do protocolo do Redis está mais próxima de dar um upgrade da velhinha máquina de escrever para um laptop. Agora, a maior inovação parece ser a forma como os dados são retornados, trazendo mais semântica para as respostas. Isso significa que, ao invés de cada comando ter que fazer malabarismos com o tipo de retorno, o cliente receberá dados mais ricos e organizados. E sim, vai ter que atualizar as bibliotecas e aquele código legado que você jurava que nunca precisaria de cuidado, porque agora um ZSCORE vai retornar um double, não mais uma string - bom, olhe pelo lado positivo: Você vai ganhar pontos com a equipe com esse refactor.
-
Drew DeVault
29/10/2018 00:00
A memória virtual é como um truque de mágica da vida real no seu computador, permitindo que ele use mais espaço do que realmente tem. O artigo explica que "apenas um pequeno subconjunto do seu espaço de endereçamento está mapeado para RAM física", o que explica porque às vezes parece que temos mais memória disponível do que realmente temos. O uso de MMU e chamadas de sistema como mmap para gerenciamento de memória é um ótimo exemplo de como o kernel e os processos interagem em um cenário multi-tarefa. E, claro, quem nunca sofreu um page fault quando todo o sistema está a pedido de RAM? Parece que a memória nunca é suficiente, mesmo em um mundo de 16 exbibytes.
-
Drew DeVault
28/10/2018 21:00
A memória virtual é como aquele nível de abstração que a gente ama em programação, só que aplicada ao mundo real da memória do computador. Basicamente, enquanto sua RAM tenta se comportar como um array gigante de bytes, a MMU está lá fazendo malabarismos para gerenciar tudo isso. O mais interessante é que só uma parte da sua bela arquitetura de 64 bits está realmente ligada à RAM física; o resto está lá para dar suporte a uma infinidade de outras operações e, claro, evitar que um processo dane o espaço de memória do outro. Isso mostra que, entre um malloc e um context switch, sempre tem uma dança acontecendo por trás das cortinas do sistema.
-
Drew DeVault
07/10/2018 21:00
O autor finalmente encontrou a paz ao aprender Go com a chegada da versão 1.11, que resolveu o famigerado problema do GOPATH. Agora, ele pode focar nos projetos sem que a linguagem se intrometa no sistema como um dev tentando organizar o ambiente de trabalho. E a simplicidade do Go, combinada com sua excelente biblioteca padrão e modelo de concorrência, promete um futuro brilhante. É como se o Go tivesse feito um upgrade sem precisar de um repositório do GitHub para isso.
-
Drew DeVault
29/09/2018 21:00
Finalmente, um relato do XDC 2018 que mistura muita troca de ideias entre pessoas que realmente fazem acontecer o wlroots e o Sway. "wlroots foi um dos softwares mais importantes representados no XDC", e, pelo que parece, as conversas sobre as falhas no código DRM foram bem produtivas. O destaque das apresentações parece ter sido a introdução ao design das GPUs da Intel, o que é sempre fascinante, considerando que muitos de nós ainda temos pesadelos com drivers. E claro, sempre bom ver que a galera da Nvidia ainda é cordial, mesmo quando a conversa é sobre seu envolvimento com open source, ou a falta dele.
-
Fabien Sanglard
22/09/2018 22:08
É interessante notar como "usava acontecer esporadicamente, mas agora é uma experiência diária". Isso me lembra aquelas atualizações de software que só prometem otimização e acabam tornando tudo mais lento. O aumento da complexidade nos sistemas parece estar se tornando a nova norma, e cada linha de código pode ser um novo bug pronto para aparecer do nada. A chave é manter os olhos no desempenho e não deixar o sistema sair do controle, ou você pode acabar como um servidor com RAM demais para um projeto pequeno.
-
Andrew Kelley (criador do Zig)
15/09/2018 13:06
A proposta de usar hashing perfeito em tempo de compilação no Zig é uma ideia que faz muito sentido, especialmente para desenvolvedores que buscam segurança em tempo de execução e facilidade de manutenção. O código apresentado mostra uma abordagem interessante, onde "[...] se esqueceu de declarar um dos casos" é detectado já na compilação, evitando surpresas na hora de rodar o programa. Isso é tão útil quanto um retorno de chamada do seu código que aponta um bug antes de você estar pronto para o debugger. Se você já se perdeu entre trocentas strings, vai entender o valor disso.
-
Drew DeVault
04/09/2018 00:00
Dá até uma nostalgia ver como a web se transformou em um festival de anúncios e carregar JavaScript que mais parece um dragão em um jogo de RPG: cheio de efeitos mas pesado demais. O autor comenta que um artigo do New York Times gasta 2.8 MB com 748 requisições para ser exibido, "a página abre com um anúncio de 281 pixels de altura, antes mesmo do título do artigo". Ele propõe um remédio bem direto: "usar pouco ou nenhum JavaScript" e otimizar imagens. Resumindo, menos é mais – uma filosofia que devia valer não só para a programação mas para a vida também.
-
Drew DeVault
03/09/2018 21:00
Quando o conteúdo de um artigo pesa menos que o banner do Ads, sabemos que temos um problema. Como o autor demonstra, confiar no JavaScript e em imagens pesadas é como tentar rodar um jogo 3D em um Raspberry Pi sem otimizações. Usar apenas o essencial, como sugerido, parece ser a melhor saída para sites mais rápidos e menos irritantes. O sr.ht está mostrando que dá para viver sem esse peso todo – e, sinceramente, todos nós merecemos uma navegação mais leve.
-
Drew DeVault
09/07/2018 00:00
A mensagem aqui é clara: software simples é o Santo Graal da programação. O autor reflete sobre como "se seu software não é simples, não será correto ou rápido". É verdade que a complexidade adora fazer festinha e, como sabemos, ela costuma trazer bugs e problemas de performance como lembranças indesejadas. Por isso, antes de complicar tudo com soluções mirabolantes, que tal adotar a filosofia do KISS (Keep It Simple, Stupid)? Afinal, em um momento de crise, quem conseguir decifrar um código simples tem muito mais chance de evitar o caos no servidor a qualquer hora. Menos é mais, e esse mantra nunca sai de moda.
-
Drew DeVault
08/07/2018 21:00
Simplesmente não dá para discutir: a simplicidade deve ser o mantra de qualquer software. O texto afirma que é mais importante que a performance e a precisão, e com razão. Afinal, se o código é um labirinto de complexidade, como você vai encontrar o minotauro dos bugs? E, convenhamos, num momento de estresse às 2 da manhã, é mais fácil desbravar uma solução simples do que um emaranhado de linhas de código que você viu pela última vez no último ciclo de vacinação do Windows.
-
A Lei de Little é praticamente o que há de mais próximo de um superpoder na análise de sistemas distribuídos. Com a fórmula 𝐿 = λ𝑊, conseguimos entender melhor a capacidade do sistema com métricas de latência e taxa de chegada de requisições. Mas, como o autor aponta, a realidade é bem mais complicada, já que a concorrência e o tempo de resposta se influenciam mutuamente. Olhando para isso, fica claro que nem sempre a matemática entrega uma solução perfeita, já que o mundo real não é tão bonito quanto a matemática faz parecer.
-
Phil Oppermann (OS in Rust)
17/06/2018 21:00
O post mergulha fundo nas "falhas duplas", que ocorrem quando a CPU não consegue chamar um manipulador de exceções, levando a potencialmente desastrosas "falhas triplas". Ao configurar uma Interrupt Stack Table, conseguimos capturar essas falhas em uma pilha de kernel separada e evitar o reset do sistema. Resumindo, é como adicionar um catch para que seu código não simplesmente vire um loop infinito sem mais nem menos. No final, lidar com essas falhas é crucial para a estabilidade do sistema e, convenhamos, quem gosta de resets inesperados?
-
Phil Oppermann (OS in Rust)
16/06/2018 21:00
Exceções de CPU são como aquele amigo que fica interrompendo todo mundo na festa para falar sobre o último bug que encontrou. Quando algo dá errado, como uma divisão por zero, é aí que as coisas ficam interessantes. Configurar uma tabela de descritores de interrupção para gerenciar essas exceções é o que dá aquele "up" no controle do nosso kernel. Afinal, quem não gostaria de ter um plano de contingência para evitar um "triple fault" na hora da ação?
-
Russ Cox
30/05/2018 11:00
Engenharia de software é como a arte de moldar código, mas com a precisão de um cirurgião e a paciência de um monge. Na parte 9 de 'Go & Versioning', a discussão gira em torno de como o Go define essa prática e a importância da versionação. É um lembrete de que, assim como em um projeto open-source, garantir a qualidade do seu código é tão crucial quanto alcançar a produtividade - uma verdadeira dança entre inovação e rigor. Afinal, quem não ama uma boa versão e um código bem estruturado?
-
Antirez (Salvatore Sanfilippo)
07/02/2018 19:30
Quando processos longos crasham, é como ver um bug na Matrix. O autor fala sobre o valor de frameworks que isolam cada interação, evitando que problemas de memória se tornem tragédias. A batalha entre um crash em Redis e um bug em um módulo lembra o dilema de Debug vs. Fuzz Testing. E no final, mesmo um bom fuzz tester não pôde reproduzir o erro, mostrando que, às vezes, a maior falha é a falta de falha.
-
Drew DeVault
01/01/2018 23:00
Fork é um dos grandes mistérios do design do Unix, quase como um bug de sistema que se transformou em feature. O autor critica a ideia de copiar todo o espaço de processo apenas para executar um novo programa, algo que soa mais como uma gambiarra do que uma solução elegante. É interessante como, mesmo em sistemas modernos, a sombra do fork ainda aparece, principalmente com as dores de cabeça que ele causa, como a herança de descritores de arquivos. Afinal, criar processos com um leve toque de magia não deveria ter que envolver tanta contabilidade de arquivos abertos.
-
A afirmação de que "o média é inútil" parece ter se tornado um meme no mundo da monitoração de sistemas, mas, como qualquer bom dev sabe, o problema é a interpretação. Embora o média possa esconder informações cruciais, isso não significa que devemos jogá-lo no lixo. Como alerta o texto, "descriptive statistics are misleading", e entender o contexto é fundamental. Então, antes de sair descartando médias, é melhor saber que elas são apenas uma peça do quebra-cabeça estatístico.
-
Dan Luu
23/12/2017 23:00
Parece que a nostalgia nos faz acreditar que os computadores eram mais rápidos no passado. Este estudo mostra que "as máquinas mais rápidas são antigas" e que os PCs novos andam devagar. É como se tivéssemos um desempenho de retrocomputação em pleno 2023, onde até mesmo os gamers mais exigentes estão correndo atrás do tempo perdido. No fim das contas, enquanto os dispositivos novos prometem mundos e fundos, eles ainda perdem para a velocidade de máquinas talhadas à mão de décadas atrás.
-
Dan Luu
20/11/2017 23:00
Esse artigo levanta uma questão curiosa sobre a percepção de eficiência das empresas; afinal, se o mercado é tão eficiente, como justificamos decisões claramente ruins? A análise de esportes e jogos de tabuleiro como exemplos elucidam isso: sabemos que decisões ruins podem custar caro, mas será que as empresas estão mesmo prestando atenção nos dados ou só dando 'boas-vindas' às falhas? A realidade é que nem sempre as análises pós-jogo se traduzem em melhorias concretas, especialmente quando os 'experts' parecem viver em um mundo paralelo onde decisões ruins não fazem diferença. Uma boa reflexão para quem trabalha com dados e acha que números resolvem tudo.