Posts Tagged ‘celular’


Windows 10 ha sido lanzado y con esto Microsoft promete un nuevo tipo de aplicaciones: “Universal” que asegura su ejecución en todas las plataformas Windows disponibles, desde teléfonos con Windows 10 Mobile, y Pcs. Lo que no nos está diciendo es que se ha redefinido el concepto de PC.

Las PC eran la primera opción para el trabajo tanto para casa como para oficina, con el tradicional monitor y teclado por un lado y el “CPU” por otro. Si nos hacía falta movilidad, no había problema de cambiar a una laptop. Sin embargo, surgieron los smartphones y las tablets y nos dimos cuenta que iban creciendo en potencia y capacidades al punto que muchas personas pueden quedarse con una tablet como computador principal.

Ahora bien, desde el punto de vista funcional, tener una tablet en lugar de una laptop no es nada del otro mundo. Todo está en función de las necesidades de cada usuario.

Para los desarrolladores el problema es desde donde comenzar.

Si vamos por el ala Apple, comenzamos haciendo programas para iPhone/iPod y luego las hacíamos escalar para soportar tablets iPad, cambiando principalmente las pantallas y las resoluciones soportadas. Si queríamos que nuestra app funcione también en Macs ya teníamos que cambiar el código e incluso las gráficas pues el modelo de programación para Mac OSX es diferente al que tiene iOS.

Para el caso de Microsoft, la separación también era clara, si querías móviles te ibas por un rumbo y si querías PC hacías el desarrollo de siempre. El problema es que siempre que hablamos que Windows Phone, o Windows 10 Mobile hasta ahora siempre hemos hablado de teléfonos que nunca llegaron a ser tablets. Cierto que salió Windows RT donde salieron unas tablets pero esa iniciativa nunca tuvo tanto peso comercial. Lo que si parece que viene con fuerza son las tablets pero con Windows 8.1/Windows 10, es decir, el mismo sistema operativo que tenemos en la PC o en la laptop a un precio incluso menor a las tablets disponibles con sistemas operativos móviles consolidados como iOS o Android.

Con el lanzamiento de Windows 10 se viene otra ola que es la “Aplicación Universal” donde se promete que una misma aplicación podrá ser ejecutada tanto en Windows 10 como en Windows 10 mobile. Hasta el momento no se incluía el soporte para teléfonos con Windows Phone 8/8.1 lo que significa que aún no podrá ser tan universal, pero la presencia en el mercado estas tablets con Windows 8/10 abren la posibilidad de una nueva generación de aplicaciones “super inteligentes” ya que no estamos hablando de apps reducidas para entrar en un equipo móvil, sino la misma app que usamos al sentarnos en la oficina. Si podemos tener la misma app empresarial movilizada con una tablet que cuesta 100 usd ¿Para qué molestarnos en hacer una aplicación en un sistema operativo móvil?

En la última versión de Visual Studio (2015), se incluye también el soporte de Apache Cordova, lo que “oficializa” el soporte de Microsoft de tecnologías abiertas para el desarrollo de aplicaciones multiplataforma. Con Cordova, es posible que nuestra app pueda ejecutarse en iOS, Android, Windows y en otros sistemas operativos móviles en forma limitada. Si bien el funcionamiento tiene aún algunos problemitas, la posibilidad de hacer un sólo código justifica la atención.

De hecho, ya en un post anterior, les he descrito mi aplicación Supercomics basada en Cordova que se ejecuta tanto en Windows Phone, iOS y Android. Aún estoy salvando unos problemitas para publicar la versión para Windows, y para ser específico debo decir que en Windows soporto Windows Phone 8 y 8.1, Windows Phone 10, Windows 8/8.1 y Windows 10. Notarán que puedo ir más allá de lo que ofrece una “Aplicación Universal”.

Por supuesto que una “Universal App” puede darnos opción a integrar APIS empresariales  y más funciones en la parte de desarrollo que aún estoy descubriendo. Hasta el momento he visto que las aplicaciones mientras más desconectadas estén, mejor experiencia de uso brindan, así que empezaremos a comparar las ventajas para sugerir la mejor plataforma para nuestras aplicaciones.

Veamos el siguiente cuadro:movilesCon esto vemos un poco más claramente que significa “Aplicación Universal”.

No es mala idea el Universal App, de hecho, es una gran cosa para el mundo empresarial donde las políticas internas normalmente, favorecen el uso de una misma plataforma para sus aplicaciones internas donde ya Microsoft reina. El tema está en el punto débil de Windows en este momento: la falta de aplicaciones móviles, y la inclusión de Apache Cordova significa que Microsoft ha aceptado que ir por la alternativa de HTML5 es lo más eficiente en este momento.

Como siempre, la pregunta que se hace un desarrollador es sobre la velocidad y las funciones que soportará cada opción pues es obvio que una herramienta “nativa” nos ofrecerá un código más rápido y nos permitirá acceso a los recursos de hardware en el terminal. Siempre al inicio de todo desarrollo se tiene que hacer una evaluación de los requerimientos para nuestra aplicación. Si vamos a desarrollar un juego con alto nivel de procesamiento, la opción nativa se impone, pero si queremos una app tipo red social o capturadora de datos con soporte a múltiples dispositivos entonces podremos “sacrificar” la velocidad por la facilidad de desarrollo pues tenemos que considerar que hay otros aspectos como la velocidad de la red o la cantidad de datos, o la integración a otros sistemas que impactan mas fuertemente en el rendimiento de nuestra aplicación.

Ninguna alternativa es completamente a prueba de balas, todo depende de lo que necesitemos. Es una gran opción usar la misma aplicación en todos nuestros dispositivos, pero la movilidad no está en el dispositivo, está en la forma en la que diseñemos la aplicación. Es necesario que se incluyan paradigmas como sincronización, bases de datos locales, autenticación, encriptación en la que se dejemos de lado de una vez por todas el supuesto que todos los recursos estan disponibles todo el tiempo.


Este post lo hago de urgencia pues acabo de experimentar todo lo que no se debe hacer en el tema de sincronización. Para esto les doy un resumen de mi entorno de desarrollo:

  • Servidor: Instancia en Cloudant.com
  • Cliente: PouchDB como base de datos con sincronización al iniciar el app
  • Framework: Ionic

En resumen, se inicia una sincronización entre mi base de datos local en PouchDB y la base remota en Cloudant. Y puede ser todo lindo en Producción, pero como estamos en Desarrollo, el proceso normal es parar e iniciar el app a cada rato. Ahora veamos las consecuencias en desarrollo:

  • Costo: Cloudant te cobra por transacciones y te dice que por transacciones “pesadas” te va a cobrar mas, y pone varias transacciones HTTP y las define como pesadas. Lo que no dice es que hay otras transacciones que se utilizan para la sincronización que también se califican como pesadas, principalmente OPTIONS que se manda a cada rato. Por lo tanto, cada sincronización es bastante intensiva en costo.
  • Tráfico: Para un modelo de desarrollo, no es bueno iniciar conexiones de datos muy seguido. Entonces, el modelo debe saber cuando es bueno iniciar la sincronización sin importar que sea en Desarrollo o Producción.
  • Batería: Como consecuencia de la reducción de tráfico, estaremos también bajando el consumo de energía en el móvil.

No malentiendan, CouchDB/PouchDB es muy bueno, y si existe la necesidad, podemos activar la sincronización “live”, pero como no todos tenemos servidores y ancho de banda de sobra, tenemos que pensar en servicios en demanda en la red, como Cloudant en mi caso. Tengan en cuenta que otros servicios como IrisCouch, también cobran por transacciones.

La salida que encontré depende de como se necesita que fluyan los datos:

  • El recolector de datos: si nuestra app necesita solamente capturar datos y no necesito bajar información desde el servidor. En este caso, lo mejor es implementar un contador que incrementaremos cada vez que se actualice o se inserte un dato nuevo. Lo bueno es que para un entorno NoSQL, insertar o actualizar es el mismo método, así que en ese método podremos insertar el incremento del contador. Luego, al momento antes de sincronizar, verificaremos si es que el contador es mayor a 0, de lo contrario no iniciaremos la sincronización. Sincronizar solamente cuando hayan datos locales.
  • El visualizador de datos: Aquí es totalmente al revés, el app jala información del servidor. En este caso, la primera alternativa es la de fijar un tiempo de sincronización relativamente alto, agregar un visor de la última fecha de sincronización y la opción para forzar la sincronización manualmente.
  • Finalmente, como siempre, en la vida real tendremos una combinación de necesidades, así que la recomendación final es la de utilizar un proceso de sincronizacion para descargar datos y otro para subir datos.

Hay una función que no he mencionado aún: Sincronización filtrada. Esto es super útil y lo voy a desarrollar en otro Post, Básicamente es la de descargar solamente la información que me interesa. Esto es tan importante que todos deben usarlo si es que tenemos que descargar datos.

En conclusión, es muy fácil sincronizar sin límites, pero en la vida real, no hay que pedir más de lo que debemos consumir.


Esta es una continuación de la serie sobre desarrollo en móviles que comencé aquí. Les recomiendo comenzar a escribir el código fuente desde la parte 1 ya que no se publica el código para descarga.

Les recomiendo que la revisen de principio a fin pues es una guía paso a paso de absolutamente todo lo que tienen que hacer para comenzar en este mundo de móviles con javascript. Averiguarlo por cuenta propia es algo que les tomaría muchos meses, se los aseguro. Y si es algo largo, pues vale la pena pues cubre todos los aspectos.

En esta segunda parte voy a centrarme en las capacidades móviles de la plataforma Ionic y en como PouchDB se acomoda a cada una de las capacidades de nuestros equipos para escoger el mejor almacenamiento para los datos. Y de gratis, sus aplicaciones móviles sincronizarán sus datos con Cloudant.

Comenzaremos con el código que dejamos en el post anterior.

Preparando el ambiente

Para poder empezar a generar el código para las diversas plataformas, tenemos primero que instalar el SDK de cada una de ellas. El foco va a estar en Android y Windows Phone 8. Si quieren generar para iOS necesariamente deben estar en Mac (Si no tienen para comprarse aunque sea una Mac mini, aún les queda crear una máquina virtual con VMware). Pueden generar para mas plataformas si quieren: BlackberryOS 10, Firefox OS, incluso pueden generar para Windows 8 o Tizen y otros, pero todas estas plataformas, tienen sus cositas, hay que hacer ciertos trucos  o simplemente son dificiles de conseguir. Según las pruebas que he hecho, si se van con Android, Wp8 y iOS no tendrán casi problemas.

Empecemos con Android:

Revisemos lo que estamos haciendo: El Java SDK es la base de todo, pero para que funcione bien, debemos fijar la variable de entorno porque otras herramientas se fijan en ese valor para funcionar bien. Para crear estas variables tienen que ir a Mi PC – Propiedades – Configuración avanzada del sistema – Variables de entorno  y de preferencia crearlas como variables del sistema. En resumen:

Paquete Variable Por defecto Debe ser Agregar al Path
Java SDK JAVA_HOME C:\Program Files\Java\jdk1.8.0_40 la ruta donde instalen el jdk  nada
ANT ANT_HOME C:\ant\ la ruta donde descompriman el zip de ant  %ANT_HOME%\bin
Android SDK ADT_HOME C:\program files\android-sdk\ la ruta donde instalen el sdk %ADT_HOME%;

%ADT_HOME%\platform-tools;

Con esto ya tienen listo su entorno para Android. Para Windows Phone 8, basta con que instalen Visual Studio Community 2013 update 4 desde aquí .

Finalizo con algunas sugerencias:

  • Para Android: No usen el emulador que viene en el SDK, usen Genymotion
  • Para Windows Phone: usen un equipo real conectado al USB trabajen cargando el proyecto generado en Visual Studio

Plus: Para MAC tendrán que instalar unos paquetes adicionales en NodeJS: ios-sim y ios-deploy y los instalas fácil con el comando npm install -g <paquete>.

Generando los binarios

Ahora si empieza la diversión y para eso nos vamos a una línea de comandos y nos ubicamos en la carpeta donde dejamos el proyecto Superdatos. Aqui empezaremos a ver los potentes comandos de Ionic.

Agregando una versión de Superdatos para Android:

c:\projects\superdatos\>ionic platform android

Y después de unos segundos ya tendremos nuestra versión para android. ¿No me creen? Entonces lancen Genymotion o conecten su Android a la computadora y luego ejecuten:

c:\projects\superdatos\>ionic run android

Con esto verán su aplicación ejecutarse en un emulador o en su móvil tal cual lo vieron en el navegador. Simple y limpio. Y si quieren una versión para Windows Phone 8 el comando es :

c:\projects\superdatos\>ionic platform wp8

Aquí, como les recomendé, lo mejor es abrir el proyecto generado en c:\projects\superdatos\platforms\wp8 con Visual Studio y ejecutar el proyecto en un emulador o en un móvil conectado.

NOTA: En algún momento les dije que Ionic no soportaba WP8 y es cierto, y por lo que han visto, se darán cuenta que el resultado está algo feo ya que no se ven los iconos. Para suerte de ustedes, y después de perder mucho pelo, la solución es simple. En la ruta “www\css” encontrarán el archivo “ionic.app.css” verán esta línea:

src: url("../lib/ionic/fonts/ionicons.eot?v=2.0.1#iefix") format("embedded-opentype"), url("../lib/ionic/fonts/ionicons.ttf?v=2.0.1") format("truetype"), url("../lib/ionic/fonts/ionicons.woff?v=2.0.1") format("woff"), url("../lib/ionic/fonts/ionicons.svg?v=2.0.1#Ionicons") format("svg");

Y la cambian por esta:

src: url("../lib/ionic/fonts/ionicons.eot?v=2.0.1#iefix") format("embedded-opentype"), url("../lib/ionic/fonts/ionicons.ttf") format("truetype"), url("../lib/ionic/fonts/ionicons.woff?v=2.0.1") format("woff"), url("../lib/ionic/fonts/ionicons.svg?v=2.0.1#Ionicons") format("svg");

Recompilan su proyecto y listo. Recuerden hacer esto cada vez que tengan que generar el proyecto. Para los flojos, el cambio está en remover “?v=2.0.2” de la definición ionicons.ttf, en la columna 126 de la misma línea.

Así de simple pueden tener su aplicación para sus dispositivos con Ionic. Es bastante simple pero hay que saber AngularJS, así que para el post que viene revisaremos algo de eso para mejorar nuestro código. Además, veremos como usar plugins para habilitar mas funciones en nuestras apps móviles.


Desde que probé la MacBook Air de 13 pulgadas, descubrí que estuve muy equivocado en el tema de laptops pues luego de trabajar duro por una laptop gigante de 17 pulgadas o más, me dí cuenta que lo que más vale es que puedas trabajar por un largo periodo de tiempo, y sin malograrte la espalda en el camino.

El día de hoy comprar una laptop basada en Windows significa que tienes que elegir una muy ligera que pueda convertirse en tablet, de lo contrario, estás comprando algo que no te va a durar. Y no hablo solamente de moda, SSD y Connected Standby son dos características que toda laptop basada en Windows debe tener y eso viene solamente en las laptops convertibles. La única excepción es si eres un professional gamer o estas en arquitectura o ing civil y debes hacer trabajo en la obra, en estos casos debes comprarte una Alienware o una mobile workstation de HP, respectivamente, pero son casos especiales.

El perfil de trabajadores móviles es de aquellos que básicamente utilizan office, email y web, con alguna que otra app por ahi. Eventualmente, un programa empresarial. Bajo este perfil, no hay mejor equipo de una Macbook Air. En el mundo Windows pueden haber opciones, de hecho, tengo una Sony Vaio Duo que me sorprendió gratamente con unas 6 horas de trabajo continuo y con energía para seguí quizá una hora mas, pero ya no hay Sony, y las demás marcas no las he probado.

Con el anuncio de Apple el día de hoy, definitivamente borran las demás alternativas posibles con un modelo mas ligero, mas delgado y por sobre todo, con una pantalla Retina. Simplemente injusto para los demás. Para nosotros, el punto es el ideal.

Resumiré lo que obtendrás con una MacBook Air :

– Hasta 10 horas de batería (Digamos que sean 8 horas efectivas, yo he llegado hasta 6 horas full con la antigua MBA)

– Más memoria (Con 4 gb se portaba muy bien, pero 8 es mucho mejor, de verás se siente la diferencia)

– Pantalla Retina (No solamente para ver una película, sino también para aumentar el tamaño del escritorio, genial)

– Trackpad y teclado (Ambos ya eran muy buenos, pero el teclado ha sido mejorado para que sea mas silencioso y el trackpad tiene respuesta táctil que no se bien que es pero si se porta al menos igual que el actual, bienvenido)

Lo mejor de todo es que el precio no es tan alto aunque la realidad es que tienes que añadirle algunos accesorios básicos:

– Hub USB (El equipo viene con USB tipo C así que si quieres usar tu mouse actual, esto es obligatorio)

– Salida de video (si quieres hacer tu presentación no hay ni HDMI ni VGA así que tendrás que comprar uno)

– Finalmente, un estuche para que ningún rayón malogre su caja de aluminio (Thule recomendado)

Así que ya sabes, si trabajas la mayor parte del día en la calle, junta tu billete para que este 20 de abril te compres tu MacBook Air 2015.

Sobre Apple Watch, si quieres un reloj que puede quedarse sin batería en algún momento, cómpratelo. 18 horas de duración no es suficiente para utilizarlo para reemplazar un aparato que en su modelo más barato tiene una duración de 3 años (un Casio). En mi caso, tengo una banda Xiaomi que me avisa todo lo que pasa en mi celular por 20 dólares cuya batería dura 1 mes (comprobado) además de registrar información básica del ejercicio que hago.


He pasado los últimos meses programando una aplicación para móviles. No es que yo sea el programador más rápido y eficiente que existe pero me divierte mucho hacerlo. Principalmente disfruto la etapa de diseño, así que más que las funciones en el mismo app, me interesa todo el diseño del entorno que tendrá el app, no solo ahora sino también en el futuro.

Los objetivos que me puse para esta aplicación son:

Que sea muy útil. Obvio, aunque no tanto considerando que hay aplicaciones verdaderamente inútiles que tienen mucho éxito.

Que sea fácil de usar. En otras palabras, que no tenga que hacer clicks por todas partes para verlo funcionar. Instalarlo y listo.

Que sea fácil de mantener. Tengo que poder saber cuántos usuarios tengo, a que hora se conectan, que funciones del app están usando mas y cosas por el estilo. Además, que no tenga que estar contratando un super servicio de hosting que me cueste un montón de dinero mensual.

Utilizar un sólo código para muchas plataformas. Ok, Android es el más popular, pero iOS y WP y otros sistemas operativos deben poder usarlo también.

Que se pueda monetizar.

Todo esto me sonó razonable en su momento y aún me lo parece, así que los mantendré.

Ahora, mientras estaba programando, y considerando el último objetivo, me dí cuenta que hacia falta muchas cosas además de elegir hosting, librerías y demás cosas, realmente fue todo un descubrimiento para mi y sobre todo algo que no se puede aprender en ninguna escuela.

En fin, para hacer la historia corta, el proceso que tuve que seguir fue algo así mas o menos:

– Plataformas: 

Ya había escuchado hablar de Phonegap y Cordova desde hace años pero recién les puse atención como debe ser. Lo primero que encontré es que no son una solución completa. Veamos, la idea es que hagas tu app en JavaScript, luego la extiendas con Phonegap/Cordova y finalmente dejarle la generación de las versiones específicas. Todo bien, pero eso de hacer tu app en Javascript no me sonaba bien, además que Jquery no me quedó muy claro, principalmente porque te puedes enredar muy fácil con javascript si no tienes un framework que te ayude a programar. Jquery se orienta a la parte gráfica pero no a construir una estructura de aplicación que se pueda manejar aceptablemente, hay gente que lo hace, pero en mi caso, faltaba algo.

Por suerte encontré Ionic Framework que es una versión de Cordova mas una librería para UI y un framework de aplicaciones con AngularJS. Lo mas importante aquí es la inclusión de AngularJS, que es la forma como siempre debió ser Javascript.

Para ahorrarles algo de trabajo. El mayor problema que tuve con Javascript es que casi todo es asíncrono. Es decir, ejecutas una línea y la respuesta viene en algún momento que no sabes de antemano. Fatal para aprender y para hacer Debug. Además, su organización hace que el manejo de MVC sea muy natural. Finalmente, entiendo la importancia de que una vista no tenga acceso a la capa de datos, y que el controlador sea quien gestione la vista. El resultado es una aplicación donde las vistas con entidades independientes que podrían ser reutilizadas sin problema. Incluso pude dejar de lado la mala costumbre de preocuparme de un estado global de la aplicación gracias a una maravilla llamada UI-Router que viene integrada en Ionic Framework, para resumir, cada vista es un estado y listo.

Con esto solucioné el problema de cuál herramienta de desarrollo utilizar. Si bien tuve que aprender javascript, es un sol esfuerzo para abarcar muchas plataformas así que valía la pena.

– Datos: 

Sobre los datos en una aplicación hay tres cosas que pensar, que los tienes que organizar y tener en algún tipo de base de datos, que los tienes que pasar del servidor al móvil y finalmente que ese paso ocasiona tráfico.Resumiendo, Database, Syncing y Traffic.

En el mundo de móviles no hay muchas opciones y menos aún si queremos un app para varias plataformas. Muchos dirán que SQLite está presente en todas partes, yo me encontraba en ese grupo, pero la noticia mas grave que enfrenté es que no es cierto. SQLite no existe en todas partes y en los lugares donde existe se considera un estándar viejo que puede desaparecer en cualquier momento. Golpe durisimo porque ya empezaba con un problema mas. En fin, la alternativa que ofrece el mundo estándar es IndexedDB que para matar los ánimos, aún no es soportada completamente por todos. Que lío. En fin, como siempre el camino correcto parece siempre estar a la mitad y así fue que encontré PouchDB.

PouchDB es una versión cliente Javascript de CouchDB, que es un tipo de base de datos NOSQL que tiene algo muy bonito: sincronización automática de datos. Lo segundo: sincronización automática suena muy bien, pero lo primero requiere algunas líneas.

NOSQL es un movimiento nuevo de bases de datos que no están basados  en tablas y columnas como los tenemos en Oracle, Sql server y demás. La idea detrás es que sea más fácil de usar en aplicaciones de Internet, por dos motivos: el protocolo es http así que no hay drivers que cargar, y que no exista un modelo de datos, y con eso se eliminan los famosos joins. No es que crea que esta alternativa sea mejor que una base relacional, pero tener sincronización automática me convenció así que pagaré el precio usando NOSQL. El problema principal con estas DB es que hay casos en los que si tengo que usar “joins” para lo cual tengo que usar una pesadilla llamada MAP/REDUCE. En fin, lo bueno es que toda esa complicación me permitió aprender a golpes que hay que ser muy específico cuando se trata de hacer consultas a la base de datos.

– Sincronización y tráfico:

Como ya les dije, Pouch/CouchDB se encarga de sincronizar y lo más importante es que no consume mucho ya que es posible cargar una base de datos inicial, por lo que sólo se transmiten los cambios. Ahora, consideremos que la app que estoy haciendo es principalmente un catálogo con fotos, así que cada nuevo “registro” o mejor dicho “Documento” va a tener un tamaño algo grande, esto es 20K promedio lo que es bastante grande, pero que suena manejable considerando que por semana se crearán un máximo de 5 documentos con 2 documentos en la mayoría de los casos, así que podemos decir problema resuelto: la información estará al día y con un costo de transmisión de datos bastante aceptable. Sobre el consumo de datos, normalmente siempre es un problema la velocidad de datos ya sea por la calidad de la señal o por su costo, lo que hace necesario pensar siempre en transmitir lo mínimo indispensable a fin de que al usuario no le importe mucho usar tu app y por lo tanto, hace necesario que la app pueda funcionar sin datos por completo. Mágicamente, esto se soluciona con PouchDB ya que la base de datos está grabada en el móvil así que si se corta la señal, podremos seguir usando el app sin problemas.

– Hosting:

Una cosa interesante sobre CouchDB es que hay opciones de hosting gratuitos. En mi caso, IrisCouch tiene un servicio que es gratis hasta 5 dólares. Lo interesante es que la sincronización hace que sólo se pague por las diferencias entre la base de datos actual y la que se encuentra en el móvil, así que el tráfico debe ser bastante grande para empezar a pagar.  Un beneficio oculto es que se pueden hacer aplicaciones dentro de CouchDB, lo que simplifica la gestión del hosting. Ya les diré cuando aprenda a usar esa función.

Con esto se cierra lo que es la parte mecánica de la aplicación, es decir todo lo que un programador puede hacer. Ahora faltaba considerar lo que un empresario necesita. En primer lugar: Medir, necesitas saber cuanto se usa tu app y quienes la usan. Identificar: necesitas ahora mas datos de las personas que usan tu app y finalmente (al menos por ahora) Monetizar: generar algún ingreso.

Para la medición opté por Google Analytics porque es bastante completo pero con un giro. Para el cliente escogí una librería que simplifica el registro de los eventos y del uso y que suspuestamente trabaja con todas las plataformas. Cordova tiene un plugin para GA pero no soporta Windows Phone, Angulartics, la librería que escogí, parece que si por lo que estoy cubierto.

Para la identificación hay un gran detalle: los usuarios deben querer ser identificados. No voy a poner un formulario larguisimo para que mis usuarios se registren, lo mas simple es usar alguna red social y Facebook viene al rescate. Mejor aún, es si usamos un plugin para permitir compartir contenido dentro de la app que recibe información de las redes sociales a las que te conectas. En el futuro, si pienso dar la opción a que te registres, pero también seguiré el modelo de vincular la cuenta a alguna red social para simplificar el asunto, para que los usuarios tengan la opción de entrar fácilmente con sus cuentas de Twitter, Facebook o Google Plus y también para dar tiempo a que Windows Phone permita hacer lo mismo que en Android y iOS.

La monetización es algo que no se puede poner tan al principio para evitar que sea un impedimento para el crecimiento de los usuarios. Tampoco voy a dejar el app totalmente libre porque como ya dije, soy muy lento y alguien puede ganarme la jugada. Por el momento, la alternativa son banners y Admob resultó fácil de integrar. Hay un concepto llamado mediación que permite utilizar la misma cuenta Admob para recibir avisos de proveedores de banners que pagan algo mas, así que estaré en esa búsqueda. En el futuro, las opciones de monetización se abren como por ejemplo, cuentas personales que permitan hacer backup de tus datos, opciones para facilitar el intercambio de items entre usuarios en el mundo real y demás.

Adicional a todo esto hay un punto que ya queda casi al límite del tema técnico: Comunicación de los usuarios con el App. Toda app debe tener una identidad “social”. En otras palabras, hay que separar cuentas de Twitter, Facebook, Instagram, Pinterest, Correo, Web y otras por ahi. El app debe poder recibir mensajes y responderlos. Para eso hay que planificar con mucho tiempo porque los Ids en cada red social no esperan. Si se les ocurre un nombre cool, créenlo en la red social de su preferencia y así no lo perderán. Y lo más importante: asignen un Community Manager.

Hay un objetivo que siempre estuvo considerado pero que no lo escribí: que sirva de ejemplo para desarrollar otro tipo de aplicaciones móviles. Quizá esto es lo más importante, porque hasta ahora mi mayor éxito es un diagrama mal dibujado en algún papel, quizá ahora podríamos cambiar eso por una app que se pueda mostrar.

Resumiendo, su próxima aplicación móvil debe considerar las siguientes fases:

– Desarrollo: Plataforma, Datos y Hosting

– Explotación: Medir, Identificar y Monetizar

– Difusión: Planificar

Hay un punto que no he considerado que es la fidelización y ha sido a propósito. Personalmente, creo que la base de la fidelización de usuarios es brindar un buen servicio y satisfacer una necesidad. Veamos a Twitter que es básicamente el mismo servicio desde sus inicios, quiza sean los hash tags y las tendencias lo mas importante en innovación pero nada que altere la paz de los usuarios en escribir y leer tweets. Para el caso de esta aplicación, la estrategia de fidelización está en las nuevas funciones y en las futuras opciones de intercambio de items persona a persona.

¿Sobre que trata la aplicación? Ya lo verán en un par de semanas.


Parece que a la gente en Internet les gusta descubrir conspiraciones y hacer escándalo acusando a otros de nuestras propias falencias.

El último de estos eventos es la acusación a un Operador local de monitorear el tráfico y de entregar nuestros números de teléfono a los websites donde entramos.

Veamos, comencemos con la base de todo: Internet no es seguro. Es como salir a la calle, no importa por donde caminemos siempre debemos estar alertas al peligro. Entonces, nuestra seguridad depende del cuidado que tengamos.

El Operador Bitel fue acusado de tener un APN donde la información de nuestros números telefónicos era entregada a los sitios web, con lo que podían rastrearnos. La situación es real, y seguramente también suceda en los demás operadores y lo más interesante: Sucede desde que existe el servicio de Internet en los celulares. ¿Porqué hacen esto los Operadores? mas que por un afán conspirativo, la respuesta es que realmente quieren brindar contenidos exclusivos a sus propios abonados, algo muy inocente, como por ejemplo, un portal donde nos digan cuál es el crédito que nos queda disponible, o tal vez, es una empresa que quiere brindar acceso específico a ciertos números.

Ahora, también es cierto que algunas páginas podrían utilizar esto para “rastrear” lo que hacemos, pero estaría limitado a lo que se hace a un dominio en particular. Es decir, http://teveo.com podría hacer una página donde registran nuestros teléfonos y todo lo que hacemos DENTRO DE teveo.com, por definición no pueden rastrear nada mas alla. Es por esto que surgen los plugins o widgets que son páginas que se insertan dentro de otras para registrar lo que haces en otras páginas  a pesar de que pertenecen a un solo dominio. Certicom, y Google Analytics hacen mucho dinero haciendo esto y vendiendo la información, y nadie les dice nada. Incluso, si vamos mas allá, las aplicaciones que instalamos también deben merecer algo de rechazo como Facebook y Twitter que registran las páginas a las que entramos y encima las apps que instalamos en el celular.

Entonces ¿Estamos perdido y toda nuestra privacidad es una ilusión? No

Como siempre, todo depende de nuestra responsabilidad personal. La respuesta es que tenemos que informarnos. Mientras más fácil sea entrar a algún sitio, más riesgo debemos esperar. Por ejemplo, los sitios de noticias son los principales clientes de Certicom y Google Analytics, así que deberíamos cambiar a Flipboard.

¿No quieres que los websites sepan tu número de teléfono? entonces no uses el APN de wap.

Facebook, Twitter y otras redes sociales pueden hacer muchas cosas malas en nuestros teléfonos, así que si tanto nos importa la seguridad, debemos quitarlas, así también otras apps que pidan muchos permisos.

¿Almacenamiento en la nube? si tanto les importa la seguridad, olvídenlo. Sólo acuérdense de todas las actrices que después vieron sus fotos desnudas en 4chan.org.

Si estamos tan preocupados, primero debemos informarnos bien y luego apuntar nuestras protestas a los verdaderos responsables.

Si algo si se les puede reclamar a los Operadores es que deben informar las diferencias entre cada tipo de acceso. Igual, tenemos que ser menos fáciles y preguntar antes de comprar.

Finalmente, esta bien reclamar pero debemos escoger una causa justa después de habernos informado bien sobre el asunto.


Veamos, si se trata de lista de deseos, yo tengo una lista inmensa. Juguetes que van desde un Moto360, o laptops o consolas de juego. De todas las opciones hay muchas que aún no llegan al país pero eso no significa que no se puedan traer.

De lo que he revisado hasta el momento, les recomiendo estas:

– Tabletas Windows 8: No se trata de equipos grandes de 10 u 11 pulgadas que cuestan casi como una laptop, hablamos de un tablet de 7 u 8 pulgadas que ejecuta Windows 8.1 tal como lo hace cualquier PC. Así es, pueden llevarse la PC en el bolsillo en un aparato un poco mas grande que un celular y sobre todo a un precio de 99 USD.

– Relojes inteligentes: Android Wear y Apple Watch son muy vistosos y bonitos costando desde 250 USD a más. Personalmente, Moto360 es el que se lleva mis preferencias. Mi sugerencia aquí es que ambos tienen aún mas que dar y que los modelos que vemos en la calle pueden ser muy lindos pero aún tienen problemas graves como lo es la duración de la batería. Si es que no quieren esperar, deberán ver marcas como Metawatch o Pebble que soportan tanto Android como iOS a precios desde 99 USD con casi las mismas funciones, batería de 7 días a más aunque con un look menos refinado.

– Cámaras digitales: Me refiero aquí a las cámaras compactas que se obtienen por 100 USD o menos. Parece algo loco considerando las bondades de las cámaras que vienen en los celulares, pero deben tener en cuenta que una cámara nos puede dar una calidad equivalente a un precio módico, pero lo mas importante es que significa que podremos liberar nuestro celular y tomar más fotos a la par que guardamos la batería del celular para llegar al final del día sin problemas.

– Laptops: Si quieres renovar la computadora de tu casa, piensa en laptop. Si es que no tener una PC no te ha afectado hasta ahora, busca una tablet. Si por el contrario, ya te das cuenta que te falta más poder, piensa en una laptop. Si vas por laptop recuerda comprar un modelo que mínimo se trate de un AMD A8 o Intel Core i5 con no menos de 8 GB de ram. Ahora, si te sobra un poquito de plata, que le pongan SSD y ya estarás. HP tiene en su tienda en línea unas ofertas muy buenas para laptops basadas en AMD A8 (aprox 500 usd).

– Parlantes Bluetooth: Creo que todos nos hemos quejado por la calidad del sonido tanto en laptops como en tablets, incluso en teléfonos. Para eso, nada mejor que un buen parlante Bluetooth, sobre todo si este cuesta 40 USD como el Oontz. Encontrarán otros mas baratos, pero ninguno de tanta calidad como este Oontz. Sirve tanto como para escuchar música como para hacer llamadas telefónicas.

Hay otras categorías como Televisores, Celulares, equipos de sonido y demás. De todos estos, recomiendo no comprar Equipos de Sonido. Si de verás quieren música, pueden utilizar su celular con un parlante Bluetooth y obtendrán incluso mejor calidad de sonido. O una laptop con los parlantes bluetooth. La ventaja es que podrán hacer más que simplemente escuchar música, mientra que un equipo de música sólo hace eso.

Televisores, las palabras clave son DLNA y Wifi integrado.

Celulares, hay muchas ofertas, pero aquí si les digo que no importa mucho si le ofrecen equipos a 9 soles, en realidad mas importante es saber cuanto van a pagar mensual y por cuanto tiempo.

Nota final: Consolas de Juego: Las abandoné, bueno, no volveré a comprar una. Tengo un Xbox 360 y no haré el upgrade a Xbox One. Sobre las opciones actuales, es dificil recomendar una pero si tienen que considerar el valor real de tener una. Primero, tendrán que considerar la suscripción para poder jugar online, aprox 60 USD al año. Luego, los juegos son otro aspecto, 40 USD cada uno. Teniendo en cuenta que una consola costaría alrededor de 400 USD, entonces hablamos de 500USD sólo para jugar un juego. Y además tendrán que agregar un mando adicional por si quieren compartir la experiencia y posiblemente tengan de mejorar su TV.

Si es que quieren la consola para niños, compren Nintendo, todo cuesta menos y los juegos para niños son su especialidad.


Acabo de leer que el Amazon Fire Phone ha sido un fracaso y el inventario está amontonado en alguno de los muchos inventarios de Amazon. Una pena, principalmente porque un teléfono para Amazon era la oportunidad de hacer el proceso de compra mucho más fácil y divertido.

Para los que usamos el App de Amazon en Android o iOS sabemos que hay una función que permite escanear los códigos de barra de los productos y ubicarlos en el catálogo de Amazon, donde podremos ver precios y, sobre todo, productos alternativos.

Desde que salió el primer Kindle, la idea parecía clara: vincular la experiencia de compra al hardware tan fuertemente que sea mucho más fácil y práctico comprar desde el propio aparato. Para el negocio de libros creo que ha funcionado porque lo mejor que puedes hacer en un Kindle es comprarle a Amazon, ya que es posible obtener libros prestados o revisar los preview, esto a pesar de que puedes cargar tus libros desde otras fuentes y tener la impresión de ahorrar algo de dinero.

Cuando se empezó a hablar de un teléfono de Amazon, pues esperaba que también la experiencia de compra sea lo mas importante del producto, pero no fue así. Si recordamos, existe un producto llamado Amazon Kindle Fire que es un Tablet mas convencional que trata de ser un lector de libros mas un medio para ejecutar las apps que compremos de Amazon. No se que tal resultó en ventas, pero como que también sonaba bien ya que obtenías servicios de streaming de video que eran gratis con tu servicio de Prime.

En el Amazon Fire, la experiencia de compra pasó a un segundo plano ya que centraron su plan de marketing en la capacidad de 3D que tenía la interface de usuario. La experiencia de compra quedó relegada.

Lo que estoy esperando de Amazon es algo asi:

Si voy por la calle o en mi trabajo en la Pc veo un producto interesante, entonces quiero apuntarle a mi teléfono y ver en línea el precio y disponibilidad del producto y las alternativas, y si todo va Ok, agregarlo a mi lista de compras. Para eso, el hardware que sea deberá tener un scanner especializado en códigos de barra que puede ser una cámara y que reconozca productos también por su etiqueta o logo tal como lo hace Google Goggles, todo esto centrado en el proceso de compra. Obviamente, la App de Amazon debería pasar a ser algo más que un App para que se pueda identificar los productos lo mas rápido , incluso debería poder registrar los productos para buscarlos después si es que hay problemas con los datos.

Quiero hacer eso, ir por la calle y ver si el precio que veo en las tiendas puede ser mejorado por Amazon y decidir si compro en línea o en la tienda, o si otra compañía tiene una alternativa.

No se cuales son los números de Amazon en lo que se refiere a ventas móviles , pero creo que estoy ayudaría un poco a mejorarlos. Por ahora, seguiré cargando mi Amazon App.


Hace mucho tiempo vengo siguiendo a una compañía de relojes inteligentes llamada Metawatch, casí los primeros en proponer un modelo funcional de reloj con soporte tanto para Android y iOS. Años después vino Pebble y se hizo famoso. Ciertamente que hay otros, pero estos dos serían los más conocidos y sobre todo, los que más se parecen (sólo funcionalmente) a lo que tenemos en Moto 360 y Apple Watch.

Si revisamos estos dos productos, Metawatch y Pebble, la primera impresión es que son muy feos en comparación a lo que tenemos de parte de Motorola y Apple, pero hay un par de grandes detalles que cierran la discusión: duración de la batería y soporte de tanto de Android y iOS.

Tanto Metawatch y Pebble tienen una batería que dura fácilmente mas de 1 día, algo que ni el Moto360 ni el Apple watch pueden hacer incluso bajo un uso ligero. Para ponerlo más claro, Metawatch dice que puede funcionar 5 a 7 días con una sola carga y Pebble dice algo parecido, mientras que 1 día es lo máximo prometido por los recién llegados.

Otro punto importante es que ambos recién llegados son propios de cada sistema operativo. Moto360 funciona sólamente con Android y Apple pues ya sabemos. Como es de suponer Metawatch y Pebble soportan ambos sistemas operativos aunque ciertamente con ciertos límites.

El punto aquí es que tengamos cuidado con el real costo de adquirir un reloj inteligente. Primero, compatibilidad: Tanto Android como iOS tienen un mínimo de OS soportado y también un mínimo de hardware. Segundo, el rendimiento: si es muy malo que tu teléfono se quede sin batería, imagínate si es ahora tu reloj el que se queda sin gas, aunque hay que anotar que el hecho de leer notas y avisos en tu reloj hará que ahorres algo de batería en tu teléfono.

Estaba a punto de encargar un Moto 360 hasta que revisé Pebble y Metawatch y sólo puedo decir una cosa, Si vamos a tener un aparato en la muñeca que pasa a ser parte de nuestra imágen debería ser algo que sea funcional y que sobre todo se vea bien. Actualmente, ni Apple ni Motorola tienen un equipo que logre la funcionalidad que ya tienen empresas que llevan algunos mas años en el medio pero que tiene un diseño algo mas rústico.

El diseño y la funcionalidad deben ir en paralelo sobre todo para reemplazar una tecnología tan importante y madura como la de un reloj. Así que si no sobra la plata quizá lo mejor sea esperar un poco.


Hace unos años, revisaba casi todos los días una página web de noticias, hasta que alguien tuvo la idea de vender “banners” de pantalla completa, es decir, una imágen que aparecía encima de todo por unos segundos y no dejaba leer nada. Cambiar de página.

Migré a otra página que luego cambió a un formato que en lugar de mostrar principalmente los titulares, haciendo que la lectura fuera muy rápida y cómoda, cambiaron a la genialidad de mostrar un montón de noticias en un espacio reducido. Otro cambio mas.

Otra vez elegir una página de noticias, y estos empezaron a poner banners auto retráctiles. Es decir, salen grandes al inicio de la página y luego se esconden, El problema es que empiezas a leer y luego de un momento, todo se mueve y te perdiste.

Me harté, así que buscaré un lector rss que me permita ver las noticias a mi manera.

La moraleja de todo esto es que parece que la comodidad de la lectura ya dejó de ser una prioridad para los diseñadores, puesto que ya nos tienen como lectores, no importa si nos complican un poco la navegación.

Esa tendencia tiene sentido para los anunciantes pues nos muestran sus avisos. Ahora, depende de nosotros permitirles esta intromisión. Por eso es que una aplicación tan simple como Flipboard tiene éxito pues te permite una navegación placentera, aún con unos pocos avisos, pero sin alterar la experiencia de lectura. Buena voz.

Lo que parece es que el formato Web tal como lo conocemos  esta siendo estirado ya demasiado. La realidad es que el primer interés de los generadores de contenido es la de generar ingresos, por lo que inician la captura de usuarios y luego los exprimem. En nuestro país se nota mucho mas pues las alternativas son más limitadas si es que nos queremos enterar de noticias locales. Obviamente, si nuestro interés va más alla, las alternativas son innumerables en el Internet completo.

En fin, el punto es que una página web ya no es sinónimo de fuente de información, mas bien se vuelve en un laberinto que hay que cruzar para acceder a niveles muy limitados de información. Por ejemplo, vean la página de la Sunat, ONPE y cualquier otra entidad del Estado.

El mundo móvil ofrece la posibilidad de obligar a concentrar la experiencia de uso en el acceso fácil a la información. Lo más interesante es que esas aplicaciones también se pueden ejecutar con aplicaciones web.

El otro extremo es la implantación de servicios de subscripción, lo que hasta hoy lo tenemos de gratis. Es una alternativa siempre y cuando eso nos asegure una experiencia adecuada de lectura.

Lo principal es que el mundo web ya se nota lleno de basura que va desde información correcta con una mala presentación hasta contenidos muy malos con una presentación muy pulcra. Parece que la existencia de terceros que se encarguen de unificar la experiencia es algo necesario. Gracias Flipboard y a todas las apps de su tipo.





%d bloggers like this: