Category: Desarrollo

TextKit 2: Cuatro años después, no es una bala de plata

2025-08-16
TextKit 2: Cuatro años después, no es una bala de plata

Anunciado en la WWDC21, TextKit 2, después de cuatro años, no cumple con la promesa de facilidad de uso. Si bien la arquitectura es sólida, la implementación tiene varios problemas. NSTextContentStorage es la única implementación de almacenamiento viable, lo que limita severamente la personalización. Además, el mecanismo de viewport, destinado a optimizar el rendimiento, resulta en un posicionamiento inestable de la barra de desplazamiento y vibraciones durante el desplazamiento. El autor encontró varios errores, algunos sin resolver durante largos períodos, lo que afecta significativamente la experiencia del usuario. En resumen, TextKit 2 no es una solución perfecta para el diseño de texto, especialmente para interfaces de usuario de edición de texto.

Desarrollo Diseño de Texto

Coreboot Habilita el Soporte de AMD Turin en la Gigabyte MZ33-AR1: Fase 1 Completada

2025-08-16

Esta entrada de blog describe la primera fase de habilitar el soporte de AMD Turin en coreboot y portarlo a la placa base Gigabyte MZ33-AR1. Financiado por la Fundación NLnet, el proyecto se basa en los esfuerzos de AMD para impulsar firmwares de código abierto. El equipo creó con éxito la estructura del SoC Turin dentro de coreboot, extrajo e integró los paquetes de firmware PSP necesarios y construyó el soporte básico de la placa base MZ33-AR1. Si bien surgieron desafíos en la integración de los blobs PSP públicos de Turin, las soluciones alternativas permitieron un arranque exitoso, allanando el camino para futuras mejoras.

Construyendo Sistemas de Agentes de IA Eficientes: Lecciones de UserJot

2025-08-16
Construyendo Sistemas de Agentes de IA Eficientes: Lecciones de UserJot

UserJot experimentó con la construcción de un sistema de IA multiagente para analizar retroalimentación de clientes a gran escala y generar automáticamente entradas de registro de cambios. El autor comparte los aprendizajes clave, centrándose en una arquitectura de dos niveles: los agentes primarios gestionan el contexto y la descomposición de tareas, mientras que los subagentes sin estado se centran en tareas individuales. La eficiencia proviene de la descomposición de tareas (vertical y horizontal), protocolos de comunicación estructurados, especialización de agentes y patrones de orquestación como MapReduce. El artículo enfatiza la importancia de la falta de estado, las estrategias de gestión de contexto y los mecanismos de manejo de errores, ofreciendo consejos de optimización del rendimiento y métricas de monitoreo.

Desarrollo

Inesperadamente Lento: Un Benchmark Simple de Sockets Muestra el Retraso de Linux Respecto a OpenBSD

2025-08-16

Un simple programa en C que crea subprocesos y abre 256 sockets revela una sorprendente disparidad de rendimiento entre Linux y OpenBSD. En Linux, los tiempos de ejecución fluctúan entre 17 y 26 milisegundos; en OpenBSD, son solo de 2 a 6 milisegundos. Para aumentar el misterio, OpenBSD inicialmente arrojó un error de "demasiados archivos abiertos", sugiriendo diferencias en la gestión de recursos. El autor observa que la discrepancia no está relacionada con el código de red y desafía a los lectores a encontrar un sistema Linux que supere a OpenBSD en este benchmark.

Desarrollo Rendimiento del SO

47 Segundos de Infierno en el Gimnasio: Cómo Arreglé el Acceso Roto de PureGym con Apple Wallet

2025-08-16
47 Segundos de Infierno en el Gimnasio: Cómo Arreglé el Acceso Roto de PureGym con Apple Wallet

La frustración de un desarrollador iOS con la aplicación de PureGym (¡47 segundos para registrarse!) lo llevó a una aventura loca. Descubrió API increíblemente inseguras: un PIN inmutable de 8 años era más seguro que el código QR que se actualizaba cada minuto. Usando mitmproxy, hizo ingeniería inversa del sistema, creó un pase de Apple Wallet con PassKit y redujo el tiempo de registro a 3 segundos. El artículo detalla el proceso: ingeniería inversa, lucha con certificados, desarrollo de back-end en Swift y más. Incluso lo integró con Home Assistant. Un proyecto personal divertido y técnicamente detallado que destaca la importancia de la experiencia del usuario.

El asesino de archivos grandes de Git: El fin de Git LFS está cerca

2025-08-16

Los archivos grandes han sido durante mucho tiempo un problema para Git. Git LFS, si bien es una solución, introdujo nuevas complejidades y costos. Sin embargo, el propio Git está resolviendo gradualmente este problema. Las últimas versiones de Git incluyen clones parciales, que ofrecen los mismos beneficios que Git LFS: clones rápidos y extracciones pequeñas, sin necesidad de herramientas adicionales o costos del lado del servidor. Aún más emocionante, los prometedores de objetos grandes de Git están en desarrollo, prometiendo eventualmente volver obsoleto a Git LFS por completo, haciendo que la administración de archivos grandes sea más simple y eficiente. ¡No más dolores de cabeza con archivos grandes!

Desarrollo

Amnesia de Kanji: ¿Por qué recuerdo el significado pero no la escritura?

2025-08-15
Amnesia de Kanji: ¿Por qué recuerdo el significado pero no la escritura?

El autor aprendió kanji memorizando primero sus significados y escritura, luego la pronunciación, con gran éxito. Años después, no puede escribir a mano la mayoría de los kanji. Esta 'Amnesia de Kanji' es común en Japón y China. Explora los procesos cerebrales distintos para la lectura y la escritura, y su afantasia (ausencia de imágenes mentales) contribuye al misterio. La ciencia cognitiva sugiere que esto se debe al uso por el cerebro de rastros de memoria verbales y de esencia. Leer implica reconocer la esencia, mientras que escribir activa la memoria motora de los trazos - dos habilidades distintas.

Desarrollo

LLMs: Grandes generadores de código, pésimos ingenieros de software

2025-08-15
LLMs: Grandes generadores de código, pésimos ingenieros de software

Años de entrevistas a ingenieros de software revelan que construir y mantener modelos mentales claros es fundamental. Si bien los LLMs son buenos generando y modificando código, carecen de la capacidad crucial de mantener estos modelos. Se confunden fácilmente, sufren de omisión de contexto y sesgo de actualidad, y alucinan detalles, lo que impide la resolución iterativa de problemas para tareas complejas. El autor concluye que los LLMs son herramientas útiles para los ingenieros de software, pero no pueden reemplazarlos para nada más que proyectos simples.

Desarrollo

¿Debemos eliminar XSLT de los navegadores?

2025-08-15
¿Debemos eliminar XSLT de los navegadores?

El procesador XSLT integrado en los navegadores (v1.0, estandarizado en 1999) está obsoleto y presenta riesgos de seguridad. El desarrollo web moderno utiliza JavaScript y JSON, haciendo que XSLT sea en gran medida obsoleto. Mantener bibliotecas XSLT antiguas (como libxslt en Chromium) consume muchos recursos y es propenso a vulnerabilidades de seguridad de memoria, creando una superficie de ataque significativa. Esta propuesta sugiere eliminar XSLT de los estándares web para reducir los riesgos de seguridad y optimizar la asignación de recursos, sin pérdida práctica de funcionalidad para los desarrolladores.

Desarrollo

La muesca del MacBook rompe la renderización de juegos: una pesadilla para los desarrolladores

2025-08-15
La muesca del MacBook rompe la renderización de juegos: una pesadilla para los desarrolladores

Muchos juegos se renderizan incorrectamente en MacBooks con pantallas con muesca. El problema se debe a la forma en que los juegos obtienen las resoluciones de la pantalla (CGDisplayCopyAllDisplayModes), que devuelve resoluciones que incluyen el área de la muesca, lo que resulta en imágenes de juegos comprimidas y distorsionadas. El artículo analiza las diferencias entre varias regiones de la pantalla (pantalla completa, área segura, área de pantalla completa de AppKit) y ofrece una solución para filtrar las resoluciones. Sin embargo, en última instancia, señala al diseño de la API de Apple como la causa raíz. El artículo también enumera los juegos afectados y las mejoras potenciales que Apple podría implementar, como actualizar el HIG, mejorar CGDisplayMode o crear una nueva API centrada en los juegos.

Simulando y Visualizando el Teorema del Límite Central: Una Exploración Práctica

2025-08-15

Este artículo explora el Teorema del Límite Central (TLC) mediante simulación y visualización. El autor, que anteriormente evitaba la estadística, utiliza R para generar muestras de varias distribuciones (uniforme, normal, binomial, beta, exponencial, chi-cuadrado) y calcula las medias muestrales. Los resultados demuestran visualmente cómo la distribución de las medias muestrales se aproxima a una distribución normal a medida que aumenta el tamaño de la muestra, confirmando el TLC. El artículo investiga además las implicaciones prácticas de usar la distribución t en lugar de la distribución normal para los cálculos de intervalos de confianza al tratar con tamaños de muestra limitados y varianza poblacional desconocida. Las simulaciones destacan la diferencia en la cobertura del intervalo de confianza en varios tamaños de muestra. Finalmente, una animación muestra cómo la distribución de las medias muestrales converge a una distribución normal a medida que aumenta el tamaño de la muestra, ofreciendo una comprensión visual convincente de este concepto estadístico fundamental.

WTF: Visualizando compilaciones para encontrar cuellos de botella de rendimiento

2025-08-15
WTF: Visualizando compilaciones para encontrar cuellos de botella de rendimiento

What the Fork es una herramienta multiplataforma que visualiza el proceso de compilación de cualquier sistema de compilación, ayudando a los desarrolladores a identificar y resolver cuellos de botella de rendimiento. Al monitorear las llamadas al sistema, rastrea el inicio y el final del proceso, generando una visualización interactiva que muestra las líneas de tiempo de los procesos, los comandos y los argumentos. El autor demuestra su poder a través de ejemplos de varios proyectos, revelando problemas como la falta de paralelismo y las operaciones redundantes. Esto permite a los desarrolladores optimizar significativamente los tiempos de compilación, particularmente beneficioso para las compilaciones de CI.

Desarrollo

Copiar y pegar en Linux recibe una actualización retro: Adiós a Ctrl+Shift

2025-08-15
Copiar y pegar en Linux recibe una actualización retro: Adiós a Ctrl+Shift

¿Cansado de Ctrl+Shift+C/V para copiar y pegar en terminales Linux? ¡Buenas noticias! A finales de 2025, la mayoría de las aplicaciones Linux admitirán de forma nativa los códigos de tecla heredados 'Copiar' y 'Pegar'. Esto se debe al auge de los teclados programables y al soporte para estos códigos de tecla en kits de herramientas de software como GTK y QT. Varios emuladores de terminal como Alacritty, Foot y Wezterm ya los admiten, mientras que Gnome Terminal y Konsole se espera que los admitan después de las actualizaciones a finales de año. Esto revolucionará la experiencia de copiar y pegar en Linux, haciéndola más cómoda y eficiente.

Reescritura de Ghostty GTK: Un Triunfo de GObject y Valgrind

2025-08-15

La aplicación GTK del emulador de terminal Ghostty se sometió a una reescritura completa, adoptando completamente el sistema de tipos GObject de Zig y utilizando Valgrind rigurosamente para la verificación de memoria en cada paso. El resultado es un Ghostty con más funciones, más estable y más fácil de mantener en Linux y BSD. La reescritura solucionó problemas anteriores de gestión de memoria derivados de evitar el sistema GObject, simplificando tareas como la recarga de configuración mediante el sistema de notificación de cambios de propiedad de GObject. Valgrind detectó algunos problemas de memoria, principalmente relacionados con interacciones con la API de C, demostrando la eficacia de las características de seguridad de memoria de Zig en un proyecto grande y complejo.

Desarrollo

EmbedPDF: Un visor de PDF JavaScript de código abierto y elegante

2025-08-15
EmbedPDF: Un visor de PDF JavaScript de código abierto y elegante

EmbedPDF es un visor de PDF JavaScript de código abierto con licencia MIT, que se integra fácilmente en cualquier proyecto JavaScript (React, Vue, Svelte, Preact o JavaScript puro). Ofrece una experiencia de lectura moderna y fluida con una API limpia para desarrolladores. Incluye funciones como anotaciones (resaltado, notas adhesivas, texto libre, tinta), eliminación real de contenido, búsqueda, selección de texto, zoom, rotación y desplazamiento virtual suave. Tiene una arquitectura extensible y plugins que se pueden reducir con tree-shaking. ¡Se agradecen las contribuciones!

Desarrollo visor de PDF

Jujutsu + Radicle: Un flujo de trabajo casi sin ramas

2025-08-14
Jujutsu + Radicle: Un flujo de trabajo casi sin ramas

Este artículo describe cómo el autor utiliza Jujutsu y Radicle juntos para lograr un flujo de trabajo de control de versiones casi sin ramas. Jujutsu, como una capa transparente sobre Git, gestiona los cambios usando IDs de cambio, simplificando operaciones complejas de Git como rebase y squash. Radicle aprovecha el almacenamiento y el protocolo de Git, proporcionando una plataforma segura y confiable para la colaboración de código. El autor detalla sus configuraciones `.git/config` y `.jj/config`, y cómo utiliza comandos como `jj new`, `jj edit`, `jj squash` y `jj rebase` para crear, editar, fusionar y reordenar cambios. El mecanismo de parches de Radicle permite una contribución y mantenimiento de código eficientes, eliminando en última instancia la engorrosa gestión de ramas y mejorando la eficiencia del desarrollo.

Desarrollo

Avance en el rendimiento de Linux ASI: de 70% a 13% de sobrecarga de E/S

2025-08-14

Durante años, los ingenieros de Google han estado trabajando en el Aislamiento de Espacio de Direcciones (ASI) para el kernel de Linux, con el objetivo de combatir las crecientes vulnerabilidades de ejecución especulativa de la CPU. Las implementaciones iniciales resultaron en una penalización del 70% en el rendimiento de E/S. Ahora, esa sobrecarga se ha reducido a solo el 13%. El ingeniero de Google, Brendan Jackman, ha revivido el esfuerzo, presentando una solución a los problemas de rendimiento de la caché de páginas. Si bien aún existen desafíos, particularmente en lo que respecta a la conmutación de contexto y las operaciones de copia al escribir, el progreso significativo convierte al ASI en un fuerte candidato para una solución de vulnerabilidad de CPU generalizada.

Desarrollo

Org-social: Una red social descentralizada basada en Org Mode

2025-08-14
Org-social: Una red social descentralizada basada en Org Mode

Org-social es una red social descentralizada que se ejecuta en un archivo Org Mode servido a través de HTTP. Los usuarios crean un archivo `social.org`, añaden información personal y publicaciones, y lo suben a un servidor web. Es simple, sin registro y sin base de datos, aprovecha las características de Org Mode para publicaciones, respuestas, menciones, encuestas y más, manteniendo la compatibilidad con varios editores de texto. Sus valores principales son la simplicidad, la accesibilidad, la descentralización y la adhesión a los principios de Org Mode.

Desarrollo

Los Secretos del Éxito de ArchWiki: Lecciones de DebConf25

2025-08-14

El ArchWiki de Arch Linux es reconocido en la comunidad de Linux por su documentación de alta calidad. En DebConf25, los mantenedores de ArchWiki compartieron sus secretos, cubriendo la estrategia de contenido, las pautas de contribución y la gestión de la comunidad. Si bien aprovechan las fortalezas de MediaWiki —contenido completo, de alta calidad y actualizado—, también abordaron desafíos como la complejidad de la sintaxis de MediaWiki, la alta barrera de entrada para los colaboradores y las amenazas del contenido generado por IA y los bots de raspado. Los planes futuros incluyen mejorar la participación de la comunidad, desarrollar más herramientas de edición e incorporar la IA con cautela. La presentación inspiró a Debian a renovar su wiki utilizando MediaWiki.

Codificación con una mano en iPhone: Más allá de Pythonista, surge un trío de aplicaciones

2025-08-14

El sueño del autor de codificar solo en un iPhone se ha hecho realidad. Abandonando Pythonista, ahora utiliza una combinación de tres aplicaciones: Secure Shellfish (con sincronización de carpetas sin conexión), Textastic (editor de código) y Working Copy (cliente Git), ejecutando código en un VPS. Si bien esta configuración tiene un costo inicial más alto (alrededor de 57 € más las tarifas mensuales del VPS), proporciona una experiencia de codificación sin distracciones, ofreciendo una alternativa a las redes sociales y permitiendo un desarrollo enfocado con una sola mano.

Desarrollo

500 Días de Matemáticas Diarias: Un Viaje de Cero a (Casi) Héroe

2025-08-14
500 Días de Matemáticas Diarias: Un Viaje de Cero a (Casi) Héroe

El autor relata su viaje de 500 días de práctica diaria de matemáticas usando Math Academy. Inicialmente motivado por la necesidad de comprender las matemáticas detrás de la IA, descubrió una brecha significativa en su conocimiento fundamental, comenzando desde cero. A través de esfuerzos constantes y ajustes estratégicos (como tiempo de estudio dedicado, utilización de momentos libres y compartir públicamente el progreso), ha completado varios cursos fundamentales y ahora está abordando el cálculo y el álgebra lineal. Este viaje no solo ha impulsado sus habilidades matemáticas, sino que también ha cultivado mejores hábitos de aprendizaje y resiliencia, impactando positivamente otras áreas de su vida.

Desarrollo

Mejora tu escritorio Debian 13: ajustes y consejos esenciales

2025-08-14

¡Debian 13 ya está aquí! Esta guía proporciona ajustes esenciales para optimizar tu experiencia con el escritorio Debian. Aprende a habilitar repositorios adicionales (incluyendo software no libre), configurar tu PATH para un acceso más fácil a la línea de comandos, unirte a grupos del sistema para una administración simplificada, usar el DNS de Cloudflare para una navegación más rápida, cambiar a espejos locales para descargas de paquetes más rápidas, habilitar Snap y Flatpak para un acceso más amplio a software, instalar el Centro de Software GNOME y administrar paquetes con Synaptic. Estos pasos mejoran significativamente la usabilidad y la eficiencia de Debian.

Lanzamiento de Debian 13 Trixie: Adiós a 32 bits, Hola RISC-V

2025-08-14
Lanzamiento de Debian 13 Trixie: Adiós a 32 bits, Hola RISC-V

Debian 13, con nombre en código Trixie, ha sido lanzado, trayendo numerosas mejoras. El cambio más significativo es la eliminación del soporte para la arquitectura x86 de 32 bits en favor de RISC-V y la actualización al kernel de Linux 6.12. Trixie también presenta lenguajes de programación actualizados (Python 3.13, PHP 8.4, etc.), un administrador de paquetes Apt mejorado, seguridad mejorada (con soporte para CET, PAC, BTI, etc.) y mejoras de rendimiento y experiencia de usuario para los entornos de escritorio GNOME y KDE. Si bien el soporte de seguridad para los ecosistemas Go y Rust es limitado, Trixie es en general una distribución estable, segura y potente.

Desarrollo

Máquinas de Estado Finito como Estructuras de Datos: Indexando miles de millones de URLs

2025-08-14

Este artículo explora el uso de máquinas de estado finito (FSM) como estructuras de datos para representar conjuntos y mapas ordenados, mostrando la eficiencia del crate fst de Rust para construir índices. Se profundiza en la construcción de FSM, cubriendo la construcción de Trie y FSA, y se demuestra la indexación de más de 1.600 millones de URL del archivo Common Crawl de julio de 2015. También se discuten técnicas como el mapeo de memoria, la intersección de autómatas con expresiones regulares, la búsqueda difusa con la distancia de Levenshtein y las operaciones de conjuntos en streaming. El autor construye y compara benchmarks de FST contra otros esquemas de compresión (gzip, xz) en varios conjuntos de datos de diferentes tamaños y características.

Desarrollo Indexación

Infraestructura de Privacidad para Gafas Inteligentes: Creando Aplicaciones sin Problemas de Privacidad

2025-08-14
Infraestructura de Privacidad para Gafas Inteligentes: Creando Aplicaciones sin Problemas de Privacidad

Este proyecto aborda los desafíos de privacidad inherentes a las aplicaciones de gafas inteligentes. Introduce un filtro de privacidad en tiempo real que se sitúa entre la cámara y la aplicación, asegurando automáticamente el cumplimiento. El filtro anonimiza rostros, gestiona el consentimiento (detectando el consentimiento verbal como "Consinto ser grabado"), y procesa vídeo a 720p 30fps, todo ello sin conexión. Construido con FFmpeg, OpenCV, Faster Whisper y Phi-3.5 Mini, ofrece una fácil integración de cámara, entrada RTMP/múltiples formatos de salida y una API HTTP para el control. Ideal para asistentes de IA, aplicaciones sociales, soluciones empresariales y creación de contenido, esta herramienta permite a los desarrolladores crear aplicaciones de gafas inteligentes conscientes de la privacidad.

Desarrollo gafas inteligentes

La Revolución de la IA: Una Crisis Existencial para un Programador y Escritor

2025-08-14
La Revolución de la IA: Una Crisis Existencial para un Programador y Escritor

Un programador y escritor experimentado se enfrenta a la amenaza existencial que plantea la rápida evolución de la IA. Se enorgullece de su capacidad para explicar conceptos técnicos complejos de forma clara, una habilidad demostrada por el éxito de sus libros. Sin embargo, el auge de la IA amenaza su sustento, ya que la IA está demostrando ser eficaz en la escritura técnica. Si bien reconoce las capacidades de la IA para explicar temas técnicos, cuestiona la capacidad de la IA para reemplazar completamente a los autores humanos, especialmente en cuanto al estilo y los matices. Está planeando un nuevo libro, utilizando la IA para obtener ayuda, pero aún se siente inseguro sobre su papel futuro en un mundo dominado por la IA, cuestionando su valor y propósito.

Desarrollo Crisis Existencial

Nyxt: El navegador inspirado en Emacs para desarrolladores

2025-08-14

Nyxt es un navegador web poco convencional, construido con la filosofía de Emacs: altamente personalizable y basado en teclado. Escrito en Common Lisp y con licencia BSD 3-clause, prioriza a los usuarios de Linux y permite a los desarrolladores extender su funcionalidad. Aunque inspirado en Emacs, Nyxt se ejecuta de forma independiente y admite atajos de teclado vi y CUA. La serie 3.x actual utiliza WebKitGTK, mientras que la próxima versión 4.0 utilizará Electron para mejorar el rendimiento y el soporte multiplataforma (macOS y Windows). La interfaz minimalista de Nyxt y las extensas opciones de personalización atraen a los desarrolladores que buscan la máxima eficiencia, pero su curva de aprendizaje pronunciada y los recursos limitados de la comunidad representan un desafío.

Desarrollo

10 PRINT: Una Línea de Código, Un Fenómeno Cultural

2025-08-14
10 PRINT: Una Línea de Código, Un Fenómeno Cultural

Publicado en 2012, 10 PRINT explora el fenómeno de la computación creativa a través de una sola línea de código BASIC del Commodore 64. Los autores tratan este código como un texto, examinando su creación, propósito y supuestos. El libro profundiza en la aleatoriedad y la regularidad en la computación y el arte, el significado cultural de los laberintos, la popularidad de BASIC y la influencia del Commodore 64. Las portadas de libros generadas, inspiradas en el código, son ahora usadas por la Biblioteca Pública de Nueva York y el Proyecto Gutenberg.

OCaml: Un lenguaje sorprendentemente relevante para la era moderna

2025-08-14

Este artículo defiende el lenguaje OCaml, destacando sus puntos fuertes como lenguaje de investigación y herramienta práctica para la industria. El autor detalla las potentes características de OCaml, incluyendo su sistema de tipos estáticos, soporte multiparadigma y ecosistema en evolución, argumentando que es adecuado para diversos proyectos. Se abordan varias ideas erróneas comunes sobre OCaml, y el autor describe una comunidad vibrante y de apoyo. La pieza concluye con una invitación convincente a explorar este lenguaje a menudo pasado por alto.

Desarrollo

Convo-Lang: Un lenguaje de programación nativo de IA para simplificar la ingeniería de prompts de LLM

2025-08-14
Convo-Lang: Un lenguaje de programación nativo de IA para simplificar la ingeniería de prompts de LLM

Convo-Lang es un lenguaje de programación nativo de IA de código abierto y un ecosistema diseñado para construir prompts poderosos y flujos de trabajo de agentes estructurados para LLMs como GPT-4, Claude y Llama. En lugar de escribir prompts en inglés de forma libre, Convo-Lang permite definir conversaciones de varias etapas, agregar estructura y variables, integrar herramientas externas y bases de conocimiento (RAG) y cambiar entre diferentes LLMs. Su sintaxis legible simplifica el desarrollo de aplicaciones de IA complejas, facilitando la gestión de la lógica, la depuración y el mantenimiento.

1 2 24 25 26 28 30 31 32 214 215