miércoles, 1 de noviembre de 2017

Android al ataque de los PC's...revisitado otra vez

En 2013 creí que estábamos al inicio de una guerra épica entre los grandes fabricantes de sistemas operativos.  Estaba en juego quien dominaría el mercado de los teléfonos, tablets, PC's, híbridos y de los dispositivos con interfaz a usuario por venir. ¿Windows iba a conquistar una parte del mercado de los smartphone? ¿Android iba a tomar una porción de los PC's? ¿Apple iba a reemplazar MacOS por su iOS?  ¿Linux iba a conquistar algo que incluya una UI?

Y la verdad es que no paso mucho.  Excepto quizás la paliza magistral que recibió Microsoft al intentar entrar en el mercado de los smartphones con su Windows.  Mención honorable para Ubuntu y su intento de convergencia smartphone/PC: fueron audaces pensar que Linux, un SO que no tuvo éxito como desktop, iba a tener éxito para dispositivos touch.   También hubieron actores menores, como Jide y su Remix OS, que terminaron cancelando sus iniciativas.

En la actualidad, hay como una guerra fría.  Cada sistema operativo esta dominando su negocio "natural" y no incursiona en otros terrenos.  Windows y MacOS siguen fuertes en los PC donde Chrome-OS ha tenido algo de éxito.  Android e iOS reinan en el mundo touch de los smartphone y tablets.  En los smartwatchs, iOS domina a Tizen y Android Wear.  En los smart-TV, Tizen y WebOS le ganan a AndroidTV.

No obstante, sigo pensando que hay oportunidades.  Como consumidor es una molestia usar varios ambientes que no conversan perfectamente entre si.  Como profesional, es una super molestia trasladar mi laptop desde el trabajo hasta la casa. Como programador, menos mal que me gusta mas la programación del lado servidor, porque en la UI, son demasiados los SO que hay que soportar: Web, Windows, MacOS, Android, iOS, Tizen, webOS y sin contar las variantes.  Una buena guerra (comercial) que limpie este desorden seria bienvenida.

Mientras tanto, me conformo con lo que hay.  Estoy usando para escribir esta entrada de blog, un Samsung Dex que permite que mi smartphone (un Samsung S8+) funcione como desktop conectándolo a teclado/ratón y un monitor.  No es perfecto aun, pero es lo suficientemente practico.  Espero que algún día, este tipo de solución reemplace los PC laptops.

miércoles, 9 de noviembre de 2016

R o Python?


Durante una entrevista para postular a un cargo de Big Data, me hicieron varias preguntas rápidas dándome a eligir entre dos tecnologías.  A la pregunta, R o Python, respondí inmediatamente "R, por las estadísticas". Ahora, viene una respuesta un poco más larga.

Primero, si considero solamente por el lado de lenguaje de programación, no escojo ninguno de los dos y me quedo con Scala.  No solamente considero Scala un mejor lenguaje, pero ademas me permite apuntar a más plataformas: desktop, web en el servidor, web en el browser (scala-js), móvil (incluso iOS con scala-native pronto) y Big Data (Spark, Flink). En comparación, R sirve solamente para Big Data.  Python es un poco más versátil: se usa para web en el lado servidor y Big Data.

Pero tratar R solamente como lenguaje de programación es matarlo.  R es un ecosistema con varios productos open source como RServer, RStudio y packages que implementan todos los algoritmos estadísticos publicados. Finalmente, R agrupa toda la comunidad científica estadística.

Python es popular en el mundo científico en general donde parece que va a ser el nuevo Fortran.  Nota aparte, nunca me va a dejar de asombrar el lado ultra conservador de las comunidades científicas cuando elijen un lenguaje computacional:  Fortran sigue vivo y es de los años 60 y están adoptando recién Python que es del final de los 80.  Entonces, Python tiene muchas bibliotecas matemáticas que son la base de los algoritmos estadísticos, como los calculos matriciales. Pero, no se compara a R en cantidad de algoritmos netamente estadísticos.

Me podrán argumentar que Big Data no se trata solamente de algoritmos estadísticos, también hay pre-procesamiento de la data, lo cual requiere lenguajes mas tradicionales.  Es cierto, pero Big Data viene de empresas comerciales como Yahoo y Twitter, que son mucho más innovadoras que la comunidad científica, y estas empresas han elegido la JVM y lenguajes como Scala y Java. Cuando soportan a Python, es para atraer los programadores de esta comunidad, como lo hace Spark, pero no es su target primario.

No le veo ningún merito propio a Python para proyectos Big Data.  La única razón para escogerlo seria de gestión:  si para un proyecto con mucho procesamiento de data, no tengo programadores Scala o Java y, si al contrario, tengo programadores Python, escojo este lenguaje.  Si el proyecto tiene ademas estadísticas y Machine Learning, escojo R como complemento a Python.

En resumen, Python es un buen plan B.

jueves, 1 de octubre de 2015

Android al ataque de los PC...¡al fin una batalla!


Y la batalla se llama Google Pixel C, donde Android le gano a ChromeOS:  Google escogió el robotcito para empoderar su híbrido tablet/PC que entra a competir con el Microsoft Surface y el Apple iPad Pro.

¿Porqué Google no uso Chrome-OS para su Pixel C?  No tengo idea.  Tampoco se si Google va a mantener Chrome-OS como alternativa o va a fusionar ambos Sistemas Operativos.  La fusión parece lógica ya que los dos están basados en el mismo kernel de Linux, pero supongo que no es una decisión técnica, así que todo puede pasar.

Lo que si se, es que la indecisión tiene su costo.  El articulo de Ars Tecnica que linkee lo dice todo: Android no esta bien preparado para un uso de tipo PC, demasiadas aplicaciones funcionan en modo teléfono, el Chrome versión Android no es tan bueno como Chrome-OS y no hay soporte multi-ventana.

Opino algo distinto que el articulo.  He usado un PC con Android en un all-in-one con teclado/ratón y me consta que funciona razonablemente bien para un uso recreativo y de trabajo liviano.  Para trabajo más serio, no es una solución, pero creo que tampoco lo son los laptop basados en Chrome-OS o estos híbridos tablet/PC tipo Surface o iPad Pro.

En fin, Android se gano una pequeña batalla interna en Google.  Ahora vienen las cosas serias, enfrentarse con Windows 10 y creo que hoy, esta guerra la pierde por paliza.  Ya Google, a recuperar el tiempo perdido.

Edit: 21/12/2015

Algunos otros artículos de Ars Tecnica relacionado con este tema que valen la pena mencionar





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.

viernes, 3 de abril de 2015

Android al ataque de los PC...revisitado


Va a ser 2 años que sigo este tema, y tengo que reconocer que el ataque que me habría gustado presenciar, no alcanzo a ser batalla de Sistemas Operativos y menos una guerra.

Por lo menos no me equivoque en la razón: Google sigue empujando su ChromeOS como Sistema Operativo para PC.  Hay toda una nueva generación de Chromebook, ChromeBox, ChromeBase y ahora ChromeBit. Los pocos proveedores de PC tradicional que se lanzaron inicialmente con Android, ahora usan ChromeOS y solamente quedan proveedores de mini-PC, principalmente fabricantes chinos menos reconocidos, que eligen el robotcito.

Pero todo no esta completamente perdido para Android, ya que desde mi entrada anterior, ocurrieron 3 eventos importantes:
  • Google empezó a fusionar Android con ChromeOS.   Recientemente permite correr aplicaciones Android sobre Chrome (incluyendo en Chrome version Windows).  Y también permite correr chrome-apps, aplicaciones basadas en tecnología web, sobre Chrome versión Android de tal forma que no se puedan distinguir de las aplicaciones nativas.
  • Microsoft empezó a portar su suite Office fuera de Windows y en particular sobre Android.  Se rumorea también que permitirá correr las apps Android en Windows 10.
  • Google saco varias nuevas versiones de Android como Android Wear, Android Auto y Android TV...pero no Android PC.  Eso es en contraste a lo que percibi en el 2013, algo de desinterés de parte de Google por Android. 
Por mi parte, no veo ninguna razón técnica, para no usar Android como Sistema Operativo para PC.  Estoy escribiendo esta entrada usando un all-in-one de 21 pulgadas basado en Android.  Mi experiencia con este equipo ha sido buena para un uso recreativo, me refiero a perder tiempo en las redes sociales, escuchar música, ver películas/series, leer libros o bucear la internet. Yo no soy gamer, pero si tengo campaneros que lo son y que afirman que los juegos Android se ven espectacular en 21 pulgadas.   Para el trabajo en la casa, sigo con Windows o Linux, conectando mi all-in-one como segundo monitor del laptop.  No uso Android para trabajo, principalmente porque algunos programas como Google Docs son inestables en mi all-in-one y que no hay IDE de desarrollo bueno para el lenguaje Scala en Android o en la Web.

En 6 meses más, tendré que ponerme en campaña para renovar este all-in-one, principalmente porque su parte "PC", la CPU, la memoria y el espacio en disco duro, empieza a envejecer en comparación de las normas actuales.  Como puedo recuperar el monitor, una box externa es suficiente.  Todo bien, pero de nuevo, ¿con que sistema operativo?

Android TV

Es como demasiado recreativo el tipo de uso.  Me gustaría tener la capacidad de solucionar algunas emergencias laborales, como completar un documento, dar soporte a un proceso que se cayo el fin de semana, etc, todo eso sin necesidad de llevar todos los días el PC de la oficina a la casa y de vuelta.

Finalmente, incluso para uso recreativo, Android TV depende de servicios en internet que no están habilitados en Chile o que tienen catálogos añejos en comparación a los de EE.UU.

Windows/Linux

Exactamente al revés del caso anterior, demasiado serio el tipo de uso.  Ojala el trabajo queda en la oficina, junto con el laptop PC.

ChromeOS

Si ChromeOS puede correr las aplicaciones Android que me interesan, se transforma en un candidato serio.

Lo que tengo que averiguar es si soporta el modo "offline" para música y vídeos.  El streaming no es opción con mi ancho de banda "campestre"

Android

La gran ventaja de Android sobre ChromeOS es la flexibilidad.  Se instalan algunas apps y se parece a Windows o Linux.

No obstante, el mundo de los Android PC es relativamente "underground" y existe el riesgo que algunas apps corren mal, como me pasa con Google Docs.  En este caso las soluciones se demoran bastante en llegar.

Lo que va a mitigar algunos de los problemas anteriores:
  • al soportar las apps de Android sobre ChromeOS, Google empuja los fabricantes validar que sus aplicaciones funcionan bien con ratón/teclado y un monitor más grande,
  • mirar Android TV sobre una TV de 40 pulgadas a 3 metros de distancia es equivalente a mirar un monitor de 21 pulgadas desde un metro de distancia.  De nuevo, eso va a obligar los fabricantes de apps hacer mejor uso del espacio disponible y adoptar input no basado en touch, en particular para los juegos.
  • Para poder correr chrome-apps, Google ha mejorado bastante la estabilidad de Chrome version Android.

En resumen, Android no esta al ataque de los PC, esta al ataque de ChromeOS.  Así que mi concejo para Google, es que termine de fusionar los 2 sistemas operativos y nos olvidamos del problema.