-
Phil Oppermann (OS in Rust)
02/08/2016 21:00
O post explora a arte de lidar com exceções de forma mais informativa, explicando como imprimir dados cruciais como ponteiros de instrução e de pilha. Detalhes como o alinhamento da pilha para instruções SSE poderiam até fazer um dev mais veterano se sentir nostálgico, quase como revisitar um bom código em assembly. E não esqueça, todo o código fonte está no GitHub, então a curva de aprendizado é apenas um ‘pull request’ de distância.
-
Drew DeVault
02/08/2016 00:00
Hoje celebramos um ano desde o primeiro commit do Sway, que logrou mais de 1.800 commits e já está com a maioria das funcionalidades do i3. Como eles mesmos dizem, "Sway é um compositor Wayland compatível com i3", então quem já conhece o i3 pode ficar tranquilo que sua configuração vai funcionar no Sway. Além de tudo isso, temos suporte para layouts empilhados, aceleração de entrada personalizável e muito mais. Olhando para esses números, fica claro que a equipe realmente fez um bom trabalho, e agora o Sway só precisa de um marketing digno, porque com essa performance, ele deveria ser o super-herói dos compositores.
-
Drew DeVault
01/08/2016 21:00
Um ano de Sway e já conseguimos 1.823 commits e quase 17 mil linhas de C. Isso tudo sem usar uma única gota de café em excesso, parece uma boa prática de dev. O projeto, que é um compositor Wayland compatível com o i3, agora quase alcançou todas as funcionalidades do i3 original, e ainda traz novos recursos para agradar os usuários. É como a versão turbo do seu carro, mas neste caso, o carro é um desktop.
-
Drew DeVault
18/07/2016 21:00
Mocking é uma daquelas paradinhas que, quando a gente se acostuma, não quer mais viver sem. O uso do argumento -Wl,--wrap no C é uma jogada astuta para testar funções sem precisar abrir arquivos pré-formatados. Porém, cuidado: você só pode ter um wrapper por função no executável, então a vida do dev pode ficar um pouco mais complicada se você precisar de múltiplas simulações. É como querer jogar Xadrez e só ter um peão, você vai ter que se virar para fazer tudo acontecer.
-
Drew DeVault
28/05/2016 00:00
Baseado na conversa com um novo contribuidor do projeto Sway, fica evidente que o entendimento sobre ponteiros é um desafio até para os devs mais determinados. O autor faz um ótimo trabalho ao explicar que, com ponteiros, estamos apenas "referenciando um valor na memória". No entanto, é sempre bom lembrar que a mágica dos ponteiros pode levar um dev iniciante a uma espécie de viagem por bytes e endereços que parece saída de um livro de ficção científica. E sim, a diferença entre big e little endian é como discutir se a força do Darth Vader é maior que a do Mestre Yoda, cada um com seu argumento.
-
Drew DeVault
27/05/2016 21:00
Conversar sobre ponteiros é como discutir a força da gravidade com um jovem Padawan: fundamental, mas muita gente ainda está tentando entender se está pendurado em um galho ou flutuando no espaço. O artigo faz um ótimo trabalho ao desmistificar conceitos básicos, explicando que um ponteiro é basicamente um endereço na memória, como uma linha direta para o seu byte favorito dentro do grande buffet de RAM. Para quem está começando com C, aprender a lidar com ponteiros é como aprender a usar a Força: essencial, mas pode acabar te levando a um buraco negro de bugs se não for bem entendido.
-
Phil Oppermann (OS in Rust)
27/05/2016 21:00
Este post mergulha na captura de exceções, começando pela configuração da tabela de descritores de interrupção. Ao final, nosso kernel estará apto a lidar com falhas de divisão por zero, um verdadeiro "You shall not pass" da programação. A complexidade das exceções, como "double faults" e "triple faults", é um lembrete de que desenvolver um kernel é como montar um quebra-cabeça com peças faltando: um erro e você pode ficar em um bootloop eterno. E quem precisa de uma máquina do tempo quando você pode revisar tudo no GitHub?
-
Antirez (Salvatore Sanfilippo)
10/05/2016 14:02
Finalmente, o sonho dos módulos carregáveis no Redis está tomando forma, mas com uma pitada de cautela. O autor menciona que "módulos podem ser a característica mais interessante de um sistema e a mais problemática ao mesmo tempo", refletindo a eterna luta entre inovação e estabilidade. A ideia é alcançar uma compatibilidade de API tão robusta que módulos de hoje possam rodar tranquilamente daqui a quatro anos, como se estivessem usando a mesma versão do JavaScript, sem ter que reescrever tudo. Vamos aguardar para ver se essa nova abordagem vai trazer mais alegria do que dor de cabeça para os desenvolvedores.
-
Antirez (Salvatore Sanfilippo)
07/05/2016 15:42
Estar desconectado por algumas horas durante um voo pode parecer um pesadelo para alguns, mas para outros, é uma chance de focar. O autor destaca que, apesar da desconexão, o verdadeiro impacto vem da falta de mensagens de texto. Por exemplo, o WhatsApp é um fenômeno na Europa, onde grupos para tudo proliferam, mas ainda não encontrou o mesmo espaço nos EUA. Isso levanta uma questão interessante: o que está impedindo essa comunicação unificada por lá? E quanto à meia-boca de reconhecimento de voz, fica claro que a usabilidade é a real barreira - é como ter uma ferramenta incrível e não saber onde está a chave para usá-la.
-
Ruslan Spivak
Ruslan Spivak
01/05/2016 07:10
Este episódio do desenvolvimento de um intérprete é uma verdadeira viagem no tempo para quem passou pela escola de programação. A afirmação de que "Assembly e C eram as únicas linguagens 'reais'" é um sentimento que muitos compartilham, mas aqui fica a dica: todas as linguagens têm seu propósito, até mesmo o bom e velho Pascal. O importante é o que você consegue construir com elas, não a quantidade de ponteiros que você consegue gerenciar. Vamos ver como este intérprete vai evoluir, já estou imaginando como seria fazer isso em uma linguagem de mais alto nível...
-
Dan Luu
11/04/2016 05:00
O relato sobre a filha de Margaret Hamilton na NASA é um bom lembrete de que um simples checagem pode salvar horas de trabalho, ou como eu gosto de dizer, "a essência do desenvolvimento de software é evitar que o sistema crash antes do happy hour". A diferença entre o modelo tradicional de sysadmins e os SREs do Google destaca a importância de automatizar operações e criar uma cultura de colaboração entre devs e ops. Claro, encontrar essas pessoas com habilidades raras para SRE pode ser como tentar achar um bug em um código legado - uma tarefa e tanto. No fim das contas, o livro pode ser mais do que um guia, mas um mix de alguns post-mortems que todos já vivemos na pele.
-
Phil Oppermann (OS in Rust)
10/04/2016 21:00
Neste post, vamos criar um heap do kernel e um alocador de memória. O que me chama a atenção é a complexidade que um bom alocador possui—jemalloc, por exemplo, tem mais de 30.000 linhas de código. Aqui, a proposta é desenvolver um alocador simples, mas capaz o suficiente para atender nossas necessidades de alocação em tempo de execução. A interface de alocação em Rust, com seu toque de 'unsafe', deixa claro que lidar com memória é como jogar Tetris: um movimento em falso e seu jogo pode acabar aí.
-
Drew DeVault
21/03/2016 21:00
O cara comprou um VT220 e transformou isso em uma experiência de trabalho surpreendentemente agradável, ler e-mails no mutt em um terminal vintage é definitivamente um movimento que grita 'dev retro'. Ele menciona que todo o setup, embora simples, exigiu alguns ajustes no sistema, como “ExecStart=-/sbin/agetty -h -L 19200 %I vt220”. A dedicação de fazer o terminal praticamente um monitor extra é admirável e mostra que às vezes a nostalgia e a eficiência podem coexistir, mesmo que você passe um tempinho no terminal, em vez de rolar o feed do Twitter.
-
Antirez (Salvatore Sanfilippo)
13/02/2016 15:49
Martin Kleppmann trouxe à tona um dilema interessante sobre como gerar IDs crescentes monotonamente em sistemas distribuídos com Redis. Ele menciona que "esse problema aparentemente simples pode ser mais complexo do que parece à primeira vista", especialmente sob condições de falha. A beleza do algoritmo que menciona é que ele é acessível, lembrando um pouco como a busca binária - simples, mas com uma profundidade que pode deixar os novatos com uma sensação de "aha!". Para quem está começando com algoritmos distribuídos, é um ótimo ponto de partida para brincar com os desafios do mundo real.
-
Antirez (Salvatore Sanfilippo)
09/02/2016 14:33
A análise publicada por Martin Kleppmann levanta um ponto importante sobre o Redlock: ele não é seguro. Um dos maiores problemas apontados é a questão das locks com auto-release, que pode permitir que múltiplos clientes acessem um recurso compartilhado após o tempo de expiração. Martin ainda argumenta que, mesmo fora disso, o algoritmo faz suposições que não são garantidas em sistemas reais. É como tentar programar uma viagem no tempo sem considerar as paradoxo; a teoria pode parecer boa, mas a prática é bem diferente.
-
Dan Luu
23/01/2016 23:00
O post discute como o "perf" é o queridinho das ferramentas de depuração de performance no Linux, mas a verdadeira questão é: como lidar com problemas de latência, especialmente aqueles que aparecem com RPCs em sistemas complexos? Amostragens são fáceis e práticas, mas falham em capturar a realidade dura dos piores cenários de latência, que podem custar caro. O framework de rastreamento da Google, que segue o conceito de capturar "cada" evento, promete ser a solução para muitos problemas que as amostragens não conseguem resolver. É como enfrentar um bug com uma bomba atômica em vez de uma faca - a precisão conta muito nesse mundo de múltiplos servidores.
-
Dan Luu
09/01/2016 23:00
2015 pode ter sido um ano próspero para a Intel em termos de lucros, mas seu lado de engenharia deixou a desejar. O artigo menciona que ‘depois da descoberta de dois bugs sérios’, uma falha permitiu que uma VM causasse um looping infinito no microcódigo da CPU, e é aí que a coisa fica realmente tensa. Se um black hat tivesse descoberto isso antes, o estrago nas nuvens poderia ter sido monumental. O que vem a seguir? Vamos esperar que a Intel faça mais do que apenas venda CPUs para manter os serviços seguros.
-
Este texto explora as complexidades por trás da operação de sistemas, em especial o RAID1. A ideia de que falhas são independentes é um mito que já era desmistificado em 1988, e a realidade é que eventos como um terremoto podem desabar a casa (ou o servidor) em um instante. Além disso, a abordagem clássica não considera que, uma vez que um disco falha, o outro acaba se tornando um alvo, como um colega de trabalho que é chamado para cobrir a ausência e acaba se estressando. No final, fica claro que é vital operar e monitorar sistemas, pois a aparência de saúde pode ser enganosa.
-
Antirez (Salvatore Sanfilippo)
02/01/2016 14:26
Finalmente, temos a primeira versão candidata do Disque 1.0. Como bem disse o autor, "a magia da programação" está na criação de algo novo e útil. Disque parece promissor, principalmente por buscar simplicidade operacional em sistemas distribuídos, livrando os desenvolvedores do sofrimento excessivo de implementação. É um passo interessante para quem adora um bom middleware, mas como tudo em tech, vamos ver se os testes em condições reais confirmarão essa eficiência. E sim, como qualquer nerd que já lançou algo, o autor também sabe que bugs podem ser seus melhores amigos por um tempo.
-
Phil Oppermann (OS in Rust)
31/12/2015 23:00
Neste post, vamos fortalecer a segurança do seu kernel, criando uma nova tabela de páginas com uma "guard page". A ideia de adicionar essa proteção é evitar os terríveis transbordamentos de pilha que podem causar bugs difícies de debugar, um verdadeiro pesadelo digno dos melhores memes de programação. Lembre-se, stack overflow não é apenas um site; pode ser seu código se você não tomar cuidado. No final das contas, mexer com níveis baixos do sistema sempre exige atenção e paciência, mas o esforço vale a pena.