Casciian: interfaces TUI en Java (con sabor Turbo Vision) y listas para ir a producción por SSH

Hay una idea que se perdió con la moda de las interfaces web: no todo necesita un navegador.

Para muchas herramientas —sobre todo las que viven en servidores— lo que uno quiere es:

  • Un binario pequeño.

  • Cero dependencias raras.

  • Correr por SSH sin abrir puertos.

  • Una interfaz usable, con menús, ventanas y ratón.

Eso es exactamente el hueco que viene a llenar Casciian.

Repositorio: https://github.com/crramirez/casciian


 


El problema real: “solo necesito una UI… pero en el servidor”

En el día a día aparecen herramientas que necesitan interfaz, pero donde una web app sería sobredimensionar el problema:

  • Instaladores y asistentes (wizard) para configurar servicios.

  • Herramientas internas para operar una plataforma.

  • Consolas de administración para entornos aislados.

  • Utilidades que quieres distribuir como “un comando más” de Linux.

La web te obliga a meter infraestructura, TLS, autenticación, despliegues, dependencia del navegador, y el clásico “abre otro puerto”.

Con una TUI bien hecha, la propuesta de valor es directa:

  • Acceso inmediato por SSH.

  • Cero superficie extra (no abres nada adicional en red).

  • Experiencia consistente incluso en entornos sin GUI.


¿Qué es Casciian?

Casciian es una librería para construir interfaces tipo GUI dentro de un terminal (TUI), compatible con la mayoría de terminales modernos y con una estética muy familiar si creciste con Turbo Vision.

Está hecha en Java, con un enfoque muy específico:

  • Cero dependencias externas.

  • Diseñada para compilarse a código nativo con GraalVM.

  • Optimizada para que una app real (por ejemplo, un editor de texto) pueda quedar en el orden de ~18 MB como binario nativo, con libc como única dependencia externa.

  • Empaquetada como DEB, ese mismo ejemplo puede rondar ~6 MB.

El objetivo es simple: que puedas escribir una herramienta en Java y distribuirla como si fuera un comando de sistema, con una UI usable y moderna dentro del terminal.


Lo que puedes construir (sin inventarte la rueda)

Casciian soporta los conceptos básicos de una GUI “de verdad” dentro del terminal:

  • Barra de menús.

  • Ventanas.

  • Cuadros de diálogo.

  • Campos de texto.

  • Listas.

  • Botones.

  • Soporte completo de ratón.

  • Gestos típicos como mover ventanas, seleccionar, navegar y operar controles.

Esto no es “un simple menú de consola”. Es una UI de aplicaciones, sólo que renderizada en texto.

    



Por qué el enfoque “nativo con GraalVM” importa

Java es excelente para productividad, pero para utilidades tipo CLI/TUI hay dos problemas clásicos:

  1. Distribución: pedirle al usuario “instala Java” es fricción.

  2. Tamaño: meter módulos como java.desktop solo para cosas que realmente no necesitas, infla el binario.

Casciian está pensada para evitar ambos:

  • Compilas con GraalVM, obtienes un binario nativo.

  • El resultado puede ser lo suficientemente pequeño como para entrar en un paquete DEB/RPM que se siente “normal”.

En otras palabras: time-to-value alto para el usuario final, sin que tú sacrifiques el stack de Java.



De dónde viene Casciian: Jexer (2013) y una decisión consciente

El origen de Casciian está en Jexer (https://jexer.sourceforge.io/index.html), un proyecto iniciado en 2013 por Autumn Lamonte.

Jexer es más ambicioso:

  • Puede incrustar imágenes junto con texto (corriendo en terminal).

  • También tiene una interfaz Swing cuando el programa corre localmente.

Yo quería usar Jexer para crear herramientas que corrieran en Linux, pero con dos restricciones claras:

  • Que no requieran Java instalado.

  • Que no terminen siendo demasiado grandes.

Así que hice el trabajo (con ayuda de GitHub Copilot) de separar las dependencias AWT/Swing del core, de forma que el soporte de terminal pudiera vivir sin java.desktop.

Cuando le presenté esto a Autumn, ella tomó una decisión bien pragmática:

  • Crear una variante llamada Casciian (por ASCII)

  • Partiendo sin dependencias AWT/Swing desde el inicio.

  • Quitando el soporte de imágenes (porque ese camino empuja de vuelta a dependencias que aquí no queremos).

Ese trabajo lo dejó en dominio público y me dejó como maintainer.

Yo, por mi parte, le añadí una licencia Apache 2.0 para los cambios que yo he ido incorporando a partir de ahí.


Del 0.4 al 1.0: foco en “que funcione impecable por SSH”

Autumn dejó Casciian en la versión 0.4. Yo he trabajado hasta llevarlo a 1.0.

El foco de estos cambios no fue “meter features por meter”, sino lo que realmente paga dividendos en el mundo real:

  • Corrección de bugs.

  • Ajustes para que las apps por SSH funcionen lo mejor posible.

  • Mejoras de compatibilidad y experiencia de uso en terminal.

Esto es importante porque la TUI se siente o no se siente. En un servidor no hay margen para una UX frágil.


Prueba de concepto: casdial (un clon de dialog, pero con esteroides)

Como prueba de concepto hice casdial:

  • Un clon del comando dialog.

  • Orientado a que scripts bash puedan tener una TUI.

  • Pero aprovechando todo el músculo de Casciian, incluyendo soporte completo de ratón.

Repositorio: https://github.com/crramirez/casdial

A día de hoy ya tiene release con soporte a:

  • --msgbox

  • --yesno

  • --menu

Y lo más interesante: el release incluye paquetes DEB y RPM que traen solo el ejecutable, como cualquier herramienta típica de Linux.

casdial --msgbox "Esto es un mensaje" 5 30 

casdial --yesno "¿Desea continuar?" 3 30 

casdial --menu "Seleccione una opción" 10 30 3 "UNO" "Uno" "DOS" "Dos" "TRES" Tres
 

Un template listo para arrancar

Además del demo, también armé un template tipo Hello World para que puedas comenzar un proyecto Java con interfaz de texto sin pelearte con el setup.

Casos de uso: dónde Casciian brilla

Si quieres una regla simple:

Si la herramienta vive en un servidor y tu usuario entra por SSH, Casciian es un “fit” natural.

Ejemplos concretos:

  • Consolas internas de administración.

  • Instaladores interactivos.

  • Herramientas DevOps que hoy son un script + prompts improvisados.

  • UI para servicios que no deberían exponerse vía web.

La ventaja competitiva aquí es operativa: menos moving parts, menos ataque superficial, menos cosas que mantener.


Cómo empezar



    

Roadmap (propuesta)

Este es el tipo de cosas que normalmente definen si una librería TUI termina siendo “de hobby” o “de producción”:

  • Más widgets del ecosistema dialog.

  • Refinar edge cases de terminales y multiplexores.

  • Documentación con ejemplos completos.

  • Seguir refinando el código para mejorar su eficiencia, tamaño y mantenibilidad.


Casciian no intenta competir con un framework web. No es ese el juego.

Casciian busca algo más específico y muy útil: interfaces amigables en terminal para tus herramientas Java, con distribución ligera, sin dependencias externas y con una experiencia que se siente como una GUI clásica.

Si te suena a “esto era obvio y nadie lo estaba resolviendo así”, es precisamente por eso que me metí en el proyecto.

Cómo los agentes de IA están reescribiendo la forma de contribuir a proyectos open-source

Durante años, contribuir al open-source ha sido un lujo que muchos desarrolladores no siempre podemos permitirnos. No por falta de ganas, sino por falta de tiempo. Entrar en un repo nuevo implica leer código, entender la arquitectura, seguir el estilo del proyecto, ejecutar el build, interpretar los pipelines, preparar pruebas unitarias, documentar… un trayecto que fácilmente consume días. Hoy, con los agentes de IA —en particular GitHub Copilot Agent— ese proceso se está transformando de forma radical.

Y el open-source juega un papel clave: es el terreno donde estos agentes funcionan con su máximo potencial.

El open-source es el entorno natural para los agentes de IA

Cuando trabajas con código propietario, siempre existe la barrera mental (y legal) de qué puede leer la IA, qué no, y hasta dónde es seguro dejarla inspeccionar. En el open-source todo eso desaparece. Copilot puede leer el código completo, sin restricciones. No hay riesgos legales ni zonas grises. Simplemente trabaja.

A esto se suma un punto obvio pero crucial: gran parte del entrenamiento original de estos modelos se hizo precisamente con código open-source. Conocen los patrones, el estilo, las convenciones. Se mueven como pez en el agua.

Además, la mayoría de estos proyectos están diseñados para ser compilables con instrucciones claras: un BUILDING.md, unos pipelines de GitHub Actions, dependencias estándar y entornos reproducibles. Para un agente, esto es oro puro. Puede entender cómo funciona el flujo, instalar lo necesario en segundos y ejecutar builds o tests en su propio entorno Linux sin que tengas que mover un dedo.

La colaboración sin fricción: tú solo das instrucciones

La productividad aquí no viene del “autocomplete”, sino de delegar directamente trabajo real. Solo haces clic en:

  1. Open Agents Panel

  2. Seleccionas repositorio

  3. Seleccionas rama

  4. Das la orden

A partir de ahí, el agente lee el código, identifica dónde tocar, genera cambios, añade pruebas, actualiza documentación y abre la pull request. Si algo no te convence, basta comentar en la PR con un @copilot y decirle qué corregir.

Y cuando la PR sale del estado de draft, Copilot hace un code review automático. Si además tienes conectado OpenAI Codex en el repo, también interviene. Dos revisores automáticos trabajando para ti.

Todo esto sin necesidad de clonar el repo. Sin abrir tu IDE. Sin compilar nada localmente. Literalmente puedes contribuir desde el móvil mientras vas en el metro.

Ejemplo real: un aporte a PowerToys Advanced Paste usando solo IA

Un caso concreto: hice una contribución a PowerToys Advanced Paste para mostrar una “mota” de color cuando el texto del portapapeles o historial era un valor hex como #FFFFFF. El pull request está aquí:


https://github.com/crramirez/PowerToys/pull/1 🠊 https://github.com/microsoft/PowerToys/pull/43990

El cambio implicaba tocar UI y algo de lógica. Lo sorprendente es que casi todo lo generó Copilot Agent. Yo solo validé el resultado: abrí el proyecto en mi PC para ver cómo quedaba visualmente. Nada más.

Si el cambio no hubiese sido de UI, ni siquiera habría necesitado descargar el código. La colaboración entera se podría haber hecho desde la web.

El nuevo modelo de contribución

Esto cambia por completo la propuesta de valor del open-source. Ahora:

  • Puedes contribuir en minutos a proyectos que antes te intimidaban.

  • No necesitas estudiar el código base a fondo.

  • Los agentes entienden estilo, arquitectura y patrones del repo.

  • Las tareas repetitivas (tests, docs, estructurar commits) desaparecen.

  • El coste de entrada se reduce prácticamente a cero.

  • Puedes participar desde el navegador o desde el móvil.

La IA no sustituye al colaborador: amplifica su capacidad. Nos permite centrarnos en la intención y delegar la ejecución técnica y el “grunt work”. Y para las comunidades open-source esto es un multiplicador de productividad enorme.

El futuro de la contribución ya no es quién tiene tiempo, sino quién tiene intención. El resto lo hace el agente.

Mejorando el rendimiento de WSL2 con Zswap (actualizado para kernel 6.x)

WSL2 se ha consolidado como el entorno ideal para desarrollar en Linux desde Windows. Pero cuando se ejecutan cargas pesadas —compilaciones grandes, contenedores, bases de datos o herramientas de IA ligera— la memoria puede saturarse y el rendimiento cae por el uso intensivo del swap. Aquí es donde zswap aporta una mejora clara y medible.

Esta guía actualiza el artículo original y lo alinea con el kernel 6.x de WSL2, que cambia el modo en que se empaquetan los módulos y elimina componentes del kernel 5.x. Además, integra el nuevo script que automatiza la compilación del kernel con zswap habilitado.

Qué es zswap y por qué es útil en WSL2

zswap es una capa de compresión en memoria que se activa antes de escribir datos en el swap. En lugar de enviar una página directamente al archivo de intercambio, el kernel la comprime y la almacena en RAM. Solo si es necesario, la página termina escrita en el swap real.

En WSL2 esto marca una diferencia aún mayor porque el swap se almacena en un archivo *.vhdx, no en un disco físico. Escribir y leer ese archivo introduce una penalización extra, por lo que reducir esas operaciones mejora la fluidez del sistema.

Beneficios directos:

  • Menos escrituras al archivo de swap → menos latencia.

  • Mayor estabilidad cuando la memoria está al límite.

  • Mejor rendimiento en compilaciones y entornos con muchos procesos.

  • Reducción del desgaste del SSD.

Por qué zram no es la mejor opción en WSL2

zram crea un disco comprimido en RAM. Eso consume memoria de forma permanente y compite con tus aplicaciones. Cuando ya existe una partición de swap, como es el caso en WSL2, puede pasar que las páginas más viejas se queden en ZRAM y las nuevas en SWAP, perdiendo el sentido de la compresión. En cambio, ZSWAP usa la RAM de forma dinámica y trabaja sobre el swap existente, lo que lo hace más adecuado para WSL2. Si se deshabilita el swap, ZRAMsi puede ser una buena opción, pero aún así hay que configurarlo en la distro. ZSWAP trabaja automáticamente.

Cambios clave en kernel 6.x de WSL2

1. Eliminación de CONFIG_FRONTSWAP

El kernel 6.x ya no incluye FRONTSWAP, por lo que ciertas configuraciones usadas en kernel 5.x dejan de ser aplicables.

2. Nuevo modelo de módulos: modules.vhdx

A partir de kernel 6.x, WSL2 separa el kernel de sus módulos. Para usar un kernel personalizado necesitas dos archivos:

  • bzImage → kernel compilado

  • modules.vhdx → volumen con los módulos

En kernel 5.x esto no era necesario.

3. Script actualizado con detección automática

El repositorio oficial del script:
https://github.com/dhanar10/wsl2-kernel-zswap

El script detecta automáticamente el kernel que estás utilizando y ajusta la compilación:

  • Kernel 5.x → añade soporte de FRONTSWAP

  • Kernel 6.x → omite FRONTSWAP y genera modules.vhdx

Cómo habilitar zswap en WSL2 (kernel 6.x)

Paso 1. Descargar el script

curl -O https://raw.githubusercontent.com/dhanar10/wsl2-kernel-zswap/main/build.sh
less build.sh

Luego ejecútalo:

bash build.sh

O bien:

curl https://raw.githubusercontent.com/dhanar10/wsl2-kernel-zswap/main/build.sh | bash

Qué genera el script

Tras la compilación tendrás:

arch/x86/boot/bzImage
modules.vhdx

Ambos son obligatorios para kernel 6.x.

Paso 2. Instalar los archivos en Windows

Copia los resultados a una ubicación accesible, por ejemplo:

bzImage       →  C:\bzImage
modules.vhdx  →  C:\modules.vhdx

Paso 3. Configurar .wslconfig

Edita:

%UserProfile%\.wslconfig

Incluye:

[wsl2]
kernel=C:\\bzImage
kernelModules=C:\\modules.vhdx

Reinicia WSL:

wsl --shutdown

Paso 4. Verificar zswap

En WSL:

cat /sys/module/zswap/parameters/enabled

Debe mostrar:

Y

Comprueba también:

cat /sys/module/zswap/parameters/compressor
cat /sys/module/zswap/parameters/zpool

Ajuste recomendado: vm.swappiness = 133

Para mejorar aún más el rendimiento, es beneficioso establecer un valor alto de swappiness. El valor recomendado al usar zswap en WSL2 es 133. Este valor indica al sistema que comprima activamente las páginas de memoria, priorizando la caché del sistema de archivos y optimizando el rendimiento incluso en situaciones de poca memoria.

Para hacerlo permanente:

sudo bash -c 'echo "vm.swappiness=133" >> /etc/sysctl.conf'
sudo sysctl -p

Cómo monitorear el ahorro de RAM

#!/bin/bash
# Función para calcular el ahorro de RAM
calculate_zswap_savings() {
    local stored_pages=$(cat /sys/kernel/debug/zswap/stored_pages)
    local pool_total_size=$(cat /sys/kernel/debug/zswap/pool_total_size)
    local page_size=$(getconf PAGE_SIZE 2>/dev/null || echo 4096)
    local ram_uncompressed=$((stored_pages * page_size))
    local ram_saved=$((ram_uncompressed - pool_total_size))
    echo "Páginas almacenadas: $stored_pages"
    echo "Tamaño total del pool: $(numfmt --to=iec --suffix=B $pool_total_size)"
    echo "RAM sin comprimir: $(numfmt --to=iec --suffix=B $ram_uncompressed)"
    echo "RAM ahorrada: $(numfmt --to=iec --suffix=B $ram_saved)"
}
echo "Estadísticas de Zswap:"
echo "----------------------"
calculate_zswap_savings

Resultados esperados

Con kernel 6.x y zswap activado puedes esperar:

  • Menos uso de swap real.

  • Reducción de latencia en compilaciones y contenedores.

  • Menos tiempo perdido gestionando memoria cuando el sistema está muy cargado.

Conclusión

Habilitar zswap en WSL2 con kernel 6.x ofrece mejoras claras en estabilidad y rendimiento, especialmente bajo cargas exigentes. El nuevo script simplifica la compilación e instalación del kernel y sus módulos, permitiendo activar zswap con un proceso mucho más limpio que en versiones anteriores.

🎉 ¡Tecnología Digerida está de vuelta!

Después de un tiempo en pausa, Tecnología Digerida regresa con la misma misión de siempre: explicar la tecnología sin humo, sin jerga innecesaria y con los pies en la tierra.

Este blog nació en 2007 con una idea clara: que entender lo técnico no debería requerir un máster. Hoy, más que nunca, necesitamos claridad, contexto y criterio en un mundo saturado de hype, buzzwords y confusión innecesaria.

📌 Aquí vas a encontrar:

  • Tecnología explicada con sencillez, sin perder profundidad
  • Opinión honesta, basada en experiencia real
  • Reflexiones para quienes toman decisiones técnicas o simplemente quieren entender
  • Y sobre todo: contenido digerido, sin indigestiones tecnológicas

Gracias por volver, o por descubrir el blog por primera vez. Vamos a hacer que valga la pena.

Mejorando el rendimiento de WSL2 con zswap

Windows Subsystem for Linux 2 (WSL2) ha revolucionado la manera en que los desarrolladores y profesionales de TI interactúan con entornos Linux en Windows, ofreciendo una integración y un rendimiento excepcionales. Sin embargo, las tareas que consumen muchos recursos pueden, en ocasiones, superar los límites de memoria, lo que ralentiza el rendimiento del sistema.

¿Qué es zswap?

zswap es una función del kernel de Linux diseñada para mejorar el rendimiento del intercambio de memoria mediante la compresión de páginas antes de escribirlas en el espacio de intercambio (swap). En esencia, zswap minimiza las operaciones de entrada/salida (I/O) en el disco, lo que se traduce en una mayor capacidad de respuesta del sistema, especialmente en entornos con recursos de memoria limitados.

¿Por qué usar zswap en lugar de zram?

Aunque zram también comprime páginas de memoria, crea un disco RAM comprimido que ocupa directamente espacio en la RAM. En contraste, zswap complementa el archivo de intercambio existente en WSL2, comprimiendo páginas en memoria antes de escribirlas en el disco, reduciendo así las escrituras sin reservar grandes cantidades de RAM. Esto hace que zswap sea particularmente adecuado para WSL2, especialmente porque ya utiliza un archivo de intercambio basado en disco.

Ventajas de usar zswap con WSL2

  1. Reducción del uso de swap: Al comprimir las páginas, zswap reduce drásticamente la cantidad de datos que deben escribirse y leerse del disco, acelerando significativamente las operaciones de intercambio.

  2. Mayor rendimiento: Con menos operaciones en disco, los entornos de WSL2 se vuelven notablemente más rápidos, especialmente durante cargas de trabajo intensas y multitarea.

  3. Mayor vida útil del SSD: Reducir las escrituras en los SSDs ayuda a prolongar su durabilidad, ofreciendo beneficios a largo plazo para los usuarios.

  4. Mejor eficiencia en el uso de recursos: zswap gestiona eficientemente los recursos de memoria, lo que lo hace ideal para ejecutar múltiples aplicaciones simultáneamente sin degradación del rendimiento.

  5. Ideal para entornos virtualizados: WSL2 asigna dinámicamente una porción de la RAM del host, generalmente hasta la mitad de la memoria disponible en Windows. Al comprimir partes no utilizadas de programas y servicios que no están bien adaptados a WSL, zswap optimiza significativamente el uso de la memoria, permitiendo hacer más con menos recursos.

Configuración de zswap en WSL2

La versión actual de WSL2 (2.4.12 en el momento de escribir este artículo) no admite zswap ni módulos del kernel cargables de manera predeterminada. Por lo tanto, es necesario recompilar el kernel con zswap habilitado. Puedes encontrar instrucciones detalladas para la compilación aquí.

Alternativamente, hay un script automatizado que simplifica este proceso y habilita zswap automáticamente en todas tus distribuciones de WSL2:

curl https://raw.githubusercontent.com/dhanar10/wsl2-kernel-zswap/main/build.sh | bash

Después de ejecutar este script, obtendrás un kernel completamente compilado con zswap incluido y activado de forma predeterminada en todas las distribuciones de WSL2 que utilices.

Activación del nuevo kernel en WSL2

Después de recompilar el kernel o ejecutar el script automatizado, necesitarás activarlo.

  1. Usando .wslconfig:

Crea o edita el archivo .wslconfig en tu directorio de usuario de Windows (por ejemplo, C:\Users\TuUsuario\.wslconfig) y añade:

[wsl2]
kernel=C:\ruta\a\tu\kernel\compilado\bzImage

Luego, reinicia WSL2:

wsl --shutdown
  1. Usando la aplicación de configuración de WSL (si está disponible):

Si tu versión de WSL incluye una aplicación de configuración gráfica, puedes especificar la ruta del nuevo kernel directamente en la configuración.

Verificación de que zswap está activado

cat /sys/module/zswap/parameters/enabled

Deberías ver un resultado Y, lo que confirma que está activado.

Configuración recomendada de swappiness: 133

Para mejorar aún más el rendimiento, es beneficioso establecer un valor alto de swappiness. El valor recomendado al usar zswap en WSL2 es 133. Este valor indica al sistema que comprima activamente las páginas de memoria, priorizando la caché del sistema de archivos y optimizando el rendimiento incluso en situaciones de poca memoria.

Para establecer este valor de forma persistente en los reinicios, usa los siguientes comandos:

sudo bash -c 'echo "vm.swappiness=133" >> /etc/sysctl.conf'
sudo sysctl -p

Monitorización del uso de zswap y ahorro de RAM

Para comprobar cuánta memoria está ahorrando zswap, puedes usar el siguiente script:

#!/bin/bash
# Función para calcular el ahorro de RAM
calculate_zswap_savings() {
    local stored_pages=$(cat /sys/kernel/debug/zswap/stored_pages)
    local pool_total_size=$(cat /sys/kernel/debug/zswap/pool_total_size)
    local page_size=$(getconf PAGE_SIZE 2>/dev/null || echo 4096)
    local ram_uncompressed=$((stored_pages * page_size))
    local ram_saved=$((ram_uncompressed - pool_total_size))
    echo "Páginas almacenadas: $stored_pages"
    echo "Tamaño total del pool: $(numfmt --to=iec --suffix=B $pool_total_size)"
    echo "RAM sin comprimir: $(numfmt --to=iec --suffix=B $ram_uncompressed)"
    echo "RAM ahorrada: $(numfmt --to=iec --suffix=B $ram_saved)"
}
echo "Estadísticas de Zswap:"
echo "----------------------"
calculate_zswap_savings

Este script proporciona estadísticas en tiempo real sobre el uso de zswap y cuánta RAM se está ahorrando mediante la compresión.

Conclusión

Aprovechar zswap dentro de WSL2 ofrece beneficios de rendimiento tangibles, especialmente en cargas de trabajo exigentes. Para los usuarios que buscan maximizar su productividad y mantener un rendimiento óptimo en sus flujos de trabajo híbridos entre Windows y Linux, activar zswap es altamente recomendable.


¿Listo para experimentar un mejor rendimiento? ¡Prueba zswap hoy mismo!

Acelera tu laptop Windows con ReadyBoost

Si ya se que en muchos sitios, incluidos comentarios de gente de soporte de Microsoft, te dirán que es una tecnología para computadoras viejas con 512MB de RAM o menos. Que si tienes más de 2GB de RAM no hará ningún efecto.

Bueno en este post me propongo a demostrarte, no sólo que es mentira sino que además sí es útil en cualquier máquina de esta era. Mi intención es convencerte de que al menos lo pruebes y veas si te ayuda o no.

Vamos a tratar los siguientes temas:

  1. Invitarte a probarlo, con una pequeña introducción de como usarlo.
  2. En cuáles escenarios he visto que tiene mayor impacto.
  3. Un poco de explicación técnica para fundamentar los hechos.
  4. Un enlace en inglés donde la gente habla de los beneficios de la tecnología.
  5. Invitarte a probarlo una vez más.
Manos a la obra.

Usando ReadyBoost

Para usar Readyboost únicamente necesitas un Pen Drive o una tarjeta SD con al menos 1GB de espacio libre.
  • Inserta el pendrive o la tarjeta SD.
  • Windows debería presentar una pantalla indicando entre las opciones Aumentar la velocidad del sistema con Windows ReadyBoost.
  • Si no aparece siempre puedes hacer clic derecho sobre la unidad en el explorador de archivos y escoger Propiedades
  • Ahí hay una pestaña llamada ReadyBoost. Marca o "Dedicar este dispositivo a ReadyBoost" o le dices cuánto espacio dedicar. Alrededor de 2GB estaría bien. Cuanto más espacio le dediques más cosas podrá guardar en el caché.
Y eso es todo deja que poco a poco llene el caché. Dentro de unas horas prueba mandarla a Hibernar y despiértala y ve si notas alguna diferencia. 

No te pido que me creas sólo que des el beneficio a la duda y lo pruebes. Seguro tienes por ahí un pendrive o una SD.

Probando el ReadyBoost

Hay escenarios donde se nota la diferencia al usar Readyboost. Algunos ejemplos:

  • Hibernar: Este proceso deja a Windows por un tiempo sin caché en la RAM y en ese tiempo va a usar el disco duro a menos que lo que esté buscando lo haya guardado en el Pen Drive. Se nota clara la diferencia al despertar de la Hibernación y tratar de abrir algunas aplicaciones como Google Chrome.
  • Aplicaciones que se tragan la memoria: Especialmente VirtualBox o cualquier tecnología de virtualización se le nota la diferencia al arranque si se tiene ReadyBoost. Varias personas afirman que los juegos trabajan mejor con ReadyBoost
  • Discos duros lentos: Como los de las laptops y de ahí viene el título del post, las laptops son las máquinas que más se benefician del Readyboost. Además mejora el rendimiento de la batería y la laptop se calienta menos (claro estas dos cosas son mucho más difíciles de medir).
  • Arranque de aplicaciones: Levantar cualquier aplicación como un navegador o aplicación de ofimática.


Explicación técnica

Un disco duro tradicional tiene una lectura secuencial mucho mayor que cualquier pen drive o tarjeta SD. Pero para lecturas aleatorias, es decir leer un pedacito de un archivo o un archivo pequeño, es extremadamente lento en comparación a las memorias. ¿Por qué? Porque para buscar algo específico tiene que mover el cabezal y eso toma tiempo. Si se necesitan leer muchos archivitos esparcidos por el disco, como cuando se abre una aplicación, pues la cosa se pone lenta.

Superfetch

Para minimizar esto Windows monitorea esos archivitos o pedacitos y los pega todos en unos archivos (una copia de ellos) en una carpeta llamada Prefetch. El asunto es más complejo de lo que digo. Pero es para que te hagas una idea. El objetivo es aprovechar que la lectura secuencial es más rápida y leer todo eso a memoria RAM de un sólo golpe. Luego las aplicaciones en lugar de buscar las cosas en disco lo hacen en memoria RAM.

ReadyBoost

Aquí es donde entra ReadyBoost. Si la tecnología está activada el caché de Superfetch se graba también en los dispositivos configurados para ReadyBoost. Es aquí donde la mayoría le pierde la fé a la tecnología por señalarla que sólo sirve si tienes poca memoria RAM. Ya que el Superfetch además de estar en el ReadyBoost está en memoria RAM. Obviamente la memoria RAM es más rápida que la memoria flash.

El problema es que no siempre se tiene el Superfetch en memoria RAM. No sólo eso sino que a veces no todo el Superfetch cabe en RAM así que Windows coloca ahí lo más usado y lo demás lo deja en el ReadyBoost y en el disco duro. Más adelante te mostraré cómo ver el tamaño del caché ReadyBoost y después de unos días de uso, pues no es factible tener todo eso en RAM.

El caso claro donde el Superfetch no está en RAM es cuando se vuelve de una hibernación. Windows únicamente guarda lo estrictamente necesario de la RAM en el archivo hiber.sys. Y eso no incluye el Superfetch. Cuando se vuelve de la hibernación la única manera de acceder al Superfetch es en el disco duro y en el ReadyBoost, el cual si se tiene activo será aprovechado inmediatamente.

Hay otros casos como levantar máquinas virtuales o aplicaciones pesadas como Outlook, navegadores, Office o juegos. Donde es útil tener un caché ReadyBoost bien poblado.

Yo tengo una laptop de 16GB y mi esposa una de 12GB y les digo se nota cuando por X o por Y el ReadyBoost no está activo.

Referencias

Aquí hay una discusión interesante. Son usuarios que se quejan porque cuando Windows cree que no hay ganancia por ReadyBoost lo deshabilita. Ellos dicen que debería darle la opción al usuario si quiere usarlo o no. En la mitad del foro aparecen quienes dicen que si tienes más de 2GB (incluida alguien de Microsoft) no te aporta ningún beneficio. Y aparecen los que sí le han encontrado utilidad y describen como.


Cito algunos:

"To all the people who continue to ask: "why do u need ready boost,YOU DON'T NEED IT ; if u have SSD or 4GB RAM you dont need ReadyBoot"
 WAKE UP PEOPLE!! Programs like 3Ds Max use ReadyBoost as actual RAM, ie if you render a large 3D model with 4GB RAM the program will definitely crash, but if you have another 8GB ReadyBoost it will run smoothly. The SSD does not solve the problem, Paging also doesnt solve it, and to all the people who are saying well why dont you just buy some extra RAMs, the new ultrabooks come with a fixed ammount of RAMs on the motherboard, YOU CANNOT ADD RAMs, and they come with SSDs... So technically its a dead end to people who want to use their i7 ultra books for something productive and not just Facebook...

Thank you" HazemJouzou

"I have W530 lenovo work laptop with an i7, 12GB RAM and a spinner HD.  I paid $10 to get a 24GB msata ssd just to use readyboost and it works well for speeding up the HDD access times. I dedicate 10GB of the msata drive to readyboost.  Savhp

"oh, and just my 2 cents for those people who say ready boost isn't needed.
I have 8Gb of memory. but get poor performance when I run some games. but when I use ready boost, I see an actual improvement in the games ability to run. one example would be BF4. when I am using ready boost (2x 32Gb drives) I don't get hiccups and frame rate issues when spawning.

another thing to consider is this, Memory is memory. regardless if it is called virtual memory, RAM, or Readyboost. having more memory, no matter how new your system is, can never, ever, be a bad thing." Cybot

"For those still arguing that ReadyBoost doesn't do much they should try a bit of testing first.  With the systems I work on (Win 7, Win 8, 2-8GB memory, etc.) I see at least a 50% and regularly 200% increase in random read speed (using for example Defragglers Benchmark).  This just makes the system more responsive and quicker to do system maintenance (updates, defragging, backups, installs/uninstalls, etc.).  It is not huge, but it is noticeable when working on a typical system. EcurbNosneb

Invitación a la prueba

¿Ya te convencí? Bueno puede que no, pero al menos no dirás que no vale la pena probarlo.

Adelante... sólo inserta un pendrive o una tarjeta SD y deja que la tecnología haga lo suyo.

Hasta la próxima...

Nota: Si esta información te es de utilidad o piensas que se puede mejorar, por favor deja un comentario con tus observaciones.

Tutorial rsync por ssh sin configurar servicio: Transfiere únicamente lo que cambió

Rsync es una herramienta muy potente para sincronización rápida de directorios y que se puede usar a través de ssh sin requerir ninguna configuración especial en el servidor. Aquí hablaremos de:

  • Tutorial para comenzar a usar rsync inmediatamente. Ejemplos.
  • Utilizar rsync a través de ssh.
  • Enviar únicamente los cambios realizados, para backup por ejemplo.
  • Comprimir la transmisión.
  • Transferir únicamente cambios en archivos grandes.

Rsync es una de las herramientas más útiles que he utilizado en los últimos tiempos y ahora lo uso a diario. Anteriormente siempre lo vi como un misterio que había que montar un servicio rsync para poder sincronizar dos máquinas remotamente. Bueno, recientemente descubrí que se puede transferir usando únicamente ssh.

Supongamos que queremos transferir el contenido de un directorio con sus subdirectorios desde una máquina local a una remota por ssh:
rsync -avz -e ssh /home/usuario/directoriofuente/ usuario@ipremota:/home/usuario/directoriodestino/ 
Ahora estudiemos la instrucción:

  1. La opción a nos dice que va a preservar los permisos y usuarios siempre que pueda.
  2. La opción v nos muestra que está haciendo.
  3. La opción z le dice a rsync que comprima mientras transfiere los archivos. Muy útil si el destino está en Internet.
  4. El comando -e ssh le dice que use ssh para transferir archivos, esto nos evita un servicio rsync y además transmite seguro.
  5. Es importante notar los / al final de los directorios, es necesario colocarlos para asegurarse que copie todo y no confunda las cosas con archivos.
Otras opciones interesantes:
  • --progress: Muestra el progreso mientras se copian archivos grandes.
  • --delete: Borra en el destino los archivos que no encuentre en la fuente. Muy muy útil para mantener directorios perfectamente sincronizados.

Transfiere únicamente lo que cambió


El gran poder del rsync es cuando se quiere transferir por segunda vez. Él únicamente transfiere lo que cambió y más aún si lo que cambió es un archivo muy grande de varios megas hasta gigas él únicamente transfiere las partes del archivo que cambiaron.
Ahora la gran utilidad de esto es poder mantener sincronizadas dos máquinas, para cambios en sitios web por ejemplo, o inclusive programas java ya que se puede extraer el jar en ambas máquinas, transferir y luego volverlos a comprimir. Únicamente se transferirán los cambios.

Al aprender a usar rsync en el día a día nos acelera bastante el hecho de mantener sincronizados los directorios con nuestros discos externos, backups, dropbox, etc

Hasta la próxima...

Búsqueda