jueves, 3 de octubre de 2013

devs.info - una web de atajos para programadores

Navegando por ahí me he encontrado con devs.info, una web de atajos para programadores. Se trata de una sencilla página web que contiene accesos directos a los más importantes recursos que puede necesitar un programador: documentación, libros, trucos, FAQ, etc. Ha sido creada por Miquel Camps Orteza y me ha parecido muy útil y completa.

Además proporciona una forma muy sencilla de recordar estos atajos. Por ejemplo si queremos acceder a la documentación oficial de Symfony basta que escribamos http://devs.info/symfony.doc en el navegador. Si queremos consultar una página de preguntas frecuentes sobre css sólo tenemos que poner http://devs.info/css.faq. Si necesitamos comprar un libro de programación Android, http://devs.info/android.book. Y así con todo.

La cantidad de recursos disponibles en devs.info es enorme: lenguajes de programación (PHP, Java, Javascript, Pyton, Ruby, HTML, ...), CMS's (Wordpress, Drupal, Joomla, ...), frameworks (Symfony, Codeigniter, Rails, Spring, Bootstrap, jQuery, ...), bases de datos (MySQL, MariaDB, ProtgreSQL, mongoDB, ...), motores de plantillas (Twig, Smarty, ...), servidores web (Apache, ...), desarrollo de juegos, servicios y otras herramientas variadas.

sábado, 28 de septiembre de 2013

Publicidad en Android: primer pago

Contacts Backup

Nuestra aplicación Android Contacts Backup lleva en activo casi un año y acabo de recibir la confirmación de AdMob, la red de publicidad para móviles propiedad de Google, de que han efectuado un pago en concepto de ganancias de publicidad móvil. El primer pago hasta la fecha. Y el importe total ha sido de:

75.67$

75.67$, que al cambio son unos 56€, por un año de publicidad no es un bagaje muy elevado. Ahí tenemos el eterno dilema de los programadores independientes: ¿Pongo mi app. gratuita con publicidad o la hago de pago? Y si la hago de pago, ¿A que precio? En un momento u otro todo aquel que haya publicado una aplicación o juego en Google Play o la App Store se ha hecho esta pregunta. En el año que lleva en Google Play (la primera versión fue publicada a primeros de octubre del año pasado), Contacts Backup ha sido descargada por 26.702 personas. Si la hubiéramos puesto de pago aunque sólo fuera por 10 cts, ¿Cuanto habríamos ganado? ¿2.600€? No porque entonces se la habrían bajado muchas menos personas. ¿Pero cuantas?

Creamos Contacts Backup como un experimento. Nunca pensamos en ponerle un precio pero queríamos saber si se podía ganar algo con la publicidad. El experimento no ha funcionado muy bien. Quizás sería el momento de sacar otra aplicación, ponerla de pago y ver que ocurre, pero tenemos más bien poca confianza.


Estadísticas

En un año en Google Play y con publicidad de AdMob hemos obtenido las siguientes estadísticas:

Instalaciones totales (1) 26.702
Instalaciones actuales (2) 5.115
Valoraciones totales 56
Valoración media 4,1/5
Publicidad: impresiones (3) 443.164
Publicidad: clics (4) 1.963
Publicidad: ganancia total (5) 95,05$
Publicidad: ganancia media por clic (6) 0,05$

(1) Número total de usuarios únicos que han instalado la aplicación en alguno de sus dispositivos. (2) Número de dispositivos activos únicos en los que está instalada la aplicación. (3) Número de veces que se ha mostrado un anuncio en la aplicación. No se cobra nada por mostrar anuncios. (4) Número de veces que un usuario ha hecho clic en un anuncio de la aplicación. Este es el único concepto importante, porque es lo que nos permite acumular ganancias. Cada vez que alguien hace clic en un anuncio, nosotros ganamos algo. ¿Cuanto? Muy poco. (5) 95,05$ son las ganancias acumuladas en total. 75,67$ es el primer pago que nos han enviado. AdMob paga una vez al mes siempre que se alcance el importe mínimo que es de 75$. Por lo tanto los 75.67 se corresponden a las ganancias entre OCT-2012 y AGO-2013. Y luego realmente se cobra un mes más tarde de el momento en que cierran un pago. Es un poco confuso pero por lo visto en EE.UU. es lo normal. (6) Es lo que hemos ganado realmente por cada clic (de media).

Contacts Backup

Valoraciones y comentarios

Un año, 56 valoraciones, 20 comentarios (en diversos idiomas) y algunos emails de usuarios dan para mucho. Desde aquí quiero dar las gracias a todos aquellos que han votado positivamente la aplicación, que la han comentado o que han enviado emails. Creo que hemos respondido todos los emails que hemos recibido, pero por si acaso: ¡Gracias a todos!

Dicho esto no puedo evitar hacer un comentario sobre una valoración hecha por un tal Vasilis K. que puso una estrella y de comentario "ADS!!!". Se ve que hay gente que lo quiere todo gratis y sin anuncios. Pero entonces, ¿Que aliciente tenemos para seguir creando aplicaciones Android? Hubo un francés que nos envió un email diciendo que le había gustado mucho y sugiriendo varias mejoras al programa para que fuera perfecto. La verdad es que sus sugerencias estaban muy bien. Algunas ya las habíamos pensado nosotros y se quedaron fuera por las prisas de sacar la app cuanto antes, pero otras eran nuevas y realmente interesantes. Sin embargo, ¿Para que íbamos a hacer esas mejoras? ¿Que ganamos con ello? ¿Satisfacción personal? Sí... pero la satisfacción no paga las facturas.


Conclusiones

75$ por un año en el mercado es ridículo Tardamos tres meses aproximadamente en desarrollar la aplicación. ¿Mucho tiempo? ¡Quizás! Pero teníamos poca experiencia en Java y debíamos aprender a usar bien las herramientas. Así que al fin y al cabo no fue tanto. Ahora un año después me planteo dos opciones sobre que hacer con Contacts Backup:

  1. Lo dejo todo como está. Total para lo que íbamos a ganar...
  2. Le hago un lavado de cara, le añado nuevas funcionalidades y entonces:
    • Lo pongo de pago como un Contacts Backup Pro.
    • Actualizo la versión actual añadiendo más anuncios.

¿Qué creéis que debemos hacer? Se aceptan sugerencias...

lunes, 23 de septiembre de 2013

¿Qué es Symfony?

Es difícil explicar qué es Symfony. Sería correcto decir que Symfony es un framework basado en lenguaje PHP, diseñado para optimizar el desarrollo de las aplicaciones web usando en el patrón Modelo Vista Controlador (MVC). Algo así pone en la Wikipedia en su entrada Symfony. Pero eso es quedarse terriblemente corto. Esa misma definición encaja por ejemplo con Codeigniter y en realidad son dos cosas totalmente distintas, aunque persigan el mismo fin.

En la página web oficial de Symfony lo describen como un framework PHP, una filosofía y una comunidad; todos trabajando juntos en armonía. Esa es una definición "de libro", pero tampoco explica bien que es Symfony.

En realidad Symfony es más bien un conjunto de herramientas y servicios heterogéneos que, trabajando juntos, permiten desarrollar páginas y aplicaciones web complejas de forma eficiente, reduciendo el tiempo de desarrollo y automatizando las tareas comunes. Entre las herramientas que proporciona Symfony se encuentra un framework PHP, un gestor de plantillas (Twig) y un gestor ORM (Doctrine) y mucho más. Además es sumamente sencillo incorporar herramientas y aplicaciones de terceros.

La diferencia principal entre Symfony y otros frameworks PHP como Codeigniter es que mientras Codeigniter es un framework PHP puro (y ya está), Symfony es mucho más. Symfony proporciona toda una nueva filosofía de trabajo, incorporando multitud de herramientas que ayudan al desarrollo web y dirigen el proyecto, pero también lo limitan. Una ver has adoptado Symfony no puedes hacer las cosas como quieras: tienes que adaptarte a su filosofía. También es cierto que la la curva de aprendizaje de Symfony es mucho más pronunciada que Codeigniter. Empezar de cero con Symfony no es fácil, por mucha experiencia que tengas en PHP y en otros frameworks.


Un poco de historia

Symfony es un proyecto de software libre creado en 2005 por Fabien Potencier, actual CEO de Sensio Labs. La versión 1.0 fue liberada en 2007 y actualmente va por la versión 2.3, estando en preparación la 2.4. Cada nueva versión de Symfony incorpora mejoras y nuevas herramientas. Por desgracia las nuevas versiones no siempre son retrocompatibles, siendo necesario realizar cambios en el código fuente de los proyectos para adaptarse, aunque el salto más grande se produjo entre la versión 1.4 y la 2.0 (Symfony 2).


Un vistazo rápido

El framework Symfony obliga desarrollar usando el patrón Modelo-Vista-Controlador (MVC). Dicho patrón divide el desarrollo del proyecto en tres partes: el Modelo que gestiona todo lo relacionado con los datos que maneja la aplicación, la Vista que gestiona todas las interacciones con el usuario y el Controlador que gestiona todo lo que ocurre en la aplicación. El controlador procesa las peticiones, recupera los datos usando el modelo y lanza las vistas que interaccionan con el usuario. En Symfony cada una de estas partes está regulada por un componente diferente:

  • Modelo: En Symfony la parte del modelo viene gestionada por Doctrine que es una una biblioteca de clases cuyo objetivo es dotar al proyecto de poderosas herramientas para facilitar la lectura/escritura de información desde/hacia una base de datos. Doctrine es compatible con la mayoría de gestores de bases de datos, como MySQL, PostgreSQL, Oracle, etc.

    Una de las características más importantes es que el código en Doctine es independiente del gestor de base de datos. En teoría se podría cambiar el gestor en cualquier momento sin tener que modificar una línea de código. Para ello en Doctrine las queries se escriben usando DQL (Doctrine Query Language) que es una especie de SQL orientado a objetos.

  • Vistas: La parte de las vistas en symfony se gestiona con el motor de plantillas Twig del que ya hablamos hace tiempo.

    Al igual que otros motores de plantillas, Twig ayuda a separar de forma sencilla la lógica de la aplicación (código PHP) de la presentación (HTML/CSS). Es una herramienta muy potente pero a la vez muy flexible que permite diseñar plantillas de presentación muy complejas sin usar instrucciones PHP, haciendo que el código HTML/CSS final sea mucho más legible. En Twig se pueden usar variables, filtros, funciones, estructuras de control (if, for, ...), macros, expresiones, comentarios y más.

  • Controlador: En el patrón MVC el controlador se encarga de recoger las peticiones HTML, procesarlas, recuperar los datos, generar nuevas peticiones y/o lanzar las vistas correspondientes. En Symfony la parte del controlador está gestionada por clases propias del framework. Se pueden definir múltiples controladores y dentro de cada controlador varias acciones.

  • Arquitectura: Toda aplicación Symfony se divide en paquetes (bundles). Cada bundle puede contener: controladores, entidades (modelo), plantillas (vistas), archivos de configuración y otros recursos (formularios, menús, traducciones, etc.). Todo ello se controla a través de de namespaces, una característica de PHP 5.3.

  • Configuración: Symfony es un producto altamente configurable que soporta además diversos métodos de configuración, de forma que en cada proyecto se puede escoger la que mejor se adapte a las necesidades, pudiendo incluso mezclarse. Symfony puede usar indistintamente configuración a través de archivos YAML, XML o PHP. También soporta Annotations para configurar por ejemplo las rutas de los controladores.

Referencias

jueves, 5 de septiembre de 2013

Relojes inteligentes, ¿Para qué?

Con la presentación ayer de los nuevos relojes inteligente Samsung Galaxy Gear y Qualcomm Toq, que se vienen a unir a los Sony Smartwatch y a las sospechas y filtraciones de que Apple y Google están desarrollando sus propias versiones, parece que todos los fabricantes tecnológicos han encontrado un nuevo filón y nadie quiere quedarse atrás. Pero, ¿Cual es la realidad? ¿Existe realmente mercado para este tipo de dispositivos? El smartwatch de Sony lleva algún tiempo en el mercado y las ventas parecen contradecir las prisas de los fabricantes.

El mi opinión mercado hay, pero el planteamiento actual de estos relojes inteligentes está equivocado. Porque como el propio nombre indica, además de ser "inteligentes", son relojes y no puede ser que un reloj necesite recargar su batería todas las noches. Samsung ha anunciado 25 horas de autonomía de su nuevo super-reloj. Y eso será si no lo usas mucho, claro, lo cual es totalmente insuficiente. ¿Realmente quiero un reloj cuya batería no se si me va a llegar a la noche? ¿Y de verdad necesito un reloj con cámara de fotos? ¿Para qué, si ya tengo el móvil? Porque no olvidemos que esos smartwatches se quedan en simples relojes si no tienen un smartphone al lado. Luego está el precio: 300€ de vellón. Nada menos. Algo totalmente desorbitado. Y me he dejado lo peor para lo último: El Samsung Galaxy Gear por ahora sólo es compatible con los nuevos Galaxy Note 3 y Note 10.1 (2014). Eso sí: Anuncian compatibilidad futura con el S3, S4 y Note 2. Así que si eres el feliz dueño de uno de estos teléfonos y te sobran 300€ para gastar en un gadget inútil, estás de enhorabuena

En este sentido, y a falta de ver que harán Google y Apple, probablemente la apuesta de Qualcomm sea la más acertada hasta el momento: Un reloj con pantalla de bajo consumo, autonomía de entre 3 y 5 días, conexión por Bluetooth y carga inalámbrica. La autonomía aun es muy poca en mi opinión, pero algo es algo. Una ventaja de este reloj es que la pantalla no se apaga, a diferencia de los otros comentados. Aunque el precio, que según parece estará alrededor de los 300€ como sus competidores, lo hacen poco apetecible.

Mucho tienen que cambiar las cosas para que siquiera me plantee comprarme un smartwatch. Un reloj que aparte de darte la hora y permitirte programar las alarmas, se conecte al teléfono por NFC o Bluetooth para enseñarte las notificaciones pendientes, te permita leer un mensaje, mail o Whatsapp (que no escribirlo), que tenga una autonomía decente (2 semanas al menos) y alguna funcioncilla más como permitirte cambiar de canción sin sacar el smartphone del bolsillo puede ser interesante. Todo lo demás sobra. O eso o reducen drásticamente el precio y "crean" una necesidad.

Referencias

Diseño web: Slideshows como ejemplo de ineficiencia

Navegando por ahí me he encontrado con un artículo que pone los slideshows como ejemplo de ineficiencia en el diseño web. El artículo me ha parecido un tanto alarmista, pero aun así bastante interesante para compartirlo. Recordemos que un slideshow es una forma de presentar el contenido mostrando imágenes una detrás de otra en intervalos regulares. El artículo viene a decir que según las estadísticas los usuarios sólo hacen click en la primera de las imágenes entre un 1% y un 3% de las veces, mientras que las demás imágenes apenas reciben ningún click.

Como decía arriba la conclusión del artículo, que es la de dejar de utilizar slideshows totalmente, me ha parecido demasiado alarmista. Como en todo lo demás, usar o no usar este tipo de estructuras dependerá de la página que estemos diseñando. A unas páginas se adaptarán mejor y a otras peor. Nosotros mismos hemos usado slideshows en numerosas ocasiones con buenos resultados. Por ejemplo en la home de nuestra página web.

lunes, 26 de agosto de 2013

Como funciona el protocolo HTTPS

Revisando mis feeds RSS (a través de Feedly, por supuesto) me acabo de encontrar con un fantástico artículo de Genbeta sobre como funciona el protocolo HTTPS. Precisamente en los últimos días he tenido que investigar sobre el protocolo HTTPS (Hyper Text Transfer Protocol Secure) y me ha parecido un artículo muy completo. Sólo hecho de menos algunos enlaces de interés.


Enlaces de Interés

martes, 6 de agosto de 2013

Esto es lo que ocurre cuando no cuidas a tus usuarios

A HTC no le salen las cuentas. Ya lo habíamos predicho allá por febrero cuando escribimos el artículo HTC One, el fracaso de un gran smartphone: La otrora líder en la fabricación de smartphones está en crisis. Su teléfono estrella de este año, el HTC One, pese a ser un gran terminal (el mejor smartphone del momento, dicen algunos análisis), no se está vendiendo como esperaban en HTC, una vez pasados los primeros meses. No lo decimos nosotros sino muchas de las publicaciones especializadas (ver referencias).

HTC One

Los motivos

Los motivos de por qué HTC está fracasando son en mi opinión variados y diversos. Por un lado el HTC One es caro, pero sus competidores (Samsung Galaxy S4, Sony Xperia Z, etc.) también lo son y se están vendiendo mejor. Y en cuanto a prestaciones en HTC está a la altura e incluso supera a sus rivales. Así que no debe ser ese el problema.

La falta de alternativas interesantes en las gamas medias y baja de HTC también pueden tener parte de culpa en el descenso de ingresos de HTC. Para arreglar un poco ese problema HTC ha presentado hace unos días el HTC One Mini, pero Samsung también tiene su S4 mini y en la gama media hay bastante competencia de Sony, LG y otros. De todas formas, aunque el HTC One Mini se venda bien no parece probable que vaya a sacar a HTC de los números rojos.

Entonces, ¿Cual es el problema de HTC? Yo lo tengo claro: el maltrato reiterado a los usuarios.

HTC siempre se ha caracterizado por la falta de evolución de sus teléfonos una vez pasados pocos meses de su salida al mercado. Los antiguos poseedores de un HTC Desire o Sensation (magníficos teléfonos por otro lado) que vieron como sus teléfonos se quedaban estancados en versiones de Android obsoletas cuando por hardware eran perfectamente capaces de evolucionar difícilmente se comprarán ahora un HTC One, por bueno que éste sea. Ni tampoco recomendarán un HTC a sus conocidos.

¿Y la solución? Pues es difícil. Una vez te has labrado tan mala reputación, cambiarlo no es fácil. Pero todo depende de la propia HTC. Desde luego saben hacer buenos smartphones. Si hacen un giro de 180º en su política de actualización de terminales, quizás dentro de unos años las cosas cambien. Quizás...


Referencias