Category: Desarrollo

Backend de construcción uv: Builds de Python más rápidos y fluidos

2025-07-03

El backend de construcción nativo de uv, uv_build, mejora significativamente la velocidad y la experiencia del usuario al construir proyectos Python. Tiene valores predeterminados razonables, con el objetivo de no requerir configuración para la mayoría de los usuarios, pero ofrece una configuración flexible para adaptarse a diversas estructuras de proyecto. uv_build actualmente admite código Python puro; se necesitan backends alternativos para bibliotecas con módulos de extensión. Use este backend agregando `uv_build` a su `pyproject.toml` o creando un nuevo proyecto con `uv init --build-backend uv`. uv_build también optimiza la normalización del nombre del paquete, el descubrimiento del módulo y las estrategias de inclusión/exclusión de archivos, lo que lleva a compilaciones más predecibles y repetibles.

Desarrollo

El código lo es todo: Las limitaciones de las canalizaciones de múltiples componentes (MCP)

2025-07-03
El código lo es todo: Las limitaciones de las canalizaciones de múltiples componentes (MCP)

Este artículo cuestiona la practicidad de las canalizaciones de múltiples componentes (MCP) para muchas tareas, argumentando que su fuerte dependencia de la inferencia las hace ineficientes y difíciles de escalar. El autor utiliza un ejemplo personal, la conversión de reStructuredText a Markdown, para demostrar un enfoque superior: utilizar LLM para generar código que realice la tarea, seguido de una validación basada en LLM. Este método reduce la dependencia de la inferencia, mejora la fiabilidad y escala bien, especialmente para tareas repetitivas. Si bien reconoce las fortalezas de MCP en escenarios de nicho, el autor concluye que sus limitaciones inherentes dificultan la automatización a gran escala. El futuro, sugiere, radica en el desarrollo de técnicas de generación de código más eficaces, combinadas con validación y explicación de LLM para mejorar la usabilidad y la aplicabilidad.

Desarrollo

Imagebin de Max: Un Testamento a la Simplicidad

2025-07-03
Imagebin de Max: Un Testamento a la Simplicidad

Esta historia relata la saga de Max, un programador, y su Imagebin, un script de subida de imágenes PHP de 15 años. El código de Imagebin es notablemente simple, apenas 233 líneas, la mayoría de las cuales son registros de cambios. El autor intentó una reescritura en Go, pero descubrió que el código aumentó y la legibilidad disminuyó. Esto llevó a una reflexión sobre la complejidad del diseño de software, destacando la facilidad de mantenimiento que ofrece un código conciso. La longevidad de Imagebin de Max se atribuye a esta simplicidad. Finalmente, el autor decidió conservar el código de Max y seguir usando PHP.

Desarrollo

Construyendo un kernel de Linux de forma nativa en macOS: Un viaje al infierno de la compilación

2025-07-03
Construyendo un kernel de Linux de forma nativa en macOS: Un viaje al infierno de la compilación

Esta publicación detalla la experiencia del autor al construir un kernel de Linux (arquitectura RISC-V) de forma nativa en macOS. El viaje estuvo lleno de desafíos: una versión desactualizada de make, el ld de macOS siendo incompatible con las expectativas de Linux, la falta de los encabezados elf.h y byteswap.h, y conflictos de versión con uuid_t y sed. El autor superó estos problemas usando Homebrew para instalar cadenas de herramientas actualizadas (make, llvm, lld, libelf, gnu-sed) y creando parches para solucionar discrepancias en los encabezados y conflictos de definición de tipo. El kernel se construyó con éxito, con macOS mostrando tiempos de construcción más rápidos que Docker para construcciones limpias, pero construcciones incrementales más lentas. El autor concluye que solucionar problemas de construcción es un proceso continuo e iterativo, similar a la integración continua.

Desarrollo

Preguntas y Respuestas Frecuentes sobre Evaluación de IA: Lecciones de más de 700 Ingenieros y Directores de Producto

2025-07-03
Preguntas y Respuestas Frecuentes sobre Evaluación de IA: Lecciones de más de 700 Ingenieros y Directores de Producto

Esta publicación resume preguntas frecuentes encontradas al enseñar a más de 700 ingenieros y directores de producto un curso de evaluación de IA. Los temas tratados incluyen si RAG está muerto, la selección de modelos, las herramientas de anotación, las metodologías de evaluación, la generación de datos sintéticos y las lagunas en las herramientas de evaluación existentes. Los autores enfatizan la importancia del análisis de errores, abogando por evaluaciones binarias en lugar de escalas de Likert, y compartiendo las mejores prácticas para construir herramientas de anotación personalizadas, elegir tamaños de fragmento adecuados y evaluar sistemas RAG. La publicación también analiza las diferencias entre las protecciones y los evaluadores, la configuración mínima viable de evaluación, la evaluación de flujos de trabajo agentivos y los diferentes usos de las evaluaciones en CI/CD frente al monitoreo de producción.

Declaraciones de funciones en JavaScript: Tres maneras de definir funciones

2025-07-03
Declaraciones de funciones en JavaScript: Tres maneras de definir funciones

Este artículo profundiza en los matices de los tres estilos de declaración de funciones en JavaScript: declaraciones de funciones, expresiones de funciones y funciones de flecha. Las declaraciones de funciones se elevan; las expresiones de funciones pueden tener nombre, pero sus nombres no están enlazados al ámbito; las funciones de flecha son concisas, pero carecen de enlace `this`, capacidades de constructor y funcionalidad de generador. La elección depende de si se utiliza la palabra clave `this`, se necesitan funciones generadoras y se prioriza la legibilidad del código. Se proporciona un diagrama de flujo para guiar a los desarrolladores en la elección del estilo de declaración de función adecuado para diferentes situaciones.

Desarrollo funciones

El Futuro Incierto de la Programación: Ansiedad, Esperanza y el Ascenso del Desarrollador Aumentado por IA

2025-07-03
El Futuro Incierto de la Programación: Ansiedad, Esperanza y el Ascenso del Desarrollador Aumentado por IA

La ansiedad de un joven programador desencadena una reflexión sobre el futuro de las carreras en programación en la era de la IA. El autor, basándose en 28 años en el sector tecnológico, aborda las preocupaciones sobre el desplazamiento laboral impulsado por la IA. El argumento afirma que la IA no reemplazará a los programadores, sino que aumentará sus habilidades, liberándolos para concentrarse en la resolución creativa de problemas. El programador del futuro necesitará dominar el contexto, guiar eficazmente las herramientas de IA y ser un aprendiz constante para evitar el estancamiento. El valor fundamental de un programador — resolución de problemas, pensamiento crítico e ingenio exclusivamente humano — permanece insustituible por la IA.

Desarrollo

LLMs: Aceleración en la Generación de Código, pero la Comprensión Sigue Siendo el Cuello de Botella

2025-07-03
LLMs: Aceleración en la Generación de Código, pero la Comprensión Sigue Siendo el Cuello de Botella

El advenimiento de los Grandes Modelos de Lenguaje (LLMs) ha aumentado drásticamente la velocidad de generación de código. Sin embargo, esto no ha resuelto los verdaderos cuellos de botella en la ingeniería de software: revisiones de código, transferencia de conocimiento, pruebas, depuración y colaboración en equipo. El artículo argumenta que los LLMs reducen el costo de escribir código, pero el costo de comprender, probar y confiar en ese código es mayor que nunca. El código generado por LLM puede ser difícil de entender, violar convenciones establecidas o introducir efectos secundarios imprevistos, aumentando la dificultad de revisión y mantenimiento. En última instancia, la ingeniería de software todavía depende de la confianza del equipo, el contexto compartido y la revisión cuidadosa del código; estas son las claves para la eficiencia.

Desarrollo

LLM como Compiladores: ¿El Futuro de la Generación de Código?

2025-07-03

El autor prevé un nuevo paradigma de desarrollo de software: usar Modelos de Lenguaje Grandes (LLMs) como compiladores. En lugar de escribir código directamente, los ingenieros proporcionan contexto (requisitos, casos de prueba, etc.) al LLM, que genera e integra código iterativamente. Los ingenieros se centran en el contexto y las pruebas, mientras que el LLM se encarga de la generación e integración de código. Esto reduce la barrera de entrada, aumenta la velocidad de desarrollo y potencialmente revoluciona la ingeniería de software. Aunque las salidas del LLM no son perfectamente predecibles, las pruebas y la iteración garantizan la fiabilidad. La idea central es tratar el código como una capa intermedia; el objetivo es la funcionalidad, no el código perfecto.

Desarrollo

La Evolución de las Bibliotecas de Caché en Go: De Ristretto a Otter v2

2025-07-03

Este artículo explora la evolución de las bibliotecas de caché en Go. Las bibliotecas de caché Go iniciales sufrían de concurrencia y cuellos de botella de rendimiento. Ristretto surgió como líder, ofreciendo un alto rendimiento y buenas tasas de acierto, pero sus fallas de diseño eventualmente llevaron a una disminución de las tasas de acierto y un rendimiento subóptimo en determinadas cargas. Theine y Otter v1 siguieron, intentando abordar las deficiencias de Ristretto, cada una con sus propias fortalezas y debilidades. Finalmente, el autor desarrolló Otter v2, que incorpora lecciones aprendidas de sus predecesores y toma prestado de la biblioteca Caffeine de Java para lograr un alto rendimiento, altas tasas de acierto y funciones ricas, convirtiéndolo en uno de los principales contendientes entre las bibliotecas de caché Go.

Cazando un Higgs-Bugson: Depurando un Problema de NFS/Kerberos a Nivel de Kernel

2025-07-03
Cazando un Higgs-Bugson: Depurando un Problema de NFS/Kerberos a Nivel de Kernel

Los ingenieros encontraron un error difícil de reproducir que causaba fallos en la copia de archivos (-EACCES) en Gord, un sistema crítico de datos de trading. Deshabilitar Kerberos resolvió el problema, indicando problemas de autenticación. La investigación reveló que el kernel obtiene credenciales Kerberos a través del demonio rpc_gssd, pero los registros no mostraron anomalías. Las pruebas exhaustivas, incluida la creación de un sistema de archivos falso en memoria y el uso de bpftrace para el rastreo del kernel, finalmente identificaron el problema: una alta carga del servidor NFS provocó retransmisiones de solicitudes. El kernel manejó mal las solicitudes/respuestas con XIDs idénticos pero números de secuencia GSS diferentes, lo que provocó discrepancias de suma de comprobación y errores. El ingeniero corrigió el kernel para evitar la retransmisión inmediata debido a discrepancias en el número de secuencia.

Desarrollo error del kernel

10 Características Impresionantes del Lenguaje de Programación D

2025-07-03

Esta publicación amigable para principiantes explora diez características cautivadoras del lenguaje de programación D. Desde pequeñas mejoras en la calidad de vida hasta características importantes como constructores automáticos, diseño por contrato, ejecución de funciones en tiempo de compilación (CTFE) y pruebas unitarias integradas, el artículo proporciona explicaciones claras. Las poderosas capacidades de metaprogramación de D también se destacan, rivalizando con pocos lenguajes compilados estáticamente en flexibilidad y poder de modelado. La publicación también abarca características de sintaxis exclusivas de D, como el operador de dólar, la omisión de paréntesis y la sintaxis de llamada de función uniforme (UFCS), mejorando significativamente la legibilidad y la eficiencia del código. Además, D admite importaciones con alcance y selectivas y un generador de documentación integrado, mejorando aún más la mantenibilidad y la legibilidad del código. En resumen, D ofrece una combinación convincente de características para una programación eficiente y conveniente.

Desarrollo Características

¡Deja de construir agentes de IA!

2025-07-03
¡Deja de construir agentes de IA!

Hugo, un experto que asesora a equipos de Netflix, Meta y la Fuerza Aérea de EE. UU. en la construcción de sistemas basados en LLM, argumenta que muchos equipos adoptan prematuramente agentes de IA, lo que resulta en sistemas complejos y difíciles de depurar. Afirma que los flujos de trabajo más simples, como la concatenación, el procesamiento paralelo, el enrutamiento y los patrones de orquestador-trabajador, suelen ser más efectivos que los agentes complejos. Los agentes son la herramienta adecuada solo cuando se trata de flujos de trabajo dinámicos que requieren memoria, delegación y planificación. El autor comparte cinco patrones de flujo de trabajo LLM y enfatiza la importancia de construir sistemas observables y controlables. Evite los agentes para sistemas empresariales estables; son más adecuados para escenarios con intervención humana.

Gmailtail: Herramienta de monitorización de Gmail en línea de comandos

2025-07-03
Gmailtail: Herramienta de monitorización de Gmail en línea de comandos

Gmailtail es una herramienta de línea de comandos para la monitorización en tiempo real de mensajes de Gmail, con salida en JSON. Ofrece un filtrado flexible (remitente, asunto, etiquetas, adjuntos, etc.), múltiples formatos de salida (JSON, JSON Lines, compacto), autenticación OAuth2 y de cuenta de servicio, y puntos de control. Los usuarios pueden personalizar las reglas de monitorización mediante argumentos simples de línea de comandos o un archivo de configuración YAML, lo que lo hace ideal para la automatización, la monitorización y la integración con otras herramientas.

Desarrollo

El Ingenioso Truco XOR: Resolviendo Problemas de Entrevista Complejos

2025-07-03

Esta publicación desvela un ingenioso truco que utiliza el operador bit a bit XOR para resolver varios problemas comunes de entrevista. XOR posee propiedades únicas: números idénticos producen 0, números diferentes producen un valor distinto de cero, y el orden de las operaciones no afecta al resultado. Aprovechando estas propiedades, se pueden encontrar elegantemente números perdidos o duplicados en una matriz, incluso dos números perdidos/duplicados, sin recurrir a algoritmos complejos o estructuras de datos. La publicación explica progresivamente las aplicaciones del truco XOR con ejemplos de código, ofreciendo un enfoque eficiente y conciso para resolver problemas.

Desarrollo

Rails: El Milagro del Código Abierto y su Impacto en una Generación de Frameworks

2025-07-02
Rails: El Milagro del Código Abierto y su Impacto en una Generación de Frameworks

Lanzado en 2004 bajo la licencia MIT, Ruby on Rails revolucionó el desarrollo web con su libertad, flexibilidad y una sólida comunidad. Su filosofía de 'convención sobre configuración', el ORM ActiveRecord y las potentes herramientas de scaffolding mejoraron drásticamente la productividad del desarrollador, influyendo profundamente en frameworks posteriores como Laravel, Django y Phoenix. Rails demostró que el código abierto podía competir y superar las alternativas comerciales, estableciendo un modelo para otros y continuando dando forma al desarrollo web.

Desarrollo

IntyBASIC: Un compilador BASIC que revive el desarrollo de juegos para Intellivision

2025-07-02
IntyBASIC: Un compilador BASIC que revive el desarrollo de juegos para Intellivision

Inspirado por los desafíos del desarrollo de juegos para Intellivision, el autor creó IntyBASIC, un compilador BASIC para la consola Intellivision. Lanzado en 2014, IntyBASIC traduce código fuente BASIC a ensamblador CP1610, soportando las funciones de vídeo y sonido de Intellivision. Su éxito provocó un aumento de nuevos juegos y homebrews para Intellivision, incluso llevando a una competición de programación. El autor también escribió dos libros compartiendo ideas sobre el desarrollo de juegos, cubriendo técnicas básicas a avanzadas con el código fuente completo de los juegos incluido.

Desarrollo

Editor Visual de Flujos de Conversación de Chatbot

2025-07-02
Editor Visual de Flujos de Conversación de Chatbot

Una herramienta visual basada en navegador para diseñar, probar y exportar flujos de conversación de chatbot como JSON. Agrega nodos, edita contenido, prueba el flujo e importa/exporta JSON. El JSON exportado es compatible con cualquier aplicación de chatbot. Las opciones de instalación incluyen: instalar como dependencia de desarrollo, agregar a scripts de proyecto o instalación global.

Math.Pow(-1, 2) devuelve -1 en la versión Canary de .NET 8

2025-07-02
Math.Pow(-1, 2) devuelve -1 en la versión Canary de .NET 8

Un desarrollador del juego osu! reportó un problema extraño en la versión Canary de Windows 11 (27881.1000), donde `Math.Pow(-1, 2)` en .NET 8 devuelve inesperadamente -1 en lugar de 1. El problema también ocurre en la función `std::pow()` de C++, pero funciona correctamente en Python. El desarrollador ha abierto un issue en GitHub y sugiere unirse al servidor Discord de osu! para más detalles.

Desarrollo Error de Windows 11

¡Deja de decir 'Haz clic aquí'! - Cómo escribir mejores textos de enlace

2025-07-02

El W3C publicó una guía sobre cómo escribir textos de enlace más efectivos. Desaconseja el uso de frases mecánicas como 'haz clic aquí', sugiriendo en su lugar un texto conciso y significativo que describa claramente el contenido del enlace, no la mecánica del clic. El artículo también presenta las Consejos de QA del W3C, un recurso que ofrece consejos prácticos para desarrolladores y diseñadores web, incluyendo cómo enviar consejos y un índice de los existentes.

Desarrollo Texto de Enlace

Portabl E: Un Compilador AmigaE Multiplataforma

2025-07-02

Portabl E es una recreación del lenguaje de programación AmigaE, mejorado con mejoras y diseñado para compatibilidad multiplataforma. La versión r6b ya está disponible, con soporte completo para AmigaOS4, AROS y MorphOS, buen soporte para AmigaOS3 y funcionalidad básica para Linux/Windows. La descarga requiere el nombre de usuario "user" y la contraseña "password". El proyecto incluye código de ejemplo, capturas de pantalla, programas precompilados, documentación, foros y listas de correo para soporte comunitario.

Desarrollo

arXivLabs: Proyectos experimentales con colaboradores de la comunidad

2025-07-02
arXivLabs: Proyectos experimentales con colaboradores de la comunidad

arXivLabs es un marco que permite a los colaboradores desarrollar y compartir nuevas funciones de arXiv directamente en nuestro sitio web. Tanto las personas como las organizaciones que trabajan con arXivLabs han abrazado y aceptado nuestros valores de apertura, comunidad, excelencia y privacidad de datos de usuario. arXiv está comprometido con estos valores y solo trabaja con socios que se adhieran a ellos. ¿Tiene una idea para un proyecto que agregará valor a la comunidad de arXiv? Obtenga más información sobre arXivLabs.

Desarrollo

arXivLabs: Experimentos con Colaboración Comunitaria

2025-07-02
arXivLabs: Experimentos con Colaboración Comunitaria

arXivLabs es un marco para colaborar en el desarrollo y el intercambio de nuevas funciones de arXiv directamente en el sitio web. Las personas y organizaciones involucradas comparten los valores de arXiv de apertura, comunidad, excelencia y privacidad de datos del usuario. arXiv solo se asocia con aquellos que defienden estos valores. ¿Tienes alguna idea para mejorar la comunidad de arXiv? Obtén más información sobre arXivLabs.

Desarrollo

Construyendo una Fábrica de Código de IA Automejorable

2025-07-02
Construyendo una Fábrica de Código de IA Automejorable

Este artículo detalla la experiencia del autor construyendo una fábrica personal de código de IA utilizando los modelos de IA Claude, o3 y Sonnet. El principio fundamental es "arreglar las entradas, no las salidas": en lugar de corregir directamente el código generado, el autor ajusta los planes, las indicaciones o las combinaciones de agentes. La fábrica mejora iterativamente mediante la planificación (o3), la ejecución (Sonnet) y la verificación (o3 y Sonnet), utilizando Git worktrees para el desarrollo paralelo. El autor comparte estrategias de escalado, como la creación de agentes especializados y la aplicación de reglas de estilo de código consistentes. El objetivo final es un sistema de IA que genera, verifica y mejora autónomamente su propio código.

Desarrollo

Spegel: Un navegador de terminal que usa LLM para reescribir páginas web

2025-07-02
Spegel: Un navegador de terminal que usa LLM para reescribir páginas web

Spegel es un navegador web de terminal de prueba de concepto que utiliza LLMs para transformar HTML en Markdown, renderizándolo directamente en tu terminal. Creado como un proyecto de fin de semana, su practicidad se vio significativamente mejorada con el lanzamiento del Google Gemini 2.5 Pro Lite más rápido. Spegel permite vistas personalizadas a través de indicaciones personalizadas, como extraer solo la información esencial de una receta. Si bien no admite solicitudes POST, simplifica la navegación al centrarse en las necesidades definidas por el usuario, ofreciendo una experiencia más limpia y menos desordenada que los navegadores de terminal tradicionales.

arXivLabs: Proyectos experimentales con colaboradores de la comunidad

2025-07-02
arXivLabs: Proyectos experimentales con colaboradores de la comunidad

arXivLabs es un marco que permite a los colaboradores desarrollar y compartir nuevas funciones de arXiv directamente en nuestro sitio web. Las personas y organizaciones que trabajan con arXivLabs han adoptado y aceptado nuestros valores de apertura, comunidad, excelencia y privacidad de datos de usuario. arXiv está comprometido con estos valores y solo trabaja con socios que los respeten. ¿Tiene una idea para un proyecto que agregará valor a la comunidad de arXiv? Obtenga más información sobre arXivLabs.

Desarrollo

Edición Bidireccional en Tiempo Real entre Editor de Código y GUI a través de Servidor LSP

2025-07-02
Edición Bidireccional en Tiempo Real entre Editor de Código y GUI a través de Servidor LSP

Un programador construyó un sistema de prueba de concepto utilizando un servidor LSP para habilitar la edición bidireccional en tiempo real entre cualquier editor de código moderno y una GUI. Los cambios en el editor de código actualizan instantáneamente la GUI, y viceversa, resolviendo una limitación clave de los sistemas CAD basados en código existentes. Esto permite a los usuarios aprovechar sus editores preferidos mientras disfrutan de retroalimentación visual en tiempo real. Si bien actualmente es una pequeña demostración, muestra el potencial de los servidores LSP para construir herramientas CAD basadas en código más potentes.

Desarrollo

Claude genera un fractal de Mandelbrot en ensamblador x86

2025-07-02
Claude genera un fractal de Mandelbrot en ensamblador x86

Inspirado por un tuit, el autor desafió a la IA Claude a generar código ensamblador x86 para crear un fractal de Mandelbrot. Los intentos iniciales fallaron en la compilación, pero utilizando las capacidades de depuración y modificación iterativas de Claude Code, el autor compiló y ejecutó con éxito el código en un contenedor Docker, generando un fractal de arte ASCII satisfactorio. Esto demuestra las impresionantes habilidades de comprensión y depuración de código de Claude Code.

Un Bot de Discord que Salvó Nuestra Amistad

2025-07-01

En 2022, un grupo de amigos dispersos por todo el mundo luchó por mantenerse conectados durante la pandemia. Su grupo de Signal se convirtió en un caos, dificultando la coordinación de las noches de juego. Un amigo creó un bot simple de Discord que envía una notificación a un canal de texto cada vez que alguien se une a un canal de voz. Esta solución aparentemente pequeña no solo resolvió el problema de comunicación, sino que inesperadamente fomentó una mayor interacción diaria informal, convirtiéndose en una 'señal de murciélago' digital para encuentros espontáneos. Ahora, usan Discord casi todas las noches, incluso creando un evento anual "Discord Wrapped" para celebrar sus conexiones digitales.

Desarrollo

Los límites de abstracción son límites de optimización: Elevando abstracciones para la optimización de consultas de bases de datos

2025-07-01
Los límites de abstracción son límites de optimización: Elevando abstracciones para la optimización de consultas de bases de datos

El problema de la consulta N+1, donde una aplicación envía una consulta SQL por cada elemento de una colección, resulta de abstracciones con fugas. En lugar de reducir el límite de abstracción (por ejemplo, diciéndole explícitamente al ORM que obtenga datos en bloque), este artículo propone aumentarlo. Al integrar el ORM en el lenguaje, las reglas de reescritura pueden fusionar N consultas en una. Esto refleja el uso de reglas de reescritura en Haskell para la optimización de listas, aprovechando su naturaleza declarativa para abstraer la semántica operacional de bajo nivel para una mejor optimización. La conclusión principal: elevar el límite de abstracción también eleva el límite de optimización.

1 2 48 49 50 52 54 55 56 214 215