Category: Desarrollo

AgentAPI: Una API HTTP unificada para controlar agentes de codificación

2025-04-17
AgentAPI: Una API HTTP unificada para controlar agentes de codificación

AgentAPI es una potente API HTTP diseñada para controlar agentes de IA de codificación como Claude Code, Goose, Aider y Codex. Ofrece una interfaz de chat unificada, permitiendo la interacción mediante simples llamadas a la API. Los usuarios incluso pueden construir un servidor MCP donde un agente controla a otro. AgentAPI maneja automáticamente la salida de la terminal, eliminando la información redundante y analizándola en mensajes individuales, simplificando la interacción. Si bien los LLM pueden lanzar SDK oficiales en el futuro, AgentAPI busca ser un adaptador universal, permitiendo a los desarrolladores cambiar fácilmente entre agentes de IA de codificación.

Desarrollo

Ubuntu 25.04 “Plucky Puffin”: Rendimiento mejorado y seguridad reforzada

2025-04-17
Ubuntu 25.04 “Plucky Puffin”: Rendimiento mejorado y seguridad reforzada

Canonical ha lanzado Ubuntu 25.04, con nombre en clave “Plucky Puffin”, que incluye GNOME 48, una experiencia de instalación e inicio mejorada y un nuevo “devpack” para el framework Spring. Esta versión ofrece mejoras de rendimiento para las cargas de trabajo de IA en GPU Intel y soporte para la computación confidencial usando AMD SEV-SNP. El kernel de Linux 6.14 incluye una programación mejorada y un nuevo controlador NTSYNC para un mejor rendimiento de los juegos de Windows en Wine y Proton. Ubuntu 25.04 también incluye las últimas cadenas de herramientas, una gestión mejorada y controles de red, y soporte ampliado para procesadores Intel Core Ultra y hardware ARM64.

Desarrollo

Servidor MCP para ejecutar código Python en un sandbox

2025-04-17
Servidor MCP para ejecutar código Python en un sandbox

Este artículo presenta un servidor Model Context Protocol (MCP) que ejecuta código Python en un entorno de espacio aislado (sandbox) utilizando Pyodide dentro de Deno, proporcionando aislamiento del sistema operativo. El servidor admite varios modos: entrada/salida estándar (stdio), eventos enviados por el servidor (SSE) y un modo de calentamiento para pruebas e implementación. Un ejemplo que usa PydanticAI demuestra la interacción con LLMs a través de un agente utilizando este servidor MCP.

Desarrollo

Vulnerabilidad crítica en el servidor SSH de Erlang/OTP permite la ejecución remota de código sin autenticación

2025-04-17

Se ha descubierto una vulnerabilidad crítica (CVE-2025-32433) en el servidor SSH de Erlang/OTP que permite la ejecución remota de código (RCE) sin autenticación. Las versiones anteriores a OTP-27.3.3, OTP-26.2.5.11 y OTP-25.3.2.20 se ven afectadas. Los atacantes pueden explotar un fallo en el manejo de mensajes del protocolo SSH para obtener acceso no autorizado y ejecutar comandos arbitrarios sin credenciales. Hay parches disponibles; actualice a OTP-27.3.3, OTP-26.2.5.11 o OTP-25.3.2.20 o posterior.

Desarrollo

Inmersión profunda en 3FS: El sistema de archivos distribuido de código abierto de DeepSeek

2025-04-17

DeepSeek lanzó 3FS (Fire-Flyer File System), un sistema de archivos distribuido. Esta publicación explica los sistemas de archivos distribuidos y la arquitectura de 3FS. 3FS consta de cuatro tipos de nodos: Meta (gestión de metadatos), Mgmtd (servidor de gestión), Almacenamiento y Cliente. Utiliza el protocolo CRAQ (Chain Replication with Apportioned Queries) para lograr una consistencia fuerte. La publicación analiza las características de rendimiento de 3FS y describe las futuras direcciones de prueba de rendimiento y mejoras.

Desarrollo

go-mcp: Un SDK Go Tipado para el Desarrollo de Servidores MCP

2025-04-17
go-mcp: Un SDK Go Tipado para el Desarrollo de Servidores MCP

go-mcp es un SDK Go que simplifica el desarrollo de servidores MCP (Model Context Protocol). Su interfaz intuitiva y con tipado seguro agiliza el proceso. La generación de código garantiza el tipado estático para herramientas y parámetros de prompt, capturando errores en tiempo de compilación. La API limpia y el diseño amigable para el desarrollador facilitan el aprendizaje y el uso. El proyecto incluye ejemplos y documentación exhaustivos, con soporte para funciones como herramientas, prompts, gestión de recursos y registro. Si bien la adición dinámica de herramientas no se admite actualmente, el desarrollo futuro incluirá procesamiento por lotes, transporte HTTP transmisible y notificaciones de progreso. El proyecto tiene licencia MIT.

Desarrollo

Tiempos de compilación de Rust: de 25 minutos a 2 minutos

2025-04-17
Tiempos de compilación de Rust: de 25 minutos a 2 minutos

El equipo de Feldera encontró tiempos de compilación excesivamente largos al compilar código Rust generado a partir de SQL a gran escala. Un programa SQL de 8.562 líneas traducido a ~100.000 líneas de Rust tardaba 25 minutos en compilar. Técnicas como la eliminación de tipos y la desduplicación de código produjeron mejoras mínimas. La solución llegó al dividir el código Rust generado en 1.106 crates más pequeños, permitiendo la compilación paralela y reduciendo drásticamente el tiempo de compilación a menos de 2 minutos, utilizando completamente los procesadores multinúcleo.

Configurando un entorno de desarrollo Linux en Apple Silicon con UTM

2025-04-17
Configurando un entorno de desarrollo Linux en Apple Silicon con UTM

Esta guía muestra cómo configurar un entorno de desarrollo Linux en Macs con chip Apple Silicon usando máquinas virtuales UTM. Después de instalar UTM y cdrtools a través de Homebrew, un script cloud-init automatiza el proceso de instalación de herramientas de desarrollo esenciales, como Git, Docker y la configuración del acceso SSH. El artículo describe la creación de la VM, la importación de imágenes, la configuración del script cloud-init y la eliminación de unidades temporales, lo que resulta en un entorno de desarrollo Linux funcional.

Desarrollo

Programación diferenciable: Una inmersión profunda desde los principios básicos

2025-04-17

Este artículo proporciona una explicación completa de la programación diferenciable, comenzando por la definición de derivadas en cálculo y avanzando hacia conceptos como gradientes, derivadas direccionales y matrices jacobianas. Se detallan tres métodos de diferenciación: diferenciación numérica, diferenciación simbólica y diferenciación automática (modos hacia adelante y hacia atrás), comparando sus fortalezas y debilidades. Finalmente, se demuestra cómo la diferenciación automática en modo inverso, combinada con el descenso de gradiente, puede resolver problemas de optimización del mundo real utilizando un ejemplo de desenfoque de imagen.

arXivLabs: Proyectos experimentales con colaboradores de la comunidad

2025-04-17
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 adoptado y aceptado nuestros valores de apertura, comunidad, excelencia y privacidad de los datos de los usuarios. arXiv está comprometido con estos valores y solo trabaja con socios que los respetan. ¿Tienes una idea para un proyecto que agregará valor a la comunidad de arXiv? Obtén más información sobre arXivLabs.

Desarrollo

Más allá de NP: Un Problema de Complejidad Más Intuitivo

2025-04-17
Más allá de NP: Un Problema de Complejidad Más Intuitivo

El autor cuestiona el uso del Problema de la Parada como el ejemplo canónico de un problema más difícil que NP-completo, argumentando que es confuso e intuitivamente poco claro. Si bien es indecidible, la verificación de una respuesta "sí" para el Problema de la Parada se puede hacer ejecutando el programa durante un número finito de pasos. Se presenta una alternativa más fácil de entender: mover una ficha en una cuadrícula infinita para alcanzar un punto objetivo. Este problema es PSPACE-completo en dimensiones inferiores, pero su complejidad explota al aumentar las dimensiones, llegando eventualmente a la completitud de ACKERMANN, demostrando visualmente una complejidad mucho mayor que los problemas NP.

Formance: Redefiniendo la interacción entre desarrolladores y finanzas

2025-04-17
Formance: Redefiniendo la interacción entre desarrolladores y finanzas

Formance tiene la misión de redefinir cómo los desarrolladores interactúan con el dinero como un primitivo de primera clase y lo componen con las finanzas. Actualmente oculto en infraestructuras con permisos y bloqueadas por proveedores, el dinero necesita recablearse para empoderar a las empresas centradas en el producto con la capacidad de crear aplicaciones financieras innovadoras. Con la plataforma Formance, estamos poniendo primitivas agnósticas en manos de los ingenieros y sus equipos. Estas primitivas están disponibles como paquetes de código abierto y se pueden conectar al socio financiero de su elección. Formance es nativa global y presta servicios a empresas de todo el mundo, las 24 horas del día, para construir y escalar sus aplicaciones financieras.

Desarrollo

Por qué los Frameworks son Malignos: Un Caso para las Bibliotecas

2025-04-17
Por qué los Frameworks son Malignos: Un Caso para las Bibliotecas

Este artículo profundiza en los principios de diseño de bibliotecas funcionales, centrándose en la composabilidad y evitando las devoluciones de llamada. El autor argumenta que los frameworks son difíciles de componer, explorar y probar, y restringen la estructura del código. En contraste, las bibliotecas ofrecen un mayor control al desarrollador, fomentan la exploración interactiva y admiten múltiples capas de abstracción. Usando un motor de juego como ejemplo, el artículo demuestra cómo los flujos de trabajo asíncronos y la programación basada en eventos pueden mitigar las desventajas de las devoluciones de llamada. Ejemplos como FsLab ilustran la composabilidad de las bibliotecas. Finalmente, el autor aboga por la construcción de bibliotecas componibles y fáciles de explorar en lugar de frameworks rígidos.

Gemas ocultas en stdint.h de C: Más allá de limits.h para definiciones de tipos enteros

2025-04-17
Gemas ocultas en stdint.h de C: Más allá de limits.h para definiciones de tipos enteros

Esta publicación de blog relata el descubrimiento inesperado del autor sobre definiciones de tipos enteros mientras aprendía C. En los primeros días de C, el tamaño de los enteros variaba mucho en diferentes arquitecturas, lo que llevó a los proveedores de compiladores a crear definiciones de tipos personalizadas, como types.h de Microware. Más tarde, el estándar ANSI C introdujo stdint.h, proporcionando definiciones de tipos estándar como uint32_t y definiciones de valores máximos como INT_MAX de limits.h. Sin embargo, el autor descubrió recientemente que stdint.h también incluye definiciones como INT8_MAX y UINT32_MAX, que se pueden usar directamente para definir los valores máximo y mínimo de tipos enteros de tamaños específicos, haciendo que el código sea más portátil y evitando errores causados por diferencias de plataforma.

Desarrollo tipos enteros

Concurrencia en Haskell: Escape del Infierno de los Hilos

2025-04-17

Este artículo relata el viaje del autor desde el desarrollo de sistemas embebidos en C/C++/Rust hasta Haskell, destacando las ventajas de Haskell en la programación concurrente. Haskell utiliza hilos verdes y E/S dirigida por eventos, evitando las complejidades de los modelos tradicionales de hilos. A través del paquete `async` y STM (Software Transactional Memory), Haskell ofrece un enfoque más limpio y seguro para las tareas concurrentes. Funciones como `concurrently`, `race` y `mapConcurrently`, junto con estructuras de datos como `TVar` y `TBQueue`, simplifican las operaciones concurrentes y evitan problemas comunes de concurrencia, como bloqueos y condiciones de carrera.

Desarrollo

Biblioteca de funciones trigonométricas en Nix puro: abandonando Python para mejorar el rendimiento

2025-04-17
Biblioteca de funciones trigonométricas en Nix puro: abandonando Python para mejorar el rendimiento

Para calcular la latencia de red entre sus 17 nodos VPS sin pruebas manuales de ping, el autor intentó aproximar la latencia calculando la distancia física entre las coordenadas de los nodos usando Nix. Como faltaban funciones trigonométricas nativas en Nix, implementó las funciones sin, cos, tan, arctan y sqrt en Nix puro y usó la fórmula de Haversine para calcular las distancias y las latencias. Este proyecto evita dependencias externas como Python, mejorando la eficiencia y la reproducibilidad.

Desarrollo Trigonometría

Clases de Tipo en Kotlin y Validación de Datos: Un Enfoque con Arrow

2025-04-17
Clases de Tipo en Kotlin y Validación de Datos: Un Enfoque con Arrow

Este artículo explora el uso de clases de tipo en Kotlin para la validación de datos. Utilizando un sistema de validación de portafolios de usuario de una startup de fintech como ejemplo, el autor demuestra cómo construir un framework de validación genérico y reutilizable usando la biblioteca Arrow Kt y los receptores de contexto de Kotlin. El artículo compara enfoques orientados a objetos y de clases de tipo, destacando las ventajas de las clases de tipo para el mantenimiento y la extensibilidad, y muestra cómo utilizar el tipo `EitherNel` de Arrow para el manejo funcional de errores. Se explica en detalle el uso de `zipOrAccumulate`.

¡Adiós Spotify! Mi viaje para autohospedar mi música

2025-04-17
¡Adiós Spotify! Mi viaje para autohospedar mi música

Cansado de Spotify, me embarqué en la búsqueda del reemplazo perfecto. Probé Winamp, foobar2000 e incluso construí mi propio reproductor de música web, antes de decidirme por Jellyfin. Jellyfin es un servidor de medios autohospedado que me permite acceder a mi biblioteca de música en cualquier momento y lugar, sin depender de servicios de streaming. Si bien requiere algo de configuración técnica, es sorprendentemente fácil, incluso en una computadora antigua. Combinado con aplicaciones móviles, escuchar música sin conexión es muy sencillo. Esto no solo me brindó autonomía digital, sino que también abrió las puertas para autohospedar otras aplicaciones, como Immich para la gestión de fotos.

Paradoja de Compresión ZFS: Bloques Lógicos vs. Bloques Físicos

2025-04-17

Un archivo cero de 256 KB creado con `dd` en un sistema de archivos ZFS con compresión habilitada muestra un comportamiento desconcertante: `ls -l` muestra su tamaño como 256 KB, pero `ls -s` y `ls -slh` muestran un tamaño mucho menor, casi cero. Esto se debe a la eficiente compresión de ZFS, resultando en un número mínimo de bloques físicos. El artículo explora tres maneras de medir el tamaño del archivo: tamaño lógico (en bytes), conteo de bloques físicos y conteo de bloques lógicos. Señala que el campo `st_blocks` de POSIX no especifica qué tamaño reportar, lo que lleva a posibles cambios en el valor de `st_blocks` al mover archivos entre sistemas de archivos, e incluso a una posible expansión del tamaño del archivo que excede la capacidad del nuevo sistema de archivos.

Desarrollo

Motores de Consulta de Bases de Datos: Push vs. Pull

2025-04-16

Este artículo profundiza en las diferencias entre los motores de consulta de bases de datos basados en push y pull. Los sistemas basados en pull, similares al modelo iterador, son impulsados por el consumidor, donde los datos se recuperan a demanda. Los sistemas basados en push, por el contrario, son impulsados por el productor, empujando activamente los datos a los operadores posteriores. Los sistemas basados en push sobresalen en el manejo de planes de consulta en forma de DAG (por ejemplo, la cláusula WITH de SQL) debido a su capacidad de empujar datos eficientemente a múltiples operadores posteriores, evitando cálculos redundantes y almacenamiento en búfer innecesario. Sin embargo, los sistemas basados en pull ofrecen ventajas al manejar ciertos algoritmos (como las uniones de mezcla y las cláusulas LIMIT). El artículo también examina la eficiencia de la caché, la simplicidad del código y la idoneidad de cada modelo en diferentes escenarios, concluyendo que ninguno es universalmente superior, y la elección depende de los requisitos específicos.

Desarrollo motor de consulta

Plandex: Agente de Codificación con IA para Proyectos Grandes

2025-04-16
Plandex: Agente de Codificación con IA para Proyectos Grandes

Plandex es una herramienta de desarrollo de IA basada en terminal diseñada para abordar grandes tareas de codificación que abarcan múltiples pasos y numerosos archivos. Maneja hasta 2 millones de tokens de contexto directamente (~100k por archivo), y puede indexar directorios con 20 millones de tokens o más usando mapas de proyecto tree-sitter. Un sandbox de revisión de diferencias acumulativas mantiene las modificaciones generadas por IA separadas hasta que estén listas, y la ejecución de comandos está controlada para facilitar la reversión y la depuración. Plandex combina modelos de Anthropic, OpenAI, Google y proveedores de código abierto, ofreciendo tanto autonomía total como control granular, lo que lo hace resistente a las complejidades de los proyectos grandes. Cuenta con un modo de chat consciente del proyecto, integración con Git y una interfaz CLI amigable para desarrolladores.

Desarrollo proyectos grandes

Optimización de Programas: Cuatro enfoques antes de reescribir

2025-04-16

La ejecución lenta de programas es un problema común para los programadores. El autor, basándose en años de experiencia en optimización, presenta cuatro enfoques: 1. Usar un mejor algoritmo; 2. Usar una mejor estructura de datos; 3. Usar un sistema de bajo nivel; 4. Aceptar una solución menos precisa. El artículo utiliza la ordenación por burbuja y la ordenación por selección como ejemplos para ilustrar la importancia de la selección de algoritmos, enfatizando la necesidad de considerar factores prácticos al elegir estructuras de datos e idiomas de programación. El autor advierte contra la optimización prematura y enfatiza la importancia de un perfil riguroso antes de intentar la optimización.

Codex: Un agente de codificación ligero para tu terminal

2025-04-16
Codex: Un agente de codificación ligero para tu terminal

Codex es un agente de codificación ligero que se ejecuta en tu terminal, utilizando la API de OpenAI para razonamiento de código a nivel de ChatGPT. Ofrece modos interactivos y no interactivos, automatizando la finalización del código, la ejecución, la instalación de dependencias e incluso la generación de pruebas unitarias. Un entorno seguro de ejecución (sandbox) garantiza la seguridad. Los usuarios pueden personalizar instrucciones y modos de aprobación, abordando tareas desde explicaciones de código simples hasta refactorizaciones complejas. Compatible con múltiples sistemas operativos y de código abierto para contribuciones de la comunidad, Codex simplifica los flujos de trabajo de desarrollo.

Desarrollo

Licencia Llama 3.3: ¿La estás cumpliendo realmente?

2025-04-16
Licencia Llama 3.3: ¿La estás cumpliendo realmente?

Aunque se comercializa como código abierto, la licencia Llama 3.3 de Meta contiene restricciones que muchos desarrolladores pueden pasar por alto. El artículo destaca el requisito de mostrar de forma destacada "Built with Llama" al distribuir el modelo o sus derivados, y de anteponer "Llama-" a los nombres de los modelos derivados. Además, la Política de Uso Aceptable exige la divulgación de los riesgos conocidos del sistema de IA, como sesgos o imprecisiones, a los usuarios finales. El autor insta a los desarrolladores a revisar cuidadosamente la licencia y decidir si cumplen o no, evitando posibles problemas legales.

Desarrollo

Codex CLI de OpenAI: un agente de codificación con IA local

2025-04-16
Codex CLI de OpenAI: un agente de codificación con IA local

OpenAI lanzó Codex CLI, un agente de codificación local que se ejecuta desde tu terminal. Conecta los modelos de OpenAI (incluidos los nuevos o3 y o4-mini) con código local y tareas, permitiendo que la IA escriba, edite código y realice acciones como mover archivos. Esto representa un paso hacia la visión de OpenAI de un 'ingeniero de software agente'. De código abierto y ligero, Codex CLI cuenta con un programa de subvenciones de API de $1 millón para proyectos de desarrollo de software. Si bien las herramientas de codificación con IA presentan riesgos inherentes, Codex CLI ofrece un nuevo enfoque para la programación asistida por IA.

Desarrollo

RakuAST: Una Reescritura Hercúlea de un Frontend de Compilador

2025-04-16

El proyecto RakuAST llevó a cabo una reescritura completa y un rediseño del frontend del compilador del lenguaje de programación Raku. El autor abordó el proyecto corrigiendo sistemáticamente las pruebas de especificación fallidas, una por una. Esto implicó abordar las complejidades de la sintaxis de Raku, incluidos los métodos privados, los metamétodos y las llamadas a hipermétodos. El mayor obstáculo fue el complejo tiempo y la secuencia necesarios dentro del proceso de compilación de Raku, requiriendo un control preciso sobre el orden de la compilación de los componentes. Después de más de 900 confirmaciones, el proyecto logró con éxito su objetivo principal. Además, inicializó el compilador, permitiendo la autocompilación, lo que presentó más desafíos en la gestión de dependencias circulares y las complejidades de la extensa biblioteca estándar. El éxito del proyecto fue ayudado por las contribuciones de varios miembros de la comunidad.

Desarrollo

Resolviendo la crisis de CVE: Certificación profesional e informes obligatorios de vulnerabilidades

2025-04-16

La inminente expiración del contrato CVE de MITRE provocó controversia, lo que llevó a una propuesta para mejorar la seguridad del software. El sistema CVE actual está plagado de informes imprecisos, lo que disminuye su valor. El autor sugiere un sistema basado en atributos de vulnerabilidad en lugar de puntuaciones, junto con la certificación de Ingeniero de Software Profesional (PSWE). El fracaso en informar con precisión las vulnerabilidades dentro de un plazo resultaría en la revocación de la licencia, incentivando los informes. La propuesta incluye financiación y formación para futuros PSWEs, abordando las preocupaciones de accesibilidad, creando, en última instancia, un escenario win-win para la seguridad del software y la sostenibilidad de los proyectos FOSS.

Reviviendo el UCSD p-System: Una leyenda de compilación multiplataforma

2025-04-16
Reviviendo el UCSD p-System: Una leyenda de compilación multiplataforma

El autor revisita el UCSD p-System, un sistema operativo y compilador multiplataforma de la década de 1970. Alcanzó la portabilidad en diversas máquinas (desde PDP-11 hasta Apple II) a través de su máquina virtual p-machine. El autor comparte experiencias personales usando Apple Pascal y UCSD Pascal en la escuela secundaria y planea reconstruir un emulador p-machine en Rust, continuando su legado y solucionando problemas con la documentación faltante y las dependencias de compiladores obsoletos en las herramientas existentes.

Desarrollo

Agentes de 12 Factores: Principios para construir aplicaciones LLM fiables

2025-04-16
Agentes de 12 Factores: Principios para construir aplicaciones LLM fiables

Este artículo explora los principios para construir software impulsado por LLM fiable, escalable y fácil de mantener: los Agentes de 12 Factores. El autor argumenta que los frameworks de agentes existentes se quedan cortos en producción, y que muchos de los llamados "Agentes de IA" son principalmente código determinista salpicado de pasos LLM. El autor propone principios para construir agentes más robustos, enfatizando un enfoque modular que consiste en incorporar conceptos de agentes pequeños y modulares en productos existentes, evitando reescrituras ineficientes de campo verde. Esta es una lectura valiosa para ingenieros y emprendedores centrados en el desarrollo de aplicaciones de IA.

Desarrollo

ActorCore: Serverless con Estado que se Ejecuta en Cualquier Lugar

2025-04-16
ActorCore: Serverless con Estado que se Ejecuta en Cualquier Lugar

ActorCore es un framework en TypeScript para construir fácilmente aplicaciones con estado, agentes de IA, colaborativas o locales. Elimina la necesidad de bases de datos y ORMs, ofreciendo velocidades de lectura/escritura ultrarrápidas al almacenar el estado en la misma máquina que el cómputo. Implementa en plataformas como Rivet, Cloudflare, Bun, Node.js y más. Los eventos integrados de baja latencia permiten actualizaciones de estado en tiempo real y cambios de transmisión. Su almacenamiento de datos en el edge exclusivo proporciona interacciones instantáneas. Si bien actualmente no es ideal para OLAP, data lakes, bases de datos de grafos y datos altamente relacionales, está en constante mejora y busca convertirse en la forma universal de construir y escalar aplicaciones serverless con estado.

Desarrollo modelo actor
1 2 110 111 112 114 116 117 118 214 215