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:

New video: ASP.net in 10 minutes

Today we have a new video! This time we are covering in less than ten minutes, three core features of ASP.net vNext:

  • Core CLR: Main differences with the Full CLR, how to add references and what do we lose.
  • Configuration: New configuration options and how to access the information from our code.
  • Dependency injection: Which are the DI options we have and what are the differences between them.

For more articles related to ASP.net vNext, check them out (mostly on spanish) with the tag vnext

The sample code used on the video is published on Github

Evento para acabar el año: Lecciones aprendidas creando una red social

global_139815902

El próximo jueves 18 a las 19:00 vuelvo a MadridJS en mi última charla del año, en la que veremos algunas lecciones aprendidas tras haber estado durante varios meses involucrado en el desarrollo de una red social.

En esta sesión veremos algunas tecnologías, frameworks y herramientas que hemos usado tanto para desarrollar, hacer pruebas tanto unitarias como de aceptación, y finalmente para temas relacionados con despliegue de la parte frontend de la plataforma, así como algunas anécdotas y problemas a los que nos enfrentamos en los diferentes procesos tanto de creación del portal como de puesta en producción.

Además, veremos herramientas y librerías como knockout, sammy, qunit, sinon y selenium.

Inscríbete en: http://www.meetup.com/madridjs/events/219137077/

Te espero allí!

Vídeo: ASP.NET vNext en 10 minutos

En este vídeo resumo tres de las características de las que hemos hablado en Hangouts y en eventos como los de MSCoders, que son el Core CLR, la inyección de dependencias y la configuración a través de ficheros JSON.

Para más artículos relacionados, puedes encontrar información con la etiqueta vnext de este blog.

8 preguntas (y respuestas) sobre ASP.NET vNext

Ayer, en las oficinas de Microsoft España estuve en una mesa redonda con el grupo de MSCoders Madrid, continuando la conversación del pasado hangout e intentando resolver las posibles dudas que genera la nueva versión de ASP.NET.

Entre todas las cosas que se plantearon, tomé nota de varias preguntas para intentar responderlas en esta artículo:

¿Qué compatibilidad tengo?

Por una parte hemos de distinguir dos elementos diferentes, el Full .NET CLR, que es como teníamos .NET hasta ahora, y el Core CLR, que es la nueva versión optimizada para web, multiplataforma, y que incluye las dependencias en nuestras aplicaciones.

Por su propia naturaleza, el Core CLR está más limitado (temas como el registro de windows o el acceso al event logger no son posibles con el mismo) pero si usamos el Full .NET CLR podremos utilizar muchas de las ventajas de las ventajas de la nueva plataforma sin perder compatibilidad con proyectos existentes.

¿Qué pasa con Webforms?

La tecnología detrás we WebForms sigue teniendo una dependencia muy fuerte con System.Web, y pese a que se ha anunciado cierto soporte por parte de vNext, lo más probable es que neceitemos el Full CLR para hacer uso de Web Forms, perdiendo las ventajas del Core CLR.

¿Seguro que requiere Mono?

De acuerdo con el equipo de desarrollo, la dependencia de Mono es, de momento, temporal, así comentan en el artículo de introducción a MVC5, Microsoft pondrá a disposición de los desarrolladores una versión del CLR que será independiente del proyecto Mono, como se comenta a continuación:

We will release a cross-platform runtime for Linux and Mac OS X. When released, this runtime will enable you to develop and run .NET apps on Mac and Linux devices. We will work closely with the Mono community on this effort. Until its release, you can use the Mono CLR for cross-platform development. 

¿Significa esto que Mono tal y como lo conocemos deja de existir?

No, además de desarrollo web, Mono permite hacer desarrollo de aplicaciones de consola, y de aplicaciones de escritorio en linux mediante GTK# y en Mad a través de Xamarin. De acuerdo con el artículo publicado en el blog del proyecto Mono la integración permitirá al proyecto avenzar en la parte común.

El resto de adaptación de APIs nativas, como puede ser una abstracción del registro de Windows, o el trabajo hecho hasta la fecha con WinForms, quedan fuera de .NET Core y la comunidad Mono seguirá trabajando en el soporte para los mismos.

¿Qué pasa con CoreCLR y Entity Framework, funciona?

La primera versión compatible con CoreCLR será a partir de Entity Framework 7, que supone un cambio tan radical sobre EF6 como el que hemos visto con ASP.NET, y que está actualmente en fase de desarrollo, como podemos ver en su wiki.

Lo que sí sabemos y podemos comprobar echando un vistazo a las issues reportadas en Github es que se está trabajando en ello, con lo cual podemos estar seguros que tendremos una versión de Entity Framework con CoreCLR.

¿Pero, si los ficheros ahora no pertenecen al proyecto, puedo ocultar carpetas del solution explorer?

En el estado actual de las herramientas, no. A partir de la CTP4 de Visual Studio 14 (ahora Visual Studio 2015) el fichero kProj no guarda registro de los ficheros, sino que se lee directamente el contenido de la carpeta.

Veremos qué ocurre con las siguientes Previews de la herramienta, ya que el soporte para el tooling es bueno, pero tiene aún cierto margen para la mejora.

¿Finalmente, puedo integrar Grunt como parte de mi proceso de release y publicación?

Sí, de hecho los chicos de Microsoft Open Tech tienen un artículo corto pero muy conciso sobre cómo podemos configurar grunt en nuestro TFS

¿Donde puedo encontrar más información?

La tecnología detrás de mi primera carrera popular

Hoy, arrastrado por mi querida Patricia Vasco, participé en mi primera carrera popular, llamada Ponle Freno, que consistía en una ruta de 10 kilómetros por el centro de Madrid, a cubrir en… bueno… lo antes posible.

Podría dedicarme a contar lo dura que ha sido para mí, y que tengo agujetas en músculos aún por descubrir por la medicina moderna, sin embargo me gustaría comentaros la tecnológica que ví (y usé) en esta carrera.

Dorsales con chip

2014-11-30 19.01.51

En la parte trasera de nuestro dorsal nos podemos encontrar un chip RFID que se encarga de notificar quienes somos a la antena del punto de control cuando pasamos por el mismo.

Como la información a transmitir es muy poca, se alimenta de las ondas recibidas de la antena, de tal menera que no necesita baterías.

Este sistema permite a la organización saber los tiempos totales de cada asistente, así como saber si hemos pasado por todas las etapas de la carrera, y luego poder verlo en su página web.

Drones

31

Espero (para mi bien) que el día que Skynet sea consciente de sí mismo no sea en una carrera popular, ya que en la salida pudimos ver varios drones filmando.

Son más prácticos que un brazo telescópico de una cámara y es menos complicado que recurrir a un helicóptero, además, por lo que he visto en algunos vídeos hechos con drones, la calidad de la imagen es muy buena y bastante estable.

Música, olvidate del streaming

windows_phone_zune_pass_streaming_icon_by_revengexx14-d4oupr5

El problema de meter 20.000 personas en una parrilla de salida (y luego durante el resto de la carrera) es que las antenas de telefonía no están preparadas para tanta carga, con lo cual la velocidad de datos se reduce hasta ser completamente inusable. Esto también lo podemos apreciar en eventos muy concurridos y manifestaciones.

Lo mejor para ello es, o bien utilizar nuestra propia aplicación offline de música para nuestro teléfono preferido, o si usamos servicios como Spotify recurrir a su modo offline.

Trackers: Endomondo, Nike Plus, Runkeeper, etc.

Estas herramientas nos permiten tener un control más exhaustivo de cómo nos está iendo y cómo ha ido ha ido la carrera. Durante la misma, la aplicación nos muestra estadísticas como velocidad, tiempo, distancia, y combinaciones de las mismas.

Después de la carrera podemos ver, en el dispositivo o en la web, más estadísticas sobre la misma. Para los aficionados como yo no deja de ser un juguete divertido, pero los profesionales pueden tener una visión más completa durante y después de la carrera.

En mi caso recomiendo Endomondo, una herramienta gratuita (con posibilidad de suscripción para ventajas adicionales) que lleva varios años en el mercado y que, entre otras cosas, nos va “chivando” cada vez que completamos una etapa, por ejemplo un número determinado de kilómetros.

Pebble + Endomondo

endomondo-pebble

El reloj Pebble es EL smartwatch. Con una batería que puede durar una semana, nos permite controlar la música de nuestro móvil, recibir notificaciones y, más importante para el tema que comentamos ahora, Endomondo ofrece soporte a través de una aplicación oficial.

Esto nos permite controlar nuestros tiempos y velocidad sin tener que sacar el móvil de nuestro bolsillo (o mochila) para hacerlo, además de recibir algunas notificaciones de “Ánimo” y poder cambiar la canción que suena en ese momento.

Baterías extra

XTPower-XT-2600-Powerbank-mobiler-USB-Akku-mit-2600mAh-fuer-Handy-Smartphone-iPhone-iPod-PDA-MP3-Player-Navi-und-viele-mehr-mit-7-Adaptern

Una de las mejores decisiones jamás tomada para este evento. si estamos usando el GPS y el bluetooth constantemente, además de la música, la batería se nos puede terminar antes de acabar la carrera. LA solución a esto es una batería compacta y un cable corto (cortesía de Microsoft Ibérica) para que no se nos acabe la energía.

Conclusiones

Cuando estamos en eventos técnicos, de vez en cuando teorizamos sobre cómo sería la vida de la gente con la tecnología que creamos o para la que desarrollamos. Resulta increible poder ir a una carrera y ver la cantidad de tecnología que nos rodea hoy, y que habría sido impensable tener hace unos años. Los wearables son una realidad, y estoy seguro que en la siguiente carrera veré más pebbles, Microsoft Bands o, quién sabe, tal vez veo algún corredor con el Watch de Apple.

¿Hay alguna tecnología más que hayas visto o usado en una carrera de este tipo?

Keep coding, keep running :)

Creando una VM de Azure desde línea de comandos (Primera parte)

Hoy tenía la necesidad de configurar una máquina virtual de Azure. Podía haber optado por la manera simple, que es conectarme al portal y configurarla, pero ya que tenía el SDK de Azure instalado, he decidido probar a ver cuanto puedo hacer desde línea de comandos.

Creando un grupo de afinidad y una storage account

El primer paso es crear un grupo de afinidad que es, básicamente, una sub-región donde podemos tener varios servicios. En mi caso lo configuraremos en la región del oeste de Europa:

New-AzureAffinityGroup -Name Sample -Location "West Europe"

El siguiente paso es crear una storage account, una cuenta en la que almacenaremos la máquina virtual, en el grupo de afinidad que hemos creado antes

New-AzureStorageAccount -StorageAccountName "NAME" -Label "sqlServer" -AffinityGroup "Sample"

Una vez la hemos creado, la podemos almacenar en una variable para su posterior uso:

$storage = (Get-AzureStorageAccount | where {$_.StorageAccountName -Contains "NAME"})

Finalmente fijamos esta cuenta de almacenamiento como la cuenta por defecto de nuestra suscripción.

Para ello necesitamos el nombre de nuestra suscripción, que lo podemos obtener con este comando:

Get-AzureSubscription

Con el nombre de la suscripción podemos fijar la cuenta de storage actual, usando la variable obtenida anteriormente:

Set-AzureSubscription -SubscriptionName $subscription.SubscriptionName -CurrentStorageAccountName $storage.StorageAccountName

Buscando la máquina que necesitamos desplegar

El primer paso es conseguir la máquina virtual que queremos agregar, para lo cual podemos filtrar y seleccionar solamente las máquinas que cumplen ciertos requisitos:

Get-AzureVMImage | where {$_.Label -match "SQL Server 2014"} | Select Label

Una vez que hemos seleccionado una imagen base, la podemos asignar a una variable para su posterior uso:

$vm = (Get-AzureVMImage | where {$_.Label -match "SQL Server 2014"})[6]

Finalmente podemos crear nuestra máquina virtual, con los comandos New-AzureVMConfig, Add-AzureProvisioningConfig y New-AzureVM:

New-AzureVMConfig -Name "VM-NAME" -InstanceSize Small -ImageName $vm.ImageName | Add-AzureProvisioningConfig -Windows -AdminUsername "USER" -Password "PASSWORD" | New-AzureVM -ServiceName 'SERVICENAME' -AffinityGroup "Sample"

Si todo ha ido bien, podremos ver que, tras ejecutar el siguiente comando:

Get-AzureVM 

Se muestra nuestra máquina virtual en estado de “Provisioning”.

Conclusiones

Ha sido cuanto menos curioso (y más difícil de lo que imaginaba en un principio) no solo por la sintaxis de los comandos, sino porque a veces no somos conscientes de todos los procesos que se ejecutan cuando creamos una máquina virtual.

El hecho de que esto sea un script, es que lo podemos meter en un bucle for y crear 20-50-100 máquinas de la misma manera, según nuestras necesidades.

En el siguiente artículo veremos qué podemos hacer una vez que el provisionamiento está completo. Nos podremos conectar por Powershell como si de SSH se tratara? Podremos descargar el perfil de RDP desde la línea de comandos? La respuesta a esta y más preguntas en el próximo artículo de la serie.