
En diciembre se me murió el teléfono móvil, y aproveché para comprar un HTC Touch HD2.
Es un teléfono alucinante. Tiene una pantalla de 4,3" (enorme), capacitiva (se maneja con los dedos, no tiene puntero), multitáctil, con mucha RAM, mucho procesador y mucho de todo. Me compré este modelo porque es el que más posibilidades tiene para actualizarse a Windows Mobile 7 el día que salga (creo que para noviembre de 2010).
Este teléfono utiliza como sistema operativo Windows Mobile 6.5, que no es un sistema operativo pensado para manejarse con los dedos. Está pensado para ser manejado con puntero, por lo que el fabricante ha tenido que hacer una capa que oculta prácticamente el 100% del sistema operativo ya que la principal característica del teléfono es precisamente esa: su pantalla capacitiva.
Esta capa que el fabricante pone encima del sistema operativo se llama HTC Sense, pero en terminología técnica se llama "Manila", y hace que se pueda manejar el sistema operativo con los dedos sin ningún problema.
El interface de usuario "Manila" es muy suave, bonito y está presente en prácticamente todas las tareas que se realizan de forma cotidiana con el teléfono.
Cuando quieres hacer algo no cotidiano, te puedes encontrar con que no hay "Manila" y es cuando recuerdas que hay un Windows Mobile (no apto a día de hoy para manejarse con dedos) por detrás.
Insisto mucho en el tema de manejar con dedos, porque las pantallas capacitivas no funcionan con punteros. Ya puedes intentarlo por activa o por pasiva: la pantalla capacitiva no detecta los punteros. Hay que utilizar el dedo y muy suave, nada de presionar como con las resistivas.
Es un teléfono pensado para estar todo el día conectado a Internet. Viene con muchísimos servicios que requieren conexión a internet. Por ejemplo la pantalla principal te informa del tiempo en la ubicación en la que estás. Un día me fui a casa de mis padres en Paracuellos del Jarama y el teléfono sabía perfectamente mi ubicación (el GPS estaba apagado, todo se estaba haciendo por internet) y el tiempo que hacía en esa ubicación.
Por lo tanto el mismo día que me lo compré activé un plan de datos para el movil. Tener un teléfono de estas características y no tener de plan de datos significaría desaprovechar casi al 100% su potencial.
El problema que tiene un teléfono como este con una pantalla tan grande y siempre conectado a internet es que la batería se agota rápidamente.

Se me ocurrió que finalizando la conexión de datos podría ahorrar algo de batería, pero rápidamente me di cuenta de que finalizar la conexión no sirve de nada, pues en cuanto algún programa o servicio se quiere conectar a internet, nada le impide establecer la conexión otra vez, lo que en la práctica significa que casi en el mismo momento en que finalizabas la conexión, el teléfono se volvía a conectar.
Me acordé de un programa antiguo que se llama Modaco NoData que servía para evitar que los programas establecieran conexiones a internet. Lo localicé y lo instalé, pero al ser un programa antiguo, no estaba pensado para utilizar con dedos y era muy complicado de manejar en mi teléfono, así que se me ocurrió:
¿Por qué no me lo programo yo?
Fase 1: Interface de usuario.
A lo largo de mi vida profesional he conocido a muchos programadores que opinan que el interface de usuario es secundario, que lo importante es que las cosas funcionen, que el usuario le da igual el interface de usuario siempre y cuando el programa funcione.
Pues bien, nada más lejos de la realidad.
"Para el usuario el interface de usuario es la aplicación".
Mientras más bonito sea el interface de usuario mas serio parece el programa y mas convence a los usuarios. El programa por supuesto que tiene que funcionar, pero no es lo mismo un programa feo que uno bonito. Así de claro. Tan solo hay que ver el éxito de Apple, el esfuerzo multimillonario que ha hecho Microsoft con Windows Presentation Foundation y con Silverlight, o el esfuerzo que habrá hecho Adobe con su Flex.
Mi objetivo era hacer que el interface de usuario de la aplicación fuera idéntico al de Manila (que está muy bien pensado para utilizar con dedos), para que no hubiera ninguna diferencia entre las aplicaciones que vienen instaladas en el teléfono de fábrica y mi futura aplicación.
Últimamente estoy estudiando mucho WPF (Windows Presentation Foundation) y Silverlight, y es con Silverlight con lo que debería de hacerlo, pero a día de hoy (enero de 2010) todavía no existe Silverlight para Windows Mobile. Tengo clarísimo que hasta que no liberen Windows Mobile 7 no vamos a ver Silverlight para móviles.
Así que la única opción era programar una librería que me permitiera crear las ventanas con el aspecto del teléfono móvil, pero se me ocurrió buscar en el foro de XDA developers si existía ya alguna librería, y ¡eureka!, una tal Michele había programado justo lo que necesitaba: Manila Interface SDK.
Fase 2: Desarrollo

El objetivo de la primera versión era emular lo que hacía Modaco Nodata, que es una tontería, cambiar una cosa del registro, nada más, así que no iba a costar mucho programarlo. De hecho el programa era tan tonto que le añadí desde la primera versión más funciones que el Nodata, ya que desde la primera versión se podía finalizar la conexión de datos activar y no había que irse al gestor de conexiones del teléfono.
Descargué la librería Manila Interface SDK, la estudié y me puse manos a la obra.
¡En una hora tenía mi programa funcionando!
Lo programé en inglés como puedes ver en la captura de la derecha.
Fase 3: Hacerlo público a ver qué acogida tenía
Decidí llamarlo Manila GPRS Enabler/Disabler y se me ocurrió subirlo al mismo foro del cual había descargado la librería. Esta es la pagina del programa: http://forum.xda-developers.com/showthread.php?p=5269827.
El mismo momento en el que lo subí le dije a mi mujer que acababa de hacer mi primer programa para móviles y que estaría muy contento si lo bajara alguien (digamos una o dos personas) de esa página web.
Esto fué el día 3 de enero.
Para el día 5 ya lo habían descargado 777 veces.
La gente empezó a hacerme preguntas en el foro y decidí sacar una versión que lista todas las conexiones activas del teléfono (para saber contra que servidores estaba conectado) y cambiarle el nombre a Manila Dial-Up Enabler/Disabler, para no confundir a los usuarios con conexiones 3G y HSPDA.
Desde entonces he realizado alguna modificación al programa y para cuando subí la versión 5, la 4 llevaba 1066 descargas.
Cada vez que subes una versión a ese servidor el contador se resetea, de esa manera sabes el número de descargas que ha tenido cada versión.
A dia de hoy es imposible saber el número de descargas, porque ya hay "cocineros" que incluyen el programa en ROMs "cocinadas", así que cuando alguien actualiza la ROM de su teléfono, se encuentra el programa ya instalado.
Fase 4: Cuando te das cuenta de que lo utilizan en todo el globo
Se me ocurrió mirar en google a ver qué se decía del programa y me sorprendió ver foros en árabe, francés, checo, ... que hablaban y ¿recomendaban? mi programa.
Fase 5: Cuando pides ayuda para "localizarlo"
Se me ocurrió poner en el foro que lo quería traducir y que necesitaba ayuda.
Bueno, pues hoy es 28 de enero de 2010, todavía no ha pasado ni un mes y el programa está programado en:
1. Inglés
2. Español
3. Polaco
4. Rumano
5. Ruso
6. Alemán
7. Chino Tradicional
8. Checo
9. Portugués
10. Holandés
y me lo están traduciendo al Italiano, gracias a mucha gente que de forma altruista han traducido los recursos.
La traducción que más gracia me hizo fué la del Ruso y luego la del Chino que no he podido probar en mi teléfono ya que únicamente tiene instaladas las fuentes occidentales, pero el traductor me ha enviado capturas de pantalla de su móvil como puedes ver aquí.
La verdad es que estoy muy sorprendido por la acogida que ha tenido y por lo colaborativa que es la gente, y por haber hecho amigos en todo el mundo por este programa que, repito, entre pitos y flautas no me ha robado más de 4 o 5 horas.




