Categoría: Uncategorized

  • Debian GNU/Linux en MacBook Pro 2013. Por 140€ en 3-5 años más de vida para mi MacBook Pro 2013

    Debian GNU/Linux en MacBook Pro 2013. Por 140€ en 3-5 años más de vida para mi MacBook Pro 2013

    Un MacBook Pro de 11 años puede seguir siendo útil en 2025, pero requiere cuidados específicos y decisiones técnicas informadas. Esta es la historia de cómo convertí 140€ en varios años más de vida útil, con lecciones técnicas importantes sobre las diferencias entre generaciones de hardware Apple.

    El problema: batería hinchada y decisión crítica

    Mi MacBook Pro 11,1 (Late 2013) tenía la bateria inutil desde hace años, pero el problema real se hizo evidente al decidir abrirlo para inspección: batería visiblemente hinchada.

    La batería había expandido lo suficiente para deformar el chasis interno, un problema común en MacBooks de esta generación después de años de uso. Este descubrimiento cambió completamente el diagnóstico de «batería gastada» a «riesgo de seguridad que requiere acción inmediata».

    Decisión crítica: Detener el uso inmediatamente hasta resolver el problema. Una batería hinchada no es solo un inconveniente, es un riesgo de seguridad real que puede dañar componentes internos o crear situaciones peligrosas.

    Análisis económico: ¿renovar o reemplazar?

    Alternativas consideradas:

    • ThinkPad E14 nuevo: ~350€
    • Renovación MacBook 2013: ~140€
    • Mantener como equipo fijo: 0€ (pero limitado)

    Factores decisivos:

    • Uso previsto: equipo secundario para desarrollo ocasional
    • Portabilidad necesaria: sí, para trabajar en diferentes ubicaciones
    • Presupuesto disponible: preferencia por inversión mínima efectiva

    La renovación ofreció la mejor relación costo-beneficio para mis necesidades específicas.

    Proceso de renovación técnica

    Reemplazo de batería: investigación y compra

    Opción elegida: Batería iFixit (119€ + herramientas)

    Alternativas descartadas:

    • Baterías genéricas de AliExpress: ~40€ (calidad dudosa, historiales de hinchazón temprana)
    • Servicio técnico oficial: >200€ (precio prohibitivo para equipo de 11 años)

    Instalación: Siguiendo la guía iFixit paso a paso, incluyendo limpieza interna completa con aire comprimido y alcohol isopropílico para remover años de acumulación de polvo.

    Resultado: Batería con 104.2% de capacidad (6669 mAh vs 6400 mAh de diseño), superando las especificaciones originales gracias a mejoras en la tecnología de celdas Li-ion.

    Cargador de repuesto

    Problema del cargador original: Conector T-pin excesivamente caliente tras años de uso, indicando posible degradación de contactos internos.

    Solución: Cargador compatible Ywcking (20€) como reemplazo principal, manteniendo el original como respaldo de emergencia.

    Optimizaciones de sistema críticas

    Gestión de memoria: zram como salvavidas

    Con solo 8GB de RAM física, implementé zram para expansión de memoria virtual comprimida:

    # Configuración zram implementada
    /dev/zram0: 3.8GB comprimidos
    Ratio compresión: ~3:1
    Resultado efectivo: ~10-12GB memoria utilizable

    Impacto medido: Firefox puede mantener 15-20 pestañas abiertas sin degradación perceptible del sistema.

    Optimización Firefox para RAM limitada

    # Configuraciones clave en about:config
    browser.cache.memory.capacity: 51200 (50MB)
    browser.sessionhistory.max_total_viewers: 0
    browser.tabs.unloadOnLowMemory: true

    Extensiones esenciales:

    • uBlock Origin: Bloqueo de contenido pesado
    • Auto Tab Discard: Suspensión automática de pestañas inactivas

    Gestión energética inteligente

    Limitaciones críticas del MacBook Pro 2013

    Realidad técnica: A diferencia de laptops más modernos, el MacBook Pro 11,1 bajo Linux NO soporta control automático de umbrales de carga de batería:

    # Verificación en mi sistema
    sudo tlp-stat -b
    # Resultado: "Supported features: none available"
    # charge_control_start_threshold = (not available)
    # charge_control_end_threshold = (not available)

    Esta limitación requiere estrategias manuales de protección.

    Sistema de monitorización automática

    Desarrollé scripts de protección que compensan las limitaciones del hardware:

    #!/bin/bash
    # Script de monitorización cada 5 minutos vía cron
    # Alertas por temperatura >42°C
    # Warnings por tiempo prolongado al 100%
    # Modo nocturno estricto 22:00-08:00

    Configuración TLP funcional (sin umbrales automáticos):

    # Configuraciones que SÍ funcionan en MacBook Pro 2013
    TLP_ENABLE=1
    CPU_SCALING_GOVERNOR_ON_AC=ondemand
    CPU_SCALING_GOVERNOR_ON_BAT=powersave
    CPU_BOOST_ON_BAT=0
    PLATFORM_PROFILE_ON_BAT=low-power
    WIFI_PWR_ON_BAT=on

    Estrategias diferenciadas por hardware

    MacBook Pro 2013: Rutina manual estricta

    Limitaciones técnicas:

    • Sin gestión automática de batería
    • Tecnología de carga de 2013
    • Mayor susceptibilidad a degradación térmica

    Rutina diaria implementada:

    • Rango óptimo: 20-85% (manual)
    • Desconexión nocturna obligatoria
    • Monitorización cada 5 minutos via cron
    • Hibernación inteligente configurada

    Rutina mensual para calibración:

    1. Desactivar protección automática
    2. Descarga controlada hasta 5% (NO 0%)
    3. Carga completa al 100%
    4. Reactivar protección

    Diferenciación importante: Mac M1

    ADVERTENCIA CRÍTICA: Las estrategias para MacBook 2013 NO se aplican a Mac M1.

    Mac M1 + Folding@Home:

    • Optimización automática de batería nativa
    • Conectado 24/7 durante Folding es aceptable
    • Rutina mensual 30% (NO semanal, NO 0%)
    • Gestión térmica superior

    Hibernación a disco: configuración avanzada

    Diagnóstico inicial

    # Estado original del sistema
    cat /sys/power/state
    # Output: "freeze mem" (hibernación no disponible)
    
    # Configuración kernel
    grep CONFIG_HIBERNATION /boot/config-$(uname -r)
    # Output: CONFIG_HIBERNATION=y (soporte disponible)

    Configuración paso a paso

    Requisitos cumplidos:

    • RAM: 7.7GB
    • Swap disponible: 15GB (11.2GB disco + 3.8GB zram)
    • UUID swap: a13628e9-f161-4315-afea-4d06e704d09d

    Implementación:

    # 1. Configurar GRUB
    sudo nano /etc/default/grub
    # Añadir: resume=UUID=a13628e9-f161-4315-afea-4d06e704d09d
    sudo update-grub
    
    # 2. Configurar initramfs
    echo "RESUME=UUID=a13628e9-f161-4315-afea-4d06e704d09d" | sudo tee /etc/initramfs-tools/conf.d/resume
    sudo update-initramfs -u
    
    # 3. Reiniciar y verificar
    sudo reboot
    cat /sys/power/state
    # Resultado esperado: "freeze mem disk"

    Sistema de hibernación inteligente

    Script automatizado que:

    • Crea snapshots de trabajo antes de hibernar
    • Hibernación automática al 15% de batería
    • Countdown cancelable de 60 segundos
    • Modo «descarga completa» para calibración
    • Restauración de sesión post-hibernación

    Resultados medibles

    Rendimiento del sistema

    Antes de optimizaciones:

    • RAM efectiva: 8GB
    • Multitarea limitada: 5-8 pestañas Firefox
    • Autonomía: ~2 horas
    • Temperaturas: CPU >80°C frecuente

    Después de optimizaciones:

    • RAM efectiva: ~12GB (con zram)
    • Multitarea mejorada: 15-20 pestañas estables
    • Autonomía: 5-7 horas uso real
    • Temperaturas: CPU <75°C normal

    Longevidad de batería

    Datos actuales (3 meses post-instalación):

    # Estado verificado
    Manufacturer: ifixit
    Model: bq20z451 (Texas Instruments - premium)
    Cycle Count: 4 (prácticamente nueva)
    Capacity: 104.2% (superior a original)
    Charge Full: 6669 mAh (vs 6400 mAh diseño)

    Lecciones técnicas importantes

    Inversión inteligente vs reemplazo

    Total invertido: 140€ (batería 120€ + cargador 20€)
    Alternativa evitada: 350€ ThinkPad nuevo
    Ahorro neto: 210€
    Vida útil proyectada: 3-5 años adicionales

    Diferencias generacionales críticas

    Error común: Aplicar estrategias modernas a hardware legacy. Las capacidades de gestión energética han evolucionado significativamente entre 2013 y 2020+.

    Realidad técnica: Hardware de 2013 requiere supervisión manual donde hardware moderno tiene automatización.

    Importancia de la monitorización

    Sin capacidades automáticas de protección, la implementación de sistemas de alertas y scripts de monitorización se vuelve esencial para prevenir degradación acelerada.

    Conclusión: viabilidad a largo plazo

    Un MacBook Pro de 2013 puede seguir siendo funcional en 2025 con:

    1. Hardware renovado: Batería premium + limpieza interna
    2. Optimizaciones específicas: zram, TLP, Firefox tuning
    3. Protección automatizada: Scripts de monitorización
    4. Rutinas disciplinadas: Carga manual inteligente
    5. Hibernación configurada: Protección total del trabajo

    Casos de uso viables:

    • Desarrollo ligero y scripting
    • Navegación web optimizada
    • Tareas de productividad básica
    • Equipo secundario/respaldo

    No recomendado para:

    • Edición de video pesada
    • Gaming moderno
    • Compilación de proyectos grandes
    • Uso como equipo principal

    La clave está en entender las limitaciones del hardware y trabajar dentro de ellas, no contra ellas. Con las optimizaciones correctas y expectativas realistas, la inversión de 140€ puede proporcionar varios años más de utilidad de un equipo que de otro modo sería descartado.

    Recursos técnicos:

  • Cómo darle nueva vida a un MacBook Pro 2013: Batería hinchada, optimizaciones Linux y decisiones inteligentes

    El problema inicial

    Mi MacBook Pro Retina 13″ de 2013 llevaba años funcionando solo con corriente. La batería había dejado de cargar hace tiempo, pero como lo usaba principalmente en casa, no me preocupé demasiado.

    Llegué a plantearme seriamente sustituirlo por una tablet Android con «6GB + 28GB expandidos» (spoiler: esa RAM expandida es básicamente almacenamiento lento disfrazado de memoria). Pero antes de tomar esa decisión, decidí investigar si mi viejo Mac tenía solución.

    Descubriendo el peligro oculto

    Cuando finalmente conseguí el destornillador Pentalobe P5 adecuado y abrí la carcasa inferior, me encontré con una sorpresa desagradable: uno de los módulos de la batería estaba hinchado.

    Esto es peligroso. Las baterías de litio hinchadas pueden:

    • Romper componentes internos (especialmente el trackpad, que está justo encima)
    • Liberar gases tóxicos
    • En casos extremos, incendiarse o explotar

    Si tu portátil tiene una batería vieja y notas que el trackpad está elevado, la carcasa no cierra perfectamente o hay separaciones visibles, revísalo inmediatamente.

    Manejo seguro de baterías hinchadas:

    1. NO la perfores, dobles o presiones
    2. Retírala del dispositivo inmediatamente
    3. Colócala en superficie no inflamable (metal, cerámica)
    4. Mantenla lejos de materiales inflamables
    5. Llévala a un punto limpio o tienda de electrónica cuanto antes
    6. NUNCA la tires a la basura normal

    La solución: inversión inteligente vs reemplazo

    Tenía dos opciones claras:

    Opción A: Comprar un portátil usado (ThinkPad T480 con 16GB RAM) → ~300-350€

    Opción B: Reparar el Mac → Batería + cargador → ~140€

    ¿Por qué reparar?

    Contexto importante: tengo un Slimbook Pro (2019) con 32GB RAM como equipo principal. El MacBook es mi portátil secundario para:

    • Desarrollo ligero en cafeterías
    • Movilidad sin preocuparme por golpes
    • Situaciones donde necesito algo compacto y resistente

    Para este uso ocasional, 8GB optimizados son suficientes. No necesitaba gastar el doble en otro equipo cuando el problema era solucionable.

    El proceso de reparación

    1. Batería nueva de iFixit (120€)

    Pedí el kit completo que incluye:

    • Batería A1493 (compatible con MacBook Pro 13″ Retina Late 2013 – modelo A1502)
    • Todas las herramientas necesarias (Pentalobe P5, Torx T5, spudger, pinzas)
    • Kit de adhesivos
    • Removedor de pegamento viejo

    Ventaja de iFixit: No tienes que comprar nada más. Otros vendedores solo dan la batería y luego descubres que necesitas herramientas especiales.

    2. Limpieza interna

    Aprovechando que tenía el Mac abierto, limpié el polvo acumulado:

    Materiales:

    • Aire comprimido en lata
    • Brocha suave
    • Paño de microfibra
    • Alcohol isopropílico 90%+

    Zonas críticas:

    • Ventiladores (sujetando las aspas para evitar que giren)
    • Disipador de calor
    • Conectores y puertos

    NO uses:

    • Aspiradora (carga estática)
    • Agua
    • Trapo húmedo normal

    3. Cargador de repuesto (20€)

    Mi cable MagSafe 2 original de 2013 estaba reparado con cinta aislante desde hacía años. Aunque funcionaba, con una batería nueva de 120€ no quería arriesgarme a dañarla con un cargador deteriorado.

    Después de investigar, compré un SCOVEE 60W T-Tip en Amazon (19,99€):

    • Compatible con A1502
    • 4.8/5 estrellas con 81 reseñas
    • Certificaciones CE/FCC/RoHS
    • Reseñas positivas sobre temperatura («no se calienta»)

    No es una marca premium como Green Cell, pero para uso ocasional y con las buenas valoraciones, era una opción sensata. El cable original queda como backup de emergencia.

    Optimizaciones de software: TLP para gestión de energía

    Además de la batería nueva, instalé TLP para optimizar automáticamente el consumo de energía.

    TLP optimiza el consumo de batería automáticamente sin configuración manual.

    # Instalación
    sudo apt install tlp tlp-rdw
    
    # Activar
    sudo systemctl enable tlp
    sudo systemctl start tlp
    
    # Ver estado de batería
    sudo tlp-stat -b
    

    Lo mejor de TLP: funciona completamente en segundo plano. Una vez instalado, se olvida.

    Calibración de la batería: crítico pero sencillo

    Las baterías nuevas deben calibrarse para que el indicador de porcentaje sea preciso. Sin calibración, el sistema no sabe la capacidad real y puede apagarse al 50% o seguir funcionando «al 1%» durante horas.

    Proceso correcto según iFixit/Apple:

    Para portátiles:

    1. Carga inicial:
      • Cargar hasta 100%
      • Mantener conectado 2 horas más (crítico para balanceo de celdas)
      • Puede estar apagado o encendido
    2. Descarga completa:
      • Desconectar y usar normalmente
      • Cuando aparezca advertencia de batería baja → guardar trabajo
      • Dejar que se apague solo (no apagarlo manualmente)
      • Esto establece el «ancla» inferior de calibración
    3. Espera:
      • Dejar 5 horas apagado y desconectado
      • Esto asegura que el sistema de gestión registre correctamente la descarga
    4. Carga final:
      • Cargar de forma ininterrumpida hasta 100%
      • ✅ Batería calibrada

    ¿Por qué dejar que se apague solo y no parar al 5-10%?

    El sistema de gestión mantiene una reserva de seguridad invisible. Cuando muestra «0%», todavía hay carga química real para proteger la batería de daños. Solo dejando que el sistema se apague por sí mismo se establece correctamente el punto de «descarga completa» que el controlador necesita.

    Resultados

    Estado de la batería después de la instalación:

    sudo tlp-stat -b
    
    manufacturer = ifixit
    model_name = bq20z451
    cycle_count = 1
    charge_full_design = 6400 mAh
    charge_full = 6661 mAh
    Capacity = 104.1%
    

    ¡La batería tiene 104.1% de capacidad! iFixit envió una batería mejor que las especificaciones originales.

    Mejoras del sistema:

    Antes:

    • ❌ Sin portabilidad (batería muerta)
    • ❌ Cable de carga deteriorado
    • ❌ Batería hinchada (peligro)

    Después:

    • ✅ Autonomía 5-7 horas
    • ✅ Cargador nuevo y seguro
    • ✅ Batería con 104% de capacidad
    • ✅ Sistema limpio internamente
    • ✅ TLP optimizando consumo automáticamente

    Conclusiones y aprendizajes

    1. Las baterías hinchadas son peligrosas

    No ignores las señales: trackpad elevado, carcasa que no cierra bien, separaciones visibles. Revísalo cuanto antes.

    2. Reparar puede ser más inteligente que reemplazar

    Contexto importa:

    • Equipo principal potente → reparar el secundario tiene sentido
    • Solo uso ocasional → 8GB optimizados son suficientes
    • Inversión: 140€ vs 300-350€ → ahorro de 160-210€

    3. iFixit vale cada euro

    Calidad garantizada, herramientas incluidas, guías detalladas, garantía sólida. Para reparaciones importantes, no escatimes en la batería.

    4. La calibración NO es opcional

    Dos horas extras al 100% + descarga completa + espera 5 horas. Parece tedioso pero es la diferencia entre un indicador preciso y uno errático.

    Mi setup final

    Equipo principal (oficina/casa):

    • Slimbook Pro 2019 con 32GB RAM
    • Backend pesado, Docker, IDEs, múltiples proyectos

    Portátil ocasional (movilidad):

    • MacBook Pro 2013 renovado
    • Desarrollo ligero, resistente, compacto
    • Autonomía real de 5-7 horas

    Total invertido en renovación: 140€

    • Batería iFixit: 120€
    • Cargador SCOVEE: 20€

    Vida útil esperada: 3-5 años más para uso ocasional

    Recursos útiles

    Para recordar

    Si tienes un portátil viejo y la batería está muerta o hinchada:

    1. Revisa la batería (ábrelo y comprueba hinchazón – es peligroso)
    2. iFixit para repuestos (calidad garantizada, incluye herramientas)
    3. Limpia el interior (aire comprimido, aprovecha que está abierto)
    4. Instala TLP (gestión automática de energía en Linux)
    5. Calibra después de batería nueva (proceso completo, no atajos)

    Un portátil de 2013 con batería nueva y bien mantenido puede seguir siendo perfectamente usable en 2025 para desarrollo ligero y uso diario. No todo necesita ser reemplazado.


    Hardware: MacBook Pro Retina 13″ 2013 (A1502) | Software: Debian GNU/Linux con XFCE

  • Optimizar GNU/Linux con 8GB de RAM: Firefox + zram para mejor rendimiento

    Mi viejo MacBookPro Retina del 2013, con Debian GNU/Linux y 8GB de RAM iba bastante lento al usar Firefox con múltiples pestañas.

    Estas optimizaciones le dieron una nueva vida sin gastar dinero en hardware.

    Problema

    Firefox es un devorador de RAM. Con varias pestañas abiertas, especialmente sitios web modernos (aplicaciones JavaScript pesadas), es fácil saturar 8GB de RAM. Cuando esto ocurre, el sistema empieza a usar swap en disco, lo que causa congelaciones y lentitud extrema.

    Solución en dos partes

    1. Optimizar Firefox

    Instalar uBlock Origin:

    • Ve a: Menú → Complementos → Buscar «uBlock Origin»
    • Bloquear ads y scripts innecesarios libera fácilmente 1-2GB de RAM

    Activar suspensión automática de pestañas:

    Opción A – Configuración nativa:

    about:config

    Busca browser.tabs.unloadOnLowMemory y actívalo (true)

    Opción B – Extensión (más control):

    • Instala la extensión «Auto Tab Discard»
    • Configura para suspender pestañas después de X minutos sin uso

    Reducir historial de sesión (opcional):

    about:config

    Busca browser.sessionhistory.max_entries y reduce a 5-10 (default: 50)

    Alternativa: Probar Brave Si Firefox sigue siendo muy pesado, Brave es un navegador basado en Chromium pero más eficiente con la RAM:

    bash

    sudo apt install brave-browser

    2. Configurar zram (RAM comprimida)

    ¿Qué es zram? zram crea un dispositivo de swap comprimido en RAM. En vez de escribir al disco cuando se llena la memoria (lento), comprime datos en la propia RAM (rápido). Típicamente logra ratios de compresión 2-3:1, dando efectivamente 10-12GB de RAM «útil» en un sistema de 8GB.

    Instalación:

    bash

    sudo apt install zram-tools

    Configuración:

    bash

    sudo nano /etc/default/zramswap

    Configura así:

    bash

    # Algoritmo de compresión (lz4 es rápido)
    ALGO=lz4
    
    # Porcentaje de RAM a usar para zram (50% = ~4GB)
    PERCENT=50
    
    # Comenta SIZE si usas PERCENT
    #SIZE=512
    
    # Prioridad alta (usa zram antes que swap en disco)
    PRIORITY=100

    Activar:

    bash

    sudo systemctl enable zramswap
    sudo systemctl start zramswap

    Verificar que funciona:

    bash

    zramctl
    # Deberías ver algo como:
    # NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
    # /dev/zram0 lz4           3.8G   ...
    
    free -h
    # Verás el swap total aumentado

    3. Ajustar swappiness (opcional)

    Por defecto, Linux usa valor 60 de swappiness, que significa que empieza a usar swap relativamente pronto. Con zram, puedes bajarlo para que use más la RAM física primero:

    bash

    # Ver valor actual
    cat /proc/sys/vm/swappiness
    
    # Configurar permanentemente a 10
    echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p

    Resultados esperados

    Después de aplicar estas optimizaciones:

    • Firefox puede manejar más pestañas sin saturar el sistema
    • Menos «congelaciones» cuando la RAM se llena
    • Cambio entre aplicaciones más fluido
    • Reducción drástica del uso de swap en disco (menos desgaste SSD)
    • Sistema más responsive en general

    Monitorizar el sistema

    Para ver zram en acción:

    bash

    # Ver uso en tiempo real
    watch -n 2 zramctl
    
    # Ver estadísticas detalladas
    watch -n 2 'cat /sys/block/zram0/mm_stat'

    Hardware testado

    • MacBook Pro Retina 13″ (2013) con 8GB RAM
    • Debian con XFCE
    • Firefox con desarrollo web (múltiples pestañas, DevTools)

    Conclusión

    Con estas optimizaciones, un sistema de 8GB puede comportarse casi como uno de 10-12GB para la mayoría de tareas. No sustituye tener más RAM física para cargas de trabajo muy pesadas (compilaciones masivas, virtualización intensiva), pero para desarrollo web, programación backend ligera y uso diario, la diferencia es notable.





  • Raising Money for CliniClowns

    On September 9, 2023 I will participate in the Alpine tour for CliniClowns. They can ensure that more people with disabilities or dementia feel seen and understood. Will you also help and sponsor me? Thank you very much in advance.

    En Septiembre de 2023 participaré en un evento, un tour donde se recogen donaciones para CliniClowns. CliniClowns es una ONG donde se atiende a personas con demencia o distintas capacidades. Si quieres colaborar con una donación:

    https://www.alpentocht.nl/2023/deelnemers/A01027

  • Instalar GNU/Linux en un Windows 10

    Tengo un Windows 10 en la partición de un portátil antiguo.

    El requisito para ejecutar una distribución embebida de GNU/Linux es: Instalar el Subsistema de Windows para Linux

    Te recomiendo seguir este artículo donde explica los prerequisitos.
    https://docs.microsoft.com/es-es/windows/wsl/install-win10

    Uno de ellos es pertenecer al Insider Program de Windows. Si no puedes hacerlo desde la configuración, puede que lo más rápido sea bajarte la ISO, montarla, y ejecutar el Setup:

    https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewadvanced

    Caveat: He leído que esto activa la telemetría de información hacia Microsoft.

  • Configurando Mutt con Gmail

    Recientemente, me encontré en la tesitura de enviar un parche al kernel linux, concretamente, una corrección menor de documentación. Seguí la sugerencia de este tutorial https://opensource.com/article/18/8/first-linux-kernel-patch de enviar el parche a través de Mutt

    Para configurar mutt, creé el el fichero .muttrc en la carpeta $HOME de mi usuario con el siguiente contenido, sustituyendo __your_user__ por mi usuario y __your_app_password por mi clave de aplicación (lo explicaré más adelante).

    # ================  IMAP ====================
    set imap_user = '__youruser__@gmail.com'
    set imap_pass = '__your_app_password__'
    set spoolfile = imaps://imap.gmail.com/INBOX
    set folder = "imaps://imap.gmail.com:993"
    set record="imaps://imap.gmail.com/[Gmail]/Sent Mail"
    set postponed="imaps://imap.gmail.com/[Gmail]/Drafts"
    set mbox="imaps://imap.gmail.com/[Gmail]/All Mail"
    
    # ================  SMTP  ====================
    set smtp_url = "smtp://__youruser__@gmail.com@smtp.gmail.com:587/"
    set smtp_pass = $imap_pass
    set ssl_starttls = yes # activate TLS if available
    set ssl_force_tls = yes # Require encrypted connection
    
    # ================  Composition  ====================
    set editor = `echo \$EDITOR`
    set edit_headers = yes  # See the headers when editing
    set charset = UTF-8     # value of $LANG; also fallback for send_charset
    # Sender, email address, and sign-off line must match
    unset use_domain        # because joe@localhost is just embarrassing
    set realname = "John Smith"
    set from = "__your_user__@gmail.com"
    set use_from = yes
    

    Para generar una clave de aplicación, fueron necesarios realizar dos pasos en: https://myaccount.google.com

    1. En el menú a la derecha, pinchar en «Seguridad». A continuación, en la sección «Iniciar sesión en Google», activar «Verificación en dos pasos».

    2. En el menú a la derecha, pinchar en «Seguridad». A continuación, en la sección «Iniciar sesión en Google», seleccionar Contraseñas de aplicaciones, genera una nueva para usarla con Mutt.

    Gracias a esto ya pude enviar el patch así:

    mutt -H /tmp/0001-Update-the-documentation-referencing-Plan-9-from-Use.patch

    Previamente, para obtener la lista de mantenedores de esa sección del código, me bajé este script de perl:
    https://github.com/torvalds/linux/blob/master/scripts/get_maintainer.pl

    Y ejecutandolo desde la carpeta o directorio donde hemos descargado el código del kernel, obtendremos la lista de direcciones de email a los que podriamos enviar el parche para su revisión.

    e.g.:

    $HOME/bin/get_maintainer.pl /tmp/0001-Update-the-documentation-referencing-Plan-9-from-Use.patch
  • Sleeping under the stars

    Sleeping under the stars

    El Puerto del Boyar

    I decided not to finish the day without writing about this weekend.

    Not many days ago I attempted a similar adventure going alone to spend the night in the countryside with the sole company of my newly acquired tent and sleeping bag. Tales of wild dogs attacking surprised trekkers didn´t ease my mind while I went there by car at night, so that adventure didn´t take the turns I expected, even when I had nice discoveries when the day arrived.
    The record of that story was taken and fictioned somehow by my friend Alfa Bravo here: http://alfabravo.org/2016/09/11/vivac-receloso-solitario.html

    Several times Alfa Bravo poked me to repeat the same adventure this time by making a joint effort with the rest of the gang. So, this time, one journey that started with only 3 being interested ended with 7 of us going to El Puerto del Boyar on Saturday to live the experience.

    As usual, we meet at Moli´s, the place we like to gather to have a bite for breakfast. Although this time it´s at 5pm when all of us are sound and ready. I joke about Arantxa and Alfa Bravo leaving La Comarca when I see them with their backpacks.

    Leaving La Comarca

    Soon, 3 cars are ready to go, and we reach Puerto de El Boyar with enough time to trek along the trail that leads to El Puerto de las Presillas.

    I feel subdued from the usual chatter of my mind when ascending the path as I am captivated by the colors the valley below us is taking. The sun irradiates magnificent in his last hour approaching the horizon. Moments like this make me feel like shaken and awaken from the stupid slumber of the routines of living in the city.   The valley with its trees that grabs its sides of the mountains make an astounding carpet taking hold of the rocks, the reality and my eyes.
    puesta de sol

    I can´t avoid finding myself laughing happily at this. And my friends tell me they like seeing me this way.

    Near the trail we find the spot where we will spend the night, so after setting the tents, 3 of us decide to take a run and climb two little peaks to the west so we can have a better look of the last lights.

    I finding myself joining my two buddies in the contemplation. We are silent sitting atop this height looking at the distance. The yellow, oranges, reds are mixing together to the west, trenched against the approaching darkness of the new night.

    I ask: «Think in a word to describe this moment».  I notice how all of us concentrate on getting the picture that displays in front of us and around and get no answer. I smile in satisfaction.

    comunion

    We receive a call in the walkie talkie from Alfa Bravo inviting us to join the rest of the party below to have a beer. So, we go back down, taking care on not flinching and putting our hands where the rocks do not cut.

    How many times I have felt like a child seeing the setting sun for the first time? I will turn 40 very soon, however the moment of the setting sun seems like the same one, when I am 5 years old again, taking me where no time exist. That is what I feel now.

    Enjoying this experience with my friends make it totally different from the times I have been alone, and I start to appreciate that.

    Down below, we share the meal, I give fruit to Pablo with gives me part of his bocadillo. Arturo invites me to a beer while Lucena gives me a cigar.

    After the meal, Salva, Pablo and me trudge onto the opposite direction to have a better spot of the valley for tomorrow.

    Maybe it´s the nature, the scenery, the time, the silence, or perhaps just being out of our normal routine that we spend a couple of hours talking about the purpose of life and the usual discussions I enjoy to be part of.

    Sunrise

    I could continue writing about the next morning, however, I will leave that for your imagination. I prefer to leave you now wondering and with your mind wandering in wayfarers paths, the special moments that makes you feel centered…and I wish that you reach for them with no delay.

    Another summary of the story in spanish can be read at http://alfabravo.org/2016/10/09/cuando-aventura-magica.html

  • Encuentros en Sevilla y Cádiz

    Encuentros en Sevilla y Cádiz

    ¡Éste finde se presenta con movimiento como a mi me gusta!

    Debian

    •  Sábado, estoy en l Lambda World, un evento internacional sobre programación funcional, que va a ser en …¡Cádiz!
      http://www.lambda.world/

    LambdaWorld_400x400

  • Desarrollo de software: Estimaciones ágiles con Scrum

    Desarrollo de software: Estimaciones ágiles con Scrum

    Este año 2015 he comenzado una nueva etapa en 47Degrees, una empresa de desarrollo de software con sedes en Seattle y San Fernando, con el ambiente de trabajo con el que siempre he soñado, aparcando de momento mis proyectos como Universidad Quantum hasta encauzar esta nueva etapa. Éste artículo refleja mi opinión personal sobre esta metodología.

    Entre las cosas que estoy aprendiendo a base de practicarlas es a trabajar en equipo usando Scrum. De esta metodología ágil podrían beneficiarse grandemente las empresas en las que he estado hasta ahora, en las cuales los desarrollos en los que participé se organizaban en cascada, es decir,
    el gerente o jefe de proyecto organizaba el tiempo sin tener en cuenta las estimaciones dadas por el equipo.

    Aquí traduzco un artículo de scrummmethodology del cual cualquier equipo puede sacar grandes beneficios al aplicarlo en el desarrollo de sus proyectos.

    * Estimaciones en Scrum y Puntos de Historia.

    En el desarrollo en cascada, los mánager determinan la capacidad de trabajo de alguien del equipo en terminos de tiempo. Es decir, los mánager estiman cuanto creen que un trabajo dura en terminos de tiempo y asignan el trabajo según el tiempo libre de este miembro del equipo. Esto es problemático ya que esto no distingue entre una ‘historia’ que es dificil de completar de una historia que no requiere mucho esfuerzo, sólo tiene en cuenta el tiempo que va tomar. Para decirlo de otra manera, programar una nueva funcionalidad y organizar los documentos de tu mesa son considerados como tareas que llevan el mismo tiempo, sin embargo no hay dudad de que la primera requiere un grado mucho mayor de concentración y esfuerzo. Por este hecho, se deberían de reconocer como tareas totalmente diferentes que requieren distintos niveles de esfuerzo.

    Scrum toma un enfoque diametralmente opuesto para determinar la capacidad de un miembro del equipo. Para empezar, Scrum asigna el trabajo al equipo completo, no a un individuo. En su filosofía se pone el énfasis en el esfuerzo colectivo. En segundo lugar, los equipos Scrum prefieren no cuantificar su trabajo en terminos de tiempo ya que esto puede socavar la auto-organización que es el pilar base del éxito de Scrum. Ésta es la mayor diferencia del estilo en cascada: En lugar de tener un mánager estimando el tiempo de otros miembros del equipo y asignando estas tareas según esta estimación, son los propios miembros del equipo los que estiman su propio trabajo en función del esfuerzo y grado de dificultad.

    ¿Cómo es este proceso de estimación? Scrum no prescribe una manera única de estimar éste trabajo. Lo que hace es delegar en el equipo ésta estimación sin usar términos de tiempo, y usar, una métrica abstracta para medir el esfuerzo.
    Entre los métodos más comunes para cuantificar esto se encuentran: El uso de tallas numéricas (del 1 al 10), tallas de camisetas (XS, S, M, L, XL, XXL y XXXL), la secuencia de Fibonacci (1, 2, 3, 4, 5, 8, 13, 21, 34, etc.) o incluso razas de perros, en el que un Chihuahua representaría la historia más pequeña y un Gran Danés la más grande. Lo importante de todo esto es que el equipo comparta y entienda la misma escala de manera que todo el equipo se sienta cómodo con sus valores.

    Durante la sesión de planificación del Sprint, el equipo se sienta para estimar el esfuerzo requerido por cada una de las historias del ‘backlog’. El Product Owner necesita estas estimaciones para poder priorizar de manera efectiva las tareas en el ‘backlog’, y como resultado, estimar la publicación del proyecto en función de la velocidad. Para ello, el Product Owner necesita una evaluación honesta de la dificultad de un trabajo. Entonces, incluso cuando un equipo hace la estimación conjuntamente, se han de tomar acciones para reducir la influencia de como un equipo estima. Por eso, se recomienda que todos los miembros del equipo muestren su voto simultáneamente. De esta manera, cuando los individuos «muestran sus cartas» a la vez, el proceso de votación es como un juego de poker. Algunos equipos han desarrollado sus propios mazos de cartas expresamente para este proceso. Algunos equipos llaman a esto una «ronda de poker de planificación»

    A pesar de todo, incluso cuando los equipos comparten la numeración de las escalas que utilizan, estos pueden estimar de manera distinta. Para llegar a un acuerdo que refleje la dificultad de una historia, con frecuencia se requieren varias rondas de estimaciones. Los equipos ya veteranos que estan familiarizados con el proceso suelen alcanzar el consenso en unas pocas rondas de poker de planificación.

    Fuente: http://scrummethodology.com/scrum-effort-estimation-and-story-points/

    Créditos: Imagen de portada obtenida de: https://flic.kr/p/aehXAi con licencia https://creativecommons.org/licenses/by-sa/2.0/

  • 35 recomendaciones para hacer de este año tu mejor año hasta la fecha

     

    Estoy sentando en este avión pensando en que hace a la gente más exitosa que continuamente sobresalga de la gente a su alrededor.

    Mientras entramos en lo que espero sea el mejor año de nuestra vida hasta ahora, he desarrollado 35 recomendaciones en las cuales te invito a que te concentres.

    Compartelas, reflexiona sobre ellas, publicalas donde peudas verlas y permite que formen parte de tu mentalidad.

    1. Recuerda que la calidad de tu vida está determinada por la calidad de tus pensamientos.
    2. Manten las promesas que haces a los demás – y a ti mismo.
    3. El proyecto que más te asusta es el proyecto que necesitas hacer primero.
    4. Pequeñas mejoras diarias son la clave para resultados impresionantes a largo plazo.
    5. Para de estar ocupado estando ocupado. Este nuevo año, despejate de distracciones de la vida+trabajo y enfocate monomaniacamente en las pocas cosas que importan.
    6. Lee «El Arte de la Guerra».
    7. Ve «El luchador».
    8. En un mundo don la tecnología está causando que algunos de nosotros olviden como actuar humanamente, conviertete en la persona más educada que conozcas.
    9. Recuerda que todas las grandes ideas fueran al principio ridiculizadas.
    10. Recuerda que los críticos son soñadores que se asustaron.
    11. Sé como Apple en tu obsesión por acabar los detalles correctamente.
    12. Toma 60 minutos cada fin de semana para desarrollar el mapa para los próximos siete días. Como Saul Bellow dijo una vez: «Un plan te libera del tormento de decidir.»
    13. Liberate de la necesidad de gustar a los demás este nuevo años. No puedes ser un visionario si ansias gustar.
    14. Interrumpe y sé interrumpido.
    15. Contrata a un entrenador personal para que te ponga en la mejor forma de tu vida. Las superestrellas se enfocan en el valor que reciben sobre el coste del servicio.
    16. Dale a tus compañeros, clientes y familia una de los mejores regalos de todos: el regalo de tu atención (y presencia).
    17. Cada mañana preguntate a ti mismo: «¿Cómo puedo servir mejor al mayor número de personas?»
    18. Cada noche preguntate a ti mismo: «¿Qué 5 cosas buenas me han ocurrido hoy?»
    19. No gastes tus horas más valiosas (la mañana) haciendo trabajo de poco valor.
    20. Deja cada proyecto que toques mejor que lo encontraste.
    21. Tu trabajo no es sólo trabajar. Tu trabajo es dejar un rastro de líderes detrás tuyo.
    22. Un trabajo no es «sólo un trabajo». Cada trabajo es un vehículo esplendido para expresar tus dones y talentos – y para modelar algo excepcional en todo tu alrededor.
    23. Los miedos que no enfrentes se convertiran en tus limites.
    24. Levantate a las 5 am y toma 60 minutos para preparar tu mente, cuerpo, emociones y espíritu para ser excepcional durante las horas que siguen. Ser una superestrella no es el dominio de los virtuosos sino de los preparados.
    25. Escribe cartas de amor a tu familia.
    26. Sonrie a los extraños.
    27. Bebe más agua.
    28. Manten un diario. La historia de tu vida es merecedora de ser registrada.
    29. Haz más de lo que te pagan por hacer, y haz un trabajo que deje a tus compañeros sin aliento.
    30. Deja tu ego en la puerta cada mañana.
    31. Establece 5 objetivos diarios cada mañana. Esas pequeñas victorias te conduciran a 2000 pequeñas victorias al final del año.
    32. Dí «por favor» y «gracias».
    33. Recuerda que el secreto de la felicidad es hacer un trabajo que importe y que sea un instrumento de servicio.
    34. No seas la persona más rica de la tumba. La salud es riqueza.
    35. La vida es corta. El mayor riesgo es una vida sin riesgo. Y conformarse con el montón.

     

    Mantente Grande,

    Robin.

     

    Este artículo se sale de la linea tecnológica de la página, sin embargo considero un buen punto de partida para que todos creemos grandes cosas en nuestra vida este año.

    Juan – zoperman

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.