Category: Desenvolvimento

Testes de Acessibilidade Automatizados do Slack: Desafios e Triunfos

2025-01-08
Testes de Acessibilidade Automatizados do Slack: Desafios e Triunfos

A equipe de engenharia do Slack detalha sua jornada na implementação de testes de acessibilidade automatizados. Tentativas iniciais de integrar o Axe em sua biblioteca de testes React e estrutura Jest falharam devido a complexidades. Eles mudaram para o Playwright, usando funções e estratégias personalizadas para automatizar com sucesso as verificações de acessibilidade e integrá-las ao CI/CD. Embora não consigam esconder completamente as verificações automatizadas, eles minimizaram a sobrecarga do desenvolvedor, simplificando os fluxos de trabalho, melhorando os relatórios e estabelecendo processos claros. Os planos futuros incluem otimização adicional e exploração de testes assistidos por IA.

Streets GL: Um motor de mapa 3D em tempo real de código aberto

2025-01-07

Streets GL é um poderoso motor de mapa 3D em tempo real de código aberto que oferece aos desenvolvedores as ferramentas necessárias para construir mundos virtuais impressionantes. Utilizando WebGL, ele possui desempenho excepcional, renderizando suavemente grandes conjuntos de dados geográficos e suportando materiais, iluminação e efeitos personalizados. Seja para criar simuladores de cidades, mapas de jogos ou aplicativos de RV imersivos, o Streets GL faz tudo. Sua natureza de código aberto o torna um recurso valioso para a comunidade, constantemente atualizado e aprimorado.

Demitido duas vezes em um ano: A história de um engenheiro de software

2025-01-07

Um engenheiro de software compartilha sua experiência de ser demitido duas vezes em um único ano, uma vez uma semana após o início da licença-paternidade e novamente pouco antes do Natal. O artigo detalha a montanha-russa emocional, as etapas práticas tomadas para encontrar um novo emprego (atualizações de currículo, benefícios de desemprego, estratégias de busca de emprego) e reflexões sobre o estado atual da indústria de tecnologia e a auto-estima. Ele oferece conselhos sobre como navegar por demissões, enfatizando a importância da resiliência, networking e aprendizado contínuo.

Desenvolvimento

Erros Comuns de Engenheiros em Grandes Bases de Código

2025-01-07

Trabalhar com grandes bases de código estabelecidas é notoriamente difícil. Este artigo compartilha uma década de experiência, destacando o erro mais comum e fatal: ignorar os padrões existentes da base de código e focar apenas em código limpo para um novo recurso. Manter a consistência é essencial; ela previne problemas inesperados, retarda a degradação da base de código e permite melhorias futuras. O autor também enfatiza a importância de entender a pegada de produção do código, ser cauteloso ao introduzir novas dependências, remover código redundante, trabalhar em pequenos PRs e alavancar a expertise da equipe para detectar erros. Embora desafiador, dominar grandes bases de código é crucial, pois elas geralmente são a base dos produtos mais valiosos de uma empresa.

Desenvolvimento base de código

Links Mágicos: Convenientes ou Catastróficos?

2025-01-07
Links Mágicos: Convenientes ou Catastróficos?

Este artigo critica designs de sites que dependem exclusivamente de links mágicos de e-mail para login. Embora seguros, o autor argumenta que este método é inconveniente para usuários com vários dispositivos, dificultando o login direto em PCs de jogos ou laptops de trabalho e sendo suscetível a atrasos de e-mail. Também força os usuários a acessar e-mails pessoais em dispositivos de trabalho, representando riscos de segurança. O autor sugere oferecer opções de login mais flexíveis, como senhas ou chaves de acesso, para melhorar a experiência do usuário.

Desenvolvimento métodos de login

HipScript: Execute código HIP e CUDA com WebGPU

2025-01-07

O compilador online HipScript, desenvolvido por Ben Schattinger, permite executar código HIP e NVIDIA CUDA diretamente no WebGPU. Isso significa que os desenvolvedores podem usar modelos de programação familiares para implantar tarefas de computação de alto desempenho no navegador, eliminando a necessidade de portabilidade complexa. Códigos de exemplo, como o Jogo da Vida, são fornecidos para facilitar o aprendizado. Este é um desenvolvimento significativo, abrindo o potencial para computação de alto desempenho em aplicativos web.

Desenvolvimento

OmniAI (YC) Contrata Engenheiro Full Stack

2025-01-07
OmniAI (YC) Contrata Engenheiro Full Stack

A OmniAI, uma startup apoiada pela Y Combinator, está contratando um engenheiro full-stack com salário de US$ 125.000 a US$ 175.000 e participação nos lucros. Eles estão construindo uma nova maneira de trabalhar com dados não estruturados, permitindo análises em larga escala antes impossíveis. O candidato ideal tem mais de 3 anos de experiência, proficiência em Node.js, TypeScript, React/NextJS, Postgres e um profundo conhecimento de LLMs e OCR. O processo de entrevista inclui uma entrevista por telefone, entrevista de design de arquitetura e um desafio de codificação no local.

Desenvolvimento

Hacki: Um cliente Hacker News repleto de recursos, construído com Flutter

2025-01-07
Hacki: Um cliente Hacker News repleto de recursos, construído com Flutter

Hacki é um cliente Hacker News rico em recursos, construído com Flutter. Ele oferece um conjunto abrangente de recursos, incluindo login na sua conta Hacker News, navegação por histórias em várias categorias, pesquisa e envio de histórias, fixação e favoritos de histórias, comentários, participação em pesquisas e leitura offline. A sincronização entre dispositivos para favoritos e itens fixados (apenas iOS) e o lançamento a partir do compartilhamento do sistema também estão incluídos. O Hacki visa fornecer uma maneira mais conveniente e eficiente de experimentar o Hacker News.

Desenvolvimento Cliente

PCalc: Uma jornada de 20 anos de um aplicativo de calculadora

2025-01-07

PCalc, um aplicativo de calculadora aparentemente simples, possui uma notável história de 20 anos. Começou como um projeto universitário, inicialmente projetado como um painel de controle de aquecimento central! O autor então o transformou em uma calculadora para programadores, lançando-o como software gratuito em 1992. Através de inúmeras iterações e portas de plataforma, o PCalc agora está presente em iOS, Mac e Apple Watch, incorporando recursos inovadores. A história por trás dele está repleta de paixão pela tecnologia, conexões com a Apple e uma homenagem ao falecido autor de ficção científica Douglas Adams.

Adeus, Amplificadores Operacionais Obsoletos: Um Guia para Alternativas Modernas

2025-01-07
Adeus, Amplificadores Operacionais Obsoletos: Um Guia para Alternativas Modernas

Este artigo critica os amplamente utilizados, mas obsoletos, amplificadores operacionais LM741 e LM324/LM358, recomendando alternativas modernas superiores e fáceis de usar, como o Microchip MCP6272, MCP6022 e os Texas Instruments OPA2323, TLV3542 e OPA2356. Detalhes os parâmetros cruciais a serem considerados ao escolher um amplificador operacional, incluindo a faixa de tensão de alimentação, a corrente de saída máxima, a E/S rail-to-rail (RRIO), o tipo de estágio de entrada (FET vs. bipolar), o produto ganho-largura de banda, a taxa de variação e o ruído. O autor enfatiza que muitos parâmetros são frequentemente exagerados em projetos amadores.

Minimização Extrema: Criando um Executável Multiplataforma com Menos de 400 Bytes

2025-01-07

Esta postagem de blog detalha truques de otimização de tamanho do projeto Cosmopolitan Libc, usando assembly x86 e técnicas de compilação inteligentes para reduzir drasticamente o tamanho do executável. Os métodos principais discutidos incluem codificação de comprimento de execução, seções descentralizadas, eliminação de código morto, codificação δzd, funções sobrepostas e otimização de printf. O resultado final? Um executável ELF com menos de 400 bytes rodando em Linux, FreeBSD, NetBSD e OpenBSD. Isso demonstra o uso eficiente de recursos e oferece novas perspectivas sobre a escalabilidade de grandes bases de código.

Motor de Xadrez em 84.688 Expressões Regulares

2025-01-07

Nicholas Carlini criou um motor de xadrez minimax de 2 camadas usando impressionantes 84.688 expressões regulares como um projeto de férias. Ele projetou uma máquina virtual baseada em expressões regulares com um conjunto de instruções sem ramificações, execução condicional e SIMD. Um compilador de execução simbólica traduz código Python em sequências de expressões regulares, permitindo computação paralela. O motor utiliza o SIMD para calcular movimentos para várias peças simultaneamente, com otimizações inteligentes de expressões regulares para velocidade. Embora limitado em profundidade, ele demonstra o surpreendente poder computacional das expressões regulares.

Biblioteca de HashMap Paralelo: Extremamente Rápida e Eficiente em Memória

2025-01-07
Biblioteca de HashMap Paralelo: Extremamente Rápida e Eficiente em Memória

parallel-hashmap é uma biblioteca C++ impressionante que fornece um conjunto de contêineres de hashmap e btree extremamente rápidos e eficientes em termos de memória. É totalmente baseada em cabeçalhos, sem necessidade de processo de construção; apenas copie o diretório para o seu projeto. Compatível com C++11 e posterior, supera significativamente os unordered_map/set integrados do seu compilador ou os equivalentes do Boost, usando menos memória. Suporta pesquisas heterogêneas, é fácil de declarar antecipadamente e possui uma funcionalidade conveniente de dump/load. Baseado e aprimorado da biblioteca Abseil do Google, é amplamente testado no Windows, Linux e macOS.

Desenvolvimento biblioteca C++

Comptime do Zig: Incrivelmente Bom

2025-01-07

Este artigo mergulha profundamente nas capacidades de metaprogramação em tempo de compilação (comptime) da linguagem de programação Zig. Inicialmente achando o comptime desafiador, o autor finalmente se maravilha com seu poder. Seis perspectivas diferentes sobre o comptime são apresentadas, incluindo ignorá-lo, vê-lo como genéricos, código padrão executado em tempo de compilação, avaliação parcial, avaliação em tempo de compilação com emissão de código em tempo de execução e geração de código textual. Através de exemplos, o autor demonstra como o comptime melhora a eficiência do código, simplifica a leitura e depuração e permite recursos avançados como geração de código. O comptime do Zig permite extensa computação e geração de código em tempo de compilação, aumentando o desempenho e simplificando a escrita de código.

DiscoTool: Gerencie seus dispositivos USB Arduino com facilidade

2025-01-07
DiscoTool: Gerencie seus dispositivos USB Arduino com facilidade

DiscoTool é uma poderosa ferramenta de linha de comando e biblioteca Python para descobrir e gerenciar placas de desenvolvimento do tipo Arduino conectadas a USB. Ele suporta macOS, Linux e Windows e instala-se facilmente via pip, sem exigir instalações adicionais. O DiscoTool oferece um rico conjunto de comandos, incluindo conectar ao REPL, instalar e atualizar módulos, fazer backup de dados da placa e muito mais. Ele também permite a personalização de ferramentas de linha de comando e variáveis de ambiente. Além disso, um módulo Python permite que os desenvolvedores o integrem em seus projetos para acesso fácil a informações do dispositivo, como fabricante, número de série e versão.

LLMs e os Limites da Otimização Automática de Código

2025-01-07
LLMs e os Limites da Otimização Automática de Código

David Andersen experimentou usar modelos de linguagem grandes (LLMs) para otimizar um código que encontra a diferença entre os menores e maiores números cujos dígitos somam 30 em uma lista de um milhão de inteiros aleatórios. O código inicial em Python e Rust era lento. Embora o LLM tenha melhorado partes, como a função de soma de dígitos, ele perdeu uma otimização crucial: verificar se um número é relevante *antes* do cálculo caro da soma de dígitos. A intervenção manual, envolvendo um gerador de números aleatórios mais rápido, paralelização e pré-processamento, acelerou o código Rust em um fator de 55. Isso destaca as limitações dos LLMs na otimização de código, particularmente para problemas complexos que exigem profundo entendimento algorítmico e estratégias de paralelização. A engenhosidade humana permanece crucial.

Desenvolvimento Desempenho

Programação com LLMs em 2024: Minhas Experiências

2025-01-07

Este post resume as experiências do autor usando modelos generativos para programação no último ano. Ele descobriu que os LLMs tiveram um impacto positivo em sua produtividade, particularmente para autocompletar, pesquisa e programação orientada a bate-papo. Embora a programação orientada a bate-papo exija ajustes nos fluxos de trabalho, ela fornece um primeiro rascunho e facilita a correção mais rápida de erros. O autor enfatiza que os LLMs se destacam em problemas bem definidos e defende pacotes de código menores e mais independentes para melhor interação com o LLM. Ele apresenta o sketch.dev, um IDE Go projetado para LLMs para otimizar o ciclo de feedback e aumentar a eficiência.

Desenvolvimento

25 Anos Depois: A História Não Contada do Dock do Mac OS X

2025-01-06
25 Anos Depois: A História Não Contada do Dock do Mac OS X

Este post de blog relata as experiências de James Thomson, um engenheiro que trabalhou no desenvolvimento do Dock do Mac OS X. Ele detalha seu tempo trabalhando no Dock na Apple na Irlanda, incluindo o processo de design inicial, as interações com Steve Jobs e sua eventual saída da Apple. A história está repleta de tensão e intriga, incluindo o sigilo em torno do projeto, as exigências de Jobs sobre a localização do engenheiro e os desafios e triunfos que Thomson enfrentou durante o desenvolvimento. O post oferece um vislumbre fascinante da criação de uma peça fundamental do Mac OS X e da jornada de um engenheiro de software.

Desenvolvimento

Triptych: Três propostas para tornar a hipertextualidade 'hiper' novamente

2025-01-06

Alexander Petros e Carson Gross propõem o Triptych, três pequenas propostas para tornar o HTML muito mais expressivo na forma como ele lida com solicitações de rede. As propostas adicionam suporte para PUT, PATCH e DELETE a formulários HTML, permitem que botões façam solicitações sem formulários e permitem a substituição parcial de páginas com a resposta. O Triptych visa trazer o melhor de bibliotecas como htmx para o HTML nativo, aprimorando suas capacidades REST e simplificando a declaração do comportamento da página para solicitações HTTP. Isso resulta em código mais limpo e implementação mais fácil de navegação de página completa e atualizações de página parcial.

Desenvolvimento Solicitações Web

FormBee: Backend de formulário de código aberto para desenvolvedores preocupados com a privacidade de dados

2025-01-06
FormBee: Backend de formulário de código aberto para desenvolvedores preocupados com a privacidade de dados

FormBee é um backend de formulário de código aberto criado para desenvolvedores que priorizam a privacidade de dados. Ele simplifica o envio de dados de formulários de sites, permitindo que você envie envios de formulários para e-mail, Telegram, webhooks e muito mais sem escrever código do lado do servidor. Os recursos incluem suporte a plug-ins, proteção CAPTCHA, lista branca de domínios e e-mails de resposta automática. A auto-hospedagem é fácil com imagens Docker prontamente disponíveis.

Desenvolvimento formulários

pl_synth: Um sintetizador de música minúsculo baseado em JSON

2025-01-06

Dominic Szablewski, do PhobosLab, lançou o pl_synth, um sintetizador de música leve em C/JS e um editor de sequenciador (tracker) que o acompanha. Inspirado no Sonant, o pl_synth prioriza o tamanho reduzido do código e dos dados e utiliza WASM para melhorar drasticamente o desempenho da versão JavaScript, reduzindo o tempo de geração de música de 5 segundos para 25 milissegundos. Ele suporta vários instrumentos e efeitos, possui funcionalidade de desfazer/refazer e permite incorporar o produto final diretamente em uma URL. O pl_synth agora está incluído no motor de jogo high_impact.

Desenvolvimento sintetizador de música

Defer Simples em C: Implementações Práticas

2025-01-06
Defer Simples em C: Implementações Práticas

Esta postagem de blog explora maneiras práticas de implementar uma palavra-chave `defer` em C, permitindo ações de limpeza automáticas (como desalocação de memória ou desbloqueio de mutex) após um bloco de código. O autor primeiro explica o propósito de `defer`, depois demonstra implementações usando extensões GCC e recursos C++. Finalmente, uma nova proposta de sintaxe é apresentada para simplificar a implementação e o uso de `defer`, melhorando significativamente a legibilidade e a segurança do código C.

Desenvolvimento

Hack de Revisão de Código: Pergunte aos Engenheiros "Como Você Gosta do Que Construiu?"

2025-01-06

Durante uma revisão de código de mudanças complexas na IU, em vez de revisar imediatamente, o autor perguntou ao engenheiro: "Como você gosta do novo comportamento?" A resposta do engenheiro levou à descoberta e correção de vários bugs e até mesmo à eliminação de um requisito problemático. Essa simples pergunta levou o engenheiro a pensar mais profundamente sobre seu trabalho e a fazer melhorias, melhorando, em última análise, a qualidade do código. O autor acredita que perguntar regularmente aos engenheiros sobre seus sentimentos em relação às suas criações é uma técnica útil que vale a pena tentar.

Desenvolvimento revisão de código

Gerar memes engraçados com LLMs: Surpreendentemente difícil

2025-01-06
Gerar memes engraçados com LLMs: Surpreendentemente difícil

Um estagiário da Universidade de Waterloo tentou construir um aplicativo usando LLMs e a API Greptile para gerar memes que “assassinassem” repositórios do GitHub. O processo se mostrou inesperadamente desafiador. Pedir diretamente ao LLM para gerar piadas resultou em resultados genéricos. A solução envolveu separar a tarefa em análise de código (usando o Greptile para identificar problemas específicos) e geração de piadas (usando o LLM para criar humor direcionado). A geração de imagens se mostrou difícil devido a limitações no manuseio de texto, levando ao uso de modelos de memes pré-construídos e node-canvas para inserção de texto. Apesar dos obstáculos, o projeto culminou em reporoast.com, um site capaz de gerar memes personalizados de “assassinos” de código.

Desenvolvimento Geração de Memes

htmx: O próximo jQuery? Ferramenta de desenvolvimento web que prioriza a estabilidade

2025-01-06

O htmx, evoluído do intercooler.js, visa ser uma ferramenta estável e confiável para desenvolvimento web, semelhante ao sucesso duradouro do jQuery. O artigo descreve a direção futura do htmx: priorizando a estabilidade em vez de atualizações frequentes; limitando a adição de recursos principais, expandindo principalmente a funcionalidade por meio da API de extensão; mantendo uma programação de lançamento trimestral. O objetivo do htmx não é ser uma solução completa para aplicativos web, mas sim focar na simplificação dos controles de hipermídia e integrar-se melhor com outras ferramentas e técnicas, esperando que sua funcionalidade principal seja integrada ao padrão HTML.

Desenvolvimento hipermídia

Testes baseados em propriedades centrados no usuário: Uma dissertação de PhD

2025-01-06

Esta dissertação de PhD concentra-se em melhorar a usabilidade de testes baseados em propriedades (PBT) para alcançar um público mais amplo de desenvolvedores. Por meio de estudos de usuários aprofundados, o pesquisador identificou os desafios que os usuários de PBT enfrentam na geração de dados aleatórios e na avaliação da eficácia dos testes. Para solucionar isso, a dissertação propõe novos algoritmos para geradores de dados aleatórios aprimorados e desenvolve o Tyche, uma ferramenta de código aberto que fornece aos desenvolvedores insights mais profundos sobre o PBT e aumenta sua usabilidade, levando, em última análise, a uma melhor qualidade e garantia de software.

Campos de Distância de Spline: Uma Nova Técnica de Geração de Terreno

2025-01-06

Para superar as limitações do motor de jogo Tangerine, o autor desenvolveu um ray tracer de CPU chamado Star Machine e um protótipo de jogo de corrida, Rainy Road. Rainy Road requer um sistema de renderização de terreno eficiente e compacto, capaz de lidar com estradas e outros recursos de terreno definidos por splines. O autor apresenta uma nova técnica de geração de terreno usando campos de distância de spline. Essa técnica utiliza splines para gerar superfícies de terreno calculando a distância de um ponto para a spline mais próxima e seu vetor normal para determinar a elevação. Isso evita as limitações dos heightmaps tradicionais e suporta o posicionamento de objetos processuais. A técnica está em experimentação e pesquisa ativas, com exploração de estratégias de interpolação aprimoradas e o uso de nuvens de pontos esparsas.

42: Um Simulador Poderoso de Sistema de Controle de Atitude de Veículos Espaciais

2025-01-06
42: Um Simulador Poderoso de Sistema de Controle de Atitude de Veículos Espaciais

42 é uma simulação completa e de propósito geral da dinâmica de atitude e órbita de veículos espaciais, usada principalmente para apoiar o projeto e a validação de sistemas de controle de atitude ao longo de seu ciclo de vida, desde estudos conceituais até integração e testes. Modela com precisão a dinâmica de atitude de veículos espaciais de múltiplos corpos (corpos rígidos e/ou flexíveis), e regimes de voo orbital de dois e três corpos, simulando ambientes da órbita terrestre baixa a todo o sistema solar. 42 simula vários veículos espaciais simultaneamente, facilitando estudos de encontro, operações de proximidade e voo em formação de precisão. Também possui visualização da atitude do veículo espacial.

Mashups.io: Uma Alternativa Moderna ao Yahoo Pipes

2025-01-06
Mashups.io: Uma Alternativa Moderna ao Yahoo Pipes

O Mashups.io é uma poderosa ferramenta online de integração de dados que se baseia no legado do Yahoo Pipes com melhorias significativas. Os usuários podem facilmente misturar, filtrar e transformar feeds RSS, arquivos CSV e dados JSON para criar fontes de dados personalizadas. A plataforma oferece uma interface visual intuitiva, sem necessidade de experiência em programação para construir fluxos de trabalho complexos de dados. O Mashups.io oferece planos gratuitos e pagos para atender às diversas necessidades, e suas atualizações em tempo real garantem que os dados estejam sempre atualizados.

Evolução de um Editor de Código Estrutural: De Manipulação de AST para IU Intuitiva

2025-01-06
Evolução de um Editor de Código Estrutural: De Manipulação de AST para IU Intuitiva

Esta publicação detalha a evolução de vários anos de um editor de código estrutural. A versão inicial manipulava diretamente a Árvore de Sintaxe Abstrata (AST), o que se mostrou complicado. As iterações subsequentes simplificaram a AST e exploraram uma abordagem baseada no cursor de texto, mas ambas ficaram aquém. A versão final equilibra a edição de AST e texto, empregando técnicas como tipos Editáveis, Projeções e Frames. Uma IU visual, baseada em ícones, foi adicionada, suportando teclado, mouse, toque e controle remoto, melhorando significativamente a experiência do usuário. Construído com Gleam e Lustre, este projeto mostra a exploração contínua e o refinamento do design de editores de código estruturais.

1 2 191 192 193 195 197 198 199 214 215