DotNetSpain Conference 2015, yo estuve allí!

El pasado viernes y sábado 27 y 28 de febrero tuve la suerte de asistir, de ponente y de espectador, al evento DotNetSpain Conference 2015, un evento centrado fundamentalmente en .NET, sus lenguajes (en especial C# y F#), sus herramientas, y sobre todo su ecosistema, que cubre desde aplicaciones para dispositivos IoT hasta aplicaciones en la nube, tanto en hosts Linux como Windows, pasando por Windows Phone, iPhone y Android a través de Xamarin.

Como asistente, he disfrutado muchísimo de todas las sesiones a las que he asistido. En algunas he descubierto muchas malas prácticas que, para mi sorpresa, empleo diariamente, en esta sesión titulada Code Smells de Ferando Escolar (@fernandoescolar). Una sesión muy extensa de la cual pude sacar algunas notas:

image

image

Fernando ha publicado las slides en slideshare, así que las enlazo desde aquí también: Slides

Además, de la mano de Alex Casquete (@acasquete) pude comprobar cómo la programación funcional te permite hacer código más simple, más legible y con menor posibilidad de fallos. Además tuve la ocasión de tomar algunas notas:
image

image

Escoger entre las más de 45 sesiones y otros tantos talleres prácticos en solo dos días era difícil. Así, pude ver además temas relacionados con escalabilidad en la nube, gadgets variados en sesiones relacionadas con IoT, o algunos tips & tricks sobre C# que ignoramos. Ha sido muy interesante y traigo mucho que estudiar de vuelta.

Además de las charlas hubo tiempo para networking, ya que pude ver representación de las comunidades técnicas de toda España, así como muchos estudiantes llenos de inquietudes y de ganas de aprender miembros del programa Microsoft Student Partners, al que tuve el orgullo de pertenecer mientras fui estudiante. Algunos de estos estudiantes participaron, además, como ponentes en sesiones y talleres.

Este evento ha sido muy especial para mí, ya que he tenido la enorme oportunidad de participar como ponente en dos charlas bastante diferenciadas:

Una visión multiplataforma con ASP.net vNext

B-3c5x0W8AEoSu4

Por una parte pude compartir escenario con el gran Eduard Tomás (@eiximenis) en una sesión en la que estuvimos hablando de cervezas y de las novedades de ASP.net vNext para entornos multiplataforma. Vimos, además de las novedades que trae Visual Studio para el soporte de Grunt y Bower, que desplegar una aplicación compilada en Mac OSX, utilizando Sublime como editor y el proyecto Omnisharp para aportar Intellisense, en un contenedor Docker (en linux) ya es posible con unas pocas líneas.

Slides y ejemplos

Los ejemplos del apartado de MacOSX, que incluyen además los ficheros de configuración de Docker para desplegar, están disponible en GitHub

Extendiendo Visual Studio Online a través de su API

B-3lOhkW0AACJsQ

En mi segunda sesión, justo después, estuve mostrando utilizando algunos ejemplos, cómo mediante las APIs de Visual Studio Online podemos leer de nuestro proyecto, escribir y actualizar información, ejecutar operaciones como la solicitud de builds, y además, interactuar de manera pasiva mediante el uso de service hooks, para responder a eventos ya creados.

Slides y ejemplos

Los ejemplos utilizados se encuentran disponibles en GitHub

Conclusiones

Este evento ha sido una gran oportunidad para reconectar con muchos compañeros de profesión, para ponerme al día con diversos temas y además para poder compartir algo de lo aprendido en mis sesiones. Desde aquí muchas gracias a todos los asistentes, a la organización por hacer posible el evento y al resto de los ponentes por compartir con nosotros su experiencia.

Autenticación con Visual Studio Online desde Java usando OAuth

El protocolo OAuth nos proporciona una manera muy fiable de autenticación, así como la posibilidad de interconectar sistemas sin tener que ceder nuestras credenciales a un tercero.

Visual Studio Online es uno de los proveedores que lo soporta, aunque con ciertas peculiaridades. En este artículo veremos cómo podemos utilizar OAuth con Java para conectarnos y autenticarnos, así las peculiaridades de VSO.

Cómo funciona OAuth2.0

Oauth se basa en dos conjuntos de clave, conocidos como key y secret, que el cliente (Aplicación A) proporciona al sistema al que se quiere conectar (Aplicación B). Veamos un ejemplo del ciclo de vida de una petición OAuth:

  1. El usuario desde Aplicación A solicita autenticar con Aplicación B
  2. Aplicación A redirige a la página de Aplicación B con la Api_Key, la url de retorno y otros parámetros como parte de la redirección.
  3. El usuario introduce sus credenciales y autoriza (o no) la cesión de datos desde la Aplicación B a la Aplicación A.
  4. La Aplicación B redirige de vuelta a la Aplicación A con la url de retorno especificada anteriormente con un código de autenticación.
  5. De lado de servidor, la Aplicación A le envía a la Aplicación B el código de autenticación, el secret, y otros parámetros.
  6. La Aplicación B devuelve un Token a la Aplicación A que identifica al usuario y que se puede empezar a utilizar para realizar peticiones.

Cliente Oauth

Vamos a crear un ejemplo de Aplicación A, es decir, un cliente OAuth. Para ello utilizaremos scribe, un componente OAuth para Java muy sencillo y muy fácil de extender para adaptar a nuestras necesidades:

OAuthService service = new ServiceBuilder()
                                  .provider(LinkedInApi.class)
                                  .apiKey(YOUR_API_KEY)
                                  .apiSecret(YOUR_API_SECRET)
                                  .build();

A partir de ese código podemos generar la URL de redirección o capturar el Token. Como Visual Studio Online no forma parte de los proveedores por defecto, crearemos nuestro propio proveedor:

@Override
public class VSOnlineApi extends DefaultApi20 {

    @Override
    public String getAccessTokenEndpoint() {
        return "https://app.vssps.visualstudio.com/oauth2/token";
    }

    @Override
    public String getAuthorizationUrl(OAuthConfig oac) {
        return String.format("https://app.vssps.visualstudio.com/oauth2/authorize?mkt=es&client_id=%s&response_type=Assertion&state=sample&scope=vso.profile&redirect_uri=%s", 
                oac.getApiKey(), oac.getCallback());
    }

    @Override
    public Verb getAccessTokenVerb() {
        return Verb.POST;
    }

    
    @Override
    public OAuthService createService(OAuthConfig config) {
        return new VSOOauthService(this, config);
    }

    @Override
    public AccessTokenExtractor getAccessTokenExtractor() {
        return new VSOTokenExtractor();
    }
}

Este proveedor consta de dos urls, la de token y la de autorización, el verbo que utilizaremos para solicitar el access token, y dos componentes, un servicio que crearemos a continuación y el extractor para procesar el código resultado de la autenticación. Con este proveedor podemos generar la URL para realizar la redirección:


 OAuthService service = new ServiceBuilder()
                           .provider(VSOnlineApi.class)
                           .apiKey("KEY")
                           .apiSecret("SECRET)
                           .callback("https://rlbisbe.dev:4567/callback")
                           .signatureType(SignatureType.QueryString)
                           .build();

Por otra parte, para poder hacer la llamada del lado de servidor y validar el token necesitaremos implementar el servicio VSOOauthService, ya que la implementación OAuth de Visual Studio Online tiene ciertas peculiaridades.

public class VSOOauthService extends OAuth20ServiceImpl {

    private final DefaultApi20 api;
    private final OAuthConfig config;
    
    public VSOOauthService(DefaultApi20 api, OAuthConfig config) {
        super(api, config);
        
        this.api = api;
        this.config = config;
    }
    
    @Override
    public Token getAccessToken(Token requestToken, Verifier verifier)
    {
      OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint());
      request.addBodyParameter(VSOConstants.CLIENT_ASSERTION_TYPE, "urn:ietf:params:oauth:client-assertion-type:jwt-bearer");
      request.addBodyParameter(VSOConstants.GRANT_TYPE, "urn:ietf:params:oauth:grant-type:jwt-bearer");
      request.addBodyParameter(VSOConstants.CLIENT_ASSERTION, config.getApiSecret());
      request.addBodyParameter(VSOConstants.ASSERTION, verifier.getValue());
      request.addBodyParameter(OAuthConstants.REDIRECT_URI, config.getCallback());
      request.addHeader("Content-type", "application/x-www-form-urlencoded");
      config.log(request.getCompleteUrl());
      Response response = request.send();
      return api.getAccessTokenExtractor().extract(response.getBody());
    }
}

Esta clase nos permite construir una petición POST (que hemos visto antes en que nos permitirá validar el código que hemos recibido desde Visual Studio Online utilizando el secret de nuestra aplicación y las claves específicas que nos solicita la aplicación, enviar la petición y convertir el resultado en un Token para futuras peticiones.

Creando la web para conectarnos al servicio

Una vez que tenemos el servicio creado para obtener el token, vamos a crear una pequeña página para poder hacer el proceso completo. Para ello utilizaremos spark, un proyecto inspirado en Sinatra que nos permite crear aplicaciones web de una manera rápida y sencilla:


        OAuthService service = new ServiceBuilder()
                           .provider(VSOnlineApi.class)
                           .apiKey("KEY")
                           .apiSecret("SECRET")
                           .callback("https://rlbisbe.dev:4567/callback")
                           .signatureType(SignatureType.QueryString)
                           .debugStream(System.out)
                           .debug()
                           .build();
        
        get("/auth", (req, res) -> {
            res.redirect(service.getAuthorizationUrl(EMPTY_TOKEN));
            return null;
        });
        
         get("/callback", (req, res) -> {

             String code = req.queryParams("code");
             Verifier verifier = new Verifier(code);
             Token token = service.getAccessToken(EMPTY_TOKEN, verifier);
             return token;
        });

Con el sódigo anterior podemos ver dos puntos de entrada, /auth, que realiza la redirección al servicio, y /callback, que recoge el resultado de la redirección, parsea el código del resultado, solicita el token utilizando el servicio que hemos creado anteriormente y muestra el token como resultado:

Token[CODIFICADOENHEXADECIMAL, ]

Consideraciones adicionales: SSL

Visual Studio Online requiere que la url de retorno esté bajo el protocolo SSL y no admite localhost, con lo cual para pruebas lo que podemos hacer es crear un certificado autofirmado utilizando la utilidad Keytool de Java:

keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048

Además deberemos importar dicha keytool dentro de nuestro proyecto para poder utilizar HTTPS:

        SparkBase.setSecure("C:\\Users\\Roberto\\Documents\\NetBeansProjects\\OauthClientTest\\keystore.jks", "password", null, null);

Finalmente, como no admite localhost, una solución puede ser utilizar el nombre DNS de nuestro ordenador de pruebas, o bien mediante el fichero hosts crear una entrada para 127.0.0.1, en mi caso rlbisbe.dev

Documentación

Desarrollando The Time Box, mi primera aplicación para Android

El ecosistema Android ha ido madurando de manera muy acelerada en los últimos años, y lo que comenzó como un proyecto piloto se ha convertido en el segundo jugador (o primero según el mercado) móvil a nivel mundial, y aprender a desarrollar para él de manera nativa puede ser una opción interesante, sobre todo si ya hemos trabajado en plataformas como Windows Phone o iOS.

Esto me llevó a hacer el año pasado un curso de Coursera sobre Desarrollo de aplicaciones para Android, y, con lo aprendido, hacer mi primera aplicación. En este artículo cuento mi experiencia desarrollando la misma, así como las herramientas y los recursos utilizados en este primer viaje por el ecosistema Android.

Descarga The Time Box desde Google Play

La aplicación

The Time Box es una mezcla entre lista de tareas y cronómetro, con opción de poder agregar manualmente las horas y minutos transcurridos de la actividad deseadas. Este es el aspecto que ha tenido desde la primera vez que tuve algo “depurable” hasta la versión actualmente disponible en la tienda:

Presentation1

Tras la primera versión, Sergio Moya, compañero de aventuras, me sugirió utilizar material design, y gracias a las guías disponibles y a las opciones de compatibilidad con terminales antiguos, pude adaptar la mayor parte del diseño sin demasiados problemas.

Lenguaje

Para programar en android podemos utilizar Java, o desde algunas versiones C++ para trabajo intensivo de procesador, como juegos. También podemos utilizar otros lenguajes que compilen a la VM como es el caso de Clojure, Scala o Kotlin de Jetbrains, siendo este último una alternativa interesante, ya que se trata de un lenguaje de más alto nivel, orientado a objetos y dinámico. Tras probarlo durante un par de iteraciones volví a Java, aunque no descarto utilizarlo en un futuro.

Arquitectura

architecture_app

La aplicación cuenta con tres vistas (actividades como se denominan en Android), un controlador de tabs, dos fragmentos personalizados y varias clases auxiliares para el manejo de los datos.

Componentes externos

La aplicación emplea dos componentes adicionales:

  • Joda-time: Aporta una mejor gestión de fechas y horas a las clases existentes de Java
  • SugarORM: Un mapper relacional muy sencillo que permite tener una pequeña base de datos sqlite donde almacenar los datos, que además cuenta con soporte para migraciones.

Testing

Actualmente el proyecto cuenta con algunos tests unitarios, y la idea es que los tests vayan aumentando a medida que se necesite más funcionalidad para evitar pruebas manuales, que al final son las que más tiempo consumen.

Herramientas

Las herramientas para el desarrollo Android también han mejorado mucho últimamente, podemos utilizar Eclipse con el plugin ADT, o también podemos emplear Android Studio, basado en InteliJ IDEA y soportado oficialmente por Google.

Para poder depurar nuestra aplicación, lo mejor y más rápido es contar con un dispositivo físico, o varios, ya que hemos de probar con diferentes versiones. Podemos además recurrir a emuladores como Genymotion, que al estar basado en VirtualBox, nos proporciona una máquina virtual muy rápida y fluida, lejos del pobre rendimiento que proporciona el emulador oficial.

Publicación y subida

Para poder publicar en Google Play (de momento no he considerado otros marketplaces como el de Amazon, aunque están en mi lista) necesitamos pagar la cuota de inscripción, que son $25 y que nos dan acceso permanente, sin necesidad de renovar. Como la aplicación es gratuita y (de momento) no usa publicidad, el proceso de registro es bastante simple. Una vez que tenemos la aplicación lista, basta con generar el APK desde nuestro editor, subirlo a la plataforma y llenar la información relativa al título, descripción, así como algunas imágenes.

Una de las cosas más interesantes que ofrece la plataforma son las opciones de Alpha y Beta, ya que podemos tener hasta tres versiones subidas de la aplicación al mismo tiempo para tres grupos distintos de usuarios sin tener que recurrir a servicios externos.

Conclusiones

Esta pequeña utilidad que espero seguir mejorando con el tiempo me ha permitido tener un primer contacto con la plataforma y reencontrarme con Java después de varios años. Es una experiencia muy interesante y aporta una visión adicional si trabajas con varias plataformas.

Descarga The Time Box desde Google Play

Recursos

Material Design

Nuevo hangout el próximo 10 de febrero: Experiencias del mundo real con Xamarin

Vuelven los hangouts en 2015! Tras el parón de navidades y la cuesta de enero volvemos con desarrollo móvil usando C# en otras plataforma no Microsoft. Veremos de primera mano algunas experiencias que han tenido nuestso invitados con proyectos y aplicaciones reales.

Además tenemos la suerte de contar no con uno, sino con dos miembros del equipo de desarrollo de Xamarin para darnos su visión desde el otro lado. Dos horas que seguro que se nos quedan cortas.

La cita es el próximo 10 de febrero a las 20:00 GMT+1 en Google Hangouts: https://plus.google.com/events/c8ojlcgbi8gtsseulj331hpu5eo.

Desarrollo móvil multiplataforma con Xamarin

Contamos con el siguiente panel para el debate:

  • Jose Miguel Torres: Desarrollador en Xamarin
  • Rodrigo Moya: Desarrollador en Xamarin y colaborador del proyecto Gnome
  • Francesc Jaumot: Desarrollador y CEO en Clibb
  • Josue Yeray: Desarrollador independiente y MVP de Microsoft
  • Javier Suarez: Desarrollador independiente y MVP de Microsoft
  • Juan Carlos Quijano: Desarrollador independiente
  • Un servidor, que no se pierde una

En esta ocasión nos acompaña una vez más Syncfusion, así que si vienes puedes llevarte una licencia de uno de sus productos de manera completamente gratuita.
Te esperamos allí!

Si no puedes asistir lo dejaremos grabado en cuanto finalice el evento.

Materiales del evento: “Tres Tecnologías Microsoft que no se dan durante la carrera”

El pasado viernes a la hora de comer pasé una hora con los chicos de UAM.net en la Escuela Politécnica Superior de la UAM hablando sobre las tres tecnologías Microsoft que, a mi entender, no se impartían en la carrera cuando yo era estudiante.

IMG_8990

Concretamente, en esta charla estuvimos hablando de:

  • Windows Phone, Windows 8 y el resto de las plataformas móviles
  • ASP.net MVC, Web API, verbos HTTP, APIs REST y otros lenguajes como Ruby o PHP
  • Características disponibles en Azure y qué otros proveedores nos podemos encontrar en el mercado

El vídeo

Como novedad, esta vez hemos grabado la charla y está disponible en Youtube:

Las slides

Las slides, como siempre, están disponibles a continuación:

El código

El código de los ejemplos utilizados, y que en el caso de la web es el que se despliega directamente a Azure Websites está disponible también en un repositorio de Github: 201501-demo-uam

Finalmente, los enlaces recomendados que estaban al final de la presentación los dejo aquí:

Preparar la charla ha sido un reto muy interesante, ya que era la primera vez que volvía a dar una charla en la escuela después de haber terminado la carrera, así que espero que a los asistentes (y los que la hayáis visto en diferido) os haya gustado.

Desde aquí mi agradecimiento a la organización por la posibilidad de volver a la EPS y la enhorabuena por conseguir mantener a la gente interesada en las tecnologías .NET. Nos vemos en el próximo evento!

Rematando 2014… y planeando 2015

var dosMilCatorce = $.Deferred();

when(dosMilCatorce).done(function() {
    escribirArticulo();
});

Un año más llega a su fin y con él la quinta edición de mi resumen anual del blog. Este 2014 ha sido increíble, con casi 60 entradas publicadas y más de 50 comentarios nuevos.

Comencé el año acudiendo a mi primer Bilbostack, un evento técnico con una gran variedad de temas que me dio pie para un artículo sobre el uso de clases abstractas VS interfaces + métodos de extensión.

Pasada la resaca navideña, y con algo más de tiempo, pude recuperar un proyecto de un antiguo hackathón, llamado RealPoll y rehacerlo en C#.

Hubo tiempo para eventos y charlas, montando en marzo mi primer Hangout con la colaboración de Juan Quijano sobre SignalR y Web API, dando mi primera charla en la comunidad MadridJS además de poder volver al Gusenet como ponente para hablar de Firefox OS y acompañado de @ambynet, mi madre.

Además, pude cerrar uno de los proyectos que llevaba abierto desde 2013, que era el cliente de Karmacracy para Windows 8 y empezar a dar mis primeros pasos con ASP.net vNext, un tema que me acompañaría a lo largo del año.

En verano, a raíz de un tweet sobre el estilo que uso para escribir estas entradas, organizamos un hangout llamado Hablemos de blogs con un panel de lujo con profesionales como Vanessa Pizarro, Juan Quijano, David Salgado, Jose Manuel Alarcón y Bruno Capuano.

Como además es época de cambios, cambié de equipo y de retos, como aprender a usar Varnish o montar mi pequeño motor de injección de dependencias en c# para intentar entenderlo mejor.

Entre temperaturas calurosas y vacaciones pude convencer a Quique Fernandez Guerra, desarrollador javascript y habitual en eventos y charlas del tema para que inaugurarala la sección de “Artículo Invitado” hablando de las ventajas y las novedades de ECMAScript 6.

Ya entrando en otoño me escapar a Sevilla para hablar de cómo conectar Windows Phone a dispositivos en el Sevilla Mobility Day y a la vuelta montar un nuevo hangout cubriendo las Novedades de C# 6 con la colaboración especial de dos cracks como Edu Tomás y Juan Manuel Servera mientras preparaba la maleta para ir al TechEd Europe 2014 a través de PASS: Professional Association for SQL Server.

Tras el TechEd, un pequeño artículo sobre atajos de teclado de Visual Studio y empezar a jugar con lo presentado en el evento Connect además de mis primeros pinitos en el mundo IT preparando una máquina virtual de Azure desde Powershell.

Cómo no, más eventos, un nuevo nuevo hangout, esta vez sobre las novedades de ASP.net MVC, contando con la presencia de Eduard Tomás y Luis Ruiz Pavón como invitados especiales y mi tercer codemotion, donde este año intenté aprender algunas cosas sobre android. Además, pude correr mi primera carrera popular y hacer un pequeño artículo sobre la tecnología que ví.

Ya entrados en invierno, y mientras empezaban los preparativos para las festividades navideñas pude preparar mis primeros vídeos de vNext en inglés y castellano, un artículo sobre preguntas y respuestas de vNext, y además sacar tiempo para dar mi segunda charla en MadridJS, esta vez contando cómo hemos montado una red social desde frontiers.

Ha sido un año muy intenso, tanto a nivel de eventos como de artículos. Echemos un vistazo a los objetivos que me puse el pasado año:

  • Convertir al menos un artículo técnico en un vídeo: Conseguido
    A raíz de los hangouts sobre C# 6 y ASP.net vNext, he publicado un par de vídeos uno en inglés y otro en castellano sobre las novedades de la plataforma.

  • Escribir más en el blog, tanto en inglés como en castellano Conseguido
    Este año han sido casi 60 artículos como decía antes, 26 artículos más que en 2013, sobre temas como inyección de dependencias, Windows Store, javascript, entre otros.

  • Aprender otro lenguaje de programación, a ser posible funcional A medias
    Este año he podido descubrir con Kotlin, la alternativa de los chicos de Jetbrains para desarrollo en la JVM, reencontrarme con Java desarrollando para Android, aprender nociones de SASS y mejorar (bastante) mi nivel de Javascript, C# y SQL, así que aunque no tengo un lenguaje fuerte que defina 2014, he podido tocar de varios palos.

  • Aprobar un examen de certificación Conseguido
    Y por partida doble, este año han caído dos certificaciones (70-483 y 70-484) relacionadas con el desarrollo de aplicaciones para Windows Store en C#.

  • Cursar mi segundo MOOC (y aprobarlo, claro) Conseguido
    A través de la plataforma Coursera, desde mediados de septiembre y hasta finales de diciembre, he estado haciendo un curso de desarrollo para aplicaciones móviles para Android. Ha sido muy interesante y completo, y los ejercicios, exámenes y peer reviews me han permitido tener un primer contacto con la herramienta. A principios de enero prometo artículo!

  • Desarrollar una app para iOS y publicarla No conseguido
    Veremos si el próximo año puedo llevar alguno de mis pet-projects a iOS, no pierdo la esperanza, ya sea con Xamarin o usando Swift.

  • Desarrollar una app para Android y aprender el entorno Conseguido
    De manera paralela al curso de Android he estado haciendo una pequeña app para gestionar el tiempo que dedicamos a las diferentes tareas, y que espero que vea la luz a principios del próximo año.

  • Publicar otra app en la Windows Store y en el Windows Phone Marketplace A medias
    Este año pude publicar Karmacracy para Windows Store, mi primera app con HTML5, CSS3 y AngularJS como framework Javascript, aunque no he podido publicarla en el Marketplace de Windows Store.

  • Leer más, tanto literatura técnica como no técnica. Conseguido
    Entre libros como “You don’t know JS” o “How to fail at almost everything and still win big” he podido leer un poco más que el pasado año, ya sea en libro físico como usando Kindle :).

El balance es bastante positivo, y casi todos los objetivos están cumplidos. Con esta premisa, esta es mi carta a los reyes para el 2015 que entra:

Mi carta a los reyes para 2015

  • Aprender un nuevo lenguaje de programación o framework, y hacer un proyecto en él
    No hay nada como “mancharse las manos” para poder conocer de verdad un lenguaje de programación o framework, así que para 2015 intentaré aprender algo distinto y ponerlo en funcionamiento.

  • Hacer más vídeos en inglés y en castellano
    Gracias a todos por el feedback, trabajaré para mejorar la calidad de los mismos y que cada uno sea mejor que el anterior.

  • Montar más hangouts
    Los tres que he tenido la suerte de organizar este año han tenido una gran acogida, así que para 2015 intentaré seguir con esa línea.

  • Hacer más proyectos personales
    Al final 2014 se saldó con varios pet-projects, algunos me han servido para charlas, otras para mi trabajo, y en general he aprendido mucho con ellos.

  • Cerrar un ciclo de certificación Microsoft
    Solamente necesitaría un examen más para una certificación completa en desarrollo de aplicaciones para Windows Store, seré capaz?

  • Cursar y aprobar otro MOOC
    Si es posible seguiré con el apartado técnico, aunque no me importaría hacer cursos relacionados con la creación de startups.

  • Trabajar más en un segundo o tercer idioma
    Ya sea mejorar mi nivel de inglés o aprender más de lo poco de francés y alemán que sé, como irme a otros idiomas como puedan ser el chino o el japonés, es algo interesante que me gustaría plantear.

  • Seguir escribiendo
    226 entradas después aquí estamos, y seguiremos estando con nuevos temas el próximo año.

Conclusiones

Echando la vista atrás a estos 12 meses hay mucho que contar, un año muy intenso, con muchos temas de los que contar, mucho aprendido, eventos, charlas y oportunidades de conocer a gente verdaderamente interesante. 2015 se presenta con un montón de retos y cosas que pueden ver la luz muy pronto. Solamente le pido al año nuevo que me permita mantener el ritmo y aprender tantas cosas nuevas como nuevos artículos publique.

Gracias a todos los que en este 2014 habéis pasado por este blog, los que habéis comentado y los que habéis compartido en las redes sociales, vuestros comentarios son la gasolina que hace que este blog se mantenga.

dosmilCatorce.resolve();

Vídeos y material de “Lecciones aprendidas creando una red social” con MadridJS

Este jueves he podido compartir con los chicos de MadridJS así como varios alumnos del programa Ironhack, nuestra experiencia con javascript desarrollando una red social enfocada al desarrollo científico. Durante poco menos de una hora (y luego durante las cañas) repasamos herramientas, metodologías, y pruebas que hacemos en nuestros sistemas, así como las lecciones que hemos aprendido en el camino. En este artículo podrás encontrar el vídeo del evento, las slides de slideshare así como enlaces adicionales de temas que surgieron durante el mismo.

El debate fue muy interesante y personalmente he descubierto un montón de cosas nuevas para estudiar, gracias a todos los asistentes.

Vídeo

Slides

Enlaces adicionales de temas que surgieron en la charla: