El pasado 9 de noviembre del 2019 se realizó el Boyaconf, una conferencia de tecnología realizada en la ciudad de Duitama, Colombia. Fue una de las mejores conferencias que he participado y tiene un especial recuerdo para mí por ser la última conferencia siendo parte de Mozilla Techspeakers y antes de la pandemia global que tuvimos. Ademas que me enteré que iba a ser ponente muchos meses antes y pues esperaba con ansias que se hiciera.

Breve resumen del Boyaconf 2019

El evento constaba de un solo día con una variedad de charlas tanto nivel básico como avanzado. Ademas, los temas eran diversos así que había contenido para aprender sin importar que rama de la informática te gusta.

La calidad de los ponentes era chévere, con presencia de varios países de latinoamérica. El evento estuvo animado por Karolina Landino quien hizo un excelente trabajo presentando a los ponentes y animando a la audiencia entre charlas. Posteriormente, Jahir Fiquitiva nos dio una introducción/bienvenida al evento y los detalles como organizador.

Las charlas estuvieron excelente, se habló sobre Android, Javacript, complejidad computacional, Inteligencia Artificial, escalar sistemas para alta demanda, realidad virtual (excelente ponencia de Fabio Cortés), micro-servicios y mas. El hecho de tener contenido variado logró captar la atención de toda la audiencia y ser entretenida a lo largo del día.

Luego del evento procedimos a tomarnos fotos, recibir swag de los patrocinadores y compartir un rato entre ponentes y asistentes. Tuve la oportunidad de ver a varios de mis ex-alumnos de la universidad, pero ya egresados como colegas de la ingeniería.

¡Finalmente el evento cerró con un after-party excelente! Pero los detalles quedan ajenos al artículo 😄. Para mi fue excelente porque venía de estar casi un mes viajando por todo el mundo dando charlas y podía cerrar con broche de oro.

Mi charla sobre WebAssembly

Mi charla fue una introducción a WebAssembly con nueva incorporaciones de demostraciones y contenido para la fecha del evento. La charla era una de la versión en español de la dictada en BrazilJS 2019 y por esta misma razón quedo muy corta. Me di cuenta que cuando la dí en inglés tuvo una duración de 25 minutos, mientras que en el Boyaconf fue de 20 minutos porque mi español es rápido y tenía mas dominio del tema.

Recuerdo que hubo excelentes preguntas y el público estaba interesado. Había una cantidad notable de gente de mi ciudad natal (San Cristóbal, Venezuela), por lo que al nombrar de donde era ellos hicieron bulla para darse a conocer (no me ha pasado en ningún otro evento).

Luego de mi charla pude interactuar con mucho público. De todos los eventos que he participado en Colombia, los del Boyaconf 2019 fueron los asistentes como que mas pude interactuar, hablar y tomar fotos.

Fue una excelente experiencia, ojalá se repita y pueda volver a asistir. Al parecer los organizadores están buscando como hacer una conferencia similar para el próximo año, así que entra en contacto con ellos y trata de brindar tu ayuda para que se haga realidad.

La entrada Mi experiencia en el Boyaconf 2019 se publicó primero en El blog de Skatox.

Hace unas semanas tuve la oportunidad de participar en una edición de FullStapps. Una comunidad para hacer crecer a desarrolladores brindando contenido de alta calidad. En ese episodio fui entrevistado por el Ing. Henry Bravo para hablar principalmente de 3 temas:

  • WebAssembly: breve introducción sobre esta gran tecnología que nos permite ejecutar aplicaciones de alto rendimiento en la web; qué es eso y para que sirve en tus aplicaciones.
  • ¿PHP ha muerto? Comento sobre cómo el lenguaje esta muy vivo, es usado ampliamente y tiene gran oferta laboral. Desmiento algunos mitos y por qué puedes aprender este lenguaje en el 2001.
  • ¿Universidad? Mi opinión sobre si debes estudiar una carrera de Ingeniería de la computación, informática o sistemas.

También comento de otros temas y un poco de mí. Por lo que te invito a escuchar o ver el episodio.

Episodio de Fullstapps

Así que si la quieres ver, a continuación puedes ver el episodio de Fullstapps donde tuve la oportunidad de participar y compartir conocimientos. Fue una excelente experiencia y la entrevista la sentí diferente a las démas. El hecho de hablar sobre varios temas me gustó.

Si les gustó no duden en compartirlo en redes sociales y suscribirse a FullStapps para que crezcan como desarrolladores. Si tienes algún comentario que añadir, expresar un desacuerdo o solicitar mas información, no dejes de comentar al final de la entrada.

La entrada Mi participación en Fullstapps se publicó primero en El blog de Skatox.

El pasado noviembre del 2020 tuve la oportunidad de participar en el JSConf México para dar una breve charla titulada: ¿Por qué WebAssembly? En ella comento las razones de su existencia, cómo viene ayudar a Javascript a solucionar los problemas que ese lenguaje no permite hacer (o al menos de forma óptima).

Estaba muy emocionado por participar en este evento por muchas razones. Principalmente era volver a México luego de muchos años y compartir con la gente de allá. Pasar unos días allá, pero debido al COVID-19 se tuvo que retrasar y posteriormente hacerla virtual.

¿Por qué WebAssembly?

Esta charla es una variación de las anteriores que he dado, porque ya WebAssembly es usado cada día y no es tecnología del futuro, sino del presente. Ya hoy en día puedes usarlas sin problemas y entonces cambio el enfoque de la charla a por qué usarla.

En fin, si deseas verla totalmente en español puedes hacerlo a continuación. Una vez finalizada, me gustaría conocer tus opiniones, dudas o recomendaciones respecto al tema.

Why WebAssembly?

Me pareció muy chévere como el audio mi charla fue traducida a inglés. Agradezco al equipo de JSConf México 2020 por realizar esa labor. Gracias a ello, mi mensaje puede llegar a más personas y puedan aprender sobre ésta tecnología. Si prefieres escuchar el audio en inglés, a continuación te comparto esa versión del video.

Fue una gran experiencia participar en mi 2do JSConf, lamentablemente tuvo que ser virtual. Hubiese querido estar allá y regresar a México luego de muchos años (me encanta la comida mexicana real). Compartir tiempo con varios amigos de México como Yuliana y Luis Sanchez y disfrutar de la hermosa cultura del país.

Recuerda compartir este artículo si te gusta o deja tu comentario si deseas preguntar o complementar la información.

La entrada ¿Por qué WebAssembly? Mi charla del JSConf México 2020 se publicó primero en El blog de Skatox.

El pasado 29 de Junio tuve la oportunidad de ser parte de los ponentes del JConf Dominicana. Un evento realizado por la comunidad local de Java en la PUCCM. El evento estuvo formado por ponentes de distintas partes del mundo para comentar sobre las últimas tendencias en la JVM.

La estructura del evento me gustó porque en la mañana se hicieron las principales ponencias por parte de los conferencistas mas importantes en el teatro de la universidad. En la tarde, se hacían el resto de presentaciones en aulas de clase donde los asistentes podían escoger a cuales ir. Me gustó la organización porque estos temas tenían diferente dificultad y áreas, así que podías asistir a las charlas de tu perfil profesional sin problemas de choque.

Sesión matutina

Para llegar a Dominicana tuve que tomar varios vuelos con horarios incómodos. Por esta razón, tuve que dormir el día antes del evento y me levanté un poco tarde. Me perdí la apertura y la primera charla. Pero pude entrar al final de la de Sebastían Daschner sobre los mejores frameworks empresariales de JAVA. Posteriormente fui a la de Mark Heckler sobre plataformas escalables con spring. Excelente ponencia con buenos chistes en español. Finalmente se hizo un panel de conferencistas para discutir los temas actuales de la plataforma Java y del futuro de la misma. Excelente opiniones y temas tratados allí.

Sesión de la tarde

La primera conferencia que entre fue la de Eliezer Herrera sobre plataformas como Graal, Gradle y Vertx que permiten la ejecución de otros lenguajes en la JVM. Muy interesante y no conocía que se podían hacer ese tipo de cosas. De ahí fui a la charla de Carlos Paulino sobre desarrollo continuo para plataformas Android. Me llamó la atención porque trabaja en American Express y quería conocer como es el proceso de desarrollo de una aplicación móvil en ese tipo de empresas. Me llamó al atención el cuidado hacia la calidad y cómo las pruebas se realizan en distintas plataformas.

Luego de un receso para unas golosinas, comenzó la charla de Omar Berroterán Silva sobre GraphQL. La tecnología para obtener fácilmente datos a través de una API. Esta ponencia abarcó desde la introducción hasta dar ejemplos de como consultar datos, instalar esta herramienta, entre otros. Me gustó como Omar utilizó códigos QR en sus láminas para que los asistentes pudiésemos ver los ejemplos en el móvil y participar en la charla.

Java de nuevo a la web con WebAssembly

Mi charla en este evento la estaba dando por primera vez. Aunque había hablado de WebAssembly, nunca la había mezclado con Java. En ella pude hablar sobre una pequeña introducción a esta plataforma. Las diferencias respecto a los Applets de Java (pues tiende a confundir inicialmente a los programadores de Java). Por qué no iba a tener el mismo destino que los applets.

En el caso de Java, esta charla me gustó darla porque existen actualmente varias formas de llevar el lenguaje. Cada una trabaja de forma distinta y pude mostrar las bondades de cada forma.

La presencia fue excelente, hicieron preguntas muy interesantes y de ahí salí al cierre del evento con música dominicana.

Cena del JConf Dominicana

La cena fue excelente, tuve la oportunidad de compartir con otros ponentes. Conocí mas de la cultura Dominicana. Pude probar sus excelentes platos típicos como el mangú y mofongo. Disfrutar de un buen ambiente caribeño y discutir de tecnología.

Fue una gran experiencia participar en el JConf Dominicana. A pesar de estar solo 2 días en el evento. Me llamó la atención como la mayoría de los ponentes internacionales hablaba español. Los temas fueron muy interesantes. Los organizadores hicieron un excelente trabajo.

¡Lo disfruté mucho! Espero volver algún día.

La entrada Mi experiencia en el JConf Dominicana se publicó primero en El blog de Skatox.

Esta es una traducción del artículo original publicado en el blog de Mozilla Hacks. Traducción por juliabis.

Flash hizo llegar vídeo, animación, sitios interactivos y, sí, anuncios a miles de millones de usuarios durante más de una década, pero ahora se se está marchando. Adobe dejará de soportar Flash para el año 2020. Firefox ya no lo soporta “fuera de la caja”, y Chrome tampoco. ¿Qué es lo siguiente? Hay toneladas de estándares abiertos que pueden hacer lo que Flash hace, y aun más.

Multimedia verdaderamente abierta

Flash prometió ofrecer una plataforma unificadora para construir y distribuir sitios web multimedia interactivos. Y, en su mayor parte, lo hizo. Pero la tecnología nunca fue realmente abierta y accesible, y Flash Player era demasiado voraz para los recursos de los dispositivos móviles. Ahora las alternativas de código abierto pueden hacer todo lo que Flash hace, y más. Éstas son las tecnologías que debes aprender si realmente quieres construir la web interactiva de mañana, ya sea que se haciendo animaciones web, juegos o vídeos.

Animación web

CSS

La animación CSS es relativamente nueva, pero es la forma más fácil de comenzar con la animación web. CSS está hecho para diseñar sitios web con reglas básicas que dictan diseño, tipografía, colores y más. Con el lanzamiento de CSS3, las animaciones ahora son parte del estándar, y como desarrollador, depende de ti indicarle al navegador cómo debe hacer la animación. CSS es legible por humanos, lo que significa que básicamente hace lo que dice el comando. Por ejemplo, la propiedad “animation-direction” hace exactamente eso: especifica la dirección de la animación.

Ahora mismo puedes crear animaciones sin problemas con CSS. Es simple crear keyframes (cuadros clave), ajustar el tiempo, animar la opacidad y más. Y todas las animaciones funcionan con cualquier objeto que haz diseñado normalmente con CSS: texto, imágenes, contenedores, etc.

Se pueden hacer animaciones con CSS, incluso no estando familiarizado con los lenguajes de programación. Al igual que muchos proyectos de código abierto, el código está disponible en la web para que juegues con él. Mozilla también ha creado (y mantiene) exhaustiva documentación sobre animación CSS. La mayoría de los desarrolladores recomiendan usar animación CSS para proyectos simples y JavaScript para sitios más complejos.

JavaScript

Los desarrolladores han estado animando con JavaScript desde los primeros días. Scripts básicos de mouseover (eventos de puntero) han existido por más de dos décadas. Hoy, JavaScript junto con elementos <canvas> de HTML5 pueden hacer cosas sorprendentes. Incluso scripts sencillos pueden producir grandes resultados. Con JavaScript, puedes dibujar figuras, cambiar colores, mover y cambiar imágenes, y animar transparencia. La animación JavaScript usa el formato SVG (gráficos de vector escalables) para las animaciones, lo cual significa que el arte se dibuja en vivo basado en reglas matemáticas en vez de ser cargada y pintada. Esto significa que se mantiene bien definido en cualquier escala (a esto se debe el nombre) y puede ser controlado completamente. SVG ofrece pintado sin aliasing, rellenos de patrón y gradientes, efectos de filtro sofisticados, recorte basado en líneas arbitrarias, texto y animaciones. Y, por supuesto, es una recomendación de estándar abierto de la W3c en vez de un binario cerrado. Utilizando SVG, JavaScript, y CSS3, los desarrolladores pueden crear animaciones interactivas impresionantes que no requieren formatos o reproductores especializados.

La animación JavaScript puede ser muy refinada, incluyendo rebotes, detención, pausa, rebobinación, or cambio de velocidad. También es interactiva y puede ser programada para responder a clicks o movimientos del puntero. La nueva API Web Animations, construida con JavaScript, te permite refinar animaciones con más control sobre los keyframes y elementos, pero todavía está en una fase experimental temprana y algunas características pueden no tener soporte en todos los navegadores.

Adicionalmente, las animaciones JavaScript pueden ser programadas para responder a campos de formulario, envío de formularios, y pulsaciones de teclas. Y eso lo hace perfecto para la creación de juegos web.

Juegos web

Por un tiempo, Flash dominaba los juegos web. Era fácil de aprender, usar y distribuir. También era robusto, capaz de ofrecer juegos masivos multijugador en línea a millones. Pero hoy es posible ofrecer la misma experiencia – si no incluso mejor – utilizando JavaScript, HTML5, WebGL y WebAssembly. Con los navegadores modernos y los marcos (frameworks) de código abierto, es posible crear juegos de disparos en 3D, juegos de rol (RPG), juegos de aventura y mucho más. De hecho, ahora incluso se pueden crear experiencias de realidad virtual totalmente inmersivas para la web con tecnologías como WebVR y A-Frame.

Los juegos web dependen de un ecosistema de frameworks y plataformas de código abierto para funcionar. Cada uno juega un papel importante: de visuales hasta controles, desde el audio a las redes. Mozilla Developer Network tiene una lista completa de las tecnologías que están actualmente en uso. Estas son solo algunas de ellas y para qué se usan:

WebGL

Permite crear gráficos 3D (y 2D) acelerados por hardware y de alto rendimiento a partir del contenido web. Esta es una implementación soportada por la web de OpenGL ES 2.0. WebGL 2 va incluso más allá, posibilitando el nivel de soporte de OpenGL ES 3.0 en los navegadores.

JavaScript

JavaScript, el lenguaje de programación de la Web, funciona bien en los navegadores y continuamente se está haciendo cada vez más rápido. Se ha usado ya para crear miles de juegos, y constantemente se están desarrollando nuevos frameworks.

Audio HTML

El elemento <audio> permite reproducir fácilmente efectos de sonido simples y música. Si lo que necesitas es más complicado, ¡consulta la API de Web Audio para conocer el procesamiento de audio real!

API Web Audio

Esta API diseñada para controlar la reproducción, síntesis y manipulación de audio a partir de código JavaScript, permite crear efectos de sonido impresionantes, tanto como reproducir y manipular música en tiempo real.

WebSockets

La API de WebSockets te permite conectar tu aplicación o sitio a un servidor para transmitir datos en tiempo real. Lo que la hace perfecta para juegos multijugador, ya sean basados ​​en turnos o en eventos, servicios de chat y más.

WebRTC

WebRTC es una API ultrarrápida que puede ser utilizada en video-chat, llamadas de voz y aplicaciones web para compartir archivos en modo P2P. Se puede usar también para juegos multijugador en tiempo real que requieran baja latencia.

WebAssembly

Los motores de juego HTML5/JavaScript son ahora mejores que nunca, pero aún así todavía no pueden igualar el rendimiento de las aplicaciones nativas. WebAssembly promete ofrecer un rendimiento casi nativo a las aplicaciones web. La tecnología permite a los navegadores ejecutar código compilado C/C++, incluyendo a juegos creados con motores como Unity y Unreal.

Con WebAssembly, los juegos web podrán aprovechar la ejecución multihilo (multithreading). Los desarrolladores podrán producir juegos 3D avanzados para la web que se ejecuten casi a la misma velocidad que el código nativo, y sin comprometer la seguridad. Es un enorme avance para los juegos, y para la web abierta. Significa que los desarrolladores podrán construir juegos para cualquier computadora o sistema que pueda acceder a la web. Y debido a que se ejecutarán en navegadores, será fácil integrar los modos multijugador en línea.

Además, hay muchos motores de juegos HTML5/JavaScript. Estos motores se encargan de los aspectos básicos, tales como física y controles, y les brindan a los desarrolladores un marco / mundo sobre el que construir. Van desde ligeros y rápidos, como los motores 2D Atom y Quick, hasta motores 3D completos como WhitestormJS y Gladius. Hay docenas para elegir, cada uno con sus propias ventajas y desventajas para los desarrolladores. Pero al final, todos ellos producen juegos que se pueden jugar en navegadores web modernos sin plug-ins. Y la mayoría de esos juegos pueden ejecutarse en un hardware no tan potente, lo que significa que puede llegar a más usuarios. De hecho, los juegos escritos para la web pueden ejecutarse en tabletas, teléfonos inteligentes e incluso televisores inteligentes.

MDN tiene una amplia documentación sobre construcción de juegos web y varios tutoriales sobre construcción de juegos utilizando JavaScript puro y el framework de juego Phaser. Es un excelente lugar para comenzar el desarrollo de juegos web.

Vídeo

La mayoría de los servicios de vídeo ya han cambiado a la transmisión basada en HTML5 utilizando tecnologías web y codecs abiertos; pero otros se han apegado a los codecs FLV o FV4 basados ​​en Flash. Como se dijo anteriormente, los formatos de vídeo Flash se basan en una forma de operar a través del software que puede recargar los recursos de los navegadores web y las plataformas móviles. Los codecs de video modernos pueden usar el procesamiento de hardware para la reproducción de vídeo, aumentando enormemente la capacidad de respuesta y la eficiencia. Lamentablemente, solo hay una forma de cambiar de Flash a HTML5: volviendo a codificar el vídeo. Eso significa convertir el material de origen en formatos compatibles con HTML5 a través de un convertidor gratuito como FFmpeg y Handbrake.

Mozilla está ayudando activamente a construir y mejorar el formato de vídeo HTML5 de código abierto WebM. Este desarrollo se basa en el contenedor Matroska y utiliza los codecs de video VP8 y VP9 y los codecs Vorbis u Opus.

Una vez que el contenido se haya convertido a un formato compatible con HTML5, se podrán volver a publicar los vídeos. HTML5 tiene controles de medios incorporados, por lo que no es necesario instalar ningún reproductor. Es extremadamente fácil; sólo es necesario usar una sola línea de HTML:

<video src="videofile.webm" controls></video>

Es preciso tener en cuenta que los controles nativos pueden ser inconsistentes entre los navegadores. Sin embargo, como están hechos con HTML5, es posible personalizarlos con CSS y vincularlos a su vídeo con JavaScript. Eso significa que puede crear accesibilidad, agregar tu marca y mantener el aspecto y la coherencia entre los navegadores.

HTML5 también puede manejar transmisión (streaming) adaptable, mediante Media Source Extensions (MSEs). Aunque pueden ser difíciles de configurar por sí solos, puedes usar reproductores preempaquetados como Shaka Player y JW Player, los cuales pueden manejar los detalles.

Los desarrolladores de MDN han creado una guía en profundidad sobre como convertir vídeo Flash a vídeo HTML5, que da muchos más detalles acerca de este proceso. Afortunadamente, no es tan difícil como parece.

Flash: lo que viene

El futuro de la web está abierto (eso esperamos) y Flash, a pesar de ser una gran herramienta para la creatividad, no ha sido lo suficientemente abierto. Afortunadamente, muchas herramientas de código abierto pueden hacer lo que Flash hace, y aun más. Pero estamos todavía en las primeras etapas, y la creación de animaciones, sitios web interactivos y juegos web requiere cierto conocimiento de codificación. Todo lo que necesitas saber ya está ahí, sólo esperando que lo aprendas.

Las tecnologías web abiertas prometen ser mejores de lo Flash ha sido, y serán accesibles para toda persona que tenga una conexión a Internet.