sábado, 9 de mayo de 2015

Moví algunas entradas sobre Scala a G+


Una entrada rápida para mencionar que volví a usar G+ para hacer comentarios sobre Scala.  Cree una colección Scala con entradas relativamente cortas y en ingles.

Mil disculpas por el pobre ingles, tengo que practicar escribir en este idioma si quiero participar de comunidades open-source.  La verdad es que no escribo bien en ningún idioma ahora, he perdido mi francés, mi español siempre tendrá toque de francés y mi ingles...ojala mejore algún día.

No obstante, si alguien esta interesado seguir mis aventuras con Scala, repito la dirección de la Colección G+.

viernes, 1 de mayo de 2015

Mi experiencia con Android como Sistema Operativo para PC


Desde hace dos años, reemplace mi PC personal por equipos basados en Android.  Por PC, me refiero a un equipo con un monitor grande, que usa teclado y ratón como input y que se mueve poco (laptop) o casi nada (desktop).   Android nació para equipos móviles con touch y pantallas chicas, así que claramente me busque problemas y lo hice por las siguientes razones:
  • Porque me aburrí administrar Windows y Linux.  El PC personal es para entretención, no para solucionar problemas que estos SO deberían tener resueltos hace rato.  En comparación, Android y las apps se actualizan solos.
  • Porque Apple no es opción: yo valoro mucho mi libertad de escoger y el ADN de Apple es encerrar a sus clientes.  Por ejemplo, se puede instalar cualquier aplicación en Android, incluso las que no están en el Play Store de Google.
  • Porque Android nació con y esta optimizado para internet.  Como ejemplo de optimización, quiero leer libros en distintos dispositivos y que se sincronice mi avance automáticamente.
  • Porque Android esta optimizado para el consumo de contenido, lo cual corresponde a un uso más personal
  • Porque buscaba fusionar funciones y ahorrarme la compra de un nuevo PC,
  • Porque quería intentar algo nuevo.
A priori, visualice los siguientes riesgos, de los cuales cuatro ocurrieron y pude realmente mitigar a tres:
  • un dispositivo Android (smartphone o tablet) puede no resistir un uso prolongado, por no poder recargar su batería mas rápido que su consumo de energia o por sobre calentamiento. 
  • capacidad de CPU/memoria/disco limitada en comparación de un PC tradicional,
  • uso de tecnología nueva con problemas de interoperabilidad
  • el SO o las aplicaciones pueden ser inestables o con alguna funcionalidad critica no soportada, por ser un caso de uso poco frecuente de Android,
  • las aplicaciones pueden funcionar mal en pantallas más grandes y con input basado en teclado y ratón.

¿Que entiendo exactamente por uso personal?

Un PC personal tiene un uso recreativo y trabajo liviano.  Esas son las necesidades que tengo para un PC para uso recreativo:
  • Video player: es usar el PC para ver películas, series TV o documentales.  Puede ser en una pantalla compartida (la TV familiar) o en un monitor personal sobre el escritorio.  La calidad mínima es 720p de tal forma que YouTube y otros no entran en esta categoría.  Hago esta distinción porque mi ancho de banda no me permite hacer streaming de vídeo HD: tengo que descargar primero.
  • Music player
  • Navegar en la web y redes sociales 
  • eBook reader: cuando un libro es bueno, hay que poder leerlo en todas partes, incluyendo en el monitor del PC.
  • No soy gamer
Para trabajo liviano en casa, es practico poder responder a emergencias laborales.  En mi caso, es interesante tener un IDE de desarrollo local o en la web, o, por lo menos, la capacidad de tener un terminal remoto.  Además, poder editar documentos, presentaciones y planillas.

Para trabajo planificado en casa, esta el laptop de la oficina.




Como me fue en estos dos años

Mi primer intento fue usar solamente un smartphone y conectarlo al televisor familiar y monitores.  Para eso, compre un LG optimus G y un adaptador MHL (para conexión por cables) y más recientemente, luego que LG actualizo la versión de Android, probé usando un dongle Miracast (conexión inalámbrica). Comparo el resultado con usar el laptop PC de la oficina:

Smartphone + MHL, como vídeo player
  • la señal se corta cada 10 minutos, lo que lo hace inutilizable,
  • la calidad máxima de salida de vídeo es 720p en la TV.  En comparación, el laptop funciona sin problema con 1080p.
Smartphone dongle miracast, como vídeo player
  • una vez establecida la conexión, lo cual no es tan intuitivo, funciona sin corte,
  • la calidad máxima en la TV familiar sigue 720p,
  • probando con otros monitores, también con miracast, pude comprobar que 1080p funciona.  Supongo que la calidad máxima de la TV familiar es 720p y que mi smartphone no es capaz de convertir una señal 1080p a 720p "on the fly".
Para otro tipo de uso, como bucear la web, redes sociales, eBook reader, Android no ajusta la resolución (los DPI) automáticamente para el "second display" y las aplicaciones se ven realmente mal.


Ya que descarte rápidamente el uso del smartphone, compre un all-in-one basado en Android, el Acer DA220HQL: es como un super tablet de 21 pulgadas.

Como vídeo player, lo he usado bastante.  Su limitación es el tamaño máximo de archivo en el USB externo ya que usa el filesystem del viejo MS-DOS: el FAT  Entonces, si bien el monitor es capaz de 1080p, en la practica estoy limitado a 720p. 

Music player: esta ok pero mis canciones se tomaron rápidamente el espacio interno disponible. 

Web y redes sociales: funciona bastante bien.  Una mención especial para Google+ que se ajusta muy bien al espacio disponible, Youtube esta ok y Twitter funciona pero se ve mal en comparación de G+.  Ni idea con facebook (no lo uso).  Finalmente, son pocos los sitios web para los cuales la versión instalada de Chrome no me funciona bien, es algo lento pero más que soportable.

eBook reader: he tenido problemas de estabilidad con ciertas versiones de Google Play Books.  No me impidió leer varios libros de fantasía.

Trabajo: no me funcionaron los IDE's Android o los basados en internet para programar en Scala, pero no es culpa del all-in-one en si: simplemente estos IDE están hechos para desarrollo Java de aplicaciones Android o desarrollo Javascript para la web.  Finalmente, Google Docs es inestable en este equipo.


En resumen, tuve casi todos los problemas que me esperaba, menos uno: el smartphone se calienta pero no se cuelga durante la reproducción de un vídeo y no se le va la batería.  Las mitigaciones de los otros problemas son:
  • capacidad de hardware: me limito a vídeos de calidad 720p y ahora uso el all-in-one como monitor del smarphone vía miracast: no tengo espacio interno en el all-in-one y perdí, otra vez, la llave USB.
  • problemas de interoperabilidad: nada que hacer con MHL, se pierde la señal cada 10 minutos con el adaptador. Miracast funciona mejor.
  • el SO o las aplicaciones pueden ser inestables o incompletos: renuncie a usar el all-in-one para hacer trabajos y tomo prestado un PC de mis hijos si es necesario.  Android debería manejar mejor el segundo monitor (ofrecer cambiar la configuración de DPI por ejemplo) para poder usar el smartphone.
  • las aplicaciones pueden funcionar mal en pantallas más grandes: siempre esta la versión smartphone cuando ocurre eso, como es el caso de twitter.
¿Y como me fue con mis motivaciones iniciales?
  • Dejar de administrar el PC  Si no tomo en cuenta el tiempo para armar todo este cuento, y, por ejemplo, encontrar un adaptador MHL toma su tiempo, claro que Android es más amistoso que Windows o Linux
  • Apple no es opción.  Y sigue así.
  • Android es optimizado para internet y el consumo de contenido. Totalmente cierto, para un uso recreativo, la lleva.
  • Ahorrarme plata,  Si no fuese porque el all-in-one me salio por menos de lo que vale un monitor touch del mismo tamaño, no habría ahorrado nada.
  • Porque quería intentar algo nuevo.  Y así fue.


Conclusión

Es probable que mi siguiente PC sea también basado en Android.  Mi meta ultima es lo que propone Microsoft con Windows Continuum: usar el smartphone para todo.

Finalmente un mensaje para Google.

Google, te aprecio porque no eres Apple o Microsoft, así que no intentes forzarme la mano con tu ChromeOS.  ¡Fusiona ChromeOS con Android una vez para siempre!


¿Windows 10 será un buen crudo?


Después de sacar versiones de Windows para el olvido, MS tiene el talento de sacar una que sorprende, como XP después de 98 y Me y como 7 después de Vista  ¿Será el caso de Windows 10 después del 8 y del 8.1?

Difícil saber aun, pero por lo menos MS acaba de hacer anuncios que me llamaron la atención tanto como usuario como desarrollador.

1) Continuum para telefono

Se conecta el teléfono a un monitor, teclado, ratón y Windows automáticamente despliega un ambiente desktop.

Es realmente una funcionalidad que me gustaría tener para mi celular y he buscado hacerlo con mi Android con resultados bastante frustrantes hasta ahora.

2) Soporte apps Android e iOS en Windows 10 versión Mobile

En caso de Android, se convierte el binario, el APK.  En runtime, MS reemplaza API's de Android por implementaciones basadas en el kernel de Windows y reemplaza API's propietarias de Google (como Google Maps) con implementaciones contra un producto equivalente.

En caso de iOS se recompila el código fuente (Objective-C) dentro del ambiente de desarrollo de MS.

Con ambas soluciones, MS intenta romper la falta de aplicaciones, bajando el costo para los fabricantes de software migrar sus soluciones a su plataforma móvil.


¿Porqué me llama la atención?

Son momentos difíciles para Windows Mobile y MS requiere tomar riesgos para hacer su plataforma relevante:
  • en caso de Continuum, MS, fabricante de los celulares Lumia, entra en competir con los fabricantes de PC,
  • en caso del soporte Android e iOS, arriesga dejar irrelevante su propia suite de desarrollo: sus lenguajes y sus IDE.
  • en caso particular del soporte Android, MS le da argumentos a Google para los juicios que este enfrenta:
    • Google contra la Unión Europea: MS sería la segunda empresa importante, después de Amazon, que re-utiliza el código de Android sin tener que incluir todos los productos de Google.
    • Google contra Oracle sobre el uso de Java: MS ha apoyado abiertamente a Oracle en el tema de Copyright de las API's de Java.  En la practica, MS hace exactamente lo mismo que Google, re-implementa API's, incluyendo algunas que no son open-source como las de Google Maps.
A mi, me gusta ver Microsoft despertar de su inercia.