Extended Reality


Extended Reality

Extended reality (XR) is a term referring to all real-and-virtual combined environments and human-machine interactions generated by computer technology and wearables.
Extended Reality @ Wikipedia

ER = AR + AV + VR

Empecemos por lo básico:

Augmented Reality

De la definición de AR @ Wikipedia:

Augmented Reality is a live direct or indirect view of a physical, real-world environment whose elements are “augmented” by computer-generated perceptual information, ideally across multiple sensory modalities, including visual, auditory, haptic, somatosensory, and olfactory.

Es decir, la Realidad Aumentada tiene que ver con ambientes del mundo físico (difícil usar el término real como lo hacen arriba) que son “aumentados” por información generada por sistemas computacionales. El ejemplo más sencillo que se me viene a la mente es pensar en un celular con la cámara encendida y que sobrepone información de lo que está “viendo”. Por ejemplo, información de los colores que ve, o de los materiales que ve, o el número de objetos, etc.

Tiene que ver con agregar meta-información de lo que se tiene en la cámara y mostrarla al usuario.

Augmented Virtuality

Este término lo descubrí mientras hacía research para este post, la definición de AV @ Wikipedia:

Augmented Virtuality is a subcategory of mixed reality which refers to the merging of real world objects into virtual worlds.

Este es divertido, tiene que ver con sistemas/mundos virtuales donde algo cambia tomando como consideración factores del mundo físico. Como ejemplo se puede imaginar una página web que cambia el color de fondo dependiendo del clima, es edcir, si una página web que muestra información del clima de una ciudad (en tiempo real) decide cambiar detalles como el color de fondo, o hacer efectos de sol o lluvia de manera referente a las condiciones actuales de la ciudad. En Pokémon Go lo hacen, si está lloviendo cambian los bichos que los usuarios que encuentran, dependiendo de lluvia, viento, sol, nubes, etc.

Tiene que ver con agregar condiciones a sistemas computacionales basado en factores del mundo físico.

Virtual Reality

Ya he hablado antes del tema, como referencia agrego la definición de VR @ Wikipedia:

VR is a computer-generated scenario that simulates a realistic experience.

Es decir, tiene que ver con simulaciones virtuales que buscan involucrar al usuario de tal manera que experimenten situaciones realisticas. Medio vaga la definición, porque, hasta una página web puede logar entrar ahí, pero los ejemplos usados hoy en día tienen que ver con sistemas de mundos virtuales que se disfrutan usando headsets envolventes–estilo el Samsung VR Gear que me acabo de conseguir.

Así que bueno, este post es introductorio al tema porque estoy emocionado que las herramientas actuales favorecen y facilitan nuevos desarrollos que participen de estas categorias (what?). Espero que pronto empecemos a ver cosas muy interesantes en estos temas y, yo seguir publicando experimentos que demuestren lo que se puede hacer.

Saludos,
Gorka


Internet distribuido


Internet of Things

…demonstrating that decentralization is about much more than just controlling our own data. It is a fundamental rethinking of the relation between data and applications, which—if done right—will accelerate creativity and innovation for the years to come.
Paradigm shifts for the decentralized Web

¿Qué es el Internet Distribuido?

El concepto viene recuperando fuerza desde hace tiempo ya. Cuando las redes sociales actuales se convirtieron en lo que son–hay que recordar épocas donde los anuncios que veíamos en redes sociales no tenían que ver con conversaciones que habíamos tenidos en voz alta–y nos dimos cuenta que somos el producto y no los usuarios. De repente, nos fuimos dando cuenta que las compañías son dueñas de nuestros contenidos, que compartimos libremente toda nuestra vida online y que esa información se la envíamos a una compañía sin ningún problema, y esa compañía monetiza nuestra data.

Un Internet distribuido significa que cada persona se responsabiliza por sus datos. Que cada persona es un nodo que se conecta al resto de nodos, en lugar de todos conectarnos a un nodo central–el cual dice qué, cómo, dónde, quién si, quién no, por qué y más, es decir, define las reglas del juego.

El Internet distribuido tiene que ver con recuperar el poder o, “empoderizar” (empower) de vuelta al usuario.

¿Cómo hacemos eso?

Hay muchos proyectos que ya lo están trabajando. Como parte de un proyecto interno en Citrusbyte he tenido la oportunidad de investigar las plataformas actuales con sus protocolos/herramientas. Entre las plataformas que investigamos están:

Cada uno con un acercamiento diferente. Nosotros nos decidimos en este proyecto por IPFS. Ellos ofrecen toda la suite de herramientas para trabajar con sus protocolos (en estado alpha con alto potencial de bugs y errores, algunos de los cuales describí aquí).

¿Qué implica esto para los usuarios?

No mucho, aunque todo. Desde el lado de desarrollo hay que entender la manera en la que las nuevas estructuras se utilizan y como encuadran dentro de la arquitectura de una aplicación, y lo que se busca es que la UI no tenga cambios, es decir, que se pueda usar la Dapp (aplicación distribuida) sin ningún cambio, sin tener que aprender nada nuevo–con la diferencia que hay por atrás.

Lo que sí hay que entender es que los datos son del usuario, y que se necesita una computadora prendida y online para transmitir esos datos. De ahi que es importante para los desarrolladores ofrecer estrategias de redistribución de contenidos eficiente y sustentable (dependiendo de cada Dapp).

¿Cómo seguimos?

Sigan atentos, cuando el proyecto esté listo ya avisaré por aquí. Así podrán tener una primera interacción con estas tecnologías. Y luego, ya iré escribiendo posts de las nuevas herramientas que acompañan este tipo de proyectos.

Saludos,
Gorka

Más información:


¿Qué es AquiGorka.net?


AquiGorka.net

There is no passion to be found playing small, in settling for a life that is less than the one you are capable of living.

AquiGorka.net es mi proyecto personal. Es mi búsqueda de hacer lo que yo quiero hacer.

El proyecto tiene como meta desarrollar “software de entretenimiento” para múltiples jugadores y que se pueda “jugar/usar” en tiempo real.

Software de Entretenimiento

Aka: videojuegos. Pero quiero usar este término porque creo hay una sombra aún sobre la palabra videojuegos. No son solo juegos, tiene que ver con entretenimiento, a veces es dinámico y otras pasivo.

Múltiples jugadores

Porque es más divertido, porque el “engagement” es mayor, porque somos seres sociales.

Tiempo real

Con un catch: que se pueda definir un etilo automático para cuando no esté el jugador y que así, pueda unirse/salir de la “partida” en cualquier momento.

He definido en otros posts conceptos como MORTE (Massive Online Real-Time Experiences) y también he hablado de la importancia que eSports va a tener en el futuro.

Como parte de este proyecto personal ya he trabajado en algunos juegos (Sliding Puzzle, Multiplayer Tetris, Puppets, Let there be light, Kickoff y Kuhhandel) y la capa que los une Game Night Experiments.

Lo divertido es que hay muchas cosas por hacer aún, y que la puerta está abierta a los que se quieran sumar–quiero ir creando un equipo para sacar adelante estas ideas.

Saludos,
Gorka


Usando Jekyll en Mac


Jekyll

Alguna vez ya hablé de esto, resulta que para usar Jekyll se necesita tener instalado Ruby. Las Macs ya lo tienen por default así que debería ser fácil no? Pues no.

gem install jekyll

Me regresaba algo de Permission Denied. Puf. Entre las soluciones comunes siempre salía eso de usar un Ruby Version Manager (rvm). Me niego. Y de repente, esto: Troubleshooting jekyll: Jekyll & Mac OS X 10.11. Fiesta.

La solución implica instalar Ruby usando Hombrew (Hombrew es una fiesta en sí, luego hago un post de eso) y agregar ese ejecutable al $PATH del usuario, con eso tenemos la última versión de Ruby lista para usar y, consecuencia, se puede instalar Jekyll.

De ellos mismos:

Either of these approaches are useful because /usr/local is considered a “safe” location on systems which have SIP enabled, they avoid potential conflicts with the version of Ruby included by Apple, and it keeps Jekyll and its dependencies in a sandboxed environment. This also has the added benefit of not requiring sudo when you want to add or remove a gem.

Perfecto y sin preocupaciones.

Espero les sirva.

Saludos,
Gorka


Empezamos el 2018


Start

Empieza el año y ya hay situaciones:

Asi que bueno. A seguir supongo, que esto solo acaba de empezar.

Saludos,
Gorka

P.D. - yo también empiezo mi año, esta vez como mentor en Thinkful. A ver que tal, me gusta mucho la oportunidad: guiar a personas que están interesadas en aprender de tecnologías Web. Ya contaré como va todo.


2017 Retrospectiva


Retrospective

How can we use the lessons of the past to improve our future?

Hace casi dos años aprendí una de las prácticas de retrospectivas para agile. Me encantó, desde la primera (en la que me invitaron como oyente) me dí cuenta de lo mucho que suma a un equipo. Luego, como participante activo le saqué también jugo – ofreciendo mejoras al equipo y escuchando de las mejoras propuestas, y super valioso, escuchando de los errores cometidos.

Es una práctica que recomiendo no solo para gestionar proyectos de software sino para cualquier tipo de proyecto, para cualquier tipo de equipo (desde 2 personas hasta quien sabe cuantas más).

Una pequeña introducción para el recuento de cosas que hubo este año.

tl;dr;

2017.

Tremendo.

Muy activo.

Un gran año.

Saludos,
Gorka


Emoji Trade


🐮 🤝 💸

Alemán: kuhhandel = horse trading
Holandés: koehandel = cow trading

Hace unos años me enseñaron este juego y desde ahí me gustó mucho. Al punto que cuando ibamos a acampar o había ganas de jugar algún juego de mesa decidía dibujar a mano los elementos necesarios para jugar.

Luego lo olvidé.

Hace poco se me ocurrió que estaría divertido hacer una versión en la que se usen los teléfonos celulares como control remoto para jugar este juego (la idea de los celulares no es nueva, ya lo hice con Tetris aquí: Multiplayer Tetris).

Fueron un par de semanas divertidas, lo primero decidí hacer una versión para npm - que además resultó ser mi primer paquete publico de npm: Kuhhandel.

Paréntesis.

Para este desarrollo decidí usar lerna que es una herramienta para tener varios paquetes en un solo proyecto. Es más fácil para un proyecto así tener todo en un solo repositorio.

El tema es que para continuous delivery tienes deploy de todo, y a veces no se hicieron cambios en todos los paquetes - por suerte los buckets que reciben los mismos archivos no cambian nada, así que en realidad es solo un poco de uso absurdo de recursos sin deploy real.

Lerna vale la pena.

Fin paréntesis.

El paquete para npm tiene (como es debido) tests y build. Y es parte de una idea que tengo de hace rato de hacer la parte de lógica de juegos como paquetes para descarga, y que luego cada quien les pueda hacer la interfaz visual como quieran.

Funciona sin servidores de signaling (pero con servidores de shortening) para hacer las conexiones WebRTC entre los clientes y se juega contra una primera pantalla (que puede ser un iPad, una compu o una tele).

Para futuro agregaré otras funcionalidades:

Así que bueno, eso, ahhhhh, y el catch divertido: el juego original usa animales de granja, yo decidí cambiarlo y que use emojis

Emoji Trade
Kuhhandel @ github

Saludos,
Gorka


Pagination