Category: Desarrollo

Cómo los programadores top usan LLMs para aumentar la productividad

2025-07-21

El programador veterano antirez comparte su experiencia de 18 meses usando modelos de lenguaje grandes como Gemini 2.5 PRO y Claude Opus para programar. Argumenta que los LLMs actuales se usan mejor como asistentes poderosos, no como herramientas para completar proyectos de forma independiente. Al describir los problemas con claridad y mediante la iteración eficaz, los LLMs pueden ayudar a eliminar errores, explorar ideas más rápidamente, participar en el diseño por pares e incluso aprender tecnologías fuera de la experiencia de alguien. Sin embargo, antirez destaca la importancia de proporcionar suficiente contexto, elegir el modelo adecuado y mantener el control del código, evitando la dependencia de agentes automatizados. Solo así se puede asegurar la calidad del código y maximizar la eficiencia.

Desarrollo

Actualización importante de OpenBSD: la estructura del objeto FILE se vuelve opaca

2025-07-21

OpenBSD ha experimentado recientemente una actualización significativa del sistema que hace que la estructura interna del objeto FILE en su biblioteca estándar de entrada/salida sea opaca. Esto significa que los programas ya no pueden acceder directamente a la estructura interna del objeto FILE. El cambio es de gran alcance, afectando a libc y a muchas bibliotecas que dependen de ella, incluidas libcrypto, libtls y libssl. Para facilitar la transición, algunos símbolos auxiliares se mantienen temporalmente, pero se eliminarán en el futuro. Se recomienda encarecidamente a los desarrolladores que utilicen una actualización de instantánea para evitar posibles problemas.

Simulando el efecto de 'ebullición' dibujado a mano con filtros SVG

2025-07-21
Simulando el efecto de 'ebullición' dibujado a mano con filtros SVG

Este artículo describe un método para simular el efecto de 'ebullición', un estilo visual común en animaciones dibujadas a mano, utilizando filtros SVG. Este efecto crea la ilusión de movimiento sutil aplicando ligeras distorsiones a los bordes de la imagen. El autor explica cómo usar los filtros feTurbulence y feDisplacementMap para generar una textura de ruido y aplicarla a una imagen, y cómo animar los parámetros del filtro con JavaScript para crear el efecto de 'ebullición'. Las demostraciones interactivas permiten a los usuarios ajustar los parámetros y observar los cambios en el efecto. El autor logró usar filtros SVG simples y JavaScript para simular un efecto de animación dibujado a mano realista en la web.

Desarrollo

XMLUI: Desarrollo web para todos

2025-07-21
XMLUI: Desarrollo web para todos

XMLUI aporta la facilidad de uso del modelo de componentes de Visual Basic al desarrollo web moderno. Utilizando un simple marcado XML, los desarrolladores pueden crear aplicaciones web reactivas y con temas sin necesidad de una profunda experiencia en React o CSS. Los componentes preconstruidos y la vinculación de datos declarativa simplifican el proceso. La integración con LLMs agiliza aún más el desarrollo, permitiendo la creación colaborativa y un mantenimiento más sencillo. XMLUI tiene como objetivo empoderar a los creadores de soluciones, permitiéndoles crear interfaces de usuario sin necesidad de expertos en front-end.

Desarrollo

Registro basado en tiempo vs. basado en conteo

2025-07-21

La estrategia de registro es crucial en la ingeniería de software. Este artículo argumenta que el registro basado en tiempo (por ejemplo, registrar cada X segundos) es superior al registro basado en conteo (por ejemplo, registrar cada X mensajes) al procesar muchos eventos. El registro basado en conteo resulta en frecuencias de registro muy variables bajo diferentes cargas, lo que puede llevar a registros insuficientes o excesivos. El registro basado en tiempo mantiene una tasa de registro constante, evitando la degradación del rendimiento debido a registros excesivos o problemas de observabilidad debido a registros insuficientes. El autor utiliza ejemplos de pseudocódigo y un análisis de costo-beneficio para respaldar su argumento, ofreciendo una nueva perspectiva sobre estrategias de registro eficientes.

Desarrollo

connmap: Visualiza tus conexiones de red en un mapa mundial

2025-07-21
connmap: Visualiza tus conexiones de red en un mapa mundial

connmap es un widget de escritorio X11 que muestra la ubicación geográfica de tus pares de red actuales en un mapa mundial. ¡También funciona en Wayland! La instalación es sencilla: clona el repositorio, instala las dependencias (listadas en el README) y ejecuta el ejecutable. Personaliza el tamaño del mapa, la posición y el intervalo de actualización. Actualmente, solo admite IPv4 y se ha probado principalmente con i3wm.

Programación dinámica: No es lo que piensas

2025-07-21

El término "programación dinámica" en los estudios de algoritmos a menudo causa confusión. 'Dinámica' no se refiere a su mutabilidad, sino al aspecto de planificación de 'programación', originario de la década de 1950, cuando los ingenieros planificaban proyectos de construcción como 'programación de procesos'. En la ciencia de la computación, la programación dinámica significa planificar el orden de los subpasos necesarios para resolver un problema. Por ejemplo, al calcular la secuencia de Fibonacci, el 'programa' es la secuencia de pasos para calcular fib(2) a fib(10) en orden de dependencia. Esto se puede planificar de arriba hacia abajo o de abajo hacia arriba; el plan final es el mismo, y ambos se consideran programación dinámica. Richard Bellman acuñó el término para evitar la aversión de un Secretario de Defensa a la 'investigación matemática', eligiendo hábilmente 'programación dinámica' porque el adjetivo 'dinámica' no puede usarse peyorativamente.

Desarrollo

Limitaciones de la aplicación de sugerencias de código en GitHub

2025-07-20
Limitaciones de la aplicación de sugerencias de código en GitHub

La aplicación masiva de sugerencias de código en GitHub tiene varias restricciones. Las sugerencias requieren cambios de código, no se pueden aplicar a solicitudes de extracción cerradas, subconjuntos de cambios, líneas únicas con varias sugerencias, sugerencias ya aplicadas o resueltas, revisiones pendientes, comentarios multilínea o solicitudes de extracción en cola para fusionar. Además, algunas sugerencias pueden estar temporalmente indisponibles para su aplicación.

Desarrollo

Limitaciones de la aplicación de sugerencias de código de GitHub: restricciones de confirmación única

2025-07-20
Limitaciones de la aplicación de sugerencias de código de GitHub: restricciones de confirmación única

La aplicación masiva de sugerencias de código en GitHub tiene varias limitaciones: las sugerencias no se pueden aplicar si no se realizaron cambios de código, si la solicitud de extracción está cerrada, al ver un subconjunto de cambios, si hay más de una sugerencia por línea, a líneas eliminadas, si la sugerencia ya se aplicó o marcó como resuelta, desde revisiones pendientes, en comentarios de varias líneas o si la solicitud de extracción está en cola para fusionar. Además, hay casos de un error que indica "No puedes realizar esa acción en este momento." por razones desconocidas.

Desarrollo

De Arch Linux a macOS: Configuración 'perezosa' de un estudiante de doctorado

2025-07-20

Un estudiante de doctorado en investigación de neuro-IA e ingeniero de computación, después de nueve años usando Arch Linux, cambió a un nuevo MacBook Pro. La publicación detalla cómo configuró su nueva máquina en un solo día para reanudar su flujo de trabajo. Usó Nix como administrador de paquetes, el administrador de ventanas AeroSpace y el lanzador Raycast, manteniendo herramientas familiares como el shell zsh y el editor Zed. Si bien la administración de paquetes de macOS no es tan conveniente como Arch Linux, hizo concesiones para obtener una mayor estabilidad de hardware y una mejor experiencia de usuario.

Rendimiento de Base de Datos 10x con io_uring y un WAL Doble

2025-07-20
Rendimiento de Base de Datos 10x con io_uring y un WAL Doble

Al construir una base de datos compleja, el autor experimentó con io_uring y un diseño de WAL doble para aumentar el rendimiento. Los enfoques tradicionales de WAL (escribir y luego aplicar) crean cuellos de botella en el rendimiento. Al separar la "intención de escritura" y la "finalización de la escritura" en dos WAL, y aprovechando la E/S asincrónica de io_uring, se logró una mejora de 10 veces en el rendimiento. Este diseño escribe la intención de forma asincrónica, luego los registros de finalización; la recuperación solo aplica las operaciones con intención y finalización, garantizando la consistencia de los datos. El autor usó Zig y el proyecto Poro (una base de datos clave-valor experimental) para validar este enfoque, destacando la importancia del paralelismo de hardware, el procesamiento por lotes y los modelos de consistencia flexibles.

Desarrollo E/S asincrónica

Explotación de Coprocesadores para Lograr Explotación de Kernel Determinista en Dispositivos A9/A11

2025-07-20

Se ha lanzado una versión actualizada del exploit de kernel Trigon, ampliando la compatibilidad con los dispositivos A9(X) y A11. Esta entrada del blog detalla las técnicas desafiantes utilizadas para superar las limitaciones de KTRR y encontrar la dirección base del kernel en diferentes dispositivos. El nuevo enfoque aprovecha el registro IORVBAR y los coprocesadores (específicamente el procesador Always-On), manipulando el firmware del coprocesador para lograr lectura/escritura arbitraria del kernel, evitando finalmente las protecciones del kernel para una explotación exitosa en dispositivos A9 y A11.

Desarrollo coprocesador

Investigación de Fuga de Memoria de Go 1.24: Un Descubrimiento Inesperado y la Sorpresa de las Tablas Suizas

2025-07-20
Investigación de Fuga de Memoria de Go 1.24: Un Descubrimiento Inesperado y la Sorpresa de las Tablas Suizas

Tras el lanzamiento de Go 1.24, se observó un aumento inesperado en el uso de memoria en un servicio de procesamiento de datos. La investigación reveló que una refactorización de una función de asignación de memoria en el tiempo de ejecución de Go eliminó inadvertidamente una optimización, causando un borrado innecesario de memoria durante la asignación de objetos grandes, lo que aumentó el tamaño del conjunto residente (RSS). Si bien las métricas internas del tiempo de ejecución de Go no mostraron cambios, las métricas de nivel de sistema revelaron un aumento significativo en el uso de memoria. La colaboración con la comunidad de Go ayudó a identificar y solucionar el problema. Sorprendentemente, la nueva función "Tablas Suizas" de Go 1.24 redujo significativamente el uso de memoria en entornos de alto tráfico, compensando la regresión anterior e incluso generando ahorros adicionales de memoria.

Desarrollo

¿El verificador de préstamos de Rust: Más maldición que bendición?

2025-07-20

Rust, elogiado por su combinación de velocidad y seguridad gracias a su verificador de préstamos, enfrenta críticas en esta publicación. El autor argumenta que el verificador de préstamos crea problemas ergonómicos significativos, rechazando código perfectamente válido debido a reglas excesivamente conservadoras. Varios ejemplos demuestran la refactorización innecesaria requerida. La publicación cuestiona el papel sobreestimado del verificador de préstamos en la seguridad de Rust, comparándolo con lenguajes de recolección de basura, como Python y Julia. Si bien reconoce los beneficios del verificador de préstamos en la programación concurrente, el autor sostiene que su sobrecarga en contextos de subprocesos únicos supera las ventajas. Los puntos fuertes de Rust, como su sistema de tipos fuerte y su rica biblioteca estándar, se destacan como las verdaderas razones de su éxito.

Desarrollo

Cómo evitar la especialización en Rust: Un uso inteligente de punteros de función

2025-07-20
Cómo evitar la especialización en Rust: Un uso inteligente de punteros de función

Durante el desarrollo de un controlador FAT en Rust, el autor encontró un obstáculo: la especialización, actualmente indisponible en Rust estable. Después de intentos fallidos usando macros y enums genéricos, surgió una solución inteligente: usar punteros de función para emular la especialización. Si bien este enfoque introduce cierta sobrecarga de rendimiento y memoria, ofrece una solución viable para escenarios específicos, evitando la dependencia de características inestables. El autor concluye abogando por la estabilización de la especialización, ya que promete una solución más eficiente y limpia.

Mejorando las CLI y las API para agentes LLM

2025-07-20
Mejorando las CLI y las API para agentes LLM

El autor encontró limitaciones en las herramientas de línea de comandos y las API existentes al usar agentes de Modelos de Lenguaje Grandes (LLM) para la automatización de la ingeniería inversa, especialmente con las pequeñas ventanas de contexto de los modelos locales. Las API deben equilibrar el suministro de información suficiente para reducir las llamadas a las herramientas, evitando el desbordamiento de la ventana de contexto. Las soluciones exploradas incluyen docstrings mejoradas, funciones auxiliares y ganchos de pre-commit. Se sugieren mejoras adicionales que incluyen wrappers que almacenan en caché la salida, la estructuran e informan sobre las líneas restantes, así como ganchos de shell que proporcionan información del directorio. El autor concluye que las CLI existentes necesitan mejoras de LLM; quizás incluso un conjunto completo de CLI mejoradas con LLM o un shell LLM personalizado sea necesario para mejorar la experiencia del usuario para los agentes LLM.

Desarrollo Herramientas CLI

BorgBackup: Archivador deduplicador eficiente y seguro

2025-07-20

BorgBackup (Borg) es un archivador deduplicador de código abierto que combina compresión y cifrado autenticado para un almacenamiento eficiente en espacio y una seguridad robusta. Admite varios algoritmos de compresión (lz4, zstd, zlib, lzma) y ofrece una fácil instalación en múltiples plataformas (Linux, macOS, BSD, etc.). Respaldado por una gran y activa comunidad, Borg proporciona copias de seguridad montables para un acceso conveniente y, lo que es crucial, ¡recuerde verificar siempre sus copias de seguridad!

Desarrollo

Copia de seguridad: más allá de una simple copia

2025-07-20
Copia de seguridad: más allá de una simple copia

La importancia de la copia de seguridad de datos a menudo se subestima. Este artículo, basado en las experiencias del autor, relata varios escenarios de pérdida de datos, enfatizando que la copia de seguridad es más que una simple copia; requiere un plan y una estrategia integrales. Explora las ventajas y desventajas de las copias de seguridad de disco completo frente a las copias de seguridad de archivos individuales y el papel crucial de las instantáneas para garantizar la consistencia de los datos. El autor también comparte su preferencia por una arquitectura de servidor de copia de seguridad centralizada y principios rectores para un sistema de copia de seguridad eficiente, y anuncia artículos posteriores que detallarán su configuración de servidor de copia de seguridad con FreeBSD.

Desarrollo

Logrando Polimorfismo con Despacho Dinámico en Zig

2025-07-19

A diferencia de muchos lenguajes, Zig carece de interfaces integradas. Sin embargo, esto no impide el polimorfismo. Este artículo detalla un método para lograr el polimorfismo de despacho dinámico en Zig usando interfaces vtable. Este enfoque separa limpiamente las interfaces de las implementaciones, sin requerir cambios en los tipos de implementación, mientras permite el despacho dinámico. Utiliza punteros de función para construir una vtable y usa una función `implBy` para conectar las implementaciones a la interfaz, imitando eficazmente la funcionalidad de las interfaces en lenguajes orientados a objetos. Esto permite almacenar diferentes implementaciones en matrices o mapas. Si bien hay algo de código repetitivo involucrado, las ventajas son un enfoque limpio, flexible y reutilizable con un impacto mínimo en los tipos de implementación.

Desarrollo

Construyendo software con IA: Un sistema de cuatro documentos y el principiante eterno

2025-07-19
Construyendo software con IA: Un sistema de cuatro documentos y el principiante eterno

El autor construyó Protocollie en cuatro días utilizando el programador en pareja de IA Claude, no a través de habilidades de codificación expertas, sino mediante cuatro documentos: Visión general de la arquitectura, Consideraciones técnicas, Proceso de flujo de trabajo y Desglose de la historia. Este proceso, comparado con "tirar espaguetis a la pared", destaca la experimentación en lugar de la planificación, mostrando el cambio en el panorama de la programación asistida por IA. Revela un cambio en el papel del programador y abraza la incertidumbre de esta nueva era, donde el rápido avance tecnológico supera la acumulación de experiencia.

Secure Boot de Linux enfrenta la expiración de una clave: una carrera contra el tiempo

2025-07-19

Los sistemas Linux Secure Boot dependen de una clave de Microsoft que expirará en septiembre. Esta clave firma el shim, el cargador de arranque UEFI de primera etapa utilizado para arrancar el kernel de Linux. Si bien hay una clave de reemplazo disponible desde 2023, muchos sistemas pueden carecer de ella, lo que posiblemente requiera actualizaciones de firmware del proveedor de hardware. Esto supone un trabajo extra para las distribuciones de Linux y los usuarios. Puede ser necesaria la actualización del firmware a través de LVFS y fwupd, pero no está garantizado el éxito; los sistemas BIOS más antiguos pueden tener problemas de espacio, incluso requiriendo un restablecimiento del BIOS. Las actualizaciones del proveedor también pueden ser problemáticas, con algunos fabricantes que han perdido el acceso a sus claves de plataforma. En última instancia, deshabilitar Secure Boot podría ser la única opción en algunos casos.

Desarrollo

Ingeniero de Software: Construyendo el Futuro de los Datos Neuronales

2025-07-19
Ingeniero de Software: Construyendo el Futuro de los Datos Neuronales

Piramidal busca un ingeniero de software para construir y mantener la infraestructura de back-end para su innovadora plataforma de datos neuronales. Este puesto implica una estrecha colaboración con ingenieros de ML para implementar modelos de vanguardia y trabajar directamente con equipos de producto e internos para resolver problemas críticos. El candidato ideal tiene 5+ años de experiencia en una empresa centrada en productos, dominio de Python y otros lenguajes de back-end, experiencia en contenerización (Kubernetes), bases de datos relacionales (Postgres/MySQL) y tecnologías web (JavaScript, React). Piramidal está comprometida con el uso de la tecnología para mejorar el potencial humano y apoya la libertad cognitiva.

Desarrollo

Por qué Rechazo el Uso de IA para Escribir

2025-07-19
Por qué Rechazo el Uso de IA para Escribir

Un autor comparte sus razones para rechazar el uso de modelos de lenguaje grandes (LLMs) para escribir. Argumenta que la dependencia excesiva de LLMs reduce la originalidad, debilita el pensamiento independiente y priva a la escritura de reflexiones profundas y asociaciones personalizadas. Cita estudios del MIT y del Reino Unido que apoyan la idea de que los LLMs pueden llevar a la pereza cognitiva y a la reducción de la motivación para aprender. Además, el autor considera que el texto generado por LLM carece de personalidad y emoción, fallando en capturar las asociaciones e ideas únicas que surgen durante la lectura. Esto entra en conflicto con su búsqueda de una experiencia de lectura profunda. En última instancia, elige mantenerse en la escritura independiente, creyendo que es la única manera de mantener la autenticidad y la originalidad.

Detén la traducción automática de YouTube: Una extensión de Firefox

2025-07-19
Detén la traducción automática de YouTube: Una extensión de Firefox

Esta extensión de escritorio de Firefox de código abierto impide la traducción automática de YouTube. Mantiene los títulos de los vídeos, las pistas de audio y las descripciones en sus idiomas originales y solo muestra subtítulos reales en el idioma seleccionado (ignorando los generados automáticamente). La extensión es gratuita, pero puedes apoyar su desarrollo a través de Ko-fi. También disponible en la Chrome Web Store.

Comparación de Suscripciones Ilograph Team vs. Team+

2025-07-19
Comparación de Suscripciones Ilograph Team vs. Team+

Ilograph ofrece dos planes de suscripción para la colaboración en diagramas de equipo: Team y Team+. El plan Team admite hasta 5 editores y 20 espectadores, ofreciendo diagramas de equipo ilimitados, historial de diagramas e iconos personalizados. El plan Team+ admite 6 o más editores, espectadores ilimitados y agrega funciones premium como inicio de sesión único, exportación de diagramas, acceso a la API y enlaces compartibles. El mejor plan depende del tamaño de tu equipo y de la necesidad de funciones avanzadas.

Microtricángulos: El verdadero asesino del rendimiento de renderizado, no el conteo de polígonos

2025-07-19
Microtricángulos: El verdadero asesino del rendimiento de renderizado, no el conteo de polígonos

La vieja creencia de que el conteo de polígonos determina el rendimiento de renderizado está obsoleta. El renderizado moderno se ve afectado significativamente por los microtriángulos. Este artículo argumenta que los triángulos diminutos (menores de 10x10 píxeles) se vuelven exponencialmente más costosos de renderizar porque las GPU calculan un bloque completo de 2x2 píxeles, incluso si el triángulo solo cubre un píxel. El autor sugiere enfocarse en la "densidad de la vista de wireframe", cambiando a LOD más bajos cuando la vista se acerca a sólida, o usando un solo LOD con impostores para objetos distantes. La tecnología Nanite de Epic aborda esto usando shaders de cómputo y shaders de espacio de pantalla para minimizar el costo de renderizar microtriángulos.

La Regla de los 14KB: Por Qué el Tamaño del Sitio Web Importa Más de lo que Piensas

2025-07-19

¿Por qué una página web de 14KB es significativamente más rápida que una de 15KB? La respuesta reside en el inicio lento de TCP, un algoritmo que regula cómo los servidores envían datos inicialmente. Este artículo explica cómo TCP asegura la transmisión confiable de datos y cómo el inicio lento optimiza el uso del ancho de banda. Las redes de alta latencia, como internet satelital, ilustran dramáticamente el impacto: cada viaje de ida y vuelta añade un retraso significativo. El artículo aboga por minimizar el tamaño del sitio web a menos de 14KB o, al menos, asegurar que el contenido crítico esté dentro de los primeros 14KB para una experiencia de usuario óptima. Aunque se mencionan HTTP/2 y HTTP/3, no invalidan la importancia de este principio.

Desarrollo

Exploit de Boot1 de Wii U: La recuperación de datos lleva a 'Paid the Beak'

2025-07-19

Esta publicación detalla cómo un equipo, mediante la recuperación de datos de tarjetas SD de prueba de fábrica del Nintendo Wii U destruidas, descubrió e explotó inesperadamente una vulnerabilidad de Boot1. WiiCurious recopiló numerosas tarjetas SD dañadas, y DeadlyFoez utilizó habilidades de soldadura expertas para reparar y leer los datos. El ingeniero inverso Rairii encontró una vulnerabilidad de Boot1 dentro de estos datos y desarrolló un exploit llamado 'paid the beak', capaz de reparar la mayoría de los bricks de software de Wii U. Además, el equipo desarrolló métodos usando un Raspberry Pi Pico y PICAXE 08M2 para imitar la herramienta específica de fábrica necesaria para activar la vulnerabilidad. Este exploit proporciona una manera más accesible de reparar bricks de Wii U, evitando la necesidad de desmontar y soldar la consola.

Impresiones de Guix: La Perspectiva de un Usuario de Nix

2025-07-19

Un usuario experimentado de Nix comparte su experiencia probando el Sistema Guix. Guix, al ser un sistema GNU, prioriza la libertad de software, requiriendo el uso de nonguix para el soporte de hardware moderno. El artículo se centra en las diferencias arquitectónicas entre Guix y Nix: Nix emplea un diseño modular que permite combinaciones flexibles de versiones de paquetes, mientras que Guix integra todos los paquetes en un perfil fijo, requiriendo una reconstrucción para las actualizaciones. Se comparan la documentación, el rendimiento y los sistemas init, revelando la documentación superior de Guix, pero un rendimiento más lento; utiliza Shepherd en lugar de systemd. En general, Guix es una alternativa intrigante, pero con una curva de aprendizaje más pronunciada, que requiere conocimiento de Scheme.

Desarrollo

Más allá de cuBLAS y CUTLASS: Un nuevo motor de kernel de multiplicación de matrices

2025-07-19
Más allá de cuBLAS y CUTLASS: Un nuevo motor de kernel de multiplicación de matrices

La multiplicación de matrices es fundamental para la computación moderna, especialmente en IA, donde su velocidad impacta directamente en la capacidad del modelo. Si bien los aceleradores de hardware como los Tensor Cores de NVIDIA son eficientes, carecen de flexibilidad. Este artículo presenta CubeCL, un nuevo motor que genera kernels de multiplicación de matrices optimizados para varias plataformas. CubeCL utiliza una abstracción jerárquica (Tile, Stage, Global, Batch Matmul) y varios algoritmos (Simple, Double Buffering, Ordered, etc.) para lograr esto. Aprovecha inteligentemente las características de la arquitectura de la GPU, como la ejecución síncrona de planos y el acceso a memoria coalescido, empleando técnicas como el doble búfer para ocultar la latencia de memoria. Los benchmarks muestran mejoras significativas en el rendimiento en varias GPU (NVIDIA, AMD y Apple Silicon), incluso superando a cuBLAS y CUTLASS en algunos casos.

Desarrollo
1 2 38 39 40 42 44 45 46 214 215