-
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.
-
Dan Luu
15/06/2024 21:00
Este artigo destaca um ponto curioso: as reações às falhas em IA, principalmente em LLMs, são bem diferentes das reações a bugs comuns. Você pode ter um modelo que gera resultados absurdos, como transformar a foto de uma mulher asiática em uma mulher branca, e ainda assim tem gente que defende que isso não é um bug. O pessoal parece esquecer que, apesar de a IA não ter opinião, os dados que a alimentam, como as amostras de treinamento, refletem uma realidade já enviesada. No fim das contas, é o tipo de discussão que faz você questionar se estamos realmente prontos para usar IAs em Marte se não conseguimos nem lidar com as falhas na Terra.
-
Zig News (oficial)
09/06/2024 21:00
Carmen, a nova mascote da Zig Software Foundation, chega para adicionar um toque de diversão ao mundo do desenvolvimento. Com a filosofia de "fazer a linha subir", a fundação parece estar pronta para promover um crescimento até entre os alocadores de memória. O mais interessante é que a mascote foi criada por um membro da comunidade, mostrando que a colaboração abre portas, ou melhor, alocadores. Agora, só nos resta esperar que Carmen não demande mais memória do que o necessário.
-
A ideia de que apenas uma máquina pode atender a todas as demandas é como achar que um game de 8 bits é suficiente para rodar os lançamentos mais pesados de hoje. "Este argumento é bobo e reducionista" e realmente toca no ponto: sim, máquinas modernas são super potentes, mas isso não é desculpa para ignorar a importância de sistemas distribuídos. Disponibilidade, durabilidade e utilização são fatores que fazem qualquer dev sonhar em usar mais de uma máquina. E convenhamos, quem não gostaria de ter um sistema que não desmorona durante picos de carga?
-
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.
-
Andrew Kelley (criador do Zig)
30/05/2024 00:27
O novo sistema de barra de progresso do Zig parece ter inovado na apresentação de tarefas, permitindo que processos filhos reportem seu progresso de forma mais integrada. Como o autor menciona, essa abordagem vai além das limitações do terminal, oferecendo uma experiência mais fluida. O fato de que isso ajudou a identificar um bug que estava escondido há anos só mostra o quanto melhorias estéticas podem impactar na performance e na depuração. No final das contas, é uma vitória da programação moderna.
-
Dan Luu
25/05/2024 21:00
A investigação da FTC sobre o Google, na verdade, parece uma classe de programação desorganizada, onde a falta de entendimento básico da indústria é evidente. Enquanto o Bureau de Competição argumentava a favor de um processo, o Bureau de Economia parecia mais perdido que um dev com a documentação do legacy code. Um dos pontos críticos colhidos dos documentos internos é que medidas antitruste são complexas, mas ignorar as nuances do setor só cria erro sobre erro, tornando a decisão final bem mais arriscada.
-
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.
-
Drew DeVault
24/05/2024 00:00
Parece que alguém decidiu dar uma pausa nos rumos do "verdadeiro trabalho" e mergulhar de cabeça no projeto Bunnix! Em apenas 27 dias, um novo sistema operacional Unix-like para arquitetura x86_64 estava nascendo, embora com algumas limitações, como a ausência de suporte a USB, o que pode deixar seu teclado PS/2 em alta demanda. E não se esqueça dos controles de DOOM que, bem, vão deixar você questionando suas habilidades de gamer. No final das contas, Bunnix parece ser mais uma prova de que, às vezes, a melhor forma de aprender é pelas mãos na massa — ou, neste caso, no código.
-
Drew DeVault
23/05/2024 21:00
Sabe aquele momento em que você precisa de uma pausa do trabalho sério e decide criar seu próprio sistema operacional? Pois bem, foi isso que o criador do Bunnix fez. Em apenas 27 dias, ele montou um sistema Unix-like compatível com x86_64, e se você curte um desafio, dá para testar com o ISO que ele disponibilizou. É legal ver como ele incorporou funcionalidades desde drivers até um terminal que até lembra os bons e velhos dias do DOS, mas prepare-se para um toque de nostalgia: a saída do jogo DOOM não tá funcionando como deveria. É a vida de um dev, sempre lidando com bugs.
-
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.
-
A nova abordagem de inferência em camadas e agrupamento promete abrir as portas para trabalhar com LLMs maiores em máquinas com pouca VRAM. A ideia de fazer stream das camadas do disco rígido é uma combinação esperta de técnicas que já foram experimentadas antes, como o fltr que permite filtrar questões em linguagem natural. Isso mostra que na tecnologia, muitas vezes, a inovação é só uma receita antiga com um novo tempero. E, convenhamos, a capacidade de fazer perguntas com mais eficiência é algo que todos os devs agradecem, especialmente quando os prazos estão apertados.
-
Em sistemas distribuídos, pequenas latências podem se transformar em horas de frustração. O artigo menciona que "a primeira coisa que eu verifico ao depurar problemas de latência... é se o TCP_NODELAY está habilitado", e isso reflete uma realidade que muitos desenvolvedores já enfrentaram. Nagle claramente tinha um ponto com seu algoritmo, mas, com essa interação problemático entre Nagle e o ACK atrasado, é como se estivéssemos tentando jantar na casa dos seus amigos que sempre atrasam a sobremesa. Por que não simplificar e deixar o TCP_NODELAY habilitado?
-
Retro Game Mechanics Explained
Retro Game Mechanics Explained
01/05/2024 10:33
A resposta para por que pisar em wigglers causa gráficos esquisitos é uma pequena joia da programação e do design de jogos. Essa interação revela um bug que, na verdade, é um subproduto de como o jogo lida com a renderização dos sprites em tempo real. O que nos leva a refletir: às vezes, um bug pode ser a melhor feature, como uma festa de bugs de Halloween em um jogo clássico.
-
O Amazon MemoryDB é uma proposta interessante que combina velocidade e durabilidade de um jeito que faz até o Yoda ficar orgulhoso. Com 99,99% de disponibilidade e leituras em microsegundos, ele não brinca em serviço. O fato dele manter compatibilidade com o Redis enquanto adiciona características como durabilidade multi-AZ e consistência forte, é como se você conseguisse transformar seu velho PC em um supercomputador sem precisar desmontá-lo. Um verdadeiro exemplo de como a composição em sistemas distribuídos pode fazer a mágica acontecer.
-
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?
-
Fabien Sanglard
20/04/2024 21:00
Quando falamos sobre a arquitetura dos cartuchos do Super Nintendo, estamos na verdade explorando um microcosmo de engenharia criativa. Os cartuchos não apenas armazenavam dados, mas também contavam com chips de proteção, SRAM e até mesmo "processadores de aprimoramento". É como se cada cartucho fosse um pequeno computador em si, exigindo um bootloader que compreendesse o que estava acontecendo. Vale a pena lembrar que algumas das maiores obras-primas, como "Chrono Trigger" e "Super Mario World", foram produzidas em no máximo 4Mb, algo que poderia ser considerado um jogo indie nos padrões atuais de desenvolvimento.
-
Drew DeVault
19/04/2024 00:00
A discussão sobre licenças de software livre é mais complexa do que parece. Ao contrário do que muitos pensam, "licenças copyleft não são restritivas"; elas impondo algumas obrigações, mas isso é bem diferente de ser uma gaiola digital. Como mencionado, "não há restrições em licenças de software livre ou open-source" e isso abre um leque de possibilidades, do software comercial até aventuras com armas nucleares. É sempre interessante lembrar que a verdadeira liberdade no código vem com responsabilidade—ou, neste caso, com a obrigação de compartilhar o que se cria.
-
Drew DeVault
18/04/2024 21:00
A confusão sobre licenças copyleft ser consideradas "restritivas" é comum entre os devs mais desavisados. Afinal, ao contrário do que muitos pensam, essa abordagem garante direitos não apenas liberdade de uso. O texto destaca que "tanto as licenças permissivas quanto as copyleft incluem obrigações", o que nos leva a refletir que obrigação não é sinônimo de restrição. No fim das contas, seja com uma licença MIT ou uma copyleft, você pode programar para o bem ou para o mal - embora eu recomendaria evitar um projeto com armas nucleares.