#Podcast – #CleanCode: buenas prácticas, algunas experiencias y un par de risas

keyboard rage.gif

Hola !

En este episodio tengo la suerte de hacer una conexión Canadá <-> UK para hablar con Omar Del Valle (@omarvr72). La excusa es “Clean Code” y sabiendo que tendremos que vivir siempre con código comenzamos a hablar sobre

  • “Código bueno” y “Código malo”
  • Lo que sentimos cuando volvemos a ver nuestro código del pasado
  • Documentación ágil y comentarios en el código
  • Aplicaciones guiadas por excepciones (todavía existen)
  • Refactorización
  • La “supuesta” muerte de la Programación Orientada a Objetos

Y todo esto acompañado de algunas anécdotas que nos sacaron un par de sonrisas. Como estábamos llegando a la hora de grabación, hicimos una pausa y nos quedó pendiente una segunda parte orientada hacia las arquitecturas.

Espero que lo disfruten.

Ir a descargar

Saludos @ Toronto

El Bruno

References

Advertisements

#LEGO – FlyBrix, Lego y #drones, se puede pedir algo más ?

Hola !

Hoy post rápido de viernes, y que mejor que hacerlo que presentar el próximo juguete que llegará para mi familia

En este momento, lo único que necesito es pensar en una excusa coherente para convencer a Pao sobre la necesidad que tienen mis hijos de este juguete ahora mismo.

cfyju9kw8am-bru

Lo que me llama la atención es el soporte a los diferentes diseños y la capacidad de crear drones con 4, 6 u 8 rotores. Creo que además de pensar en modelos nuevos, este device me dejará hacer un poco de ingeniería inversa para ver como compensa y equilibar los diferentes diseños.

Por ahora, vuelvo al problema actual: qué decirle a Pao para poder comprar esto? Tal vez mostrarle la imagen de un dragondrone ? Yo diría que si, pero con las mujeres en mi casa nunca se sabe 😀

flybrix-lego-drone-kit-3

Saludos @ Toronto

El Bruno

References

#Opinion – #Nike HyperAdapt 1.0, el futuro está aquí ! (sutil referencia)

Hola !

Hoy doy pausa a Hololens, Visual Studio, Unity y otras herramientas, porque después de ver este vídeo, lo único que puedo decir es Woooooww !!!

Y esto no es todo, en poco más de 2 meses podremos probar y comprar estas maravillas ! Eso sí, el precio no será barato e inicialmente solo se podrán conseguir en USA.

El nombre de estas zapatillas es HYPER ADAPT 1.0 y lo mejor es el vídeo reportaje que ha hecho la gente de WIRED al respecto. No creo que me sirvan para correr una maratón, pero si que me darán alguna que otra alegría en cuanto me consiga unas !

Saludos @ Toronto

El Bruno

References

 

#Hololens – Creando 3D text layers con AirTap

Hola !

En el ejemplo de hoy veremos como usando URHO, podemos aprovechar las capacidades de Spatial Mapping y con un gesto AirTap crear un elemento de texto. Este elemento se crea en la posición donde está mirando la cámara y queda anclado en el mundo de hologramas hasta que el mismo se destruya.

project-01

Antes de compartir el código del ejemplo completo, voy a terminar de depurar la posición final del elemento. Como estoy haciendo cálculos con RightCamera, tengo que terminar de ajustar que el elemento quede más centrado.

La función PositionText() es la encargada de crear los elementos de texto y agregar los mismos en una colección de la escena. Luego se valida que no haya más de 5 elementos para no consumir toda la memoria con objetos inútiles.

clipboard02

La linea 67, que es donde defino la posición del elemento, es la que requiere un poco de mejora. En cuanto comprenda la mejor forma de hacerlo, compartiré el proyecto y explicaré otros detalles del mismo.

Saludos @ Toronto

El Bruno

References

#Podcast – Yo solo quería un plátano (hablando con FrontEnd developers)

banana.gif

Hola !

En este episodio tengo la suerte de hablar un rato con Quique Fdez Guerra (@ckgrafico) sobre el estado actual de la programación de frontend. Y cuando en un podcast, la introducción se estira hasta los 25 minutos, es porque el tema es más que interesante. A partir del minuto 25, os recomiendo tener abiertas las Slides como material adicional ya que es un complemento interesante para ver la visión de Quique.

Y sobre los temas tocados, pues nombrar Lenguajes como SASS, BEM o TypeScript, Librerias cómo Angular, JQuery o Lodash y Gulp, WebPack, NPM, Bower, y mas. Eso sí, partiendo con la historia de JavaScript desde el año 1995 y comentando como han cambiado las cosas hasta el día de la fecha, donde … pues la conclusión a la que llegamos a l final del podcast vale la pena.

Espero que lo disfruten.

Ir a descargar

Saludos @ Toronto

El Bruno

References

#Hololens – #Xamarin, #URHO y un ejemplo de Spatial Mapping (que está a 2 clicks de ser un Shooting Game)

Hola !

Hace unos días comenté que utilizando Xamarin y URHO podíamos crear apps para Hololens. Como siempre, es buenísimo tener una 3ra opción además de Unity y Wave Engine, y en este caso, URHO es bastante simple de comprender.

Además de los ejemplos originales, hace unos días han agregado un ejemplo para trabajar con SpatialMapping. Esto significa que ahora podemos tener un “mapeo de los objetos que detecta Hololens” en tiempo real y lograr que los mismos actúen con nuestros hologramas.

En el siguiente vídeo podemos ver como tenemos un cubo en color rojo, hasta que se detecta que el mismo puede “posarse” sobre una superficie plana. En ese momento con un AirTap se posa el cubo y el mismo cambia su color a gris.

holo-urho-spatial-mapping-02

A partir de este momento, podemos tirar bolas de colores realizando el gesto de AirTap y podemos ver como las mismas actúan con el cubo y los los elementos detectados como un banco o una pared.

En el Update de cada Frame, verifico que se haya obtenido un SpatialMapping del contexto. Si ya tenemos un SpatialMapping, a partir de la posición a la que estamos mirando con HoloLens (RayCast) verificamos si la superficie es plana para poder poner el cubo (líneas 77 a 80).

clipboard02

En caso de poder posicionar el cubo, se cambia el color del mismo y se actualiza la posición. Otra función interesante es ThrowBall(). En la misma podemos ver como se crea una esfera en la escena con un color Random; y luego se dispara la misma hacia la posición que apunta la cámara derecha.

clipboard04

Nota: Utilizamos la cámara derecha, pero también es posible utilizar LeftCamera.

Finalmente la función OnSurfaceAddedOrUpdated() es la que se utiliza para realizar el proceso de SpatialMapping. Dentro de esta función se agregan o eliminan elementos en _environmentNode que es un nodo creado a partir de la escena principal.

clipboard06

El código se puede descargar desde aquí: https://github.com/elbruno/Blog/tree/master/Hololens/URHOPhysics

Saludos @ Toronto

El Bruno

References

#Hololens – Forma correcta de trabajar con #Unity packages y #HoloToolkit

Hola !

Ayer en una juntaba online / virtual con otros Hololens developers, uno de ellos comentó la forma correcta de utilizar paquetes en Unity. En realidad, el ejemplo que comentó (y que yo compartiré aquí) es sobre la forma correcta de utilizar HoloToolkit.

Yo he escrito algunos posts sobre HoloToolkit, y ayer me di cuenta que copiar los contenidos al directorio [Assets] en un proyecto de Unity 3D funciona, sin embargo hay una forma mejor. Para esto describiré los pasos necesarios en 3 escenarios de ejemplo con HoloToolkit.

Crear un Unity Package para HoloToolkit

  • Clonar / descargar la última versión de HoloToolkit desde GitHub
  • Abrir Unity y seleccionar la opción “Open project”
  • Seleccionar el folder “HoloToolkit-Unity-master”

clipboard03

  • Unity creará un nuevo proyecto y en los Assets del mismo veremos el contenido de HoloToolkit
  • En el panel Projects, seleccionar el folder Assets, desplegar el menú contextual y seleccionar la opción [Export Package]

clipboard05

  • Seleccionar los elementos a exportar. Por defecto es aconsejable dejar todo seleccionado, aunque si tienes experiencia con estos Assets puedes crear un package a medida

clipboard06

  • Seleccionar el directorio y destino y crear el Unity Package. Personalmente, prefiero tener un paquete por cada conjunto grande de cambios que exista en HoloToolkit, es por eso que le agrego el sufijo año, mes y dia a cada paquete

clipboard08

  • Done !

Ahora ya podemos cerrar Unity y trabajar con este paquete en un nuevo proyecto de Unity

Utilizar HoloToolkit Unity Package en un proyecto de Unity

  • Crear un nuevo proyecto 3D en Unity
  • Ahora debemos importar el paquete de HoloToolkit. Para esto seleccionamos el menú [Assets / Import Package / Custom Package]

clipboard11

  • Esta opción nos mostrará los elementos del Unity Package que queremos importar. En este caso importaré uno de hace un par de semanas para mostrar la forma correcta de actualizar un package luego.

clipboard12

  • En este momento, Unity se encarga de importar todos los elementos (esto es similar a copiar todos los archivos en el directorio Assets)
  • Una vez importado, podemos ver todos los elementos en el directorio Assets

clipboard14

  • Ahora ya podemos comenzar a trabajar con los elementos de HoloToolkit en nuestro proyecto de Unity

Actualizar un Package de HoloToolkit en Unity

  • En este escenario realizaremos los mismos pasos para importar un paquete
  • Lo que nos puede llamar la atención es que si hay cambios en el paquete, se nos avisará de los mismos al momento de importarlos
  • Por ejemplo en la siguiente imagen podemos ver cambios en el archivo [ Build / Editor / BuildDeployWindow.cs] y archivos nuevos en [Imput / Plugins / … ]

clipboard15

  • Esto nos permite conocer que cambios existen entre las diferentes versiones de un package y además seleccionar los elementos que queremos importar.

Y esta es la forma correcta de trabajar con Unity Packages aplicada a HoloToolkit.

Saludos @ Toronto

El Bruno

References

#Icons – Descarga Visual Studio Image Library gratis

Hola !

Hoy me preguntaron dónde conseguir algunos de los iconos de las apps de Office, y me acordé de que en MSDN estaba la colección completa de iconos e imágenes de Microsoft Visual Studio, Microsoft Windows, Office System y otras apps.

Después de buscar el link de descarga me llamó la atención la diferencia de tamaño de la última versión. Por ejemplo:

  • La versión de VS2011 Image Library.zip, 19.4 MB
  • La versión de VS2013 Image Library.zip, 285.6 MB
  • La versión de VS2015 Image Library.zip, 2.9 GB

Después de descargar la versión de VS2015 me encontré con que cada icono tiene diferentes tamaños y versiones. Por ejemplo en png, svg y xaml!

clipboard02

Las versiones de Xaml nos dejan claro que han sido creadas con AiToXaml o alguna herramienta similar para exportar de Adobe Illustrator a Xaml.

Finalmente comentar que el pdf con el listado completo de iconos tiene un tamaño de +30MBs con lo que la colección es completa, bastante completa. Son 4222 iconos de varios tamaños y varios formatos. Un complemento ideal para MetroStudio de SyncFusion (Y no, no tienen el icono de Hololens)

Saludos @ Toronto

El Bruno

References

#Hololens – #Error: Unable to activate Windows Store app ‘!App’. The activation request failed with error ‘The system cannot find the file specified’.

Hola !

Si estas creando alguna app con Unity3D para Hololens, seguramente te haya tomado un tiempo el acostumbrarte a tener 3 herramientas abiertas para poder probar algo: Unity, un IDE de Visual Studio 2015 para la edición de C# y otro IDE de Visual Studio 2015 para la compilación, depuración y despliegue (si necesitas depurar y desplegar, claro).

Pues bien, un escenario que me encontrado frecuentemente al momento de desplegar o depurar desde Visual Studio hacia las Hololens es el siguiente. Visual Studio da un timeout con el siguiente mensaje de error:

—————————
Microsoft Visual Studio
—————————
Unable to activate Windows Store app ‘<your package names goes here>!App’. The activation request failed with error ‘The system cannot find the file specified’.
See help for advice on troubleshooting the issue.
—————————
OK Help
—————————

Es bastante simple: no se puede lanzar la app en remoto en el device. El problema está en que si lanzamos la app en Hololens desde el “menú inicio”, la app parece no responder tampoco.

Lo más curioso sobre esto, es que me ha pasado en ocasiones donde no he realizado ningún cambio en el proyecto de Unity, solo he recompilado los binarios. Una solución que funciona sin problemas, es repetir los pasos desde cero en un proyecto nuevo, y todo funciona a la perfección. Hasta que vuelve este error.

Este es un listado de alguna de las pruebas que hice, y al final seguía teniendo el mismo problema.

  • Borrar la app en el device y desplegarla nuevamente
  • Clean y Rebuild desde el Visual Studio de compilación
  • Cambiar el certificado desde el Visual Studio de compilación e incrementar el número de versión
  • Cambiar el nombre de la app desde el Visual Studio de compilación, junto con el nombre del publisher
  • Cerrar el IDE de compilación y eliminar los directorios que crea Unity para la compilación

clipboard02

Y por suerte, llegué a un escenario que me ha permitido seguir trabajando desde Unity sin tener que replicar todo el trabajo desde cero.

  • En Unity acceder a las Player Settings
  • Menu [Edit / Project Settings / Player]
  • En el panel Inspector, seleccionar Windows como plataforma
  • En [Publishing Settings / Certificate], crear un nuevo certificado

clipboard02

Y funciona! Es curioso porque es similar a lo que intenté realizar desde el IDE pero no funcionó. Desde Unity parece funcionar.

Me guardo el post como reminder para la próxima.

Saludos @ Toronto

El Bruno

#Hololens – Los #Xamarin Devs ya pueden crear Hololens Apps !

Hola !

Si algo le falta a Xamarin para ser totalmente cool, era el soporte para Hololens. Y hoy Miguel de Icaza nos ha soltado una novedad de esas que te alegran la semana.

Lo primero es ir a ver en GitHub, un poco cómo funciona esto. Por lo que he leído, Xamarin ya nos permitía trabajar con UrhoSharp, un motor gráfico 2D/3D con C# o F#. Y claro, el motor ahora soporta Hololens … lo demás es fácil de imaginar.

Volviendo a GitHub, la verdad es que los 2 ejemplos de código con el que nos presentan este motor son bastante interesantes. Por un lado tenemos un ejemplo que nos permite controlar un mutante con comandos de voz, que está bastante bien conseguido.

05

Y otro ejemplo, 100% código que sigue los pasos básicos de una app 3D

  • Crea una escena
  • Habilita la interacción. En este caso con gesto AirTap
  • Crea un cubo y lo posiciona a 1 metro de la cámara
  • En cada evento AirTap se mueve el cubo al frente del punto de vista de la cámara

Clipboard02.png

La verdad es que es bastante simple de utilizar y al tener además el soporte de Xamarin detrás, creo que hay bastantes escenarios donde puede ser una opción interesante.

Saludos @ Toronto

El Bruno

References