Blog

Archive for January 2013

creando la aplicación de "El Mundo Today"

By nacho.
La prestigiosa aplicación de El Mundo Today

hace casi un año decidí volver a programar profesionalmente después de pasar mis últimos años trabajando como creativo en agencias de publicidad.

tenía claro que quería hacer ideas propias para clientes que merezcan la pena, o para mi mismo que también me lo merezco.

la primera víctima ha sido [el mundo today->http://elmundotoday.com].
fue una negociación fácil: son filósofos.

la oferta también era tentadora: "tengo una idea, te la hago gratis, la vendemos y vamos a medias con las ventas... venga vale"

hasta aquí todo rápido, ahora empezaban las decisiones:


¿para que una aplicación de "el mundo today"?

primero porque soy muy fan de [el mundo today->http://elmundotoday.com].
creo que hacen el mejor humor que hay en españa y quería tener una aplicación suya en el bolsillo desde la que pudiera:

- leer las noticias rápidamente y sin publicidad

- recibir noticaciones cada vez que hay una noticia nueva: muchas veces me perdía alguna noticia por no tener tiempo de ir al web a verla y me perdía la gracia de el tiempo real.

- poder guardar como favoritas las noticias que más me gustan para volverlas a leer más tarde.

- poder compartir las noticias de manera fácil en twitter o por email.

pero sobre todo creo que la gente con talento como xavi y kike tienen que poder vivir de lo que hacen.
vivir del contenido y no de la publicidad.

lo se, soy un idealista.
soy de los que prefieren pagar por acceder a contenidos de calidad sin publicidad.
pagar por lo que tiene valor porque recibo mucho a cambio:

1.79€ por recibir todos los días las noticias de "el mundo today" en tiempo real, sin publicidad me parece una ganga.

me sorprende la gente que mira todos los días "el mundo today" y les parece mal pagar por ver su contenido.
más que sorprenderme me causa desprecio. mucho desprecio.
pero esta aplicación esta hecha para otro tipo de gente.


¿cómo hacer una aplicación?

desde que empecé a programar video-juegos de spectrum en los 80 pasé por muchos lenguajes: ensamblador Z80, 8086/88, basic, pascal, clipper, c/c++, visualbasic, delphi, javascript, ASP, java, PHP, actionscript y algunas mierdas de las que prefiero olvidarme.

casi cada año tocaba aprender un nuevo lenguaje y era divertido hasta que descubrí [ruby->https://www.ruby-lang.org] gracias a [david heinemeier hansson->http://david.heinemeierhansson.com] allá por 2005.
desde entonces no he podido cambiar de lenguaje.

vamos que no fue una decisión demasiado complicada: lo reconozco, soy fundamentalista de ruby.

desde que empecé con ruby sólo he ido aprendiendo cosas que se adaptan bien a esta filosofía de desarrollo: HMTL5, jquery, angularJS, sass/compass, coffeescript, kineticJS, bootstrap, mongoDB, heroku...


¿qué plataforma?

tenía claro que debía apostar por una sola plataforma para desarrollar y que quería hacer una aplicación nativa, mis experimentos con HTML5 fueron muy frustrantes y decepcionantes.

android no me parece una apuesta para un desarrollador independiente.
soy de los que tuvo un android antes que un iphone, pero el ecosistema que ofrece google no me interesa demasiado: java, una tienda de aplicaciones donde poca gente compra, un mercado de móviles muy fragmentado con diferentes versiones del sistema operativo, muchos tipos de pantallas y dispositivos, etc... no son las mejores garantías para empezar sin dolor.

windows phone no lo considero hoy por hoy ni alternativa, sobre todo si quieres ganar dinero con lo que haces.

apple tiene un ecosistema fuerte: una mínima fragmentación de su sistema operativo, un número limitado de dispositivos con similares características, un API muy bien pensando, y lo mejor: gente acostumbrada a dar valor a lo que le gusta y dispuesta a pagar por lo que usa.
pero necesitas objectiveC para desarrollar que para mi es un viaje atrás en el tiempo cuando te has acostumbrado a la filosofía de ruby.

¿ruby para plataformas móviles? si, existe y se llama [rubymotion->http://rubymotion.com].
rubymotion te permite programar aplicaciones nativas para iOS completamente en ruby y puedes reutilizar partes de código escrito en objectiveC.

para aprender rubymotion y sobre todo aprender a manejarte por el API de iOS al final tienes que entender objectiveC, pero sin necesidad de profundizar demasiado en el dolor.


el desarrollo

El Mundo Today (source code)

el desarrollo es una larga historia ya que he reescrito la aplicación desde 0 tres veces. es lo que tiene aprender y querer hacer bien las cosas.

la aplicación se conecta a la base de datos de [elmundotoday.com->http://elmundotoday.com] que esta en wordpress. aquí tuve que refrescar un poco de PHP abandonado hace años para conectarlo por JSON con ruby.

utilizo [urban airship->http://urbanairship.com] para hacer las notificaciones de las noticias de última hora que las lanzamos desde una pequeña herramienta hecha a medida en [ruby on rails->http://rubyonrails.org] y alojada en [heroku->http://heroku.com].

utilizo algunas librerías gracias a [cocoapods->http://cocoapods.org]:
[sugarcube->http://github.com/rubymotion/sugarcube], [teacup->http://github.com/rubymotion/teacup], [afmotion->http://github.com/clayallsopp/afmotion], [AFNetworking->http://github.com/AFNetworking/AFNetworking], [MPFoldTransition->http://github.com/mpospese/MPFoldTransition], [RTLabel->http://github.com/honcheng/RTLabel], [SVProgressHUD->http://github.com/samvermette/SVProgressHUD] y [SVPullToRefresh->http://github.com/samvermette/SVPullToRefresh].
la comunidad open source que empieza a haber en torno a iOS es un ayuda increíble.

sin [github->http://github.com], [stackoverflow->http://stackoverflow.com] ni [testflightapp->http://www.testflightapp.com/] el desarrollo habría sido un dolor.

sin [sublime text 3->http://www.sublimetext.com/3] habría sido todo mucho más feo.


el diseño

¿el diseño? al principio tuve la tentación de hacer una aplicación minimalista al estilo de reeder o flipboard, los primeros prototipos eran así.

pero llegaron las sabias palabras de kike:

"Hay que parecer una gran marca,
y cuando digo gran marca lo digo en tono despectivo."

Kike García (El Mundo Today) - Junio 2013

así que nos adaptamos a lo que el cliente necesitaba y lo rediseñamos al estilo de [el mundo today->http://elmundotoday.com]

[sketch->http://www.bohemiancoding.com/sketch/] ha sido un descubrimiento a la hora de diseñar apps.


¿...y ahora?

ahora sacamos la [aplicación a la venta en el applestore->http://bit.ly/HwjLtz].
vemos como la usa la gente.
la mejoramos.
y la adaptamos a lo que venga.

cuando creas una aplicación estas creando algo con vida, que lo debes cuidar, lo debes escuchar, lo debes mejorar o morirá rápidamente.


aquí me tienes...

si estas interesado en saber más [aquí me tienes->mailto:nacho@yestoall.com].
si quieres hacer un app y tu idea no es una mierda [aquí me tienes->mailto:nacho@yestoall.com]
si tu idea es una mierda pero tienes mucho dinero [aquí me tienes->mailto:nacho@yestoall.com]
si quieres aprender ruby o rubymotion [aquí me tienes->mailto:nacho@yestoall.com].
y si tienes dinero y quieres invertir en una nueva idea que va a cambiár el mundo tal y como lo teníamos entendido [aquí nos tienes->http://www.isnormal.com/]

se acerca la navidad

By nacho.
Fubr5gPU-DQ ejh77CXKsTM

*gracias [@queridoantonio->http://twitter.com/queridoantonio] por recordármelo

creativity

By nacho.

versión actualizada y reducida la genial exposición sobre creatividad de john cleese

yAwDWe7OIF8