domingo, 2 de septiembre de 2018

Dell XPS 13 y el "Dynamic Brightness Control"




Hace cosa de año y medio, tras haber estado unos cuantos años muy satisfecho con el modelo anterior de XPS 13 de Dell (la edición Developer, con Ubuntu preinstalado), me actualicé a la ultima edicion del XPS 13, el modelo 9360.

Lo cierto es que aparte de llevar la ultima version del Intel i7 y 16Gb de RAM en lugar de las 8 que tenía el anterior, no había muchos mas cambios. Pero para programar con Grails junto con las ventanas de terminal, maquinas virtuales y demás que suelo tener, el paso a 16Gb era algo necesario.

La instalación de Linux Mint en lugar del Ubuntu que venía de serie fué limpia. Sólo tuve que pasar a los kernels 4.13.x en lugar de los 4.11.x por no-recuerdo-que problema tonto con la WiFi, o el trackpad.

El teclado no es que me volviera (aún, vuelva) loco: el del model anterior es en mi opinion mucho mejor con mas relieve en las teclas y mas facil la pulsación. Todavia hoy, caso dos años despues, me cuesta hacer de forma rápida la combinación Ctrl-Shift-[cualquier tecla] porque o bien el Ctrl o bien el Shift no se pulsan bien. Son bastantes las veces que he parado una tarea en una terminal al intentar copiar con Ctrl-Shift-C y pulsando en realidad Ctrl-C

Pero si había algo realmente molesto es una funcionalidad que a algun genio se le ocurrió en Dell: el Dynamic Brightness Control. Esta maravilla lo que hace es cambiar el brillo del display de forma automática en función del contenido que hay en tu pantalla. Si hay contenido muy claro, aumenta el brillo. Si es oscuro, lo baja. Ojo: que no me he equivocado. No es que intente igualar (que ya sería suficientemente malo), sino que intenta realzar aún mas. Caso típico: estas en la cama, o en semioscuridad por la noche y abres un terminal con fondo oscuro. El portatil automáticamente baja aún mas el brillo hasta que casi no puedes leer. Cambias al navegador, con fondo claro, y la pantalla comienza a brillar cada vez mas hasta que te quema los ojos. Genial. Y si fuera diseñador, imagina los problemas con el cambio de contraste y brillo.

Empecé a buscar soluciones y había mas gente con quejas. Desde el soporte técnico de Dell no me daban ninguna solución. Una funcionalidad que debería poderse habilitar o deshabilitar desde BIOS (en mi opinión) estaba grabada a fuego en el sistema de video. Si tienes este modelo de portatil (este problema tambien está presente en algunos de la gama Inspiron) y sospechas que estás afectado por el problema, en esta página puedes comprobar si realmente lo estas o no

Mientras que estaba con la reclamación en el servicio técnico, y a raiz de las quejas de los usuarios en los propios foros de Dell y en Reddit finalmente Dell liberó una utilidad para desactivar esta funcionalidad. Una herramienta que solo funciona en Windows. Reclamé a Dell:

- A ver, Dell, vosotros me habéis vendido el ordenador con Linux, y presumís de dar soporte a Linux. ¿Donde está la herramienta para parchear la dirección de memoria que deshabilita esto?
- Ni está ni se la espera en el futuro
- Estupendo. Entonces, ¿que hago?
- Formatear el equipo, instalar Windows, ejecutar la utilidad y restaurar el equipo
- ¿Estais de coña, ¿verdad?. ¿Borro mi equipo de trabajo e instalo un windows pirata, es lo que me estáis diciendo?
- Si, es la única solucion
- ¿Y no puede Dell proveer una imagen Iso con la utilidad, o un ejecutable, o una actualizacion de BIOS...?
- Nope. La herramienta solo funciona en Windows.


Y así ha pasado el tiempo. He cambiado las ventanas de terminal a blanco, he cambiado los colores de mi IDE (IntelliJ idea) a colores claros... todo por la maldita función no deseada.

Durante este tiempo he intentado crear un USB de arranque de Windows para ejecutar el programa sin tener que borrar los datos. Sin éxito. Las pruebas con unetbootin y versiones (que aparecen y desaparecen) de Windows Portables (Gandalf es el que estuvo mas cerca) eran todas fallidas. La mayoria de las veces el pendrive no arrancaba (probando combinaciones de formateo con diferentes tablas de particiones, MBR.. ) Cuando arrancaba en Windows no podía instalar programas. Por supuesto, desde una máquina virtual el parche no funciona. Para mas coña, para ejecutar la utilidad que desabilita la funcionalidad, es necesario instalar los drivers de video de intel.

Al final este fin de semana, antes de empezar el curso me decidí a quitarlo como fuera. Tras el backup completo empecé a buscar alguna forma de arrancar desde pendrive para evitar todo el lio de cambio de sistema de boot, formateo, instalación, restauración... y finalmente encontré una forma que me ha funcionado basado en la página de ArchLinux sobre el XPS13. Con algunos cambios (la herramienta woeusb parece no estar disponible ya en los repositorios y no me apatecía ponerme a compilar). Y necesitando un Windows para hacer el proceso.


El proceso, desde Windows (si, he necesitado un Windows para solucionar el problema), ha sido el siguiente:

  • Descargar desde el sitio oficial de Microsoft la herramienta para creación de una ISO de instalación/arranque. No descargas la ISO, sino una herramienta que (entiendo) toma parte de instalación de Windows (numeros de serie incluidos) y crea un fichero ISO. No tengo muy claro si lo que crea es una ISO para reinstalar o para ejecutar en vivo, pero da igual.
  • Usar la herramienta Win2Usb para crear el pendrive de arranque. Aunque se supone que con 16Gb es suficiente, no lo es. Yo he necesitado uno de 32Gb. Afortunadamente, esta herramienta particiona el pendrive y modifica el sector de arranque de la forma en que a Windows le gusta para luego arrancar.
  • Arrancar con el Pendrive recien creado. Por suerte, el arranque es bastante limpio (es como una instalación, con su seleccion de idioma y su Cortana hablando) pero todo se ejecuta sobre el pendrive. Afortunadamente, permite la instalación de software, conexion a internet, etc.
  • Instalar los drivers de video para el XPS13 (verifica si hay una version posterior!)
  • Instalar la herramienta de (des)activación del Dynamic Brightness Control
  • Comprobar en la página de test que el problema ha desaparecido.
  • ¡Listo!


Visto ahora, no parece tan complicado. Pero en total, a lo largo de este año y medio, probablemente me ha llevado mas de 25 horas de llamadas, pruebas, lecturas, intentos... Ten en cuenta que cada prueba (descargar una ISO, grabarla, arrancar, probar...) lleva sus 15 ó 30 minutos. Y lo que mas me fastidia ha sido el nulo soporte de Dell en un problema que obviamente es suyo. Ni por teléfono (ojo: ningún problema con los técnicos, super competentes, que me han atendido por telefono o email), ni por twitter (numero de respuestas interesandose por el problema: cero)

Ya tengo el problema solucionado pero ¿volveré a comprar un Dell?. De momento hace pocas semanas tuvimos que comprar uno nuevo en la empresa y mi recomendación fué Lenovo. Tambien hemos comprado Mountain (ningún problema, tal vez un poco ruidosos y pesados) y desde hace algun tiempo me están hablando muy bien de los Slimbook (además, españoles).

Asi que... ¿repetiré Dell?. Seguramente con dos ha sido suficiente. Una pena, tras años recomendándolos por la buena experiencia del primero.





lunes, 26 de marzo de 2018

Pero.... ¿quien #!%& es Malena Gallino Vedoya?


Hace bastante tiempo que dejé de usar Facebook. Ya en aquel momento no lo usaba mucho (no me gusta la simetria obligada de la relación en esta red) y empezaron a saltarme algunas alarmas en lo referente a la privacidad por el seguimiento de información que realizaba la red. En web. En el móvil solo tuve un par de veces instalada la aplicación que me resultó muy poco útil y duró poco ocupando espacio. Asi que en septiembre de 2016, coincidiendo con algún incidente de control de contenido por parte de facebook (para ser exactos, la retirada por contener un desnudo de la foto de Nick Ut de la niña del napalm) decidí que ya era suficiente.

Ahora, pasados un par de años, están saliendo a la luz noticias de que terceras empresas estaban usando la información proporcionada por facebook (por sus usuarios, de forma ingenua) para dirigir publicidad de forma certeramente segmentada. ¿Quien podría haberlo imaginado?. Casi resulta entrañable esta forma de caer del guindo de los medios que ahora cargan contra facebook por hacer lo que ellos conocen y hacen desde hace tanto tiempo. Con menos datos, es verdad, pero porque su forma de distribución (al menos los no digitales) no lo permite.

Pero bueno, el tema es que he leido por algún sitio que facebook ofrece un servicio para descargar todo lo que tiene sobre ti asi que he vuelto a conectarme tras casi dos años. Mi primera impresión ha sido «Dios, ¡que poco ha cambiado esto!». Tampoco es que esperara muchos cambios pero... es que ni siquiera el ajuste del ancho de columna ha cambiado. Pero bueno, entrando en https://www.facebook.com/settings en la parte inferior tienes un enlace para Descargar una copia de tu información que pasados unos minutos te permite obtener un fichero .ZIP con todo los que (presumiblemente) tienen sobre ti.

En algunos de los mensajes que había leido comentaban que a mucha gente le había aparecido el historial de llamadas de voz y SMS de su movil junto con metadatos de la llamada. No es mi caso. Seguramente por no tener la aplicación de Facebook instalada en el movil. Eso que me he ahorrado. Aun asi, si esperas obtener en el paquete de información algo relacionado con Whatsapp (que seguramente tambien disponga de esa información y mucha otra) o Instagram (sospechosa, creo que injustamente, de escuchar las conversaciones de los usuarios), no vas a encontrar nada de eso aquí.

El ZIP contiene varios ficheros HTML y las fotos que has ido subiendo. En mi caso, que hice una limpieza hace algun tiempo (incluso con una herramienta que encontré para poder borrar de forma mas o menos automáticamente), son unos míseros 20 Mb que puedes ver cómodamente con el navegador cargando el index.html que aparece en la carpeta raiz donde descomprimes el archivo ZIP. Puedes encontrar cada publicación que has hecho en tu muro (en mi caso, desde Julio de 2007), cada cambio de clave, cada dirección IP que has usado, las geo-coordenadas deducidas por la direccion IP, cada Cookie, navegador, ordenador utilizado. Cada anuncio en que has hecho click, tu lista de amigos, páginas a las que has dado like (música, cine, libros...), cada evento al que te han invitado (hayas aceptado o no), todas las conversaciones con otros usuarios.

Nada especialmente imprevisible y si desde luego una buena lista de la información que cada uno de nosotros ha proporcionado a Facebook. Que no tiene porqué coincidir con la información que facebook ha sido capaz de deducir a partir de todos estos datos.

Solo hay dos cosas que me han llamado la atención. La primera es una tontería: Facebook (porque yo no) me ha incluido en un grupo de amigos llamado Established Adult Life. Parece que hay mas gente a la que ha pasado lo mismo. ¿Algún tipo de clasificación interna de Facebook?. ¿Porqué lo describen como Grupo de Amigos como si fuera algo mio junto con seguidores y amigos de verdad?

Y sobre todo, lo mas ¿curioso?¿mosqueante? de todo: la información de las fotografías desde 2011 (anteriores no). Todas las fotografías, hechas con los distintos móviles, con las cámaras de verdad... TODAS las fotos llevan junto con la información EXIF el siguiente texto:

1:36 Malena Gallino Vedoya Il me donne la sublimation artistique et la beauté , j'ai donc choisi Johnny , vous étrange beaucoup et est toujours dans ma tête extamadamente fou femme sexy ... belle et unique ... Je n'ai pas encore l'émerveillement et la filière beauté moi, je vous mon homme virtuel aimer que d'avoir à arrêter pour de bon . ! . je t'aime

Una simple búsqueda en google muestra que no soy el único al que aparece esa curiosa informacion pero nadie parece saber de donde sale exactamente. Muy curioso. Habrá que preguntar a Facebook quien esta chica que aparece en la información escondida de nuestras fotos.

Última curiosidad: buscando información sobre la tal Malena Gallino Vedoya me he encontrado algunas páginas de gente que ha cogido el ZIP con toda su información (incluida la privada de IPs, geoposicionamiento y demás) y la ha puesto en internet de forma pública, sin ningun tipo de protección. Y luego nos quejamos de que pase lo que pasa...


Actualización: Se me había olvidado comentar otra cosa que me ha llamado mucho la atención: la lista de empresas que tienen mi información. Desde luego que no he usado el login de facebook para conectarme a todas ellas ellas (tal vez 4 ó 5, si) , ni se como ha podido llegar mi información hasta estas terceras empresas. Porque la lista no es precisamente pequeña:


Skillink cabinet de recrutement digital
Pinnacle Partners
Dfind Science & Engineering
Airbnb
SABO AB
UGI Energy Services
Spotify
Nouvall Engineering Services
Valley Power Systems
Electro Power Systems
Boxhill AB
Jobba hos Keolis Sverige
Cognizant North America
Deliveroo
Accenture Sverige karriär
HTC Global Services - Official Page
Bleiken
Folksam
DIVERSANT
Randstad USA
DAF Sverige
Heritage Bank
Horizontal Integration
Mainz Brady Group
CPS Recruitment, Inc.
Open Carrières
EG Workforce Solutions
TJFACT - Totally Joined for Achieving Collaborative Techniques
Prevas AB
Hoffmaster Group, Inc.
Aldia Cooperativa Sociale
CSS Industries, Inc. Careers
Journey Mental Health Center
Professional Recruiter Associates
HNR
VP Total Solutions
Languageline Solutions UK
VantageLinks, LLC
TSP
Kuribay
MIG - Martins Investment Group Talent Acquisition
MGEN
Telephonics
Yates Construction
JITR
Career Movement
Spacelabs Healthcare
Condesign AB
Medical Specialties Distributors, LLC (MSD)
Nigel Wright Group
Menasha Corporation
Privalia
Ciber Careers
Ntelicor
RCN
Uber
INDUS Technology-Jobs
Waste Management
Groupe DFM
Men's Wearhouse
Systematix
The HT Group
Careers at Blue Lynx
HHT Careers
Booz Allen Hamilton
’47
CLS Services
Kearney & Company
Virtusa
North Country Initiative
Volvo Cars
Experis Sweden
Total Resurs
Momentum Consulting Corporation
Programmer Resources Intl. Inc.
Uber Eats
CGT Caterpillar
Stockholmsmässan
Sesmento Selectiekantoor
Inrego AB
Morisey-Dart Group
Cerfrance Alliance Centre
BDO USA, LLP
02dege
comScore, Inc.
Waterlandziekenhuis
Thompson Thrift Retail Group
RCG Global Services, Inc.
KILOUTOU
Kele, Inc.
Redbarn Premium Pet Products
Seasonal Staff
NSG Pilkington North America
Strategic Operational Solutions, Inc. - stopso
Sally Beauty
JW Research
TeamQ14
Maryland Transportation Authority (MDTA)
Monster
American Family Insurance-Careers
Razor Technical Staffing
SYKES USA
Parkwood International
WSWHE BOCES
Interplace, Inc.
Best Buy
Ipro Tech
Enovacom
Infotiv AB
The Bachrach Group
r2 Technologies
NTT DATA Services
ARC Recruitment
Stars Behavioral Health Group
SO4IT
Srinisrini
E-Talent Network
DATS Recruitment & CAD Services
Equipment Depot
MCA Ingénierie
SELLA Conseils. Recrutement et Solutions RH
Parsons Corporation
Capgemini France
DLT Solutions
Xpeedio
Hitachi U.S.A
CallTower
Eaton
Airbnb (エアビーアンドビー)
Evoqua Water Technologies
Decathlon España
Silgan Containers
IHerb Careers
NJ TRANSIT
Physicians Mutual
Avantage - makes IT simple
Infotel
Mediware Information Systems
Yanfeng Automotive Interiors
Hunter Engineering Company Corporate
Jarvis Johnson Ltd
Joh. Mourik & Co. Holding
Long Beach Transit
WFA Staffing Group
Zalando
AdeptSource
UKENsprint2017
Het Kadaster
Careers at Dell
Tierpm AV/IT Workforce Solutions
Silicon Refractory Anchoring Solutions
Hillside Family of Agencies
Jurek Rekrytering & Bemanning AB
Atos France
FM Global Careers
Hayes Management Consulting
Netsync Network Solutions
Hypertherm Careers and Jobs
Lefit Recruitment - Interim I Coaching & Training
Global Power Equipment Group
Randstad UK
Fujitsu Sverige
CS Communication & Systèmes
Chaffey College
Proxiad
Quicken Loans Careers
vente privee
Alion
Corparis
Allmännyttans Trainee
Synopsys Careers
Softronic
戶戶送 deliveroo
Delta Dental Insurance Company
Jobba på trafikförvaltningen SLL
Acando Sverige
Netinvestissement

lunes, 19 de marzo de 2018

Greach 2018: Micronaut Edition




Decir que he visto el futuro es sin duda exagerado. Pero tras el pasado Greach tengo una sensacion parecida a la de hace 6 años cuando descubrí Grails, Agile y tantas cosas en pocos dias.


Esta edición de Greach tenido muchos momentos excelentes. No solo el bombazo que ahora comentaré sino muchas otras cosas. Para empezar, el curso pre-Greach que impartió Sergio del Amo @sdelamo, autor de Groovy Calamari. El curso de dos dias fué un excelente resumen de todo lo que se puede hacer con Grails 3.3. Si hubiera que poner un pero, sería que el nivel de los alumnos era demasiado dispar: desde gente como yo mismo que lleva unos cuantos años programando con Grails y que queríamos profundizar en las novedades hasta alumnos que apenas estaban empezando (y que, supongo, pasarían algun mal rato con alguno de los conceptos de Groovy y la convención sobre configuración de Grails).



El primer dia de Greach como evento fué dedicado a Workshops. El primero al que asistí fué de nuevo con Sergio, aprendiendo a securizar correctamente una aplicación y testearla. En el segundo Hélain Schoonjans nos presentó una serie de tests para asegurar desde cero unos servicios REST. Muy interesante. Y para terminar, probablemente el mas interesante de Jacob Aae Mikkelsen en el que nos presentó una aplicación con múltiples errores de seguridad y estudiamos lo que estaba mal y como solucionarlo (Slides, Tool Slides y Codigo de la aplicacion)

No voy a entrar en detalle de todas las charlas. Si que quiero destacar la de Puneet Behl sobre DSLs en groovy (una de mis asignaturas pendientes, una de las cosas que tengo ganas de hacer desde hace tiempo), la de Jacob Aae Mikkelsen sobre las cosas que se pueden hacer con GString (no solo interpolación, muchas mas cosas y truquillos) o la de Vladimír Oraný usando un DSL para hacer mucho mas facil la creación de Hojas Excel con Apache POI. Casi hasta parece divertido hacer hojas de cálculo. Mención tambien el primer dia para la charla de los Salenders Alberto Barón y Alberto De Ávila sobre las mejoras que se pueden incluir en una aplicación Grails 3 para mejorar el rendimiento.



Pero el gran bombazo (ya Iván López, miembro de OCI y organizador de Greach había avisado de que algo grande se iba a presentar) estaba por venir: Graeme Rocher, creador y lider de Grails presentó el nuevo framework en el que lleva trabajando un tiempo: Micronaut (antes conocido como Particles). Se trata de un nuevo framework orientado a microservicios, reescrito desde cero y que podrá ser usado desde Java, Groovy y Kotlin.




Una de las grandes ventajas de Micronaut es la poca memoria que requiere: es posible realizar una aplicación en un JAR de tan solo 8Mb  que arranca en menos de un segundo en a version Java y alrededor de un segundo en Groovy. Simplemente increible teniendo en cuenta que incluye inyección de dependencias y muchas de las cosas a las que nos hemos acostumbrado con los años. Pero la resolución de muchas (por no decir todas) las dependencias y toda la magia se realiza en tiempo de compilación, no de ejecución.  El sistema es tan rápido y ligero que ¡es posible utilizar las aplicaciones Micronaut como tareas en AWS Lambda!

Micronaut incluye además de serie tanto cliente (Jackson) como servidor con lo que el testing es practicamente directo. La creación de servicios basados en anotaciones hace que la creacion de nuevos endPoints para nuestra aplicación se definan de forma realmente cómoda. Por ejemplo:

@Controller("/") class HelloController {
    
    @Get("/hello/{name}") String hello(String name) {
        return "Hello $name"
    }
}


Micronaut soportará ciertas partes de Grails (por ejemplo, Gorm) con lo que la migración (aparte del cambio de mentalidad que supone el paso a una infraestructura de Microservicios) puede ser menos traumático.

Si quieres conocer mas sobre este nuevo framework, Alvaro Sánchez-Mariscal, miembro tambien de OCI, dió una charla al dia siguiente y sus slides ya estan disponibles:




Decía al principio que no fué solo el bombazo comentado lo que me cambió la forma de pensar en como hacer ciertas cosas: la primera charla del último dia (Doc as Code, de Ralf D. Müller) tambien me hizo pensar en que se puede ir mas alla que la generación de documentos en AsciiDoctor para documentar el código, llegando desde las especificaciones a la integración con, por ejemplo, Confluence. Muy interesante.

Por supuesto, no puedo dejar pasar la gran actuación (porque eso fué) de Jorge Aguilera (@jagedn) y Miguel Rueda (@miguelruga) mostrando la utilidad del proyecto @101GroovyScript (Código en Gitlab. Este es uno de los mejores proyectos sobre groovy que estamos viendo crecer en los últimos tiempos en España y es justo agradecer a los autores su trabajo.

Para terminar. Por supuesto, no puedo dejar de agradecer un año más a Iván Lopez y Alberto Vilches por la organización de este evento de referencia internacional que mejora cada año y que está vez ha tenido además la sorpresa de la presentación mundial de un nuevo framework de desarrollo. Ahí es nada



Nota: las slides, codigo y otros enlaces, están siendo recopilados por Helain Schoonjans en este gist