Lars Knudsen es un experto en desarrolladores de Google. Hablamos con él sobre cómo un dispositivo de USD 10 puede hacer que las computadoras sean más accesibles para las personas con discapacidades.
Monika: ¿Qué te inspiró a convertirte en desarrollador? ¿Cuál es tu enfoque profesional actual?
Leonel: Obtuve mi maestría en ingeniería, pero mi interés en la tecnología comenzó mucho antes. Cuando era niño en los 80, mi padre tenía una empresa de computación que trabajaba con diseño gráfico. A veces, especialmente durante las vacaciones de verano, me llevaba a trabajar con él. A veces, algunos de sus empleados me vigilaban. Había un tipo realmente inteligente que una vez me dijo: “Lars, necesito hacer un trabajo, pero aquí tienes un manual en C y hay una computadora allí. Así es como inicias un compilador de C. Si tienen alguna duda, pregúntenme”. Comencé a escribir textos cortos que se tradujeron a algo que la computadora podía comprender. Me pareció mágico. Tenía 11 años cuando comencé y, cerca de séptimo grado, pude crear pequeñas aplicaciones para mis compañeros de clase o para usarlas en la escuela. Así fue como empezó.
En el transcurso de los años, trabajé para muchas empresas, como Nokia, Maersk y Openwave. Al principio, como en muchas otras profesiones, porque sabes un poco, sientes que puedes hacer todo, pero con el tiempo aprendes que cada empresa tiene una determinada manera de hacer las cosas.
Después de trabajar durante algunos años para una empresa de servicios médicos, comencé mi propio negocio en 1999. Trabajé como contratista independiente y, gracias a eso, tuve la oportunidad de conocer varias organizaciones rápidamente. Después de completar los primeros cinco contratos, descubrí que todas las empresas creen que han encontrado la configuración perfecta, pero todas son completamente diferentes. En ese momento, también estuve expuesto a muchas tecnologías, sistemas operativos diferentes, etc. Cuando tenía veinte años, mi forma de pensar cambió. Al principio, me centraba estrictamente en una tecnología y quería aprender todo sobre ella. Con el tiempo, comencé a pensar en combinar tecnologías para mejorar nuestras vidas. Tengo un interés particular en reducir la brecha entre el equipo A y el equipo B en todo el mundo. Intento transferir la mayor cantidad de conocimiento posible a las regiones donde las personas no pueden permitirse el lujo de tener una computadora o estudiar en la universidad sin costo.
Sigo trabajando como contratista para socios externos, pero, siempre que sea posible, trato de elegir proyectos que tengan algún tipo de impacto positivo en el medio ambiente o la sociedad. Actualmente trabajo en software incorporado para una empresa de audífonos llamada Oticon. En cuanto al software, estuve trabajando en todos los aspectos, desde los microcontroladores más pequeños hasta la nube. mucho de lo que hago gira en torno a la Web. Intento combinar tecnologías cuando tiene sentido.
Monika: ¿Participaste en comunidades de desarrolladores antes de unirte al programa de expertos de Google Developers?
Leonel: Sí, participé de reuniones y conferencias. Me conecté con la comunidad mientras trabajaba para Nokia. Alrededor de 2010, conocí a Kenneth Rohde Christiansen, quien se convirtió en GDE antes que yo. Me inspiró para ver cómo las tecnologías web pueden ser útiles para los aspirantes a profesionales de la tecnología en los países en desarrollo. Desarrollar e implementar soluciones con C++, C# o Java requiere algunos años de experiencia, pero todos los que tengan acceso a una computadora, un navegador y un bloc de notas pueden comenzar a desarrollar aplicaciones basadas en la Web y aprender muy rápido. Es posible compilar una aplicación completamente funcional con recursos limitados y avanzar desde la nada. Por eso, yo llamo a la Web un componente tecnológico muy democratizante.
Pero volvamos a la comunidad. Después de un tiempo, me interesé en la estandarización de la Web y en los problemas que las tecnologías web de vanguardia podían resolver. Probé funciones nuevas en un navegador antes del lanzamiento. En ese momento, trabajaba para Nokia, desarrollando para un dispositivo insignia basado en Linux, la N9. El navegador que creamos está basado en WebKit y obtuve una gran experiencia en el desarrollo de funciones para un gran proyecto de código abierto. En los años posteriores a mi salida de Nokia, participé de reuniones y conferencias web, por lo que tenía sentido unirme a la comunidad de GDE en 2017.
Disfruto mucho el trabajo comunitario y todo lo que hacemos juntos, especialmente durante las Cumbres de desarrolladores de Chrome previas a la pandemia, en las que pude ayudar en el trabajo de cabina junto con un grupo increíble de ingenieros de Google y otros GDE.
Monika: ¿Qué consejo le darías a un desarrollador joven que recién está comenzando su carrera profesional y no sabe qué camino tomar?
Lars: Yo diría que por mi propia experiencia, si puedes costearlo, considera trabajar como freelancer para un par de empresas diferentes. De esta manera, estarás expuesto al código en muchas formas y etapas de desarrollo diferentes. Descubrirás muchos lenguajes y sistemas operativos, y aprenderás a resolver problemas de muchas maneras. Esto me ayudó mucho. Gané experiencia como desarrollador sénior cuando tenía veinte años. Este enfoque te ayudará a alcanzar tus objetivos profesionales más rápido.
Además de eso, diviértete, explora y juega con el hardware y el software. Considera la posibilidad de crear algo que resuelva un problema real, tal vez para tus amigos, tu familia o un negocio local. No tengas miedo de sumergirte en algo que nunca antes hayas hecho.
Monika: ¿Qué nos depara el futuro de las tecnologías web?
Leonel: Creo que, desde hace algunos años, la Web ha podido proporcionar una plataforma para aplicaciones de gran campo, tanto para consumidores como para empresas. Del lado del servidor, las tecnologías web ofrecen una experiencia fluida, especialmente para desarrolladores frontend que desean crear un componente de backend. Para ellos es más fácil comenzar ahora mismo. Conozco personas que usaban Firebase y Heroku para hacer el trabajo. Y esta tendencia crecerá: las tecnologías web serán suficientes para crear soluciones complejas de cualquier tipo. Creo que las capacidades web: Project Fugu 🐡 realmente libera ese potencial.
Si analizamos esto desde un punto de vista un poco diferente, también creo que si proporcionamos documentación completa y artículos detallados no solo en inglés, sino también en otros idiomas (por ejemplo, español y portugués), generaríamos un gran potencial en América Latina, y en otras regiones, por supuesto. Por lo general, los desarrolladores de estas ubicaciones no saben lo suficientemente inglés como para comprender en su totalidad todos los artículos relevantes. También debemos darles la oportunidad de aprender lo antes posible, incluso antes de comenzar la universidad, mientras aún están en su ciudad natal. Pueden usar esas habilidades para ayudar a las comunidades y empresas locales antes de salir de casa y quizás nunca regresen.
Thomas: Recorriste un largo camino desde el desarrollo en C en una computadora aleatoria hasta hackear hardware. ¿Cómo lo hiciste?
Leonel: Comencé a desarmar mucho hardware que tenía en casa. Mi padre no siempre era feliz cuando no podía trabajar de nuevo. Con el tiempo, aprendí a construir algunos dispositivos pequeños, pero realmente funcionó mucho después, cuando me uní a Nokia, donde adquirí mi experiencia integrada. Tuve la oportunidad de crear pequeños protectores de pantalla, componentes para los teléfonos Serie 30. Me apasionaba mucho y podía pensar de manera innovadora. Me asignaron la tarea de crear un juego de Snake para esos dispositivos. Fue una experiencia muy interesante. La principal diferencia entre compilar sistemas incorporados y la mayoría de las demás cosas (incluida la Web) es que dejas una pequeña huella, ya que no tienes mucho espacio o memoria para usar. Mientras compilaba Snake, la memoria RAM que tenía disponible era de menos de un tercio del búfer de fotogramas (alrededor de 120 x 120 píxeles). Tuve que encontrar formas de volver a unir los componentes mediante algoritmos en la pantalla para que se vean estáticos, como si fueran mosaicos. Aprendí mucho: ese fue el paso de sistemas más grandes a soluciones pequeñas e integradas.
Thomas: El conjunto de habilidades de un desarrollador de frontend típico es muy diferente del conjunto de habilidades de alguien que crea hardware incorporado. ¿Cómo alentarías a un desarrollador frontend a que analice el hardware y comience a pensar en objetos binarios?
Leonel: Creo que el primer paso es analizar algunas de las APIs de Fugu que funcionan en Chrome y Edge, y que están integradas en los sistemas principales de la actualidad. Eso es todo lo que necesitas al principio.
Otra cosa es que las cadenas de herramientas para compilar soluciones incorporadas tienen una curva de aprendizaje empinada. Si quieres compilar tu propio hardware personalizado, comienza con Arduino o ESP32, que son fáciles de comprar y bastante económicos. Con el entorno de desarrollo adecuado, puedes poner en marcha tu proyecto en muy poco tiempo.
También puedes comprar un monitor de frecuencia cardíaca o una unidad multisensor, que ya usen los servicios de Bluetooth GATT, para que no tengas que desarrollar tu propio hardware o firmware. Puedes usar lo que ya tienes y empezar a experimentar con la API de Web Bluetooth para comenzar a comunicarte con él.
También hay dispositivos que usan un protocolo en serie. Para ellos, puedes usar la API de Web Serial (también Fugu). Recientemente estuve analizando el uso de la API de WebHID, que te permite comunicarte con todos los dispositivos de interfaz humana a los que todos tienen acceso. Encontré algunas antiguas en el sótano que no habían sido compatibles con ningún sistema operativo durante años, pero gracias a la ingeniería inversa, me llevó unas horas volver a habilitarlas.
Existen diferentes enfoques dependiendo de lo que se quiera crear, pero para un desarrollador web le diría que obtenga una unidad de sensor sólido, tal vez un Thingy 52 de Nordic Semiconductor; tiene muchos sensores y puede conectarse a su aplicación web con muy poco esfuerzo.
Thomas: Conectarse con el dispositivo es el primer paso, pero, luego, hablarle de manera efectiva, eso es muy importante. ¿Por qué no te rendiste luego de enfrentar obstáculos? ¿Qué te mantuvo motivado para seguir trabajando?
Leonel: Para mí, en lo personal, el aspecto social de resolver un problema fue el más importante. Cuando comencé a trabajar en mis propios proyectos integrados, tenía la visión y el deseo de construir un laboratorio de ciencias en un paquete destinado a regiones en desarrollo. Mi esposa es de México y vi algunas de las escuelas allí; algunos que están fuera de las grandes ciudades no están muy bien, ya que no tienen acceso a los materiales y equipos que tenemos en nuestra región.
La pasión por crear algo que se pudiera usar para ayudar a otros, eso fue lo que me impulsó. También disfruté mucho el apoyo de la comunidad. Me comuniqué con algunas personas en Google, y todos me ayudaron mucho y respondieron con paciencia todas mis preguntas.
Thomas: Muchas personas tienen algún tipo de hardware en casa, pero no saben qué hacer con él. ¿Cómo encuentras inspiración para todos tus proyectos increíbles, en particular el que lleva el nombre de trabajo SimpleMouse?
Lars: Bueno, recientemente estuve restableciendo mucho hardware antiguo, pero para este proyecto en particular (aún no se ha establecido el nombre, pero llamémoslo SimpleMouse), usé mi experiencia. Trabajé con algunas soluciones de accesibilidad anteriormente y vi que algunas de ellas ya no funcionan. necesitarías tener un Windows XP anterior con determinado software instalado para ejecutarlos. No se pueden actualizar, solo se pueden usar en casa, ya que no se puede cambiar la configuración.
Por eso, me pregunté cómo combinar mis habilidades del mundo integrado con el proyecto Fugu y qué es posible en la Web para crear hardware económico y asequible, combinado con software fácil de entender en ambos lados, para que las personas puedan desarrollarse.
Para ese proyecto en particular, tomé una pequeña llave USB con un chip reflexivo, la nRF52840. Se comunica con Bluetooth en un lado y con USB en el otro. Puedes programarlo para que sea cualquier cosa en ambos lados. Y luego pensé en los dispositivos que controlan una computadora: un mouse y un teclado. Es posible que algunas personas con discapacidades tengan dificultades para operar esos dispositivos, y quería ayudarlos.
Lo primero que hice fue asegurarme de que cualquier sistema operativo viera la llave USB como un mouse. Puedes controlarlo desde una aplicación nativa o una aplicación web directamente a través de Bluetooth. Después de eso, creé una aplicación web: una plantilla simple que las personas pueden ampliar como quieren usando componentes web. Gracias a eso, todo el mundo puede controlar su computadora con una aplicación web que creé en un par de horas desde un teléfono Android.
Esta configuración permitirá que cualquier persona del mundo con experiencia en la Web pueda crear, en cuestión de días, una solución muy personalizada para cualquier persona con discapacidad que desee controlar su computadora. Lo bueno es que puedes llevarlo contigo a cualquier lugar y usarlo con otros dispositivos también. Será exactamente la misma experiencia. Para mí, la portabilidad y asequibilidad del dispositivo son muy importantes porque las personas ya no están limitadas a usar sus propios dispositivos, ni a una sola ubicación.
Thomas: ¿Tuviste la oportunidad de probar el dispositivo en la vida real?
Leonel: En mi último viaje a México, hablé sobre ello con un profesional de la Web que vive allí. Ahora está analizando las posibilidades de usar el dispositivo de forma local. Allí, el equipo es muy caro, pero una llave USB normalmente cuesta alrededor de diez dólares. Ahora está comprobando si podemos crear configuraciones locales allí para probarlos. Pero aún no he hecho pruebas oficiales aquí en Dinamarca.
Thomas: Muchos dispositivos diseñados para ayudar a las personas con discapacidades son muy costosos. ¿Planeas cooperar con alguna empresa en particular y ponerla en producción por una fracción del precio de ese equipo costoso?
Leonel: Sí, claro. Ya estuve hablando con un fabricante de hardware local sobre ese tema. Por supuesto, el dispositivo no reemplazará todas esas soluciones altamente especializadas, pero puede ser el primer paso para crear algo más grande, por ejemplo, mediante el reconocimiento de voz, que ya está disponible para las tecnologías web. Será una forma sencilla de controlar dispositivos con tu teléfono Android. puede funcionar con cualquier tipo de dispositivo.
El solo hecho de poder compilar lo que desees en la Web y usarlo para controlar cualquier computadora host abre muchas posibilidades.
Thomas: ¿Lanzarás tu proyecto Zephyr como código abierto? ¿Qué tipo de licencia usas? ¿Hay planes para monetizar el proyecto?
Leonel: Sí, la solución es de código abierto. No le puse una licencia específica, pero creo que Apache 2.0 es la mejor opción. Muchas empresas importantes utilizan esta licencia, incluida Google. Cuando trabajaba con SimpleMouse, no pensaba en monetizar el proyecto, ya que ese no era mi objetivo. Pero también creo que tendría sentido intentar ponerlo en producción de alguna manera, y con esto viene el costo. El objetivo final es que esté disponible. Me encantaría que se implementara a bajo costo y a gran escala.