Category: Desenvolvimento

TextKit 2: Quatro anos depois, não é uma bala de prata

2025-08-16
TextKit 2: Quatro anos depois, não é uma bala de prata

Anunciado na WWDC21, o TextKit 2, após quatro anos, não atende à promessa de facilidade de uso. Embora a arquitetura seja sólida, a implementação apresenta diversos problemas. O NSTextContentStorage é a única implementação de armazenamento viável, limitando severamente a personalização. Além disso, o mecanismo de viewport, destinado a otimizar o desempenho, resulta em posicionamento instável da barra de rolagem e trepidação durante a rolagem. O autor encontrou vários bugs, alguns não resolvidos por longos períodos, impactando significativamente a experiência do usuário. Em resumo, o TextKit 2 não é uma solução perfeita para layout de texto, especialmente para interfaces de usuário de edição de texto.

Desenvolvimento Layout de Texto

Coreboot Habilita Suporte AMD Turin na Gigabyte MZ33-AR1: Fase 1 Concluída

2025-08-16

Esta postagem de blog descreve a primeira fase da habilitação do suporte AMD Turin no coreboot e sua portabilidade para a placa-mãe Gigabyte MZ33-AR1. Financiado pela NLnet Foundation, o projeto se baseia no esforço da AMD para promover firmwares de código aberto. A equipe criou com sucesso a estrutura do SoC Turin dentro do coreboot, extraiu e integrou os pacotes de firmware PSP necessários e construiu o suporte básico da placa-mãe MZ33-AR1. Embora tenham surgido desafios na integração dos blobs PSP públicos do Turin, soluções alternativas permitiram uma inicialização bem-sucedida, abrindo caminho para melhorias futuras.

Desenvolvimento

Construindo Sistemas de Agentes de IA Eficientes: Lições do UserJot

2025-08-16
Construindo Sistemas de Agentes de IA Eficientes: Lições do UserJot

O UserJot experimentou a construção de um sistema de IA multiagente para analisar feedback de clientes em larga escala e gerar logs de alterações automaticamente. O autor compartilha os principais aprendizados, focando em uma arquitetura de dois níveis: agentes primários gerenciam o contexto e a decomposição de tarefas, enquanto subagentes sem estado se concentram em tarefas únicas. A eficiência vem da decomposição de tarefas (vertical e horizontal), protocolos de comunicação estruturados, especialização de agentes e padrões de orquestração como MapReduce. O artigo enfatiza a ausência de estado, estratégias de gerenciamento de contexto e mecanismos de tratamento de erros, oferecendo dicas de otimização de desempenho e métricas de monitoramento.

Desenvolvimento

Inesperadamente Lento: Um Simples Benchmark de Sockets Mostra o Linux Atrasado em Relação ao OpenBSD

2025-08-16

Um simples programa em C que cria threads e abre 256 sockets revela uma surpreendente disparidade de desempenho entre Linux e OpenBSD. No Linux, os tempos de execução fluctuam entre 17 e 26 milissegundos; no OpenBSD, são apenas 2 a 6 milissegundos. Para aumentar o mistério, o OpenBSD inicialmente lançou um erro de "muitos arquivos abertos", sugerindo diferenças na gestão de recursos. O autor observa que a discrepância não está relacionada com o código de rede e desafia os leitores a encontrar um sistema Linux que supere o OpenBSD neste benchmark.

Desenvolvimento Desempenho do SO

47 Segundos de Inferno na Academia: Como Consertei o Acesso Quebrado da PureGym com a Apple Wallet

2025-08-16
47 Segundos de Inferno na Academia: Como Consertei o Acesso Quebrado da PureGym com a Apple Wallet

A frustração de um desenvolvedor iOS com o aplicativo da PureGym (47 segundos para fazer o check-in!) o levou a uma aventura insana. Ele descobriu APIs risivelmente inseguras - um PIN inalterado de 8 anos era mais seguro do que o código QR que se atualizava a cada minuto. Usando o mitmproxy, ele fez engenharia reversa do sistema, criou um passe da Apple Wallet usando o PassKit e reduziu o tempo de check-in para 3 segundos. O artigo detalha o processo: engenharia reversa, luta com certificados, desenvolvimento de back-end em Swift e muito mais. Ele até o integrou ao Home Assistant. Um projeto pessoal divertido e tecnicamente detalhado que destaca a importância da experiência do usuário.

Desenvolvimento Engenharia Reversa de API

O Matador de Arquivos Grandes do Git: O Fim do Git LFS Está Próximo

2025-08-16

Arquivos grandes têm sido um problema para o Git por muito tempo. O Git LFS, embora uma solução, introduziu novas complexidades e custos. No entanto, o próprio Git está gradualmente resolvendo esse problema. As últimas versões do Git apresentam clones parciais, oferecendo os mesmos benefícios do Git LFS — clones rápidos e checkouts pequenos — sem a necessidade de ferramentas extras ou custos do lado do servidor. Mais emocionante ainda, os promissores de objetos grandes do Git estão em desenvolvimento, prometendo eventualmente tornar o Git LFS obsoleto, tornando a gestão de arquivos grandes mais simples e eficiente. Sem mais dores de cabeça com arquivos grandes!

Desenvolvimento

Amnésia de Kanji: Por que lembro o significado, mas não a escrita?

2025-08-15
Amnésia de Kanji: Por que lembro o significado, mas não a escrita?

O autor aprendeu kanji primeiro memorizando seus significados e escrita, depois a pronúncia, com grande sucesso. Anos depois, ele não consegue escrever à mão a maioria dos kanji. Essa 'Amnésia de Kanji' é comum no Japão e na China. Ele explora os processos cerebrais distintos para leitura e escrita, e sua afantasia (ausência de imagens mentais) contribui para o mistério. A ciência cognitiva sugere que isso decorre do uso pelo cérebro de traços de memória verbais e de essência. Ler envolve reconhecer a essência, enquanto escrever ativa a memória motora dos traços - duas habilidades distintas.

Desenvolvimento

LLMs: Ótimos geradores de código, péssimos engenheiros de software

2025-08-15
LLMs: Ótimos geradores de código, péssimos engenheiros de software

Anos de entrevistas com engenheiros de software revelam que construir e manter modelos mentais claros é fundamental. Embora os LLMs sejam bons em gerar e modificar código, eles carecem da capacidade crucial de manter esses modelos. Eles se confundem facilmente, sofrem de omissão de contexto e viés de recentismo e alucinam detalhes, impedindo a resolução iterativa de problemas para tarefas complexas. O autor conclui que os LLMs são ferramentas úteis para engenheiros de software, mas não podem substituí-los para nada além de projetos simples.

Desenvolvimento

Deprecar XSLT nos navegadores?

2025-08-15
Deprecar XSLT nos navegadores?

O processador XSLT embutido nos navegadores (v1.0, padronizado em 1999) está desatualizado e apresenta riscos de segurança. O desenvolvimento web moderno utiliza JavaScript e JSON, tornando o XSLT amplamente obsoleto. Manter bibliotecas XSLT antigas (como libxslt no Chromium) consome muitos recursos e é propenso a vulnerabilidades de segurança de memória, criando uma superfície de ataque significativa. Esta proposta sugere depreciar o XSLT dos padrões da web para reduzir os riscos de segurança e otimizar a alocação de recursos, sem perda prática de funcionalidade para os desenvolvedores.

Desenvolvimento

A Entalhe do MacBook Quebra a Renderização de Jogos: Um Pesadelo para Desenvolvedores

2025-08-15
A Entalhe do MacBook Quebra a Renderização de Jogos: Um Pesadelo para Desenvolvedores

Muitos jogos são renderizados incorretamente em MacBooks com displays com entalhe. O problema decorre da maneira como os jogos obtêm as resoluções da tela (CGDisplayCopyAllDisplayModes), que retorna resoluções incluindo a área do entalhe, resultando em imagens de jogos comprimidas e distorcidas. O artigo analisa as diferenças entre várias regiões da tela (tela inteira, área segura, área de tela cheia do AppKit) e oferece uma solução para filtrar as resoluções. No entanto, ele aponta, em última análise, para o design da API da Apple como a causa raiz. O artigo também lista os jogos afetados e as melhorias potenciais que a Apple poderia implementar, como atualizar o HIG, melhorar o CGDisplayMode ou criar uma nova API centrada em jogos.

Simulando e Visualizando o Teorema do Limite Central: Uma Exploração Prática

2025-08-15

Este artigo explora o Teorema do Limite Central (TLC) por meio de simulação e visualização. O autor, que anteriormente evitava estatística, usa R para gerar amostras de várias distribuições (uniforme, normal, binomial, beta, exponencial, qui-quadrado) e calcula as médias amostrais. Os resultados demonstram visualmente como a distribuição das médias amostrais se aproxima de uma distribuição normal à medida que o tamanho da amostra aumenta, confirmando o TLC. O artigo investiga ainda as implicações práticas de usar a distribuição t em vez da distribuição normal para cálculos de intervalos de confiança ao lidar com tamanhos de amostra limitados e variância populacional desconhecida. Simulações destacam a diferença na cobertura do intervalo de confiança em vários tamanhos de amostra. Por fim, uma animação mostra como a distribuição das médias amostrais converge para uma distribuição normal à medida que o tamanho da amostra cresce, oferecendo uma compreensão visual convincente deste conceito estatístico fundamental.

WTF: Visualizando Compilações para Encontrar Gargalos de Desempenho

2025-08-15
WTF: Visualizando Compilações para Encontrar Gargalos de Desempenho

What the Fork é uma ferramenta multiplataforma que visualiza o processo de compilação de qualquer sistema de compilação, ajudando os desenvolvedores a identificar e resolver gargalos de desempenho. Ao monitorar chamadas de sistema, ele acompanha o início e o término do processo, gerando uma visualização interativa mostrando cronogramas de processos, comandos e argumentos. O autor demonstra seu poder por meio de exemplos de vários projetos, revelando problemas como falta de paralelismo e operações redundantes. Isso permite que os desenvolvedores otimizem significativamente os tempos de compilação, particularmente benéfico para compilações de CI.

Desenvolvimento

Copiar e colar no Linux ganha uma atualização retrô: Adeus ao Ctrl+Shift

2025-08-15
Copiar e colar no Linux ganha uma atualização retrô: Adeus ao Ctrl+Shift

Cansado do Ctrl+Shift+C/V para copiar e colar em terminais Linux? Boas notícias! Até o final de 2025, a maioria dos aplicativos Linux terá suporte nativo para os códigos de tecla 'Copiar' e 'Colar' herdados. Isso graças ao surgimento de teclados programáveis e ao suporte para esses códigos de tecla em kits de ferramentas de software como GTK e QT. Vários emuladores de terminal, como Alacritty, Foot e Wezterm, já os suportam, enquanto o Gnome Terminal e o Konsole devem suportá-los após atualizações até o final do ano. Isso revolucionará a experiência de copiar e colar no Linux, tornando-a mais conveniente e eficiente.

Reescrita do Ghostty GTK: Um Triunfo do GObject e Valgrind

2025-08-15

O aplicativo GTK do emulador de terminal Ghostty passou por uma reescrita completa, adotando totalmente o sistema de tipos GObject do Zig e utilizando o Valgrind rigorosamente para verificação de memória em cada etapa. O resultado é um Ghostty mais rico em recursos, estável e fácil de manter no Linux e BSD. A reescrita resolveu problemas anteriores de gerenciamento de memória decorrentes da evasão do sistema GObject, simplificando tarefas como o recarregamento de configuração usando o sistema de notificação de alteração de propriedades do GObject. O Valgrind descobriu alguns problemas de memória, principalmente relacionados a interações com a API C, demonstrando a eficácia dos recursos de segurança de memória do Zig em um projeto grande e complexo.

Desenvolvimento

EmbedPDF: Visualizador de PDF JavaScript de código aberto e eficiente

2025-08-15
EmbedPDF: Visualizador de PDF JavaScript de código aberto e eficiente

O EmbedPDF é um visualizador de PDF JavaScript de código aberto, com licença MIT, e que funciona em qualquer framework. Se você trabalha com React, Vue, Svelte, Preact ou JavaScript puro, o EmbedPDF oferece uma experiência de leitura moderna e fluida, além de uma API limpa para desenvolvedores. Ele inclui recursos como anotações (destaque, notas adesivas, texto livre, caneta), remoção verdadeira de conteúdo, busca, seleção de texto, zoom, rotação e rolagem virtual suave. Possui arquitetura plugável e plugins que podem ser reduzidos com tree-shaking. Contribuições são bem-vindas!

Desenvolvimento visualizador de PDF

Jujutsu + Radicle: Um fluxo de trabalho quase sem branches

2025-08-14
Jujutsu + Radicle: Um fluxo de trabalho quase sem branches

Este artigo descreve como o autor usa Jujutsu e Radicle em conjunto para alcançar um fluxo de trabalho de controle de versão quase sem branches. Jujutsu, como uma camada transparente sobre o Git, gerencia mudanças usando IDs de mudança, simplificando operações complexas do Git, como rebase e squash. Radicle utiliza o armazenamento e o protocolo do Git, fornecendo uma plataforma segura e confiável para colaboração de código. O autor detalha suas configurações `.git/config` e `.jj/config`, e como ele usa comandos como `jj new`, `jj edit`, `jj squash` e `jj rebase` para criar, editar, mesclar e reordenar mudanças. O mecanismo de patch do Radicle permite contribuição e manutenção de código eficientes, eliminando, em última análise, o gerenciamento de branches complicado e melhorando a eficiência do desenvolvimento.

Desenvolvimento

Avanço no desempenho do Linux ASI: de 70% para 13% de sobrecarga de E/S

2025-08-14

Por anos, engenheiros do Google trabalharam no Isolamento de Espaço de Endereços (ASI) para o kernel do Linux, a fim de combater as crescentes vulnerabilidades de execução especulativa da CPU. Implementações iniciais resultaram em uma penalidade de 70% no throughput de E/S. Agora, essa sobrecarga caiu para apenas 13%. O engenheiro do Google, Brendan Jackman, reviveu o esforço, apresentando uma solução para os problemas de desempenho do cache de páginas. Embora ainda existam desafios, particularmente relacionados à troca de contexto e operações de cópia em gravação, o progresso significativo torna o ASI um forte candidato para uma solução de vulnerabilidade de CPU convencional.

Desenvolvimento Vulnerabilidades de CPU

Org-social: Uma Rede Social Descentralizada Baseada em Org Mode

2025-08-14
Org-social: Uma Rede Social Descentralizada Baseada em Org Mode

Org-social é uma rede social descentralizada que roda em um arquivo Org Mode servido via HTTP. Os usuários criam um arquivo `social.org`, adicionam informações pessoais e postagens, e o carregam para um servidor web. Simples, sem registro e sem banco de dados, ele utiliza os recursos do Org Mode para postagens, respostas, menções, enquetes e muito mais, mantendo a compatibilidade com vários editores de texto. Seus valores principais são simplicidade, acessibilidade, descentralização e adesão aos princípios do Org Mode.

Desenvolvimento

Os Segredos do Sucesso do ArchWiki: Lições do DebConf25

2025-08-14

O ArchWiki do Arch Linux é conhecido na comunidade Linux por sua documentação de alta qualidade. No DebConf25, os mantenedores do ArchWiki compartilharam seus segredos, cobrindo estratégia de conteúdo, diretrizes de contribuição e gerenciamento da comunidade. Apesar de aproveitar os pontos fortes do MediaWiki — conteúdo abrangente, de alta qualidade e atualizado —, eles também abordaram desafios como a complexidade da marcação do MediaWiki, a alta barreira de entrada para contribuidores e ameaças de conteúdo gerado por IA e bots de scraping. Planos futuros incluem melhorar o envolvimento da comunidade, desenvolver mais ferramentas de edição e incorporar a IA com cautela. A apresentação inspirou o Debian a reformular sua wiki usando o MediaWiki.

Desenvolvimento Wiki de código aberto

Codificação em iPhone com uma mão: Além do Pythonista, um trio de aplicativos emerge

2025-08-14

O sonho do autor de codificar sozinho em um iPhone se tornou realidade. Abandonando o Pythonista, ele agora usa uma combinação de três aplicativos: Secure Shellfish (com sincronização de pastas offline), Textastic (editor de código) e Working Copy (cliente Git), executando código em um VPS. Embora essa configuração tenha um custo inicial mais alto (cerca de € 57 mais taxas mensais de VPS), ela fornece uma experiência de codificação sem distrações, oferecendo uma alternativa às mídias sociais e permitindo desenvolvimento focado com uma única mão.

Desenvolvimento

500 Dias de Matemática Diária: Uma Jornada de Zero a (Quase) Herói

2025-08-14
500 Dias de Matemática Diária: Uma Jornada de Zero a (Quase) Herói

O autor relata sua jornada de 500 dias de prática diária de matemática usando o Math Academy. Inicialmente motivado pela necessidade de entender a matemática por trás da IA, ele descobriu uma lacuna significativa em seu conhecimento fundamental, começando do início. Através de esforços consistentes e ajustes estratégicos (como tempo de estudo dedicado, utilização de momentos vagos e compartilhamento público do progresso), ele concluiu vários cursos fundamentais e agora está enfrentando cálculo e álgebra linear. Essa jornada não apenas impulsionou suas habilidades matemáticas, mas também cultivou melhores hábitos de aprendizagem e resiliência, impactando positivamente outras áreas de sua vida.

Desenvolvimento aprendizagem de matemática

Aprimore sua área de trabalho Debian 13: ajustes e dicas essenciais

2025-08-14

O Debian 13 chegou! Este guia fornece ajustes essenciais para otimizar sua experiência com a área de trabalho Debian. Aprenda como habilitar repositórios adicionais (incluindo software não livre), configurar seu PATH para acesso mais fácil ao terminal, ingressar em grupos do sistema para administração simplificada, usar o DNS do Cloudflare para navegação mais rápida, alternar para espelhos locais para downloads de pacotes mais rápidos, habilitar Snap e Flatpak para acesso a uma gama maior de softwares, instalar o Centro de Software GNOME e gerenciar pacotes com o Synaptic. Essas etapas aprimoram significativamente a usabilidade e a eficiência do Debian.

Debian 13 Trixie Lançado: Adeus a 32 bits, Olá RISC-V

2025-08-14
Debian 13 Trixie Lançado: Adeus a 32 bits, Olá RISC-V

O Debian 13, com o nome de código Trixie, foi lançado, trazendo inúmeras melhorias. A mudança mais significativa é o abandono do suporte à arquitetura x86 de 32 bits em favor do RISC-V e a atualização para o kernel do Linux 6.12. O Trixie também apresenta linguagens de programação atualizadas (Python 3.13, PHP 8.4, etc.), um gerenciador de pacotes Apt aprimorado, segurança aprimorada (com suporte a CET, PAC, BTI, etc.) e melhorias de desempenho e experiência do usuário para as áreas de trabalho GNOME e KDE. Embora o suporte de segurança para os ecossistemas Go e Rust seja limitado, o Trixie é, em geral, uma distribuição estável, segura e poderosa.

Desenvolvimento

Máquinas de Estado Finito como Estruturas de Dados: Indexando Bilhões de URLs

2025-08-14

Este artigo explora o uso de máquinas de estado finito (FSMs) como estruturas de dados para representar conjuntos e mapas ordenados, mostrando a eficiência do crate fst do Rust para construir índices. Ele aprofunda a construção de FSMs, cobrindo a construção de Trie e FSA, e demonstra a indexação de mais de 1,6 bilhão de URLs do arquivo Common Crawl de julho de 2015. Técnicas como mapeamento de memória, interseção de autômatos com expressões regulares, busca fuzzy com distância de Levenshtein e operações de conjunto em streaming também são discutidas. O autor constrói e compara benchmarks de FSTs contra outros esquemas de compressão (gzip, xz) em vários conjuntos de dados de tamanhos e características variados.

Infraestrutura de Privacidade para Óculos Inteligentes: Construindo Aplicativos sem as Dor de Cabeça de Privacidade

2025-08-14
Infraestrutura de Privacidade para Óculos Inteligentes: Construindo Aplicativos sem as Dor de Cabeça de Privacidade

Este projeto aborda os desafios de privacidade inerentes aos aplicativos de óculos inteligentes. Ele introduz um filtro de privacidade em tempo real que fica entre a câmera e o aplicativo, garantindo automaticamente a conformidade. O filtro anonimiza rostos, gerencia o consentimento (detectando consentimento verbal como "Eu concordo em ser capturado") e processa vídeo a 720p 30fps, tudo offline. Construído usando FFmpeg, OpenCV, Faster Whisper e Phi-3.5 Mini, ele oferece fácil integração de câmera, entrada RTMP/múltiplos formatos de saída e uma API HTTP para controle. Ideal para assistentes de IA, aplicativos sociais, soluções empresariais e criação de conteúdo, esta ferramenta capacita os desenvolvedores a construir aplicativos de óculos inteligentes conscientes da privacidade.

Desenvolvimento óculos inteligentes

A Revolução da IA: Uma Crise Existencial para um Programador e Escritor

2025-08-14
A Revolução da IA: Uma Crise Existencial para um Programador e Escritor

Um programador e escritor experiente luta contra a ameaça existencial apresentada pela rápida evolução da IA. Ele se orgulha de sua capacidade de explicar conceitos técnicos complexos de forma clara, habilidade evidenciada pelo sucesso de seus livros. No entanto, a ascensão da IA ameaça seu sustento, pois a IA já está se mostrando eficaz na redação técnica. Embora reconheça as capacidades da IA na explicação de tópicos técnicos, ele questiona a capacidade da IA de substituir completamente os autores humanos, especialmente em relação ao estilo e às nuances. Ele está planejando um novo livro, utilizando a IA para auxílio, mas ainda permanece incerto sobre seu papel futuro em um mundo dominado pela IA, questionando seu valor e propósito.

Desenvolvimento Crise Existencial

Nyxt: O navegador inspirado no Emacs para desenvolvedores

2025-08-14

Nyxt é um navegador web incomum, construído com a filosofia do Emacs: altamente personalizável e baseado em teclado. Escrito em Common Lisp e licenciado sob a licença BSD 3-clause, ele prioriza usuários Linux e capacita desenvolvedores a estender sua funcionalidade. Embora inspirado no Emacs, o Nyxt roda independentemente e suporta atalhos de teclado vi e CUA. A série 3.x atual usa o WebKitGTK, enquanto a próxima versão 4.0 utilizará o Electron para melhor desempenho e suporte multiplataforma (macOS e Windows). A interface minimalista do Nyxt e as extensas opções de personalização atraem desenvolvedores que buscam eficiência máxima, mas sua curva de aprendizado íngreme e os recursos limitados da comunidade representam um desafio.

Desenvolvimento

10 PRINT: Uma Linha de Código, Um Fenômeno Cultural

2025-08-14
10 PRINT: Uma Linha de Código, Um Fenômeno Cultural

Publicado em 2012, 10 PRINT explora o fenômeno da computação criativa por meio de uma única linha de código BASIC do Commodore 64. Os autores tratam este código como um texto, examinando sua criação, propósito e pressupostos. O livro mergulha na aleatoriedade e regularidade na computação e na arte, no significado cultural dos labirintos, na popularidade do BASIC e na influência do Commodore 64. Capas de livros geradas, inspiradas no código, são agora usadas pela Biblioteca Pública de Nova York e pelo Projeto Gutenberg.

OCaml: Uma Linguagem Surpreendentemente Relevante para os Tempos Modernos

2025-08-14

Este artigo defende a linguagem OCaml, destacando seus pontos fortes como linguagem de pesquisa e ferramenta prática para a indústria. O autor detalha os poderosos recursos do OCaml — incluindo seu sistema de tipo estático, suporte multi-paradigma e ecossistema em evolução — argumentando que é adequado para diversos projetos. Várias ideias errôneas comuns sobre o OCaml são abordadas, e o autor descreve uma comunidade vibrante e de apoio. A peça termina com um convite convincente para explorar essa linguagem muitas vezes negligenciada.

Desenvolvimento

Convo-Lang: Uma linguagem de programação nativa de IA para simplificar a engenharia de prompts de LLM

2025-08-14
Convo-Lang: Uma linguagem de programação nativa de IA para simplificar a engenharia de prompts de LLM

Convo-Lang é uma linguagem de programação nativa de IA de código aberto e um ecossistema projetado para construir prompts poderosos e fluxos de trabalho de agentes estruturados para LLMs como GPT-4, Claude e Llama. Em vez de escrever prompts em inglês de forma livre, o Convo-Lang permite que você defina conversas de várias etapas, adicione estrutura e variáveis, integre ferramentas externas e bases de conhecimento (RAG) e alterne entre diferentes LLMs. Sua sintaxe legível simplifica o desenvolvimento de aplicativos de IA complexos, tornando mais fácil gerenciar lógica, depuração e manutenção.

Desenvolvimento linguagem nativa de IA
1 2 24 25 26 28 30 31 32 214 215