Category: Desarrollo

¡IPv4 caído? ¡Linux, WireGuard y Hetzner salvaron mi internet!

2025-06-29

Un corte de energía interrumpió mi conectividad a internet IPv4, dejando solo IPv6, pero muchos sitios web resultaron inaccesibles. Utilicé un servidor VPS de Hetzner, WireGuard y espacios de nombres de red de Linux para solucionar esto de forma inteligente. Configurando un servidor WireGuard en el VPS, creé un túnel para mi conexión IPv6, restaurando la funcionalidad IPv4. Los espacios de nombres de red me permitieron ejecutar mi VPN de trabajo y Docker sin interferir con WireGuard. También resolví problemas de MTU de WireGuard. Todo el proceso destacó la flexibilidad y el poder de resolución de problemas de Linux.

Desarrollo

Dos Programas Enigmáticos en Mathematica

2025-06-29

Este código muestra dos programas en Mathematica que generan secuencias numéricas. El primero utiliza bucles `Do` y `While` para construir iterativamente una secuencia cuyo patrón de crecimiento depende de la posición de los elementos precedentes. El segundo programa extiende la secuencia añadiendo acumulativamente diferencias anteriores, continuando hasta que la longitud supere 50. Ambos programas destacan la capacidad de Mathematica para generar secuencias intrincadas, con algoritmos que merecen una investigación adicional.

XLibre: Un Fork Rebelde de X11 Desafía el Dominio de Wayland

2025-06-29
XLibre: Un Fork Rebelde de X11 Desafía el Dominio de Wayland

Frustrado por el lento progreso y las deficiencias de Wayland, el desarrollador Enrico Weigelt lanzó XLibre, una mejora profunda de X11. XLibre no es solo una rama simple; es una revisión completa destinada a corregir las fallas de Wayland y ofrecer un rendimiento y una seguridad superiores. Weigelt afirma que fue expulsado del proyecto Xorg por Red Hat, lo que provocó un debate en la industria sobre el control de Red Hat sobre el desarrollo de Linux. Sorprendentemente, Fedora, una distribución derivada de Red Hat, está considerando reemplazar X11 con XLibre. El futuro de XLibre aún es incierto, pero indudablemente ha inyectado nuevas variables en el mundo del escritorio Linux.

Desarrollo

Drama en el Kernel de Linux: Bcachefs Eliminado

2025-06-29
Drama en el Kernel de Linux: Bcachefs Eliminado

El próximo kernel de Linux 6.17 eliminará el soporte para el sistema de archivos Bcachefs debido a las crecientes tensiones entre su mantenedor, Kent Overstreet, y Linus Torvalds. El conflicto surge de desacuerdos sobre las prácticas y el momento de envío del código, violando las reglas establecidas de la comunidad. Un punto central de controversia fue una nueva función 'journal-rewind' enviada durante la fase de candidato a lanzamiento, generando preocupaciones entre otros desarrolladores. A pesar de los argumentos de Overstreet sobre la integridad de los datos del usuario, Torvalds finalmente decidió eliminar Bcachefs por completo, marcando un evento notable en la historia del desarrollo del kernel de Linux.

Función Awk eficiente para el análisis JSON

2025-06-29

Este código implementa una función Awk robusta diseñada para analizar datos JSON y extraer el valor asociado a una clave especificada. Maneja objetos y matrices anidados, admite rutas de claves separadas por puntos y gestiona con elegancia varios tipos de datos JSON. Aprovechando las capacidades de manipulación de cadenas de Awk, la función recorre eficientemente la estructura JSON, localizando la clave de destino y devolviendo su valor correspondiente, mostrando el poder de Awk en el procesamiento de datos.

(akr.am)
Desarrollo

AGL: Un lenguaje de scripting conciso que se compila a Go

2025-06-29
AGL: Un lenguaje de scripting conciso que se compila a Go

AGL es un nuevo lenguaje de programación que se compila a Go. Utiliza la sintaxis de Go, pero introduce mejoras como valores de retorno únicos, tipos tupla y tipos result/option para un manejo de errores simplificado, funciones anónimas concisas y métodos de matriz integrados. AGL admite sobrecarga de operadores, enumeraciones y genéricos, y ofrece una extensión de VSCode y soporte shebang para shell, mejorando la experiencia del desarrollador. Su compilación flexible permite tanto la compilación a código Go como la ejecución directa, facilitando la iteración y las pruebas rápidas.

Desarrollo

arXivLabs: Colaboraciones Comunitarias en Nuevas Funciones de arXiv

2025-06-29
arXivLabs: Colaboraciones Comunitarias en Nuevas Funciones de arXiv

arXivLabs es un marco experimental que permite a los colaboradores desarrollar y compartir nuevas funciones de arXiv directamente en el sitio web de arXiv. Los individuos y las organizaciones involucradas comparten los valores de arXiv de apertura, comunidad, excelencia y privacidad de los datos de usuario. arXiv está comprometido con estos valores y solo trabaja con socios que los respeten. ¿Tiene una idea para un proyecto que beneficiará a la comunidad de arXiv? ¡Aprenda más sobre arXivLabs!

Desarrollo

MCP: El ecosistema de plugins universal accidental

2025-06-29
MCP: El ecosistema de plugins universal accidental

Este artículo explora los usos inesperados del MCP (Protocolo de Contexto del Modelo). Inicialmente diseñado para mejorar los asistentes de IA, su capacidad de "proporcionar una forma estandarizada de conectar modelos de IA a diferentes fuentes de datos y herramientas" trasciende el ámbito de la IA. Al igual que un puerto USB-C que puede conectar una tostadora a un monitor, el MCP se ha convertido en un ecosistema de plugins universal. Los desarrolladores pueden crear plugins funcionales sin necesidad de comprender el funcionamiento interno de otras aplicaciones. Esto mejora drásticamente la funcionalidad de la aplicación, creando aplicaciones inesperadas. Una aplicación de gestión de tareas, por ejemplo, puede usar servidores MCP para la corrección ortográfica, el pedido automático de café y mucho más.

Solicitud de Pasaporte del Reino Unido: Un Juego de Aventura Burocrático Resuelto con Haskell

2025-06-29

El proceso de solicitud de pasaporte del Reino Unido se compara con un juego online complejo por un programador. Los solicitantes deben reunir varios documentos, similar a la recolección de artefactos, para probar la ciudadanía británica. Las reglas son intrincadas, llenas de lógica burocrática, incluso requiriendo certificados de nacimiento de antepasados. Usando Haskell, el programador creó un programa que simula el proceso, generando todos los conjuntos posibles de documentos necesarios. Esto ayuda a comprender la complejidad y genera una discusión sobre la automatización de los procesos gubernamentales y la colaboración entre humanos y computadoras.

Caso de Marca Registrada JavaScript de Oracle: Una Lucha por el Código Abierto

2025-06-29
Caso de Marca Registrada JavaScript de Oracle: Una Lucha por el Código Abierto

El creador de Node.js está luchando contra la reclamación de Oracle sobre la marca registrada "JavaScript". Si bien se desestimó una reclamación de fraude, la disputa central radica en la genericidad y el abandono de la marca registrada. El demandante argumenta que "JavaScript" es un término genérico, no una marca de Oracle, y el uso por parte de Oracle de una captura de pantalla del sitio web de Node.js como evidencia aumenta aún más la controversia. El caso seguirá adelante, y Oracle deberá responder a las alegaciones de genericidad y abandono. El resultado determinará si "JavaScript" se libera de las restricciones de marca registrada y se devuelve a la comunidad.

Desarrollo

Equipo de pregrado ejecuta Xv6 en una CPU casera

2025-06-28

En 2015, un equipo de pregrado de la Universidad de Tokio abordó un proyecto ambicioso: diseñar, construir y ejecutar el sistema operativo Xv6 en una CPU casera con un ISA RISC personalizado. Durante cuatro meses, construyeron un compilador C desde cero, superaron numerosos desafíos en la comprensión e implementación de las características de CPU necesarias para un SO (interrupciones, gestión de memoria) y portaron con éxito Xv6, incluso añadiendo juegos como 2048 y Buscaminas. Su demostración final ejecutó el programa de trazado de rayos requerido encima de Xv6, mostrando una increíble ingenuidad y habilidades para resolver problemas. Este proyecto sirve como testimonio de las recompensas de reinventar la rueda y del valor educativo del aprendizaje práctico.

Desarrollo Diseño de CPU

Por qué los desarrolladores senior son más cruciales que nunca en la era de la generación de código de IA

2025-06-28
Por qué los desarrolladores senior son más cruciales que nunca en la era de la generación de código de IA

En la era de la generación de código impulsada por IA, los desarrolladores senior son más vitales que nunca. El artículo argumenta que un programa no es solo código, sino un modelo teórico construido sobre una comprensión profunda del sistema. El código generado por IA a menudo carece de esta base teórica, lo que lleva a bases de código incoherentes y a la acumulación de deuda técnica. Los desarrolladores senior construyen y mantienen esta estructura teórica, asegurando que el código se alinee con las necesidades del negocio y guiando a los desarrolladores junior para transformar el código disperso en programas coherentes. Por lo tanto, las organizaciones deben priorizar el intercambio de conocimiento y la herencia teórica para cultivar desarrolladores con bases teóricas sólidas, garantizando la calidad del software y la mantenibilidad a largo plazo.

Iniciativa de código abierto del compilador C Whitesmiths: Una leyenda regresa

2025-06-28
Iniciativa de código abierto del compilador C Whitesmiths: Una leyenda regresa

El compilador C Whitesmiths, lanzado originalmente en 1978, admitía arquitecturas como DEC PDP-11 e Intel 8080, está a punto de convertirse en código abierto. Su creador, P.J. Plauger, ha concedido permiso para su uso no comercial. Binarios y parte del código fuente para versiones que incluyen CP/M-80 y un compilador cruzado IBM System/36 ya están disponibles para su descarga. Este compilador históricamente significativo será un recurso valioso para el estudio de la historia y el desarrollo del lenguaje C.

Desarrollo

Nim Bare-Metal en Raspberry Pi: Una Aventura sin Cabeza

2025-06-28
Nim Bare-Metal en Raspberry Pi: Una Aventura sin Cabeza

Este proyecto detalla un entorno bare-metal para Raspberry Pi 1/Zero utilizando el lenguaje de programación Nim. Incluye un planificador cooperativo, un modelo de programación asíncrono y acceso directo al hardware sin APIs específicas del proveedor. El proyecto incluye gestión de memoria, manejo de excepciones y monitoreo del tiempo de ejecución, junto con instrucciones de configuración completas. Los planes futuros incluyen la expansión a más plataformas de destino y la adición de más controladores de periféricos.

Desarrollo

IA Generativa: Un Cambio de Paradigma en la Programación

2025-06-28
IA Generativa: Un Cambio de Paradigma en la Programación

Los Modelos de Lenguaje Grandes (LLM) están revolucionando el desarrollo de software, un cambio comparable a la transición del lenguaje ensamblador a los lenguajes de programación de alto nivel. El autor argumenta que los LLM no solo elevan el nivel de abstracción, sino que también introducen no determinismo, alterando fundamentalmente la naturaleza de la programación. La evolución de Fortran a Ruby mejoró la eficiencia, pero no cambió la esencia de la programación. El no determinismo introducido por los LLM exige que los programadores se adapten, presentando desafíos y oportunidades.

Desarrollo

Programación Multietapa con Variables Splice: Generación de Código Segura y Predecible

2025-06-28

Este artículo presenta una técnica novedosa llamada Programación Multietapa (MSP) que permite que los programas generen otros programas. Para asegurar una generación de código segura y predecible, los autores introducen el concepto de "variables splice". Las variables splice proporcionan un control preciso sobre el proceso de generación de código y se escalan sin problemas a características avanzadas como la coincidencia de patrones de código y la reescritura. El sistema de tipos rastrea automáticamente las dependencias de las variables, garantizando que el código generado siempre esté bien formado, correctamente definido y pase las comprobaciones de tipo. El artículo demuestra el poder de las variables splice con ejemplos como la generación de una función de potencia y muestra características como la coincidencia de patrones de código y la reescritura.

arXivLabs: Proyectos experimentales con colaboradores de la comunidad

2025-06-28
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 los datos de los usuarios. arXiv está comprometido con estos valores y solo trabaja con socios que los respetan. ¿Tiene una idea para un proyecto que agregue valor a la comunidad de arXiv? Obtenga más información sobre arXivLabs.

Desarrollo

Un controlador de kernel conciso en Rust: El ejemplo del controlador Ethernet AX88796B

2025-06-28

Este artículo detalla la experiencia de escribir un controlador de kernel de Linux para el controlador Ethernet integrado AX88796B usando Rust. El autor contrasta la versión de Rust con su contraparte en C, destacando las diferencias en sintaxis, tipos y API. La versión de Rust es notablemente concisa, con poco más de 100 líneas, aprovechando macros para simplificar el registro del controlador y utilizando traits y la macro `#[vtable]` para una integración perfecta con el código C existente. El artículo explica claramente las ventajas de Rust en el desarrollo de controladores de kernel, como las garantías de seguridad de memoria a través de referencias y el manejo de errores simplificado usando `Result` y el operador `try`, proporcionando información valiosa para el desarrollo de controladores de kernel en Rust.

bootc-image-builder: Crea imágenes de disco de arranque a partir de contenedores

2025-06-28
bootc-image-builder: Crea imágenes de disco de arranque a partir de contenedores

bootc-image-builder es una herramienta potente para crear imágenes de disco a partir de contenedores Fedora/CentOS bootc o derivados. Admite varios tipos de imagen (qcow2, AMI, ISO, etc.) y permite la personalización de usuarios, sistemas de archivos, parámetros del kernel y mucho más. Utilizando Podman y QEMU, los usuarios pueden crear y ejecutar máquinas virtuales fácilmente. Esta guía detalla su uso, opciones y configuraciones avanzadas, como la creación de AMIs en AWS y la personalización del instalador Anaconda.

Desarrollo

Expresiones extrañas en Rust: llevando el sistema de tipos al límite

2025-06-28
Expresiones extrañas en Rust: llevando el sistema de tipos al límite

Este artículo profundiza en algunas expresiones extremas y aparentemente contradictorias dentro del poderoso sistema de tipos del lenguaje de programación Rust. Al diseccionar ejemplos del archivo de prueba `weird-expr.rs`, como el uso creativo de `return true`, bucles anidados e instrucciones `break`, y una comprensión profunda de la inferencia de tipos y la coerción, el artículo explica su validez en Rust. Estas no son errores, sino más bien muestras del sistema de tipos flexible y del poder expresivo de Rust, demostrando su robustez en el manejo de casos extremos.

Desarrollo

El Adolescente de 14 Años que Dio Forma a la Calculadora Mac

2025-06-28

Chris Espinosa, un empleado de Apple de tan solo 14 años, jugó un papel fundamental en el desarrollo de Macintosh. Encargado de documentar Quickdraw, creó un programa de calculadora. Steve Jobs inicialmente no le gustó, pero la solución innovadora de Espinosa —un 'Steve Jobs Roll Your Own Calculator Construction Set' personalizable— impresionó a Jobs y se convirtió en la icónica calculadora Mac durante años, hasta OS 9.

Desarrollo

SymbolicAI: Un framework neuro-simbólico para LLMs

2025-06-28
SymbolicAI: Un framework neuro-simbólico para LLMs

SymbolicAI es un framework neuro-simbólico que combina la programación clásica en Python con la programación diferenciable de los LLMs. Su diseño modular permite una fácil extensión y personalización, permitiendo a los usuarios escribir sus propios motores, alojarlos localmente o interactuar con herramientas como la búsqueda web y la generación de imágenes. Los conceptos centrales son los objetos Símbolo (sintáctico y semántico) y los contratos (que garantizan la corrección del código mediante decoradores). SymbolicAI admite numerosas operaciones primitivas e integra motores neuro-simbólicos como OpenAI y Anthropic a través de APIs, junto con herramientas como Wolfram Alpha y motores de búsqueda. Un sistema de configuración basado en prioridades simplifica la administración.

Desarrollo

c4wa: Un compilador C a WebAssembly minimalista y eficiente

2025-06-28
c4wa: Un compilador C a WebAssembly minimalista y eficiente

c4wa es un compilador que traduce un subconjunto del lenguaje C a WebAssembly. A diferencia de otros compiladores, genera código WebAssembly minimalista y bien optimizado, sin ningún código auxiliar, bibliotecas incrustadas o sobrecarga. Es totalmente compatible con cualquier entorno de ejecución WASM sin configuración adicional. c4wa admite bucles, condicionales, structs, arrays, punteros y otras características típicas del lenguaje C, y puede generar código en formato WAT legible. Busca un equilibrio entre la comodidad de alto nivel del lenguaje C y la eficiencia de bajo nivel de WebAssembly, ofreciendo a los desarrolladores una nueva forma de escribir código WebAssembly de alto rendimiento.

Desarrollo

ZubanLS: Un servidor de lenguaje Python ultrarrápido construido en Rust

2025-06-27

En 2012, el autor creó Jedi, una biblioteca de autocompletado de Python ampliamente utilizada. Sin embargo, sus limitaciones de velocidad se hicieron evidentes. En 2020, el autor reconstruyó desde cero usando Rust, resultando en ZubanLS, el primer servidor de lenguaje Python verdaderamente rápido después de cinco años de trabajo dedicado. ZubanLS está dirigido a profesionales que necesitan precisión, confiabilidad y velocidad, abordando problemas de larga data en herramientas como Mypy y Pyright al priorizar el rendimiento sin sacrificar funciones. El soporte para Django, ir a la definición, completaciones y otras funciones LSP están en progreso. La versión inicial de 2025 puede no ser perfecta; se agradece la retroalimentación para dar forma al desarrollo futuro.

Desarrollo

Una aventura Lisp en las aguas muertas de C

2025-06-27

Este artículo explora el poder de las abstracciones de Lisp y las limitaciones de C, utilizando un lenguaje similar a C. El autor analiza las estrategias de evaluación de parámetros de función, destacando cómo el mecanismo de paso por valor de C restringe el control sobre los parámetros de la función, impidiendo la implementación de instrucciones condicionales y bucles flexibles como if, while y cond de Lisp. El artículo profundiza en características avanzadas como cierres y creación de funciones en tiempo de ejecución, no disponibles en C, concluyendo sobre las deficiencias de C en cuanto a extensibilidad.

Desarrollo

Comunidad Linux: ¿Fortaleza de la Libertad o Jaula de la Exclusión?

2025-06-27

Una publicación de blog provocó un acalorado debate sobre la inclusión en la comunidad de Linux. El autor compartió un comentario condescendiente y excluyente que criticaba el uso de "Linux" en lugar de "GNU/Linux" y lo acusaba de intentar "simplificar" el sistema. El autor replica que la verdadera "libertad" no debe producirse a expensas de los grupos marginados, destacando las graves fallas de accesibilidad en el ecosistema de Linux. Esto encendió un debate sobre la cultura de la comunidad, la importancia de la inclusión y la accesibilidad, y el respeto por quienes contribuyen a mejorar el sistema.

Desarrollo

zenta: Atención plena para programadores en la terminal

2025-06-27
zenta: Atención plena para programadores en la terminal

zenta es una herramienta nativa de terminal diseñada para ayudar a los programadores a mantener el enfoque durante la codificación. Guía a los usuarios de vuelta al momento presente mediante ejercicios de respiración simples, sin necesidad de seguimiento ni métricas. Un solo comando, `breath` o `breathe`, inicia sesiones de respiración cortas o más largas, ayudadas por animaciones visuales puras y citas tranquilizadoras. El comando `reflect` facilita una revisión diaria suave. zenta defiende la atención plena genuina, no la gamificación, enfatizando la presencia en lugar de trucos de productividad. Es compatible con varios sistemas operativos y es de código abierto bajo la licencia MIT.

Desarrollo

Optimización del rendimiento de la multiplicación de matrices BQN: Bloqueo de caché y dividir y conquistar

2025-06-27

Este artículo explora la optimización del rendimiento de la multiplicación de matrices grandes utilizando el lenguaje BQN. El autor primero utiliza un método simple de particionamiento cuadrado para utilizar eficazmente la caché, logrando una aceleración de aproximadamente seis veces. Luego, se introduce un algoritmo de Strassen basado en una estrategia de dividir y conquistar y se demuestra experimentalmente que alcanza una aceleración de hasta 9 veces en matrices grandes. El artículo también compara el impacto en el rendimiento de diferentes tamaños de bloque y estrategias de mosaico anidado, concluyendo que se ha alcanzado esencialmente el límite de rendimiento de una implementación BQN pura y de un solo hilo.

Desarrollo

Cálculo de Fibonacci extremadamente rápido en la GPU con Thrust

2025-06-27
Cálculo de Fibonacci extremadamente rápido en la GPU con Thrust

Esta publicación de blog demuestra cómo realizar cálculos de secuencia de Fibonacci increíblemente rápidos utilizando programación de GPU y la biblioteca NVIDIA Thrust. Comienza explicando el algoritmo de exploración, luego muestra cómo usar operaciones de exploración en Thrust para suma y multiplicación simples, extendiéndolas a operaciones de matriz. Finalmente, ilustra el cálculo de números de Fibonacci de manera eficiente mediante operaciones de matriz y la operación de exploración, utilizando aritmética modular para evitar el desbordamiento de enteros. El autor calcula F99999999 (mod 9837) en solo 17 milisegundos en una GPU NVIDIA GeForce RTX 3060 Mobile.

Localidad de caché y rendimiento de la suma de matrices: Un experimento sorprendente

2025-06-27

Este artículo explora el impacto del orden de los elementos de una matriz en el rendimiento de la suma mediante experimentos. El autor compara métodos de acceso secuencial y aleatorio, descubriendo que el rendimiento del acceso aleatorio se degrada drásticamente cuando el tamaño de la matriz excede la capacidad de la caché, mientras que el acceso secuencial permanece relativamente estable. Los experimentos también investigan archivos asignados en memoria y diferencias entre plataformas, revelando que el manejo de archivos asignados en memoria por el sistema operativo afecta significativamente al rendimiento. La conclusión: el acceso secuencial es óptimo para la suma de matrices grandes, mientras que los datos más grandes que la memoria requieren algoritmos y estrategias de lectura de datos más eficientes.

Desarrollo localidad de caché
1 2 50 51 52 54 56 57 58 214 215