8 cosas aprendidas de Android en el Codemotion 2014

En el pasado Codemotion 2014 pude asistir a varias charlas relacionadas con el desarrollo de aplicaciones para Android, en las que pude aprender y recordar algunos conceptos y herramientas que resumo en este pequeño artículo:

1. Model-View-Presenter

Fuente: Wikipedia DE

Fuente: Wikipedia DE

El patrón Model View Presenter es muy similar a Model View ViewModel en la base, ya que tanto el ViewModel como el Presenter notifican a la vista de los cambios, y reciben los comandos de la misma.

En el caso de Android, se propone el uso de Interfaces entre Presenter y la Vista, de manera que trabajamos, con clases abstractas, consiguiendo cierta independencia con las implementaciones.

2. Arquitecturas hexagonales

El uso de las clases abstractas con los MVP es lo que deriva en una arquitectura hexagonal, en la que mediante puertos (que es como se denominan estas interfaces) nuestra lógica de negocio se comunica con las diferentes abstracciones de la vista y diferentes servicios como comunicaciones o almacenamiento.

Fuente: VICTOR SAVKIN

Fuente: VICTOR SAVKIN

En el caso concreto de Android, la lógica de negocio puede estar completamente aislada en un módulo Java puro, lo que da una mayor independencia de la plataforma.

3. Documentación de calidad mantenida por la comunidad

android-guides

Los manuales de android guides, creados por los chicos de codepath, contienen (a fecha de hoy) más de 100 artículos con guías prácticas de desarrollo, cubriendo temas como fragments, persistencia, o guías completas como cómo empezar con gradle. Resultan verdaderamente interesantes y desde luego es un lugar a añadir a mi lista de favoritos.

4. Motores de Inyección de dependencias

De la misma manera que tenemos ninject en .NET o bien podemos crear nuestro propio motor, para Android tenemos Dagger (para inyección de dependencias en general) y Butterknife (para inyectar vistas), que nos permiten gestionar las dependencias de nuestros objetos (para implementar una arquitectura hexagonal como la que hemos definido anteriormente, por ejemplo).

5. Bases de datos y almacenamiento

url

En función de las necesidades que tengamos, hay dos proyectos que deberíamos tener en cuenta:

  • SugarORM, permite tener una base de datos local de manera extremadamente simple y manejable.
  • ORMLite compatible con cualquier proyecto de Java y permite una mayor personalización y estructuras un poco más complejas, además de estar más extendido en la comunidad.

Además, podemos o bien utilizar la clase ContentProvider para almacenar datos, o bien usar los adaptadores propios del sistema operativo, aunque se recomiendan las dos opciones anteriores.

Web: SugarORM (no confundir con SugarCRM): http://satyan.github.io/sugar/
Web: ORMLite: http://ormlite.com/

6. Testing

Para desarrollo Android tenemos muchas herramientas para hacer testing, desde JUnit que nos permite además de código Java estándar probar código específico para la plataforma, pasando por Mockito para crear artefactos para nuestros tests, y acabando con Espresso, para probar la UI de nuestra aplicación.

7. Programación reactiva

La programación reactiva o Reactive Programming es un paradigma que se basa en el flujo de datos, actualizando la visualización de los mismos a través del envío y recepción de mensajes. Es un tema verdaderamente interesante, ya que mezcla conceptos de programación funcional con patrones de lenguajes orientados a objetos como observer.

8. Otros lenguajes

Uno de los puntos fuertes de la JVM es la capacidad para ejecutar otros lenguajes más allá de Java, de esta manera podemos usar lenguajes como Kotlin (creado por Jetbrains), Groovy o incluso Clojure para hacer aplicaciones Android. El soporte para otros lenguajes es algo que está en proceso, pero que podemos tener en cuenta (Android Studio se lleva bastante bien con Kotlin, por ejemplo). Si nos vamos fuera de la JVM tenemos opciones como Xamarin que nos permite desarrollar apps para Android usando C#.

Conclusiones

Esta lista es solamente un resumen de varias charlas y conversaciones tenidas durante el evento. El ecosistema Android es muy interesante, no solo por todas las herramientas y técnicas disponibles, que una vez aplicadas se pueden llevar a otras plataformas, sino además por la comunidad que tiene, no solamente Android sino el lenguaje Java y los lenguajes basados en la JVM.

Nos vemos en la siguiente, aquí te dejo un recopilación de todas las charlas del Codemotion: https://docs.google.com/spreadsheets/d/14ZjJQ_VeT8mKmO8MANA1Os5zwRA3Pu_rpFdfyFtBZ4A/edit#gid=0

Vídeo y materiales del evento: ASP.NET vNext: qué cambia y cómo nos afecta

Siguiendo la lína de Lo que viene con C# 6 nos juntamos nuevamente varios desarrolladores para compartir y debatir sobre las novedades de la última versión de ASP.NET vNext, que ya podemos denominar ASP.NET 6. En esta ocasión repetían Juan Quijano (@jc_quijano), Eduard Tomás (@eiximenis) y se sumaba a la conversación Luis Ruiz Pavón (@luisruizpavon). Se sumaba a nosotros como patrocinador, una vez más, SyncFusion, ofreciendo una licencia de Essential Studio para ASP.NET

Durante un par de horas estuvimos viendo algunas novedades de la herramienta, como son los diferentes CLR que tenemos a nuestra disposición y sus diferencias, la carga de dependencias a través de nuget, la configuración bajo demanda a través de ficheros JSON, la inyección de dependencias de serie, las nuevas maneras de routing, así como los ViewComponents y el nuevo Special K con los comandos multiplataforma, entre otras tantas cosas que darán de qué hablar en los próximos meses en cuanto a desarrollo de aplicaciones web en .NET.

Vídeo

El vídeo del evento está disponible en Youtube:

Slides

Las slides usadas están también disponibles, en este caso en SlideShare:

Numeritos

Como hice anteriormente, me gustaría compartir con vosotros algunas estadísticas del evento:

4 +1s en la página del evento
28 asistentes de máxima
46 personas han visto el evento, de acuerdo con su estatus en la página de Google Plus.
88 tweets (incluyendo retweets) con el hashtag #vienecsharp6, “oficial” del evento, de acuerdo con las estadísticas de Topsy
79 visitas a la página del evento, de acuerdo con las estadísticas de Karmacracy.
59 visualizaciones del vídeo en Youtube en este momento.

Enlaces

Además, os dejo algunos enlaces vistos durante el evento y usados para prepararlo:

Cómo empezar a jugar YA con lo presentado en #VSConnect

En el evento Connect de hoy, Microsoft nos ha presentado un montón de novedades, y muchas de ellas están disponibles desde este mismo momento para poder empezar a aprender con juguetes nuevos.

Microsoft <3 Open Source

Así lo han dejado ver poniendo a la disposición las Core Libraries de .NET (lo que convierte a .NET en un proyecto Open Source) sumándose a otros proyectos como Entity Framework, SignalR o ASP.net, que ya estaban alojados en Github.

microsoft-github

Visual Studio 2015 preview ya disponible, también en Azure

Visual Studio 2015 Preview incorpora soporte para todo lo que hemos podido ver en las diferentes demos. Podemos descargarlo e instalarlo en nuestro ordenador, o bien podemos recurrir a Azure, donde tendremos una máquina virtual con la última versión para que con solo unos minutos tengamos un entorno completo:

vs2015

Visual Studio 2013 Update 4

La nueva actualización de Visual Studio 2013 (y posiblemente la última antes de la versión 2015) incluye mejoras en los editores así como el soporte para Apache Cordova:

Visual Studio Community Edition – Gratis

Esta versión, que incluye lo mejor de la edición Profesional (como el uso de plugins, o la posibilidad de tener diferentes tipos de proyecto en una única solución, algo que no estaba disponible en la edición express) está destinada para desarrolladores independientes, colaboradores de proyectos Open Source, así como pequeñas empresas:

Pluralsight para suscriptores MSDN

Una cosa más! Pluralsight ha anunciado, con motivo de este evento, la disponibilidad de una parte de su colección de vídeos de manera gratuita para suscriptores MSDN.

Más información

vNext

Estas herramientas y algunas más las podremos ver en el hangout que estamos organizando para el próximo 19 de noviembre (dentro de apenas una semana). Apúntate aquí

Hangout: ASP.net vNext, qué cambia y cómo nos afecta

vNext

EL próximo miércoles 19 de noviembre a las 20h (GMT + 1) nos volvemos a juntar Juan Quijano (@jc_quijano), Eduard Tomás (@eiximenis) y un servidor (@rlbisbe), para comentar las novedades de ASP.net vNext.

Durante unas dos horas comentaremos qué cambios trae la nueva version de ASP.net así como las novedades presentadas en el evento Connect que se celebra hoy en Nueva York. Repite como patrocinador Syncfusion, que al igual que en ediciones anteriores, nos ofrece una licencia de uno de sus productos para los asistentes al evento, y como novedad, además de usar Twitter con el hashtag #vienevnext, podrás enviarnos tus dudas y comentarios desde el propio Hangout.

Apúntate ya en: Hangouts on Air: ASP.net vNext, qué cambia y cómo nos afecta

Truco del viernes: Solucionando problemas con iOS y Exchange

Un error que podemos tener cuando configuramos un nuevo dispositivo con Exchange es que, sin tener ningún error ni señal de fallo, no recibamos ningún e-mail. La solución pasa por acceder a nuestro Outlook Web Access y comprobar el número de dispositivos conectados.

Para ello, una vez iniciada sesión podemos desplegar el menú, y seleccionar Todas las opciones:

allOptions

Una vez seleccionadas, vamos a la opción de Teléfono, borramos los terminales más antiguos que no usemos, y podremos “hacer hueco” para nuestro nuevo dispositivos

set_phone

Una vez eliminados los terminales antiguos, el nuevo dispositivo comenzará a sincronizar.

Resumen de atajos de teclado de Visual Studio

Una de las sesiones que me resultaron más interesantes en el pasado TechEd 2014 fue la de Tips and Tricks de Visual Studio con Tarek Madkur.

En ella, comentaba un montón de atajos de teclado que nos proporciona Visual Studio para mejorar nuestra productividad. En este artículo resumo brevemente las que más me han llamado la atención:

Ctrl + Q: Quick Launch

Este menú nos permite acceder, desde el teclado, a todas las ventanas auxiliares, opciones de configuración y elementos del menú del IDE. Ventanas como por ejemplo el “Package Manager Console” de Nuget, o ventanas como el Test Explorer, sin tener que estar buceando por las opciones del IDE.

Ctrl + K, X: Insertar snippet

Una herramienta muy útil cuando queremos reutilizar trozos de código llamados snipets. Este atajo nos muestra la lista de snipets instalados en nuestro sistema, y nos permite insertarlos de manera inmediata.

Alt + Shift + Enter: Pantalla completa

La pantalla completa es una vista que nos permite centrarnos en una (o varias) secciones de código, o cuando queremos mostrar código a alguien (por ejemplo, en una charla).

Ctrl + F4: Cerrar documento

Nos permite cerrar los documentos abiertos dentro del entorno de visual studio.

Shift + Esc: Ocultar ventanas

Nos permite cerrar otras ventanas como Output o Search Results, sin que ello afecte al layout actual.

Ctrl + Alt + O: Convertir en documento normal

Convierte un documento cargado en modo “preview” (el que se activa cuando hacemos click en un documento o cuando estamos navegando usando F12) en un documento normal.

Alt + F12: Peak navigation

El comando F12 nos permite navegar a la definición de un método o una clase, pero podemos perder el contexto, así que con esta opción podemos mantener el contexto y poder navegar a la definición. Lo más curioso es que podemos, dentro del menú de Peak navigation, continuar navegando

Extra! Más atajos de teclado!

El ilustre Gorka Madariaga (@Gk_8) aporta estos tres atajos:

Ctrl+C

En una linea sin seleccionar nada te la copia entera, idem para Ctrl+X o Ctrl+V (te la pega completa en la linea de arriba).

Ctrl+K, C

Comenta la linea en la que estas entera si no seleccionas nada o lo que tengas seleccionado, Ctrl+K, U hace lo inverso del anterior.

Ctrl+K, D

Para dar formato a todo el archivo o a lo que tengas seleccionado.

Conclusiones

Esta es una lista bastante corta de atajos de teclado, Visual Studio cuenta con una opción en el menú para poder listar todos los atajos, las opciones a las que están asignados, y asignarnos nuestros propios atajos (Por ejemplo, yo tengo configurado Ctrl + < para ejecutar mis test de Javascript)

Más información

Si quieres ver estas y más, te recomiendo la charla de Tarek Madkour en el TechEd 2014: https://channel9.msdn.com/Events/TechEd/Europe/2014/DEV-B348

Materiales del evento: Sevilla Mobility Day Strikes Back

El pasado sábado 26 de octubre con motivo de la segunda edición del Sevilla Mobility Day tuve la ocasión de dar una pequeña charla sobre las diferentes opciones de comunicación que tienen nuestras apps con el exterior:

IMG_5474

Slides

Las slides están disponibles a continuación en slideshare:

Demos

Por otra parte, las demos están disponibles en el siguiente enlace de Github:

https://github.com/rlbisbe/demos_charla_conectividad_wp

Enlaces

Y finalmente, la lista de enlaces que usé (entre otros) para preparar la charla:

Gracias los chicos de @cartujadotnet por la invitación, a CampusMVP por el patrocinio, al servicio técnico de Pebble por intentar echarme una mano, a mi querida Patrica Vasco (Patu) por ayudarnos con las fotos y en general a todos los que hicieron el evento posible.