Odisseia online de um engenheiro de software iraniano: sanções e censura

2025-09-23
Odisseia online de um engenheiro de software iraniano: sanções e censura

Um engenheiro de software iraniano relata suas experiências com o Microsoft excluindo seu aplicativo, o Notion apagando seus dados e outras proibições de sites devido a sanções. Ele enfatiza que essas empresas não são maliciosas, mas simplesmente seguem as regras. No entanto, ele apela por mais empatia, pedindo consideração do impacto humano dessas regulamentações. Ele conclui expressando sua insatisfação com a situação atual no Irã e apoiando movimentos pela liberdade.

Leia mais
Desenvolvimento irã

LLMs democratizam a criação de compiladores: de receitas a fluxos de trabalho

2025-09-01
LLMs democratizam a criação de compiladores: de receitas a fluxos de trabalho

Este artigo apresenta uma nova perspectiva sobre tarefas cotidianas como processos de compilação. Usando a culinária como exemplo, o autor compara receitas a programas e o processo de cozimento à execução de compilação. O advento dos Grandes Modelos de Linguagem (LLMs) torna a criação de compiladores específicos de domínio incrivelmente fácil, mesmo para aqueles sem experiência em programação. Com LLMs, podemos transformar tarefas cotidianas - rotinas de exercícios, processos de negócios, até mesmo criação musical - em ambientes programáveis, aumentando a eficiência e aprofundando nossa compreensão de sistemas cotidianos. Isso não é apenas uma inovação tecnológica, mas também uma mudança de pensamento, estendendo o conceito de compiladores do código para todos os aspectos da vida.

Leia mais

Por que excluí minha conta Steam após 20 anos

2025-07-09
Por que excluí minha conta Steam após 20 anos

Um jogador de PC de longa data excluiu sua conta Steam após 20 anos, citando o cliente Steam cada vez mais inchado, promessas de DRM quebradas levando à incompatibilidade com hardware mais antigo e APIs proprietárias que prejudicam a compatibilidade e os recursos do jogo. O autor compara o Steam com Epic, Microsoft Store e GOG, argumentando que essas alternativas oferecem melhor DRM e experiência do usuário. Serviços de assinatura ou compra de outras plataformas são sugeridos como alternativas para melhor experiência de jogo e propriedade de software.

Leia mais
Jogos

O Tamanho Cada Vez Maior dos Modelos de Linguagem Grandes

2025-07-02
O Tamanho Cada Vez Maior dos Modelos de Linguagem Grandes

Este artigo traça a evolução do tamanho dos modelos de linguagem grandes (LLMs). De 1,61B de parâmetros do GPT-2 a 2T de parâmetros do Llama-4, o tamanho do modelo cresceu exponencialmente. O artigo detalha as contagens de parâmetros, os tamanhos dos dados de treinamento e os recursos arquitetônicos de modelos-chave, incluindo modelos densos e modelos Mixture-of-Experts (MoE). O surgimento de arquiteturas MoE tornou possível treinar e usar modelos de maior escala. No entanto, o crescimento no tamanho do modelo também trouxe novos desafios, como viés de dados e interpretabilidade do modelo. O artigo conclui explorando as direções futuras do desenvolvimento de LLM e clama por mais pesquisas para se concentrar no desenvolvimento de mecanismos puros de continuação de texto, em vez de simplesmente buscar pontuações altas em testes de benchmark.

Leia mais

S-expr: Um analisador de S-expressões peculiar

2025-06-18
S-expr: Um analisador de S-expressões peculiar

S-expr é uma biblioteca de análise de S-expressões com extensões exclusivas para a sintaxe de S-expressões. Suporta strings e comentários de uma e várias linhas e introduz um conceito inovador chamado "blocos transpostos". Os blocos transpostos permitem que o código seja escrito com linhas e colunas trocadas, melhorando a legibilidade para expressões aninhadas complexas. Este design visa equilibrar a simplicidade das S-expressões com melhor legibilidade e expressividade do código. Embora mais complexo do que o Lisp tradicional, prioriza o equilíbrio entre simplicidade e usabilidade.

Leia mais

Implementando números complexos e FFT apenas com tipos de dados (sem floats)

2025-05-25
Implementando números complexos e FFT apenas com tipos de dados (sem floats)

Este artigo apresenta um método para implementar números complexos e Transformada Rápida de Fourier (FFT) usando apenas tipos de dados algébricos, sem depender de números de ponto flutuante. O autor começa explicando as vantagens de usar tipos de dados algébricos para representação numérica e destaca ineficiências nas implementações tradicionais de FFT. Em seguida, uma implementação concisa e elegante de inteiros e números complexos usando apenas tipos de dados algébricos é demonstrada. Finalmente, uma implementação puramente funcional de FFT complexa, também sem floats, é derivada. Isso é alcançado usando representação ternária balanceada para inteiros e estendendo inteiros gaussianos para representar números complexos, contornando habilmente os efeitos que impedem a fusão da aritmética de ponto flutuante, melhorando assim a eficiência do algoritmo.

Leia mais
Desenvolvimento Tipos de Dados Algébricos

Uma Jornada para Otimizar Consultas ao Banco de Dados Cloudflare D1

2025-04-07
Uma Jornada para Otimizar Consultas ao Banco de Dados Cloudflare D1

Um desenvolvedor frontend encontrou gargalos de desempenho ao usar Cloudflare Workers e o banco de dados D1. Ao monitorar o painel D1, examinar instruções de consulta e analisar contagens de leitura/escrita de linhas, ele identificou vários problemas importantes: consultas únicas lentas, gravação em lote ineficiente, leituras de linhas desnecessárias devido à inclusão de IDs em operações de atualização, varreduras de tabela inteira em consultas de contagem, explosões de produto cartesiano de junções de várias tabelas e inserções em massa subótimas. As soluções envolveram o uso de operações em lote D1, exclusão de IDs de atualizações, implementação de paginação baseada em cursor, divisão de consultas de junção de várias tabelas e otimização de instruções de inserção em massa. Essas otimizações melhoraram drasticamente o desempenho da consulta, reduzindo o tempo de execução de 78 ms para 14 ms em alguns casos. A experiência destaca a importância do monitoramento contínuo, otimização iterativa e as diferenças cruciais entre problemas de desempenho do lado do servidor e do lado do cliente.

Leia mais

Gerador de SHA-1 Vanity: Uma Abordagem Inteligente de Alteração de Maiúsculas e Minúsculas

2025-03-31
Gerador de SHA-1 Vanity: Uma Abordagem Inteligente de Alteração de Maiúsculas e Minúsculas

Este código tenta gerar um hash SHA-1 que corresponda ao prefixo de destino "20250327" manipulando a capitalização de palavras em um texto de entrada. Ele analisa o texto, identifica palavras mutáveis e, em seguida, itera por todas as combinações de maiúsculas e minúsculas possíveis, calculando o hash e comparando-o com o destino. Se uma correspondência for encontrada, o texto modificado é gravado em um arquivo. O programa demonstra uma abordagem inteligente de força bruta, usando variações de maiúsculas e minúsculas para tentar gerar um prefixo de hash específico, mostrando uma compreensão de algoritmos de hash e combinatória.

Leia mais
Desenvolvimento colisão de hash força bruta

Mod de Hardware Xfinity XB3: Desative o WiFi e economize 2 watts

2025-03-30
Mod de Hardware Xfinity XB3: Desative o WiFi e economize 2 watts

Um usuário modificou seu modem Xfinity XB3 para economizar energia. O XB3, fornecido com o serviço mais barato Xfinity NOW da Comcast, consome 14,9 watts. Ao desmontar o modem e aterrando o pino EN no regulador de tensão TPS54328, o usuário desativou o WiFi, reduzindo o consumo de energia para 12,5 watts - uma economia de 2 watts. Embora a página de administração esteja brevemente inacessível após a inicialização, a funcionalidade da rede permanece inalterada.

Leia mais
Hardware

Acelere pacotes Ubuntu em 90%: Uma história de recompilação e alocadores

2025-03-19
Acelere pacotes Ubuntu em 90%: Uma história de recompilação e alocadores

Este artigo detalha como recompilar o pacote de origem do jq usado pelo Ubuntu resultou em uma impressionante melhoria de desempenho de 90%. O autor fez benchmarks com um arquivo GeoJSON de 500 MB. Simplesmente reconstruir o pacote produziu uma pequena, mas perceptível, aceleração. Otimizações adicionais incluíram o uso do compilador clang com melhores flags (-O3, -flto, -DNDEBUG), o que proporcionou um aumento de 20%. A mudança para o alocador TCMalloc melhorou o desempenho em mais 40%. Finalmente, usando o alocador mimalloc, seja carregado dinamicamente ou integrado durante a reconstrução, resultou no notável aumento de velocidade de 90%. O jq recompilado com mimalloc é quase duas vezes mais rápido que o pacote Ubuntu padrão em vários testes.

Leia mais

Uma Abordagem Hierárquica para Linguagens de Programação e Desenvolvimento Multilíngue

2025-03-16
Uma Abordagem Hierárquica para Linguagens de Programação e Desenvolvimento Multilíngue

O autor propõe uma hierarquia de quatro níveis para classificar linguagens de programação com base em tipagem e compilação: interpretadas com tipagem dinâmica (e.g., JavaScript), interpretadas com tipagem estática (e.g., TypeScript), compiladas com gerenciamento automático de memória (e.g., Go) e compiladas com gerenciamento manual de memória (e.g., Rust). O autor argumenta que escolher o nível certo para diferentes necessidades é crucial e propõe um conjunto de linguagens compreendendo Rust, RustGC (um híbrido de nível 2/3) e RustScript (nível 4) para melhorar a eficiência do desenvolvimento e o desempenho do código. Este conjunto compartilha sintaxe e permite chamadas sem interrupções entre diferentes níveis, abordando problemas de manutenção de conjuntos de ferramentas diferentes e treinamento de pessoal. O objetivo final é melhorar a eficiência da programação e a qualidade do código.

Leia mais

Svelte5: Nem tão bom quanto anunciado?

2025-03-08
Svelte5: Nem tão bom quanto anunciado?

O lançamento do Svelte5 destacou seu sistema de estado reativo, "runes", como uma grande melhoria. No entanto, este autor encontrou várias limitações em projetos reais. Runes são restritos a componentes Svelte ou arquivos .svelte.ts, exigindo que o estado seja encapsulado em funções para reatividade e oferecendo suporte incompleto para classes. Os recursos de modelo do Svelte não têm equivalentes em JavaScript, tornando os testes de propriedades ligadas trabalhosos. Os componentes de formulário são descontrolados por padrão, levando a problemas potenciais. Embora o Svelte5 tente imitar React/Vue, ele fica aquém em usabilidade e completude de recursos, levando o autor a considerar o SolidJS como uma alternativa superior.

Leia mais

Construindo uma Micro Biblioteca de Loop de Eventos Assíncronos do Zero

2025-02-28
Construindo uma Micro Biblioteca de Loop de Eventos Assíncronos do Zero

Este projeto implementa uma biblioteca de loop de eventos assíncronos mínima, mas completa em recursos, do zero para fins educacionais. Ele demonstra conceitos essenciais de programação assíncrona: agendamento e gerenciamento de tarefas, multiplexação de E/S com sockets não bloqueantes, funcionalidades de timeout e suspensão, cancelamento de tarefas e concorrência baseada em corrotinas. A biblioteca usa corrotinas baseadas em geradores do Python e o módulo `select` para multiplexação de E/S, fornecendo um modelo simplificado de como as estruturas assíncronas modernas, como o `asyncio`, funcionam internamente. Aprenda a mágica por trás do `await`, como o `yield from` funciona e como as corrotinas se comunicam com o loop de eventos.

Leia mais
Desenvolvimento loop de eventos corrotinas

A jornada de reescrita do compilador Roc: de Rust para Zig

2025-02-04
A jornada de reescrita do compilador Roc: de Rust para Zig

A equipe do compilador da linguagem de programação Roc está se embarcando em um empreendimento significativo: reescrever seu compilador Rust de 300 mil linhas em Zig. Isso não é uma simples portabilidade de linguagem; é uma jogada estratégica para resolver os tempos lentos de compilação do Rust e a dívida técnica acumulada. A reescrita melhorará o analisador sintático, o formatador, a canonização, a geração de documentação, a inferência de tipos e a geração de código LLVM, entre outros módulos. Eles também planejam usar um interpretador para o backend de desenvolvimento, acelerando significativamente o ciclo de desenvolvimento. O objetivo final é melhorar a velocidade de compilação, aumentar a manutenibilidade e lançar o Roc 0.1.0.

Leia mais
Desenvolvimento reescrever

LLMs falham em um quebra-cabeça de xadrez simples: um teste curioso

2025-01-26
LLMs falham em um quebra-cabeça de xadrez simples: um teste curioso

O autor testa vários LLMs novos com um quebra-cabeça de xadrez simples que apresenta subpromoção e a regra de 50 movimentos. Apesar da orientação, a maioria dos LLMs falha em resolvê-lo, destacando as limitações no raciocínio lógico e no conhecimento específico do domínio. Este teste rápido serve como um benchmark, provocando discussões sobre se os LLMs podem algum dia atingir o nível de mestre no xadrez sem treinamento especializado. A simplicidade do quebra-cabeça e o foco em uma técnica menos comum o tornam uma sonda perspicaz nas capacidades do LLM.

Leia mais

Tentativa sofisticada de phishing: quase pego!

2025-01-24
Tentativa sofisticada de phishing: quase pego!

Este relato detalhado descreve um sofisticado ataque de phishing em que o perpetrador se fez passar por um funcionário do Google, usando chamadas telefônicas e e-mails para induzir o autor a redefinir sua conta. Explorando uma vulnerabilidade no Google Workspace e usando o domínio g.co, o atacante imitou convincentemente o suporte do Google, quase tendo sucesso. O autor finalmente descobriu o golpe e compartilha sua experiência como um conto de advertência, destacando a importância da conscientização sobre segurança cibernética e vigilância contra técnicas avançadas de phishing.

Leia mais
Tecnologia

Ataque de desanonimização de 0 cliques que afeta Signal, Discord e centenas de plataformas

2025-01-21
Ataque de desanonimização de 0 cliques que afeta Signal, Discord e centenas de plataformas

Um estudante do ensino médio de 15 anos, Daniel, descobriu um ataque de desanonimização de 0 cliques que explora o mecanismo de cache do Cloudflare. Essa vulnerabilidade permite que atacantes pinpointem a localização de usuários em um raio de 250 milhas enviando uma carga maliciosa para aplicativos vulneráveis como Signal, Discord e centenas de outros. O ataque não requer interação do usuário e pode até ser realizado por meio de notificações push. Daniel desenvolveu uma ferramenta, Cloudflare Teleport, para demonstrar a exploração. Embora ele tenha divulgado a vulnerabilidade de forma responsável, as respostas das empresas afetadas foram em grande parte insatisfatórias. Isso destaca os riscos de segurança potenciais inerentes ao cache de CDN e sublinha a importância da conscientização sobre a privacidade do usuário.

Leia mais
Tecnologia vulnerabilidade

O Declínio do Stack Overflow: O Impacto do ChatGPT e um Futuro Incerto

2025-01-08
O Declínio do Stack Overflow: O Impacto do ChatGPT e um Futuro Incerto

Uma análise de dados no GitHub mostra uma queda impressionante de 70,7% nas novas perguntas no Stack Overflow de março de 2023 a dezembro de 2024, caindo de 87.105 para 25.566. Isso está fortemente correlacionado com a ascensão do ChatGPT; desde seu lançamento, o Stack Overflow viu quase 83.000 perguntas a menos. O autor, um contribuidor de alto nível do Stack Overflow, descreve sua própria experiência de ter perguntas bem formatadas fechadas rapidamente, destacando um possível fator chave no declínio da plataforma. A drástica diminuição no volume de perguntas sugere uma trajetória preocupante, refletindo os níveis vistos em 2009 pouco depois do lançamento, sugerindo uma possível vida útil de menos de um ano.

Leia mais
Desenvolvimento Declínio da Plataforma

PGP Operacional: Um Guia para Comunicação Segura por E-mail

2024-12-24
PGP Operacional: Um Guia para Comunicação Segura por E-mail

Este guia não é sobre instalar ou usar PGP; é sobre usá-lo com segurança. Ele enfatiza a segurança operacional além de apenas criptografar o conteúdo do e-mail, cobrindo a composição do e-mail, armazenamento, gerenciamento de chaves e muito mais. Recomenda-se compor e-mails em um editor de texto, evitando salvar rascunhos em clientes de e-mail; gerar e destruir chaves com frequência; evitar publicar chaves em servidores de chaves; manter os assuntos de e-mail em branco para minimizar o vazamento de metadados; usar a opção `gpg --throw-keys` durante a criptografia; habilitar a criptografia por padrão e escolher explicitamente se deseja assinar e-mails. O objetivo é maximizar o potencial de segurança do PGP.

Leia mais

Armazenamento de chave-valor com suporte SQLite: Manipulação de objetos semelhante a JS e serialização JSON automática

2024-12-22
Armazenamento de chave-valor com suporte SQLite: Manipulação de objetos semelhante a JS e serialização JSON automática

Um projeto no GitHub apresenta um armazenamento de chave-valor construído sobre o SQLite, permitindo manipulação de objetos semelhante a JavaScript com serialização JSON automática. A função `createDatabaseClient` cria um cliente paralelo com componentes de leitor (`rdr`) e escritor (`wtr`) separados. O escritor utiliza proxies para atualizações parciais de JSON, enquanto o leitor retorna objetos JavaScript simples. Testes abrangentes cobrem operações CRUD básicas, atualizações aninhadas, exclusões e manipulações de matrizes.

Leia mais

Caso curioso de importação lenta de USD no Blender

2024-12-22
Caso curioso de importação lenta de USD no Blender

Um desenvolvedor encontrou tempos de importação inesperadamente lentos ao importar cenas USD para o Blender. A análise de desempenho revelou que o gargalo era a função de classificação de ID interna do Blender, `id_sort_by_name`. Essa função, que se esperava ter complexidade O(N), degradou para O(N²) devido ao esquema de nomenclatura nos arquivos USD. Ao modificar a convenção de nomenclatura e otimizar o algoritmo de classificação, o desenvolvedor reduziu os tempos de importação de 4 minutos e 40 segundos para 8 segundos para arquivos menores. No entanto, o problema subjacente decorre da exigência do Blender para IDs classificados, levando a sugestões para substituir a lista vinculada por uma árvore Trie ou uma tabela hash. Essa otimização destaca um desafio comum na otimização de desempenho: identificar e solucionar complexidade inesperada.

Leia mais
Desenvolvimento

QEMU recebe aceleração Vulkan com atualização do driver VirtIO GPU

2024-12-12
QEMU recebe aceleração Vulkan com atualização do driver VirtIO GPU

O QEMU versão 9.2.0 e superior agora suporta aceleração Vulkan para VirtIO-GPU graças às correções do Venus. Isso representa um avanço significativo no renderização de gráficos Vulkan para máquinas virtuais QEMU. O artigo detalha o processo de configuração, incluindo a instalação dos pacotes necessários (kernel Linux 6.13+, QEMU 9.2.0+, drivers Vulkan, etc.), a construção do QEMU a partir da fonte e a criação de uma imagem de VM. Embora o virt-manager atualmente não tenha suporte de configuração Vulkan, os parâmetros da linha de comando oferecem uma solução alternativa. Dicas de solução de problemas são fornecidas, juntamente com notas sobre as limitações atuais no virt-manager e libvirt.

Leia mais
Desenvolvimento