-
Fly.io Blog
21/10/2025 21:00
A Fly.io está realmente brincando de Lego com Docker ao transformar containers em Fly Machines, que são micro-VMs operando em hardware próprio. Eles diretamente enfrentam o desafio de gerenciar estados em um sistema distribuído, e a última falha foi um bom lembrete de que, quando se trata de sistemas distribuídos, os bugs tendem a se espalhar tão rápido quanto memes do Rickroll. A abordagem deles de levar a fonte de verdade dos dados para os servidores individuais é uma lufada de ar fresco, mesmo se isso venha com os riscos de uma cascata de deadlocks. No final das contas, como eles próprios disseram, se um sistema distribuído não te deixou acordado à noite, você ainda não o compreendeu plenamente.
-
O artigo propõe uma discussão intrigante sobre metaprogramação e como ela pode desbloquear otimizações impressionantes em código, até dez vezes mais rápidas. O autor, Evan Ovadia, destaca que, ao contrário da ideia comum de que metaprogramação é só escrever "código que escreve código", ela pode ir além, especialmente com exemplos práticos, como o uso da biblioteca ctregex de Alexandros Naskos. A comparação com regex convencional, que geralmente é lenta, nos faz refletir sobre a eficiência do código que escrevemos. Afinal, quem não gostaria de um programa mais rápido sem se perder em complexidades desnecessárias?
-
Evan Ovadia se juntou à equipe do compilador Mojo e está claramente animado com essa nova jornada. Ele menciona a "Santa Graça" que está em busca, que parece ser uma abordagem mais robusta para segurança de memória. O fato de que linear types estão na mesa é interessante e promete um sistema de tipos ainda mais poderoso, podendo rivalizar com outras linguagens emergentes. Afinal, quem não quer um compilador que faça mais e grite menos?
-
OS/2 Museum
Michal Necasek
16/07/2025 08:45
Em 1990, a Microsoft lançou o LAN Manager 2.0, que é como se fosse o tataravó das atuais soluções de compartilhamento de arquivos do Windows NT. Antes disso, em 1988, tivemos o LAN Manager 1.0, que era mais rudimentar e parecia ter saído de uma LAN da atualidade, mas cheia de fios e sem Wi-Fi. Essa evolução é um ótimo lembrete de como as redes passaram por reformas mais profundas do que o design de várias interfaces antigas. E quem diria que tudo começou lá nos anos 80, né? O tempo voa mais rápido que uma transferência de dados via dial-up.
-
OS/2 Museum
Michal Necasek
19/03/2025 13:01
Finalmente um bom momento para reviver um clássico: conseguir um drive ESDI em boas condições é como achar um Rubik's Cube completo em meio a cabos USB. O fato de estar relembrando controladores antigos como o WD1007V-SE2 e o WD1007A traz um ar nostálgico e um pouco de admiração por essa tecnologia que quase foi esquecida em um canto da sala, tipo aquele compilador em C que só você usa. Vale a pena conferir, principalmente para quem curte um pouco de retro-computing e quer entender como chegamos ao que temos hoje.
-
Mitchell Hashimoto
03/03/2025 21:00
Mitchell Hashimoto traz uma reflexão importante sobre o uso do sufixo "as code". Para ele, isso se refere a "um sistema de princípios ou regras", e não apenas a programação. "Codified knowledge tends to also be computer-readable", explica, ressaltando que traduzir conhecimento em formatos legíveis por máquina pode melhorar a automação e validação. É um lembrete de que, no mundo tech, nem tudo precisa ser um código de programação tradicional para ser valioso. Lembrando que vale mais focar no conceito do que em detalhes técnicos, como o verdadeiro nerd que ele é.
-
Fly.io Blog
13/02/2025 21:00
O artigo menciona que "GPUs não estão indo a lugar nenhum", mas a grande questão é que a expectativa de mercado não se alinha com a realidade. Eles investiram em máquinas de GPU para atender a demanda de AI/ML, mas parece que, no final das contas, a solução proposta não teve o retorno esperado. O medo da segurança em torno das GPUs é real, principalmente pela forma como elas interagem com a memória. Tão complexas que poderiam ser personagens de *Dark Souls*.
-
O post traz à tona como o Aurora DSQL desafia as leis da física, ou pelo menos, trabalha dentro delas. Com uma arquitetura multi-região que permite consistência forte e latência simétrica, o DSQL parece ser aquele amigo que sempre traz a sobremesa para a festa, e ainda é confiável. A capacidade de suportar transações em várias regiões sem deixar os usuários na mão é especialmente útil em tempos de falha. Afinal, quem precisa de uma única região quando você pode ter um sistema robusto e ágil no mundo inteiro?
-
O Aurora DSQL está se posicionando como um banco de dados SQL escalável, separando armazenamento e computação. Isso é um respiro para o desenvolvedor que, já sabe que misturar a galera em um mesmo container só dá dor de cabeça. Um dos destaques é a capacidade de escalar as operações de SQL independentemente, o que promete facilitar a vida em cenários de alta carga. Para quem adora Postgres, é interessante ver como eles estão usando a engine dele em um ambiente tão dinâmico, mesmo sem os tradicionais vínculos de armazenamento.
-
Embedded Artistry
Phillip Johnston
25/11/2024 14:00
Essa leitura da palestra de Donald Schön é como encontrar aquele bug perdido que faz sua aplicação falhar. Ele aborda o "conservadorismo dinâmico" de uma forma que ressoa muito com as práticas atuais em sistemas. É sempre bom relembrar que, até nos momentos de inovação, precisamos manter uma base sólida e estável. Afinal, quem nunca se pegou indignado com mudanças drásticas em um legacy system?
-
Mitchell Hashimoto
11/09/2024 21:00
O artigo do Mitchell Hashimoto explora como o "comptime" do Zig permite que rodemos código em tempo de compilação. Ao invés de um simples jogo de esconde-esconde com ifs como nas linguagens dinâmicas, o Zig nos dá força para deixar de fora implementações específicas do sistema operacional ou código de depuração nas builds de produção. Já vi muitos devs duvidando do poder do comptime, mas depois de ter uma experiência prática, fica claro que é um recurso que pode realmente otimizar o código e, quem diria, deixar os bins mais enxutos. Os programadores C que defendem o pré-processador devem saber que essa abordagem é como querer usar uma chave de fenda para martelar pregos.
-
Fabien Sanglard
08/08/2024 21:00
Bom, quem diria que a beleza do SNES estava na complexidade de seus chips? O artigo destaca que "a PPU1 é o cérebro enquanto a PPU2 faz o trabalho pesado", o que é uma dinâmica bem típica em muitos sistemas. E convenhamos, o cara imprimiu o esquema em tamanho A1 – isso sim é amor retro. É interessante ver como Nintendo lidou com a arquitetura para alcançar a qualidade gráfica, mesmo em uma era onde a programação era quase uma arte marcial. Esses detalhes de hardware são como um nível secreto em um jogo, poucos conhecem, mas quem encontra se sente um verdadeiro pro.
-
Fabien Sanglard
08/08/2024 21:00
O novo artigo de Fabien Sanglard destrincha como o SNES gerencia a renderização de sprites e camadas, mesmo com sua arquitetura limitada. O que mais impressiona é como cada pixel precisa ser gerado a cada 186,2ns, o que faz parecer um quebra-cabeça para os PPUs. Com acesso à VRAM levando 100ns, a solução de usar memória interna para amortecer esse custo é um verdadeiro golpe de mestre, lembrando até um pouco da gestão de memória em linguagens como C. É fascinante ver como técnicos, em vez de um simples renderizador, precisam ser quase alquimistas para fazer tudo funcionar.
-
Fabien Sanglard
28/07/2024 21:00
O artigo mergulha fundo no design do sistema de vídeo do SNES, analisando desde o CRT utilizado até os detalhes técnicos que guiaram os engenheiros na década de 80. Essa espécie de arqueologia tech nos lembra que, enquanto lutávamos para não ser atingidos pelo chefão final, eles estavam quebrando a cabeça para que cada pixel contasse. Aprender sobre a conexão entre os sinais de cor e a sincronia é como relembrar como nossas lutas de programação são, na verdade, um jogo de habilidosos acertos entre fios e sinais. Vamos lá, quem disse que não dava pra aprender algo jogando?
-
Evan Ovadia traz à tona uma verdade dura: "qualquer um tentando criar uma nova linguagem mainstream é completamente insano". A dificuldade em integrar linguagens, especialmente quando se fala de Rust e seu ABI instável, faz você se sentir como se estivesse tentando desinventar a roda. No entanto, com experiências de FFI, podemos transformar essa luta em uma divertida corrida de obstáculos, onde a única saída pode ser... um microserviço. O texto é um bom lembrete de que a interoperação entre linguagens pode ser a verdadeira 'missão impossível' do desenvolvimento.
-
Laurence Tratt
31/05/2024 07:10
Laurence Tratt faz um bom trabalho ao separar dois conceitos que muitas vezes acabam misturados na mente dos devs. Como ele destaca, "o problema de especificação circular é causado pelos designers e programadores" que não têm clareza do que realmente precisam construir, enquanto o "efeito observador" surge quando os usuários percebem que podem (ou não) usar o software de maneiras inesperadas. Resumindo, um é um dilema interno e o outro, uma surpresa externa. No fim das contas, em ambas as situações, o dev é quem sai no meio da confusão, como se estivesse tentando depurar um código que tem mais bugs do que funcionalidades.
-
Este artigo levanta um debate interessante sobre a interoperabilidade entre Rust e linguagens mais modernas, mostrando que, apesar da promessa de "chamar Rust sem amarras ou bindings", na prática, as coisas podem ser mais complicadas. Evan menciona que "novas linguagens podem acessar o ecossistema C" e, embora isso facilite a vida, sempre tem aquele porém das traduções de conceitos entre linguagens. No fim das contas, a busca por uma interoperabilidade realmente fluida continua, deixando a galera de devs em uma especie de purgatório tecnológico. A esperança persiste, especialmente com as mais de 100.000 crates disponíveis no cargo, mas seguimos com os pés no chão.
-
Laurence Tratt
14/05/2024 08:00
Laurence Tratt provoca a reflexão sobre as suposições que temos ao criar software. Ele menciona que muito do que discutimos é superficial, como "escolha da linguagem de programação" e "convenções de nome de arquivos", sem considerar aspectos mais profundos. O que é crucial aqui é a ideia de que o software habita um espaço entre o físico e o fantasioso, mostrando que entender suas limitações é fundamental para desenvolver algo realmente bom. Se você ainda acha que a sua biblioteca preferida funciona como mágica, talvez seja a hora de uma reavaliação.
-
Os tipos lineares parecem uma daquelas novidades que fazem até os devs mais experientes checarem se não deixaram o cérebro na máquina de café. O conceito de que um "struct linear deve ser explicitamente destruído" oferece uma maneira de lidar com problemas clássicos, como concorrência e consistência de dados, sem o coletor de lixo se intrometer. Afinal, quem nunca sonhou em se livrar dos bugs do tipo 'zumbi'? A abordagem aqui se destaca por sua rigidez, mas, se aplicada corretamente, pode liberar um poder de programação que muitos pensavam ser exclusividade de contos épicos da computação.
-
Quando se trata de segurança de memória, é surpreendente descobrir que "há quatorze de acordo com meu cálculo". Essa coleção do autor, chamada de "grimoire da segurança de memória", é como um manual escondido que pode mudar o jogo. No fundo, isso abre portas para novas abordagens e para uma conversa sobre como essas técnicas podem impactar o futuro das linguagens de programação. Quem diria que os Maiais poderiam ser os ancestrais nerds que precisávamos?