Category: Desarrollo

Indexación eficiente en frameworks de aprendizaje profundo: Una comparación de Torch, TensorFlow y Einops

2025-09-24

Este artículo compara diferentes enfoques para la indexación eficiente de matrices en PyTorch, TensorFlow y Einops. Al contrastar `torch.gather`, `torch.take_along_dim`, `torch.index_select`, `torch.take`, `tf.gather`, `tf.gather_nd` y `einx.get_at` de Einops, muestra sus diferencias de flexibilidad y eficiencia en el manejo de diferentes dimensiones e indexación por lotes, proporcionando a los desarrolladores una referencia para elegir la solución óptima.

Fortran vs. Python: Un hallazgo inesperado en la enseñanza de la computación científica a estudiantes de ingeniería

2025-09-24
Fortran vs. Python: Un hallazgo inesperado en la enseñanza de la computación científica a estudiantes de ingeniería

Un profesor que lleva más de 10 años impartiendo una clase introductoria de computación científica utilizando Python, cuestiona si Python es la opción óptima para principiantes, especialmente en álgebra lineal numérica. Argumenta que un lenguaje fuertemente tipado como Fortran podría ofrecer una mejor experiencia de aprendizaje. La flexibilidad de Python, si bien es conveniente, conduce a errores comunes entre los estudiantes: confusión con la biblioteca numpy, errores de sangría y errores de desbordamiento por uno debido a la indexación basada en cero. En contraste, el tipado fuerte de Fortran y las estructuras de bucle explícitas ayudan a los estudiantes a comprender mejor los algoritmos y reducir los errores. El artículo utiliza el método de Jacobi y la descomposición QR como ejemplos, comparando las implementaciones en Python y Fortran y argumentando las ventajas potenciales de Fortran en la enseñanza, a pesar del ecosistema más amplio y la versatilidad de Python.

Actualizado: Libro de Introducción a los Lenguajes de Programación

2025-09-24

Los profesores Jaemin Hong y Sukyoung Ryu del KAIST han publicado una versión actualizada de su libro de texto, "Introducción a los Lenguajes de Programación". Este libro introductorio abarca conceptos fundamentales de los lenguajes de programación, incluyendo la sintaxis, la semántica, los sistemas de tipos y las implementaciones de intérpretes/comprobadores de tipos. Los autores alientan su uso por cualquier persona que esté aprendiendo o enseñando estos conceptos y reconocen las contribuciones de los estudiantes y asistentes de enseñanza. La última edición incluye correcciones de errores tipográficos y márgenes de página reducidos.

Desarrollo

¡Podman Desktop supera los 3 millones de descargas!

2025-09-24
¡Podman Desktop supera los 3 millones de descargas!

Podman Desktop, una aplicación de escritorio para gestionar contenedores y Kubernetes, ha alcanzado el impresionante hito de 3 millones de descargas. Este éxito se debe al fuerte apoyo de la comunidad y a las mejoras continuas, incluyendo flujos de trabajo más fluidos de Kubernetes, una mejor compatibilidad con Docker y mejoras en la usabilidad diaria. Podman Desktop también se ha unido al proyecto CNCF Sandbox y está siendo adoptado por cada vez más empresas. El equipo agradece los comentarios de los usuarios y se compromete a realizar mejoras continuas para ofrecer a los desarrolladores una experiencia de gestión de contenedores y Kubernetes aún más eficiente.

Desarrollo

Registro de actualizaciones del proyecto Vterm: Mejoras continuas de rendimiento y funciones

2025-09-24

El desarrollador de Vterm, Tom Szilagyi, ha realizado numerosas confirmaciones recientemente, que abarcan optimizaciones de rendimiento, correcciones de errores y nuevas funciones. Estas actualizaciones incluyen mejoras en el rendimiento de la GPU, la corrección de un error de signo, la adición de nuevas opciones de línea de comandos y el refinamiento de la representación de caracteres y la visualización de subrayados. Las mejoras continuas del código mejoran la estabilidad y la eficiencia de Vterm.

fetch_max de Rust: Una inmersión profunda en la optimización del compilador

2025-09-24
fetch_max de Rust: Una inmersión profunda en la optimización del compilador

Durante una reciente entrevista de ingeniería, un candidato usó una sola línea de código Rust para resolver un problema clásico de concurrencia: rastrear el valor máximo en múltiples subprocesos productores. Esto despertó la curiosidad del autor: ¿cómo funciona realmente `fetch_max` de Rust? El artículo profundiza en el proceso de compilación, desde el código Rust hasta el ensamblaje, revelando las capas de optimización que involucran macros, representación intermedia LLVM, intrínsecos del compilador y detalles específicos de la arquitectura de destino. En x86-64, `fetch_max` se compila en un bucle compare-and-swap (CAS); en ARM, utiliza directamente la instrucción max atómica del hardware. Este artículo demuestra el poder de los compiladores modernos y los detalles de bajo nivel detrás de las abstracciones de alto nivel.

Desarrollo

Val Town reescribe la integración de TypeScript para un rendimiento ultrarrápido

2025-09-24
Val Town reescribe la integración de TypeScript para un rendimiento ultrarrápido

Val Town ha reescrito completamente la integración de TypeScript de su editor en línea, reemplazando la implementación anterior del lado del cliente basada en Web Worker con un servidor de lenguaje Deno basado en contenedores en la nube. Esto soluciona problemas con importaciones lentas de paquetes NPM e incompatibilidad entre TypeScript y Deno en el sistema antiguo, logrando velocidades de implementación de 100 ms al guardar. El nuevo sistema utiliza contenedores de Cloudflare para garantizar el aislamiento de la carga de trabajo del usuario y los límites de recursos, y todo el código es de código abierto, ofreciendo a los desarrolladores una experiencia de desarrollo TypeScript más fluida y eficiente.

Desarrollo Editor en línea

Pruebas de Conocimiento Cero en Espacio Sublineal: Un Gran Avance

2025-09-24
Pruebas de Conocimiento Cero en Espacio Sublineal: Un Gran Avance

Los investigadores han desarrollado SSZKP, un sistema de prueba de conocimiento cero en espacio sublineal con una implementación en Rust usando KZG/BN254. Alcanza un uso de memoria O(√T) para una traza de longitud T, empleando IFFTs en bloques y acumuladores de transmisión. SSZKP utiliza compromisos KZG estándar sin almacenar polinomios completos, ofreciendo un enfoque altamente eficiente para construir sistemas zk escalables. El proyecto incluye herramientas CLI completas para el probador y el verificador, además de scripts de prueba de extremo a extremo.

Desarrollo

El Futuro de los Lenguajes de Programación: ¿Se Acaba la Popularidad?

2025-09-24
El Futuro de los Lenguajes de Programación: ¿Se Acaba la Popularidad?

Las clasificaciones de lenguajes de programación de 2023 están disponibles, con Python nuevamente en la cima. Sin embargo, el auge de la IA está alterando el panorama. Las herramientas de codificación asistidas por IA, como ChatGPT y Cursor, están reduciendo la dependencia de los programadores en lenguajes específicos, incluso haciendo que el concepto de popularidad del lenguaje en sí mismo sea ambiguo. Los programadores están menos preocupados por los detalles sintácticos y más centrados en el diseño de la arquitectura de los programas y los algoritmos. Esto dificulta la aparición de nuevos lenguajes, y la popularidad de los lenguajes puede volverse tan oscura como la popularidad relativa de los anchos de vía de los ferrocarriles. Los programadores del futuro necesitarán una base sólida en informática, en lugar de dominar un lenguaje en particular.

Desarrollo

Webshell oculto: Archivos PHP con hash MD5 idéntico

2025-09-24
Webshell oculto: Archivos PHP con hash MD5 idéntico

Dos archivos PHP comparten el mismo hash MD5, pero uno de ellos es un webshell. Esta técnica permite a los atacantes eludir la detección de webshells en caché. Un volcado hexadecimal revela pequeñas diferencias entre los archivos, lo que resulta en hashes MD5 idénticos a pesar de tener funcionalidades muy diferentes. Esto destaca la insuficiencia de depender únicamente del hash MD5 para las comprobaciones de seguridad; se necesita una estrategia de seguridad más completa.

Se lanza la biblioteca de emulador de terminal integrable libghostty de Ghostty

2025-09-24

El proyecto Ghostty ha lanzado libghostty, una biblioteca integrable para que cualquier aplicación integre un emulador de terminal moderno y rápido. La primera versión, libghostty-vt, es una biblioteca sin dependencias (ni siquiera libc), que proporciona una API para analizar secuencias de terminal y mantener el estado del terminal, extraída directamente del núcleo de Ghostty. Una API Zig está disponible para pruebas ahora, y una API C llegará pronto. libghostty pretende solucionar las deficiencias comunes de las implementaciones existentes de emuladores de terminal: falta de completitud, errores y lentitud, ofreciendo a los desarrolladores una solución estable y reutilizable. Los planes futuros incluyen la expansión de la funcionalidad con manejo de entrada, renderizado de GPU y mucho más.

Tres errores del compilador de C++: Una historia de características oscuras

2025-09-23
Tres errores del compilador de C++: Una historia de características oscuras

El ingeniero senior Michael Gibson relata el descubrimiento de un error del compilador clang++ derivado de la combinación de tres características de C++ raramente utilizadas. Al implementar una afirmación REACHABLE en su SDK de C++, utilizaron la inicialización estática, los parámetros de plantilla no tipados y los espacios de nombres anónimos. Sin embargo, un nuevo pipeline de optimización en clang++ 17+ entró en conflicto con esta combinación, lo que provocó errores de deduplicación de símbolos. Esto destaca el riesgo de errores oscuros que surgen de interacciones de características inusuales en sistemas complejos y muestra el poder de las pruebas automatizadas para descubrir tales problemas.

Zig: Una Opción Más Práctica que Rust para Herramientas CLI del Mundo Real

2025-09-23
Zig: Una Opción Más Práctica que Rust para Herramientas CLI del Mundo Real

Este artículo profundiza en las ventajas prácticas de Zig sobre Rust para la creación de interfaces de línea de comandos. El autor ilustra las diferencias a través de una herramienta CLI simple de gestión de notas. Si bien el verificador de préstamos de Rust garantiza la seguridad de la memoria, su complejidad y formalidad resultan engorrosas para CLIs simples. Zig ofrece un enfoque más directo para la gestión de la memoria, combinando instrucciones `defer` y los asignadores para facilitar la creación de código eficiente y seguro con menos sobrecarga del compilador. Para herramientas CLI pequeñas, la naturaleza ligera, rápida y directa de Zig lo hace más práctico. Si bien la seguridad de la memoria es importante, el código mantenible y la eficiencia del desarrollador son igualmente críticos.

Desarrollo

Conquistando la Fatiga de JavaScript: MESH, un framework SSR modular basado en HTMX

2025-09-23

El desarrollo web se enfrenta a la "fatiga de JavaScript" y la "fatiga de frameworks". Este artículo explora el uso de HTMX, un enfoque declarativo para el desarrollo web utilizando atributos HTML, como solución. Sin embargo, la falta de estructura de HTMX llevó al autor a crear el framework MESH, un framework modular de renderizado del lado del servidor (SSR). MESH utiliza un modelo "un componente, un punto final", aprovechando Go y Web Components para SSR e hidratación. Los desafíos con la incapacidad de HTMX para cruzar los límites de Shadow DOM se superaron con soluciones ingeniosas. La colaboración en tiempo real con Server-Sent Events (SSE) también se implementó. Finalmente, el autor incluso eliminó HTMX por completo, utilizando un JS más limpio para lograr la misma funcionalidad, y reflexiona sobre las deficiencias y las futuras direcciones de HTMX.

Desarrollo

WebKit de Apple: Una inmersión profunda en la participación en los estándares web

2025-09-23
WebKit de Apple: Una inmersión profunda en la participación en los estándares web

Este artículo presenta una inmersión profunda en la participación de Apple en los estándares web, utilizando datos y gráficos para ilustrar la adopción tardía y la falta de colaboración de Apple en APIs web cruciales como Web MIDI, Web USB y Web Bluetooth. El autor argumenta que Apple con frecuencia cita preocupaciones de 'privacidad y seguridad' para rechazar o retrasar estas funciones, pero proporciona poca evidencia para respaldar estas afirmaciones. En cambio, los datos sugieren que Apple principalmente se pone al día con otros navegadores, en lugar de participar activamente en el diseño conjunto. El artículo cuestiona el compromiso de Apple con los estándares web y sugiere que sus acciones pueden estar relacionadas con la protección de los intereses comerciales de su App Store.

Desarrollo

oLLM: Ejecutando LLMs de Contexto Extenso en GPUs de Consumo

2025-09-23
oLLM: Ejecutando LLMs de Contexto Extenso en GPUs de Consumo

oLLM es una biblioteca Python ligera que permite la inferencia de LLMs de contexto extenso como gpt-oss-20B y qwen3-next-80B en GPUs de consumo con 8 GB de VRAM (por ejemplo, una Nvidia 3060 Ti de 200$), manejando hasta 100.000 contextos. Esto se logra sin cuantización, descargando pesos de capa y caché KV a SSD y empleando técnicas como FlashAttention-2 y MLPs segmentadas. Admite varios modelos de LLM y ofrece una API fácil de usar para tareas de procesamiento de texto a gran escala, como el análisis de contratos, el resumen de literatura médica y el procesamiento de archivos de registro masivos.

Desarrollo Inferencia de LLM

arXivLabs: Colaboraciones Comunitarias en Nuevas Funciones de arXiv

2025-09-23
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. 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 agregue valor a la comunidad de arXiv? Obtén más información sobre arXivLabs.

Desarrollo

Imagen Docker qBittorrent infectada minera criptomonedas en secreto

2025-09-23

Durante la migración de servidores, el autor descubrió un proceso sospechoso, netservlet, que consumía recursos excesivos de la CPU dentro de un contenedor Docker hotio/qbittorrent. La investigación reveló que netservlet es un minero de criptomonedas oculto, probablemente XMRig o una variante. El análisis de un volcado de núcleo reveló cadenas relacionadas con la minería de criptomonedas (por ejemplo, cryptonight, ethash_calculate_dag_item) y una dirección de pool de minería (auto.c3pool.org:19999). Esto destaca la importancia de no confiar en imágenes Docker aleatorias, monitorear regularmente los recursos del sistema y auditar hosts y contenedores para evitar infracciones de seguridad.

StringZilla v4: Lanzamiento de la biblioteca de procesamiento de cadenas SIMD con aceleración CUDA

2025-09-23
StringZilla v4: Lanzamiento de la biblioteca de procesamiento de cadenas SIMD con aceleración CUDA

¡StringZilla v4 ya está aquí! Esta biblioteca de procesamiento de cadenas SIMD ahora admite CUDA, lo que significa que es increíblemente rápida, no solo en CPU, sino también en GPU. La versión 4 cuenta con numerosas funciones nuevas, incluidos algoritmos de programación dinámica acelerados por GPU, varias funciones hash (incluida una nueva función basada en AES) e identificación de biosecuencias mediante enteros de 52 bits. Los puntos de referencia muestran que StringZilla v4 alcanza más de 500 GCUPS en cálculos de distancia de Levenshtein, superando a otras bibliotecas en decenas o incluso cientos de veces. La biblioteca tiene licencia Apache 2.0 y es gratuita para uso comercial.

Desarrollo

¿YAML: El archivo de configuración del infierno?

2025-09-23

Este artículo es una crítica a la complejidad de los archivos de configuración YAML, argumentando que su supuesta 'amigable para humanos' esconde numerosos problemas. El autor utiliza varios ejemplos para ilustrar inconsistencias entre versiones de YAML, resultados de análisis impredecibles y potenciales riesgos de seguridad, como problemas con números sexagesimales, etiquetas y análisis booleano. El autor recomienda alternativas más simples como TOML o generar JSON para evitar los problemas de YAML, sugiriendo opciones más potentes como Nix y Python para configuraciones complejas.

Desarrollo

Compilando un pequeño lenguaje funcional a LLVM: Un ejemplo de calculadora simple

2025-09-23

Este artículo detalla el proceso de compilar un pequeño lenguaje funcional a LLVM. Comenzando con un lenguaje de calculadora básico, el autor construye progresivamente un analizador léxico, un analizador sintáctico y un generador de código LLVM. El artículo explica detalladamente cada paso, incluyendo el análisis con la biblioteca megaparsec, la generación de código LLVM IR usando las bibliotecas llvm-hs-pure y llvm-hs-pretty, y finalmente la compilación y ejecución del resultado. A través de este ejemplo, los lectores pueden aprender cómo traducir características de lenguajes funcionales (como la coincidencia de patrones) a LLVM IR y cómo usar LLVM para la generación y compilación de código.

Desarrollo Lenguaje Funcional

arXivLabs: Proyectos experimentales con colaboradores de la comunidad

2025-09-23
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 respeten. ¿Tiene una idea para un proyecto que agregará valor a la comunidad de arXiv? Obtenga más información sobre arXivLabs.

Desarrollo

Las Cacas de Gato de un Programador y la Redención

2025-09-23
Las Cacas de Gato de un Programador y la Redención

Un programador, al presenciar a un compañero comer excrementos de gato disfrazados con caramelos de menta en un bar, cae en una profunda reflexión. Comienza a reflexionar sobre años de encontrarse con problemas de 'cacas de gato' en su trabajo de programación: cambios de código sin sentido, procesos engorrosos y su anterior impaciencia y falta de comprensión hacia los demás. Se da cuenta de que alguna vez se enorgulleció de su experiencia, incluso la usaba para juzgar a otros, pero ahora se siente cansado y perdido. El artículo explora las dificultades que enfrentan los programadores en sus carreras y cómo mantener la pasión y la creatividad, culminando con él buscando ayuda de IA para resolver problemas y reflexionando sobre su propia actitud, mostrando un viaje de redención.

Desarrollo

Crea tu propio sistema local de voz a texto con Python y Whisper

2025-09-23
Crea tu propio sistema local de voz a texto con Python y Whisper

¿Cansado de los riesgos de privacidad de subir audio sensible a servicios de transcripción en la nube? Esta publicación te muestra cómo crear un sistema local de voz a texto usando Python y el modelo Whisper de OpenAI. Transcribe tus archivos de audio en menos de 10 minutos con una precisión del 96 % — totalmente gratis y procesado localmente en tu portátil. El tutorial cubre la configuración de FFmpeg, tu entorno de Python, el uso del modelo Whisper, el procesamiento por lotes, la creación de subtítulos SRT y la solución de problemas comunes. También se proporciona un método alternativo utilizando la biblioteca `speech_recognition`.

Desarrollo

Incidente de seguridad de RubyGems y Bundler: Explicación de un tesorero

2025-09-23
Incidente de seguridad de RubyGems y Bundler: Explicación de un tesorero

MINASWAN, miembro de la junta y tesorero de Ruby Central, publicó una declaración abordando la reciente controversia en torno a la seguridad de RubyGems y Bundler. Explica que, debido a la falta de comunicación y la presión del tiempo, la junta tomó la decisión de revocar temporalmente el acceso de algunos mantenedores para garantizar la seguridad del sistema y evitar la pérdida de fondos. Reconoce fallas en la comunicación y se disculpa por el miedo y la confusión resultantes, enfatizando que la medida fue para proteger la estabilidad y la seguridad del ecosistema Ruby.

Desarrollo

Repensando la unidad de trabajo en el desarrollo de software

2025-09-23

Este artículo explora las mejores prácticas para definir la 'unidad de trabajo' en el desarrollo de software. El autor argumenta que una buena unidad de trabajo debe ser descomponible, verificable, independiente y priorizable, similar a una historia de usuario, pero con un mayor énfasis en su papel a lo largo de todo el ciclo de vida del software. Definir claramente la unidad de trabajo, afirma el autor, aumenta la eficiencia del equipo, reduce la complejidad innecesaria y, en última instancia, ofrece más valor al cliente. El artículo también critica la práctica de medir únicamente la eficiencia del desarrollo asistido por IA por el volumen de código generado, abogando en su lugar por una evaluación orientada al valor del cliente del impacto real de la unidad de trabajo.

Desarrollo unidad de trabajo

httpjail: Filtrado HTTP granular para agentes de IA

2025-09-23

A medida que los agentes de IA se vuelven más poderosos, también lo hacen los riesgos de seguridad. httpjail es una herramienta que proporciona un filtrado HTTP(S) granular, permitiendo a los desarrolladores controlar el acceso a la red del agente con expresiones JavaScript o scripts personalizados. Esto evita fugas de datos y acciones maliciosas. Funciona en dos modos: fuerte (usando espacios de nombres de Linux y nftables) y débil (usando variables de entorno), y cuenta con interceptación TLS para tráfico HTTPS seguro. Si bien ningún sistema es perfectamente seguro, httpjail ofrece mejoras significativas para la seguridad del uso de agentes de IA potentes.

Desarrollo Filtrado HTTP

Las Pruebas Superan a los Algoritmos: Guía para la Búsqueda de Empleo de Ingenieros de Software

2025-09-23

Un ingeniero experimentado argumenta que los solicitantes de empleo hacen demasiado hincapié en las estructuras de datos y algoritmos (DSA), mientras que descuidan la habilidad crucial de las pruebas. Si bien DSA constituye la base de la programación, la realidad es que los algoritmos complejos rara vez necesitan implementarse desde cero en trabajos del mundo real. El autor recomienda aprender estructuras de datos y algoritmos fundamentales, comprender la complejidad temporal y dominar las estructuras de datos integradas de Python. Más importante aún, priorice el dominio de las habilidades de prueba, que son esenciales en el trabajo del mundo real y pueden hacerlo destacar en las entrevistas. En lugar de esforzarse en LeetCode, concéntrese en mejorar sus habilidades de prueba para escribir código de alta calidad.

Desarrollo

Notion 3.0: Agentes de IA para automatizar tareas

2025-09-23
Notion 3.0: Agentes de IA para automatizar tareas

Notion 3.0 se ha lanzado con agentes de IA capaces de realizar cualquier tarea que un humano puede hacer en Notion. Estos agentes automatizan tareas rutinarias, creando documentos, bases de datos e informes. A diferencia de los chatbots genéricos, los agentes de IA de Notion comprenden su flujo de trabajo y toman medidas basadas en el contexto. Las opciones de personalización le permiten personalizar el comportamiento e instrucciones de su agente. Las actualizaciones futuras incluirán agentes personalizados para la automatización en todo el equipo. Este lanzamiento también incluye funciones muy solicitadas, como permisos de fila de base de datos y nuevos conectores de IA.

Desarrollo

Capa de Interfaz GNU (GIL) para g++

2025-09-23
Capa de Interfaz GNU (GIL) para g++

Este repositorio proporciona una implementación de la Capa de Interfaz GNU (GIL) y la biblioteca estándar para g++. Incluye un ejemplo simple de "¡Hola, mundo!" en C++, junto con otros ejemplos como una calculadora y una ordenación por fusión. Ejecutar el código requiere el compilador g++ y prestar atención a la configuración de las rutas. El proyecto muestra un enfoque no tradicional a la programación en C++ usando una biblioteca estándar personalizada.

Desarrollo
2 4 5 6 7 8 9 214 215