-
Dan Luu
27/03/2018 21:00
O "fsyncgate" revela um problema crítico na forma como o PostgreSQL lida com erros de fsync(). Como "um usuário encontrou corrupção de dados após um erro de armazenamento", fica claro que falhas como essa não deveriam passar batidas. A lógica de permitir a tentativa de reescrita em vez de parar e dizer PANIC pode acabar custando caro para a integridade dos dados. O aviso aqui é claro: se você está mexendo com dados importantes, dê uma olhada em como suas chamadas fsync() estão se comportando. A documentação é escassa, mas a atenção a esses detalhes pode ser a diferença entre uma recuperação de dados bem-sucedida e um grande "oops".
-
Phil Oppermann (OS in Rust)
08/03/2018 21:00
Parece que a galera resolveu dar um reboot no projeto de criar um sistema operacional em Rust, agora sem depender de ferramentas em C. Eles conseguiram simplificar o processo de build, possibilitando a criação do SO nativamente em Windows, macOS e Linux. A proposta de escrever um bootloader próprio usando o recurso global_asm do Rust é interessante, pois promete deixar tudo mais limpo e sem as complicações de código assembly. No final das contas, isso deve facilitar bastante a vida dos desenvolvedores, que já têm muitos desafios na hora de lidar com sistemas operacionais.
-
Drew DeVault
27/02/2018 21:00
Neste terceiro episódio da saga do compositor Wayland, finalmente começamos a dar vida às janelas. Com a implementação do `wl_compositor`, cada cliente pode alocar `wl_surfaces` recheados de pixels, mas a mágica vem mesmo na hora de renderizar. Como o artigo menciona, "sem adicionar nada, essas janelas nunca serão exibidas na tela" - então, mão na massa, ou melhor, na GPU. Ao contrário de outras bibliotecas, o wlroots deixa você no controle total da renderização, o que é uma benção e uma maldição. Prepare-se para sha256 de gráficos personalizados enquanto codificamos essa lindeza.
-
A diferença entre a ‘Disponibilidade’ do teorema CAP e o que a galera de sistemas distribuidos chama de ‘disponibilidade’ é como dizer que um bug me deixou indeciso: faz diferença pra você, mas não é nada legal de se ter. O CAP se concentra na resposta garantida por nós, meros mortais, enquanto a ‘disponibilidade’ é um conceito mais braçal, medindo a satisfação do cliente com requisições bem-sucedidas. Na hora de escolher entre uma abordagem consistente ou uma disponível, a lógica matemática é ótima, mas lembrar que a expectativa do cliente é o que realmente conta traz um sabor interessante para a conversa.
-
Drew DeVault
21/02/2018 21:00
Esse segundo artigo da série está, na verdade, um passo importante para quem quer entender como montar um compositor Wayland do zero. O autor menciona que " vamos começar a aceitar conexões de clientes Wayland", mas ainda ficamos com aquela expectativa na parede, aguardando essas interações. Por enquanto, a parte mais empolgante é a inicialização do servidor e a conexão com o display, algo que é rapidamente feito com um pouco de mágica do wlroots. Se você curte desafios low-level e quer trabalhar na criação de interfaces mais modernas, vale a pena acompanhar esses posts.
-
Drew DeVault
13/02/2018 01:00
Parece que Pyongyang está vivendo um cenário que mais lembra um episódio de Black Mirror do que a realidade. A cidade capital, conhecida por seu isolamento, agora clama por ajuda internacional devido a um surto que atacou a liderança. No entanto, quem diria que os Estados Unidos iriam 'assumir' a responsabilidade por isso? Certamente não é fácil fazer a gestão de crises quando seu nome está na lista de suspeitos. É um turbilhão de genes, vírus e política, tudo em um pacote que nem o Git conseguiria versionar.
-
Phil Oppermann (OS in Rust)
09/02/2018 23:00
Criar um kernel mínimo em Rust para x86 é uma abordagem interessante, especialmente se considerarmos como a linguagem tem ganhado espaço por ser segura e moderna. Como o autor menciona, "após o auto-teste, ele procura um disco inicializável," e isso traz à tona o longo caminho que o boot process percorre. Embora a compatibilidade com BIOS facilite a vida de muitos, não dá pra ignorar os desafios de mover tudo para UEFI no futuro. Um verdadeiro teste de paciência e habilidade, como escrever um código em asm no final da madrugada.
-
Phil Oppermann (OS in Rust)
09/02/2018 23:00
Começar a desenvolver um kernel de sistema operacional do zero usando Rust e sem a biblioteca padrão é como construir um computador quântico com peças de LEGO: a ideia é incrível, mas os detalhes são um verdadeiro labirinto. O post fala sobre como criar um executável 'freestanding', ou como diria o Sheldon, 'sem dependências', o que é essencial já que você está basicamente criando sua própria versão do Windows, mas sem a tela azul de erro por enquanto. Se você está a fim de pisar nesse terreno bare-metal, a dica do 'no_std' é o primeiro passo para não se perder entre as abstrações do sistema operacional.
-
Drew DeVault
05/02/2018 01:00
O que é mesmo o shell POSIX? Basicamente, é o padrão da interface de sistemas operacionais Unix, o que significa que seus scripts podem rodar de forma portátil. Diferente do bash, que é como aquele amigo que nunca lê as instruções e faz tudo do jeito dele, o shell POSIX é o conformista da turma. "Se você usar recursos específicos do bash, não espere que seus scripts funcionem em outros sistemas" - e isso vale a pena ter em mente se você não quer ser o dev que passou horas tentando explicar por que seu script só roda no GNU/Linux. No fim das contas, use o que quiser para interagir no dia a dia, mas no fundo, o shell POSIX é o abraço que você precisa para a portabilidade dos seus scripts.
-
Drew DeVault
04/02/2018 23:00
O shell POSIX é como aquele amigo que traz a cerveja certa para a festa: sempre confiável e nunca te deixa na mão. Como mencionado, é a versão padronizada do shell Unix, assegurando a portabilidade dos scripts, algo que o bash, com suas manias de 'bashisms', não consegue garantir. "Se seus usuários desejam utilizar seu software em qualquer lugar além do GNU/Linux", esse é o ponto crucial. No fim das contas, use bash para suas experiências do dia a dia, mas opte pelo shell POSIX para scripts que realmente precisam viajar por aí.
-
Drew DeVault
27/01/2018 01:00
O debate sobre quem deve cuidar das decorações das janelas no Wayland nunca morre, e Sway está aqui para lembrar que não há um consenso como alguns querem fazer parecer. Com declarações como "[decorações do servidor] não (e nunca) funcionarão no Wayland", fica claro que há um certo exagero por parte do GNOME. Os problemas com CSD são reais e não devem ser ignorados, como a falta de uma aparência consistente entre os clientes. Sway, KDE e outros estão dispostos a colaborar para encontrar uma solução, mas parece que a balança não está pesando para o lado da discussão produtiva.
-
Drew DeVault
26/01/2018 23:00
O debate sobre quem deve cuidar das decorações das janelas no Wayland esquentou de novo. O autor critica a posição do GNOME, que parece dar a entender que o assunto já está resolvido, mas na verdade ainda gera controvérsia, especialmente com problemas como "no consistent look and feel" entre os clientes. Além disso, a afirmação do GNOME de que "[decorações do lado do servidor] não funcionam (e nunca funcionarão) no Wayland" é problematizada. Sway e KDE estão, na verdade, buscando uma solução colaborativa, mostrando que a briga ainda não acabou. Nada como um bom debate nerd sobre janelas, não é mesmo?
-
Andrew Kelley (criador do Zig)
24/01/2018 19:17
Comparar o código Unsafe de Zig com Rust é quase como comparar uma Ferrari a uma bicicleta elétrica: ambos têm seus riscos, mas um tem um potencial de explosão muito maior. No caso do Rust, o código apresentado gera comportamento indefinido devido a problemas de alinhamento, o que é um pesadelo para qualquer desenvolvedor que valoriza a integridade dos dados. Ao trabalhar com APIs de sistema operacional, é crucial evitar armadilhas como essa para não acabar com um crash estilo "The Blue Screen of Death".
-
Drew DeVault
10/01/2018 01:00
No mundo do desenvolvimento, ferramentas como virtualenv e npm são legais, mas em produção podem transformar sua vida em um verdadeiro bug fest. Lembre-se, sua distribuição Linux já tem um gerenciador de pacotes esperando por você, e usar ele tende a ser mais seguro e estável. Além disso, o texto menciona que você pode não só usar, mas também criar pacotes. E se você se deparar com pacotes desatualizados, por que não ser o super-herói dessa história e enviar uma patch? Em vez de chutar o balde sempre que uma dependência quebra, quem sabe se atualizar ou até criar seus próprios repositórios não seja a solução?
-
Drew DeVault
02/01/2018 01:00
Esse artigo levanta um ponto polêmico sobre o 'fork', uma syscall que pode fazer até o programador mais experiente puxar os cabelos. O autor questiona sua criação, especialmente quando em 1971 os desenvolvedores decidiram copiar todo o espaço de endereços de um processo. E se você já se pegou lutando contra os descritores de arquivos herdados, sabe que o 'fork' é como aquela parte do código que você sabe que deveria funcionar, mas não faz. Além disso, a existência do OOM killer, um verdadeiro vilão nos sistemas operacionais, é uma consequência direta do uso do 'fork'. Parece que o que começou como uma boa ideia se tornou um verdadeiro desafio para quem lida com processos hoje em dia.
-
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.
-
O problema das Bolas em Caixas é realmente um clássico nas discussões sobre tabelas hash. Quando falamos de balanceamento de carga, a analogia dos pedidos e das caixas (ou backends, se preferir) é bem pertinente. Como o texto menciona, entender a distribuição de cargas pode ser a diferença entre um sistema escalável e um que derrapa na primeira carga mais pesada. É um tema vital para arquitetos de sistemas, principalmente para aqueles que acham que o estado compartilhado é apenas um obstáculo na jornada rumo à escalabilidade.
-
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.
-
Drew DeVault
27/12/2017 23:00
A comunidade de desenvolvedores de janelas está em festa com a chegada do whitepaper do wlroots. Agora, todo mundo pode mergulhar no código e entender como esse compositor bate na tecla de performance e flexibilidade. Como a galera costuma dizer, é como ler o manual de um jogo antes de começar a jogar; conhecimento é poder, especialmente se você estiver construindo seu próprio ambiente. Fica a dica: dá uma olhada no PDF e veja como isso pode melhorar sua próxima aplicação.
-
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.