Monthly Archives: abril 2014

Ya hago hasta apps para móviles

Pues si faltaban cosas por hacer en mi vida ahora tengo otra nueva diversión, hacer aplicaciones para móviles.

Toda esta historia empezó cuando en mis primeros meses de trabajo en Hogarth Worldwide descubrí casi por accidente el entorno de desarrollo para apps móviles Phonegap. PhoneGap aseguraba que mediante únicamente código HTML, CSS y JavaScript era posible crear una app móvil que era capaz de funcionar en cualquier teléfono del mercado, ya fuera iOS, Android, Blackberry, etc; es decir, no hacía falta aprender Objective-C para iOS o Java para Android. Le estuve echando una ojeada con el fin de que en un futuro, medianamente próximo pudiera hacer algo en concreto ya que por aquel entonces tenía tiempo de sobra y no iba demasiado estresado en el trabajo. Pobre de mí, pensaba que ese nivel de “poco estrés” iba a durar poco y por motivos de falta de tiempo olvidé Phonegap por unos meses.

Unos cuantos meses más tarde tuvimos que hacer una especie de webapp para una empresa de reconocido prestigio (lo siento, esto es un blog, no puedo dar nombres) y a alguien se le ocurrió la genial idea de decir: “¡sería la caña que pudiéramos convertir esto en una app para móviles con su icono y que no se viera el navegador!” y en seguida recordé aquello que había visto hace unos meses… PhoneGap!! Dicho y hecho procedí a intentar descargar la última versión y…¿qué ha pasado? me encuentro que el proyecto PhoneGap es ahora de Adobe. Que en teoria funciona todo igual, pero hay que pasar por el aro de Adobe para algunas cosas. Yo, como chico amante del software libre, recordaba que el primer phonegap que vi era totalmente libre y opensource. Cual fue mi sorpresa enorme cuando descubro que al margen de PhoneGap existe “Cordova”. Cordova… ¿con V? Pues sí, a mi me pareció de lo más insólito, aunque investigando he descubierto que hay un lugar llamado así en Filipinas, a saber si le han puesto el nombre en honor a dicho lugar. Volviendo a Cordova; es lo mismo que phonegap, pero, desarrollado de manera OpenSource por Apache Foundation. A partir de Cordova se realiza Phonegap por parte de Adobe, lo cual no deja claro si PhoneGap es un fork comercial de Cordova o es simplemente una versión que pagando se puede obtener soporte. En fin, que a fin de cuentas ambos son completamente compatibles, por lo que queda a gusto del consumidor elegir cuál es la más apropiada. Yo como ya he dicho antes, me he decantado por Cordova para evitar tener que pasar por el aro de cualquier empresa.

Mis primeros pinitos con Cordova no estuvieron mal. Conseguí compilar la webapp que habíamos hecho en la oficina e instalarla en un iPad. ¡¡Impresionante!! Teníamos un bonito icono y una webapp hecha a partir de código HTML y JavaScript. Pero… ¿esto es lícito? ¿Cómo es posible que funcione? Pues sí, sí que funcionaba. Pero PhoneGap/Cordova no solo se limita a hackear de alguna manera el teléfono para hacer una app desde una página web, te permite, mediante un API propio acceder a cosas internas del teléfono como la cámara, contactos, gps, etc, y es ahí donde entra la potencia de utilizar este framework. Con esta API se podría llamar a Google Maps y posicionarnos en una App de búsqueda, por ejemplo de restaurantes, donde el código es puro HTML+JavaScript, portarla a 3 sistemas y andando. Brutal, ¿verdad?

Con todo este nivel de emoción en mi cuerpo no dudé que tenía que desarrollar algo, pero, ¿el qué? Tenía que ser algo que fuera útil y que me permitiera aprender mucho en poco tiempo y mi querido ex compañero de trabajo James Miller (@jimhunty) me dio la idea. Estaba desarrollando apps móviles para equipos de divisiones inferiores de la liga inglesa de fútbol. Les eché una ojeada pero no me terminaban de convencer para la liga española así que me dije a mi mismo: “Voy a hacer una app para la UD Almería pero a mi manera”, y así empezó el proyecto. El problema de todo esto ha sido que se ha demorado por más de 9 meses, ¡¡¡ni que hubiera sido un embarazo!!! ya que tenía muy poco tiempo libre para dedicarle a la app.

En navidad aproximadamente tenía una beta medio funcionando tras 3 o 4 versiones completamente diferentes, en las que había cambiado prácticamente todo. Desde la forma de mostrar y recibir noticias a la apariencia visual. Recordemos que yo en el fondo soy sysadmin y de diseño sé bien poco, pero bueno, poco a poco y sin prisa.

Con todo esto llegamos hasta abril, semana de Easter (Semana Santa en España) y me encuentro que tengo tiempo más que suficiente para acabar la app y dicho y hecho. Tras dos días prácticamente enteros volcados en la App consigo acabarla, y tras probarla intensivamente en dos teléfonos y una tableta que tengo en casa decido que debe ver la luz. Pago religiosamente las cuotas de Google y Apple y me propongo subirlas a las tiendas de apps de las dos respectivas marcas, eso sí, sin saber el quebradero de cabeza que ello conlleva. Lo primero de todo es soltar pasta para algo que teóricamente iba a ser gratis. Google te pide $25, lo cual no está mal porque lo pagas una vez y ya está. Para mí eso son £16, lo cual es poca cosa, pero el problema es de los señores de Apple. £60 ($99) de golpe y encima anual, por no hablar de lo complicadisimo que es mandar una App a la AppleStore. Hay que pasar por mil cosas, rellenar formularios, pasar hasta por un proceso similar al fiscal, poco más que diciéndote que si haces algo ilegal vas derecho a la cárcel, en fin, una paranoya que no ocurrió para nada a la hora de subir la app a PlayStore de Google. En PlayStore solo tuve que darme de alta, pagar, preparar la App, firmarla digitalmente y subirla. Me costó un poco, pero vamos, en cuestión de dos horas la app estaba subida. En el caso de Apple, paga, pero paga hasta para probar la App en un teléfono; si no, es imposible, por no hablar del lío de certificados que hay que instalar, mandar, volver a descargar, etc y que hace falta un Mac sí o sí para desarrollar para iOS. En resumen, después de 4 horas (¡¡¡Si si!! 4 horas) de dar vueltas consigo mandar la App y primer problema, me sueltan que no tengo suficientes “screenshots” y que por favor suba las de un iPad. ¡¡¡Pero si no tengo un iPad!!! pero sin embargo, bendito emulador del Xcode que permite hacer screenshots.

En fin, que tras la odisea tengo las apps mandadas. La de Android está desde ayer publicada y se puede descargar sin problemas. La de iOS estoy esperando que Apple la apruebe, proceso que según he leído puede durar hasta 15 días, así que tengo los dedos cruzados para que todo vaya bien. Solo faltaba que después de pagar me dijeran que no la publican.

Si queréis más información podéis ver PhoneGap en este link o Cordova en éste.

Para descargar la App de la UD Almería que he realizado lo podéis hacer en los siguientes links. Recordad que la de iOS aún no está publicada, por lo que el enlace es provisional y entiendo que funcionará en un futuro no muy lejano.

Android: https://play.google.com/store/apps/details?id=es.khaos.udalmeria

iOS: https://itunes.apple.com/us/app/ud-almeria/id866761824?ls=1&mt=8

Yahoo Query Language – ¡¡Estoy sorprendido!!

Hace poco tuve que empezar un proyecto en el que básicamente tenía que conseguir coger contenido de páginas externas (con el consiguiente permiso, claro), tratarlo y volverlo a poner en otro lugar. Había mirado mil formas de hacerlo, desde scripts basados en jQuery hasta auténticas “hackadas” usando versiones modificadas de llamadas usando JSON mediante Ajax para emular un GET de HTTP para parsear todo el contenido de la web… en fin, nada realmente limpio que me convenciera, hasta que ayer, y por pura casualidad encontré YQL (https://developer.yahoo.com/yql), más conocido como Yahoo Query Language y ¡¡Vaya cosa!!

Pero, ¿qué hace YQL? Pues básicamente, y usando un pseudolenguage basado en SQL, es decir, usando SELECTs y similares podemos hacer búsquedas de lo que queramos en una URL determinada. Para colmo YQL tiene una consola donde podemos hacer todos los tests habidos y por haber que queramos probar antes de implementar nuestro código. Una vez contentos con el resultado lo que hacemos es implementar una llamada AJAX mediante JavaScript a la URL generada por YQL y ¡¡Tachán!! obtenemos un bonito XML, o JSON con el contenido.

La cosa es más potente de lo que imaginamos… por poneros ejemplos:

  • Obtener los titulares de los RSS de Yahoo news:
    • select title from rss where url=”https://rss.news.yahoo.com/rss/topstories”
  • Obtener los lugares del mundo que se llamen Madrid (os sorprendería ver los resultados):
    • select * from geo.places where text=”madrid”

Por ejemplo, para la primera consulta, y si queremos el resultado en un JSON tendríamos que hacer una llamada AJAX a la siguiente URL:

https://query.yahooapis.com/v1/public/yql?q=select%20title%20from%20rss%20where%20url%3D%22http%3A%2F%2Frss.news.yahoo.com%2Frss%2Ftopstories%22&format=json&diagnostics=true&callback=

No voy a entrar en detalle de cómo crear una llamada AJAX, pero en caso de usar algo como jQuery podría ser algo así:

$.getJSON( "https://query.yahooapis.com/v1/public/yql?q=select%20title%20from%20rss%20where%20url%3D%22http%3A%2F%2Frss.news.yahoo.com%2Frss%2Ftopstories%22&format=json&diagnostics=true&callback=", function( json ) {
console.log( "JSON Data: " + json );
});
La verdad es que no tengo ni idea de si la gran competencia (Google) tiene algo parecido. A mí me ha venido de perlas y funciona a la perfección con lo que necesito.

 

Al iPhone 4 le gusta iOS 7.1

Desde siempre he sido un firme defensor de no actualizar los sistemas operativos hasta tener una certeza casi absoluta de que son estables y como no, funcionan perfectamente en el equipo en cuestión, ya sea un ordenador, móvil o tablet, sin embargo por una vez en la vida tuve la desgracia de que esto no sucedió en mi penúltima actualización de mi iPhone 4.. ¡sí! ¿qué pasa? He dicho 4, nada de 4S, ni 5, ni nada, 4 peladito de toda la vida.

En fin, la historia fue la siguiente: por causas que no vienen al caso  tuve que actualizar mi teléfono al nuevísimo y “superguay” sistema iOS 7 cuando yo estaba tan contento y de maravilla con su versión 6. La verdad es que no me hizo ni puñetera la gracia tener que actualizar cuando no conocía a nadie que me dijera si iba realmente bien en un 4 pelado (En el 4S sí que tenía referencias) pero me tuve que arriesgar. Nada más actualizarlo todo parecía ir bien, buena velocidad, aspecto muy minimalista, animaciones muy cuidadas y suaves.. en fin, que respiré tranquilo en ese momento… pero solo en ese momento…

El paso siguiente fue empezar a instalar las aplicaciones. Ya sabemos que cuando hay una actualización mayor del sistema, el instalador te borra todas las aplicaciones y tras actualizar las puedes volver a instalar de un plumazo o quedarte sin ninguna e ir poco a poco. Mi opción fue la segunda “solo por si acaso”. Instalé las aplicaciones más cotidianas, activé iCloud para no perder ni un solo archivo y… ahí empezó la pesadilla. En cuanto instalas unas cuantas aplicaciones el sistema se empieza a volver terriblemente lento, tanto que hasta desespera. Para colmo el teclado de toda la vida, el cual debería de ser una cosa ágil y lenta se vuelve un desastre, tarda casi 5 segundos en responder cuando lo abres. En mi absoluta desesperación empiezo a buscar por todo San Google algún remedio para paliar la lentitud del sistema y aunque encuentro “Algunos truquitos”, casi todos basados en hacer el famoso Jailbreak e instalar aplicaciones que aceleran todo lo posible el resultado no dejaba de ser poco satisfactorio y a la vez un parche malo.

Hace poco leo que había salido la actualización al iOS 7.1 y es cuando piensas esa máxima de todo buen informático que te dice “para joderla aún más, mejor quédate como estás.” por lo que obvié dicha actualización por si acaso ya, para colmo, tuviera que literalmente tirar mi teléfono a la basura, hasta la semana pasada…

Por casualidades de la vida estaba buscando unos parámetros para que en caso de hacer una App para iOS se viera igual de bien en iOS 7 que en iOS 6 leo que la última versión de iOS 7.1 estaba tan optimizada que sobretodo los usuarios de iPhone 4 habían notado la diferencia, mientras que los del iPhone 5 casi no se habían enterado. Fue leer eso y pensar ¿de verdad? ¿será alguna trola de Apple para ocultar la cagada monumental con el iOS 7? La verdad es que estaba tan desesperado de que mi teléfono fuera un ladrillo que dije, bueno, si no siempre podremos comprarnos un Android chino por 100€, así que dicho y hecho procedí a actualizar el sistema.

Tras unos 20 minutillos que tarda la descarga, más chequeos y actualización tenía mi teléfono actualizado. Lo primero que hice fue abrir el teclado y… ¡oh sorpresa! ¡¡Va rápido!! Muuuy rápido. Esto promete, abro el correo, aplicaciones, la cámara.. todo suaveeeee pero lo mejor de todo es que en esta actualización mantuve las aplicaciones y no fui una por una como en la anterior. Todo bien, el sistema corre que se las pela. No se si llega a ser tan rápido como el 6, pero si no, se le acerca mucho. El teléfono definitivamente es otro, ahora da gusto, no va a trompicones y la experiencia de usuario ha mejorado muchísimo.

En fin, que ahora sí podemos decir: Si tienes un iPhone 4, actualízate a iOS 7.