-
O artigo mostra que "o desenvolvimento da velocidade é o mais importante a otimizar", especialmente para jogos que precisam ser lançados rapidamente. A escolha da linguagem tem um papel crucial, com abordagens como gestão manual de memória e verificação de empréstimos que podem tanto ajudar quanto atrapalhar. É como tentar fazer um portal de teletransporte em vez de um carro; se você não administrar bem a memória, pode acabar fazendo quilometragem a mais.
-
Retro Game Mechanics Explained
Retro Game Mechanics Explained
02/01/2023 16:52
Esse vídeo mergulha na técnica do wrong warp e outras mecânicas que parecem mais complexas que a lógica da própria programação. Se o jogo limita a três objetos por coluna, como diabos aparecem cinco às vezes? A explicação dos níveis de loop e das versões diferentes de SMB1 traz aquele sabor nostálgico que só os gamers mais fervorosos entendem. Uma ótima pedida para quem curte desvendar esses segredos escondidos de um clássico.
-
Joel on Software
Joel Spolsky
19/12/2022 10:01
Falar sobre o Block Protocol é como apreciar uma boa atualização em seu framework favorito: sempre há algo novo para discutir. Desde os anos 90, a web tem servido como um grande repositório de documentos legíveis, mas esse novo protocolo promete evoluir o jeito como interagimos com o conteúdo online. Se você está em busca de um mundo mais interconectado, talvez seja hora de aprimorar suas habilidades, porque o futuro parece promissor. Como dizem os devs, 'time is code' e o desenvolvimento não para.
-
O autor Evan Ovadia traz à tona um conceito curioso com sua nova abordagem de segurança de memória, a partir de uma noite acordado pensando em fanfics. Ele apresenta 'regions', uma técnica de análise estática que promete escrever código seguro e eficiente sem depender de coleta de lixo ou contagem de referências. Isso é como se o código estivesse de férias, descansando em um resort, enquanto cuida da memória por conta própria. Resta saber como essa abordagem se desenrolará nas próximas partes do artigo e se realmente será o Santo Graal da segurança de memória.
-
O manifesto de 1998 que veio do coração de Seattle, quando as vendas da Amazon estavam começando a desafiar a lógica, é como abrir uma cápsula do tempo tech. Eles percebiam que a forte ligação entre aplicações e modelagem de dados estava tornando tudo mais complicado do que um código com um bug oculto. A solução? Um modelo de arquitetura em camadas, quase como uma fatia de bolo bem definida, onde cada camada pode evoluir sem causar um colapso geral. O mais curioso é que, além da arquitetura, eles destacam a necessidade de uma mudança cultural, porque só mudar o diagrama é tão eficaz quanto tentar rodar uma aplicação Java às 3 da manhã sem café.
-
O conceito de 'zero-cost borrowing' com as Vale Regions é uma proposta interessante. Eles estão tentando resolver o eterno dilema entre segurança de memória e performance, algo que até hoje parece ter sido um campo de batalha com poucas vitórias. Como mencionado, a ideia de combinar referências geracionais com regiões promete não apenas ser rápida, mas também manter uma simplicidade admirável. Vamos ver se eles conseguem sair dessa com mais acertos do que um código legado mal escrito.
-
Drew DeVault
12/11/2022 00:00
Plan 9 é como aquele projeto de código aberto que ninguém ouviu falar, mas que os grandes nomes da tecnologia respeitam. Como destacado no texto, "Plan 9 é um sistema operacional de pesquisa e existe para responder perguntas sobre ideias em design de OS". Ele tirou apoio de conceitos bem legais como UTF-8 e containers. E quem diria que abrir um TCP seria tão simples quanto abrir um arquivo? Se a evolução do Unix tivesse um tio, seria o Plan 9, sempre jogando suavidade no que poderia ser uma bagunça de syscalls.
-
Drew DeVault
11/11/2022 21:00
Plan 9 é o tipo de sistema operacional que você não sabia que precisava conhecer, mas que influenciou tudo ao seu redor, mesmo quando sua mãe não sabe o que é um sistema operacional. A forma como ele aborda a programação de rede, utilizando arquivos em vez de syscalls mágicas, parece uma solução que até o mais cético dos devs poderia admirar. "Quando tudo deve ser um arquivo no Unix, por que a API de rede é totalmente implementada com chamadas syscalls especiais?" Essa pergunta é mais pertinente do que parece. E sim, a ideia de montar um servidor remoto em seu namespace de sistema de arquivos sem permissões complicadas é algo que devs de infraestrutura sem dúvida dariam uma estrela no GitHub.
-
O autor começa com uma analogia do kraken, mas logo percebe que os verdadeiros monstros são os códigos hash não determinísticos. Essa questão de não determinismo no compilador é como um bug de sistema: quando você acha que resolveu, ele volta como um zumbi. Para quem já mexeu com C++ e Rust, isso deve dar calafrios, porque um compilador que não se comporta de forma previsível é o tipo de coisa que transforma o sonho em pesadelo. Vamos torcer para nossos códigos não nos deixarem na mão na hora do deployment, porque debugging já é difícil o suficiente sem esses horrores twittroll.
-
A discussão sobre quando usar linguagens como C ou Rust é complexa, mas a verdade é que cada linguagem tem suas peculiaridades. Como o autor menciona, "todo idioma tem seus pontos fortes e fracos", e isso é um lembrete para não nos deixarmos levar pela hype de uma única solução. O que fica claro é que, em muitos cenários, linguagens menos seguras em memória têm um papel a desempenhar, e entender o trade-off entre segurança, velocidade e simplicidade é essencial. Então, enquanto sua equipe decide entre Rust e C, lembre-se de que não existe ‘a’ linguagem perfeita, mas sim a escolha certa para o seu projeto.
-
Adotar a especificação formal é como tentar implementar o MVC em um projeto que nasceu como uma bagunça monolítica. O autor compartilha sua jornada desde as dores de um sistema complexo até a descoberta do TLA+, mostrando que simplificar a lógica pode ser a chave para evitar os bugs que aparecem como se tivessem recebido uma notificação de evento. É um lembrete útil de que, mesmo em ambientes dev, um bom planejamento pode ser o seu melhor bug patch. Afinal, quem não gostaria de parar de fazer hotfixes desnecessários?
-
Drew DeVault
17/07/2022 21:00
Mesmo com o calor de julho em Amsterdã, o desenvolvedor parece estar mais focado nas melhorias em projetos de FOSS do que em climatizar o ambiente. "Introduzi um novo módulo de biblioteca padrão para templates de string" e um módulo para buffers de pixels, o que pode ser útil não só para puristas de gráficos, mas também para qualquer um que já se perdeu nas formatações do Jinja2. Além disso, a implementação de drivers como PCI e AHCI mostra um progresso interessante na evolução do Helios, algo que deve deixar os entusiastas de sistemas operacionais com um sorriso no rosto. Vamos acompanhar como esses desenvolvimentos vão impactar o ecossistema.
-
O artigo que a equipe do DynamoDB da AWS está apresentando no USENIX ATC’22 traz um olhar raro sobre sistemas distribuídos em grande escala. A parte mais interessante? Eles falam sobre como o DynamoDB evoluiu para lidar melhor com padrões de acesso não uniformes, o que deve fazer todo dev de banco de dados dar aquela pausa para reflexão. "Quando a taxa de requisições em uma tabela é não uniforme, isso pode resultar em throttling...", algo que é bom evitar na produção. Afinal, quem já não se deparou com um sistema que simplesmente não dá conta na hora H?
-
Fabien Sanglard
07/05/2022 21:00
Construir PCs durante uma pandemia definitivamente é uma aventura. O autor conta suas desventuras com a "Beautiful D2R Machine", que envolvem escolhas questionáveis como evitar USB e lidar com placas-mãe problemáticas. É quase um meme em si: você espera ter um joguinho tranquilo e acaba travando a máquina com um BIOS temperamental. No fim das contas, talvez usar um ThinkPad e uma GPU externa fosse a jogada mais sensata, mas quem diria que o verdadeiro boss fight seria a questão das GPUs em falta?
-
Simplicidade é uma busca legítima, mas a verdade é que nem sempre podemos confiar em soluções simplistas. "Por que eu preciso de criptografia quando posso simplesmente esconder o conteúdo das minhas comunicações?" – essa é a tentativa de um desenvolvedor que subestima os desafios do mundo real. Afinal, um sistema que parece simples pode desmoronar rapidamente ao enfrentar problemas de concorrência ou segurança. No fim das contas, a simplicidade não deve ser absoluta, mas sim contextual, como diria Einstein: "o que é simples, mas não mais simples".
-
Vale 0.2 Beta está trazendo uma adição interessante com as Funções Conceito, que tornam a definição de restrições em parâmetros menos dolorosa. Agora, com 'func calcDamage(&T, &T)int', você pode criar funções genéricas sem ter que recorrer ao extenso uso de traits como em Rust ou interfaces em Java. Isso pode ser um baita alívio para quem prefere simplicidade ao estilo funcional, semelhante ao que o C++ faz com sua cláusula 'requires'. No fim das contas, talvez o Vale tenha encontrado uma maneira de fazer conceitos se parecerem menos com um quebra-cabeça de Lego e mais como uma brincadeira de criança.
-
Este texto do Evan Ovadia explora o custo e o benefício de se alterar a sintaxe em linguagens de programação, especificamente com a mudança no Vale. Ele destaca que, em vez de usar let e let mut, agora eles adotaram um jeito onde a declaração de variável e a atribuição se tornam um pouco mais intuitivas. Claro, todo dev já ficou preso no looping de sinônimos e semânticas confusas antes, então, essa mudança promete facilitar a vida. Ao final, parece que os números mostram que deveríamos dar mais atenção às declarações do que às atribuições, algo que vai em linha com a experiência de muitos de nós.
-
Dan Luu
05/04/2022 21:00
Parece que a Wave, com sua arquitetura simples de CRUD e um monólito em Python sobre Postgres, está provando que menos é mais. É impressionante ver um modelo que, embora considerado "básico", consegue escalar e manter o foco na entrega de valor real aos usuários. A crítica ao excesso de complexidade em conferências de tecnologia é válida; quem precisa de microserviços quando um monólito está funcionando bem? Como dizem por aí, só porque algumas ferramentas novas estão na moda, não significa que você precisa usar todas elas, especialmente se um simples padrão de arquitetura faz o trabalho.
-
O autor traz à tona um dilema clássico em desenvolvimento de jogos: "Não crie um motor de jogo, crie um jogo". O que ele fez? Um motor de jogo e uma nova linguagem chamada Vale, tudo enquanto tentava manter o foco no projeto original. Isso é um verdadeiro caso de yak shaving, onde o desvio se torna a aventura. No final, ele encontrou satisfação ao usar sua própria criação no desafio de roguelike, o que serve como um lembrete de que até as distrações podem levar a novas descobertas.
-
Referências fracas são um território nebuloso na programação, e esse post explora as diferentes magias que cada linguagem usa. As reações dos desenvolvedores, como "Isso é horrível" sobre o Obj-C, mostram que até mesmo os mais experientes precisam de mapa e bússola nessa selva. O mais interessante é a nova abordagem do Vale, que visa ser rápido, seguro e fácil de usar, cão ou gato brigando entre si para descobrir o caminho. Parece que as referências fracas são o novo Pokémon, sempre evoluindo e surpreendendo. Na dúvida, se perder for um caminho, que seja um caminho seguro.