La historia de una pequeña tragedia y grandes victorias de un muy buen desarrollador que necesita ayuda

En la Universidad Federal del Lejano Oriente hay un centro de actividades de proyectos, donde los maestros y estudiantes de licenciatura encuentran proyectos de ingeniería que ya tienen clientes, financiamiento y perspectivas. Allí también se llevan a cabo conferencias e intensivos. Expertos comparten conocimientos sobre temas modernos y aplicados.
Uno de los intensivos se dedicó a la aplicación del sistema de contenedorización Docker para cálculos distribuidos y orquestación. Asistieron maestros y estudiantes de posgrado en matemáticas aplicadas, ingeniería, desarrollo de software y otras áreas técnicas.
El instructor era un chico con gafas oscuras, un peinado moderno, bufanda, sociable y demasiado seguro, especialmente para un estudiante de segundo año de 21 años. Se llama Evgeny Nekrasov, ingresó a la Universidad Federal del Lejano Oriente hace apenas dos años.
Niño prodigio
«Sí, eran mayores y más prestigiosos, pero no puedo decir que fueran más experimentados. Además, a veces daba clases a mis compañeros en lugar de nuestro profesor. En algún momento nos dimos cuenta de que no podía enseñarme más sobre Programación Orientada a Objetos, así que de vez en cuando daba charlas sobre OOP, desarrollo moderno, GitHub y el uso de sistemas de control de versiones».

Evgeny puede programar en Scala, Clojure, Java, JavaScript, Python, Haskell, TypeScript, PHP, Rust, C++, C y Assembler. «Conozco mejor JavaScript, los demás son un nivel o dos inferiores. Pero puedo programar un controlador en Rust o C++ en una hora. No he aprendido estos lenguajes de forma intencionada. Los estudié para las tareas que se me asignaron. Puedo integrarme en cualquier proyecto, estudiando la documentación y los manuales. Conozco las sintaxis de los lenguajes y cuál usar no tiene mucha importancia. Lo mismo ocurre con los frameworks y bibliotecas: solo necesito leer la documentación y entiendo cómo funciona. Todo depende del ámbito y la tarea».
Evgeny ha estado estudiando programación intensivamente desde 2013. Un profesor de informática que era completamente ciego lo intrigó con las ciencias de la computación. El camino empezó con la web: HTML, JavaScript, PHP.
«Simplemente me interesa. Duermo poco, siempre estoy ocupado con algo, leyendo o estudiando».
En 2015, Evgeny solicitó participar en el concurso 'Umnik' para apoyar proyectos técnicos de jóvenes científicos mayores de dieciocho años. Pero como no tenía dieciocho, no pudo ganar el concurso, aunque la comunidad local de desarrolladores lo notó. Conoció a Sergey Milekhin, quien en ese momento organizaba conferencias en Vladivostok en el marco del Google Developer Fest. 'Él me invitó allí, fui, escuché y me gustó. Al año siguiente volví, conociendo cada vez más a la gente y conectando con ellos.'
Andrey Sitnik de la comunidad VLDC comenzó a ayudar a Evgeny con sus proyectos web. 'Necesitaba construir una aplicación multihilo para procesar WebSocket. Pensé mucho en cómo hacerlo en PHP y le pedí ayuda a Andrey. Me dijo: 'utiliza node.js, los paquetes npm que hay en Internet, y no te rompas la cabeza. Y además, mover el open source es genial.' Así que mejoré mi inglés, empecé a leer documentación y a publicar proyectos en GitHub.'
En 2018, Evgeny ya estaba dando charlas en Google Dev Fest, hablando sobre sus desarrollos en el ámbito de interfaces accesibles, prótesis de extremidades superiores, desarrollo de neurointerfaces y sistemas de control de acceso sin contacto. Actualmente, Evgeny está en su segundo año de licenciatura en 'Ingeniería de software', aunque ya la ha terminado exitosamente y está escribiendo su trabajo final.
'Me pidieron que implementara una estructura de datos en una tabla hash. Es algo estándar que le dan a todos en la universidad. Me salió 12 mil líneas de código y un montón de parches', dice Evgeny riendo, 'Construí una tabla hash y su estructura modificada en JavaScript para leer datos más rápido. Y el profesor dice: 'necesito que escribas algo más sencillo para que pueda evaluarlo.'' Fue muy frustrante.'
Mucho más interesantes son los proyectos personales de Evgeny. El primero de ellos es el desarrollo de estándares web para personas con discapacidades. Quiere crear un recurso que contenga tecnología asistiva lista para usar, para que las personas con discapacidades visuales puedan utilizarlo fácilmente, sin preocuparse de que alguna información les sea inaccesible. Evgeny conoce bien este problema porque él mismo ha perdido la vista.
Lesión
«Antes era un adolescente normal, con todas mis extremidades. En 2012, sufrí una explosión. Salí a pasear con un amigo, recogí un cilindro de la calle y explotó en mis manos. Me amputó la mano derecha, me lesionó la izquierda, dañó mi vista y redujo mi audición. Pasé seis meses en mesas de operaciones.
Me reconstruyeron la mano izquierda en partes, instalaron placas y clavos. Después de cinco meses, pude volver a usarla.
Después de la lesión, no podía ver nada. Pero los médicos lograron restaurar mi percepción de la luz. De mi ojo solo quedó la envoltura. Todo lo dentro fue reemplazado: vítreos, lentes. Todo lo que se pudo”.
En 2013, Zhenya fue a una escuela de corrección para niños con discapacidades visuales. Un profesor de informática que era completamente ciego le enseñó a usar la computadora de nuevo. Para esto se utilizan programas especiales: lectores de pantalla. Se comunican con la API de los sistemas operativos para acceder a la interfaz y cambiar un poco el modo de control.
Zhenya se considera un apasionado de Linux, utiliza Debian. Con el teclado navega por los elementos de la interfaz, y el sintetizador de voz describe lo que sucede.
«Ahora escucharás simplemente un cosmos», me dice antes de encender el programa.
Suena como un código o un idioma alienígena, pero en realidad es simplemente ruso o inglés, solo que el sintetizador habla a una velocidad increíble para un oído no entrenado.
«Aprender esto no fue difícil. Al principio trabajaba en Windows y utilizaba el programa de acceso Jaws. Pensaba, 'Dios mío, ¿cómo se puede trabajar a esa velocidad tan lenta?'. Aumenté la velocidad y entendí que mis oídos se retorcían. Regresé atrás y gradualmente empecé a aumentar un 5-10 por ciento cada semana. Aceleré el sintetizador a cien palabras, luego más, más y más. Ahora habla mil palabras por minuto».
Zhenya escribe en un editor de texto común: Gedit o Nano. Copia el código fuente de GitHub, enciende el lector de pantalla y escucha el código. Para que otros desarrolladores puedan leer y entender su trabajo sin problemas, utiliza linters y configuraciones en todas partes. Pero Zhenya no puede utilizar entornos de desarrollo, porque no están accesibles para los ciegos debido a su implementación.
«Están hechos de tal manera que su ventana es reconocida por el sistema, y todo lo que está dentro de la ventana no es visible para el lector de pantalla porque no puede acceder a ello. Ahora estoy en contacto directo con JetBrains para intentar aportar algunos parches a sus entornos. Me enviaron el código fuente de PyCharm. La IDE está implementada en IntelliJ Idea, por lo que todos los cambios se podrán aplicar allí y en otros lados».
Otro obstáculo es el incumplimiento de los estándares web generales. Por ejemplo, vemos un gran encabezado en la página. Muchos desarrolladores lo implementan utilizando la etiqueta span para ajustar la fuente al tamaño necesario, y como resultado se ve bien. Pero dado que el texto no es un encabezado para el sistema, el lector de pantalla no lo reconoce como un elemento de menú y no permite la interacción.
Zhenya utiliza fácilmente la versión móvil de «VKontakte», pero evita Facebook: «VK es conveniente para mí porque tiene una lista de menú de navegación separada. En ella, hay elementos y encabezados que representan una división semántica de la página. Por ejemplo, el encabezado de primer nivel donde se indica mi apodo — sé que ese es el título de la página. Sé que el encabezado ‘mensajes’ divide la página y a continuación está la lista de diálogos.
Facebook promulga la accesibilidad, pero en realidad es tan malo que no se puede entender nada. Lo abro — y la aplicación comienza a fallar, la página se congela horriblemente, todo salta por todas partes. Hay botones por todas partes, y yo pienso: ‘¿cómo se trabaja con esto?’ Solo lo usaré si desarrollo mi propio cliente o conecto uno de terceros».
Investigaciones
Zhenya vive en Vladivostok en un típico dormitorio universitario. El baño está en la habitación, hay dos armarios, dos camas, dos mesas, dos estantes, un refrigerador. Ningún gadget especial, pero según él — no son necesarios. ‘Tener una discapacidad visual no significa que no pueda caminar o que no encuentre el paso. Pero tal vez me gustaría equipar mi casa inteligente, si tuviera los materiales necesarios. Simplemente no tengo dinero para comprar componentes. Para un estudiante, gastar cinco mil en una placa solo para jugar con ella — no es rentable’.
Zhenya vive con su novia, ella lo ayuda mucho en las tareas domésticas: ‘untar sándwiches, servir té, lavar. Así que tengo más tiempo para descansar y dedicarme a mis pasatiempos favoritos’.
Por ejemplo, Genia tiene una banda musical donde toca la guitarra eléctrica. También aprendió a tocar después de una lesión. En 2016 pasó tres meses en un centro de rehabilitación, donde pidió ayuda a un profesor con la guitarra. Al principio, tocaba con el dobladillo de una camisa vuelta del revés. Luego, fabricó un pua.
«Tomé una férula para fortalecer la muñeca, que usan, por ejemplo, los karatecas, la corté en los lugares de separación de los dedos y la ajusté en el antebrazo. Hay una almohadilla de espuma que protege la muñeca de lesiones; a ella le cosí el pua, que mi hermano cortó de una espátula de plástico. Resultó ser una larga lengua de plástico con la que rasgueo las cuerdas, ya sea en arpegio o a ritmo».
La explosión dañó los tímpanos, por lo que Genia no escucha las frecuencias bajas. En su guitarra no hay la sexta cuerda (la más baja), y la quinta está afinada de manera diferente. Principalmente toca solos.
Pero las actividades principales siguen siendo el desarrollo y la investigación.
Prótesis de mano
Uno de los proyectos es el desarrollo de una prótesis de extremidades superiores con un sistema de control inteligente. En 2016, Genia se acercó a una persona que estaba trabajando en el desarrollo de una prótesis y comenzó a ayudarlo con las pruebas. En 2017, participaron en el hackathon 'Neurostart'. En un equipo de tres personas, Genia programaba los controladores de bajo nivel. Los otros dos diseñaban los modelos y enseñaban a las redes neuronales para el sistema de control.Ahora Genia ha asumido toda la parte de software del proyecto. Utiliza la pulsera Myo Armband para leer los potenciales musculares, construye máscaras basadas en ellos y aplica modelos de redes neuronales para el reconocimiento de gestos; sobre esto se basa el sistema de control.
«La pulsera tiene ocho sensores. Transmiten cambios en los potenciales a cualquier dispositivo de entrada. Descompuse su SDK a mano, descompilé todo lo necesario y escribí mi propia biblioteca en Python para leer los datos. Claro, los datos nunca son suficientes. Incluso si le pongo mil millones de sensores a la piel, no serán suficientes. La piel se mueve sobre los músculos y los datos se mezclan».
En el futuro, Zhenya planea implantar varios sensores bajo la piel y en los músculos. Ya lo habría intentado ahora, pero en Rusia estas operaciones están prohibidas. Si un cirujano implanta un equipo no certificado bajo la piel de una persona, perderá su título. Sin embargo, Zhenya ha cosido un sensor en su mano: una etiqueta RFID, como en las llaves electrónicas, para abrir el telefonillo o cualquier cerradura a la que esté vinculada la llave.
Ojo artificial
Junto a Bogdan Shcheglov, bioquímico y biofísico, Zhenya trabaja en el prototipo de un ojo artificial. Bogdan se encarga de la modelación 3D del globo ocular y de la conexión de todos los microchips en un modelo tridimensional con el nervio óptico, mientras que Zhenya construye el modelo matemático.
«Hemos estudiado una tonelada de literatura sobre los análogos existentes, las tecnologías que estaban en el mercado y las que hay ahora, y comprendimos que reconocer imágenes no es relevante. Sin embargo, descubrimos que se había creado previamente una matriz para registrar fotones y su energía. Decidimos desarrollar una matriz similar en un tamaño reducido que pudiera registrar al menos un conjunto mínimo de fotones y, sobre su base, construir un impulso eléctrico. Así, eliminamos la capa intermedia de imagen clara y su reconocimiento; simplemente trabajamos directamente».
Como resultado, la visión no será del todo clásica. Pero como dice Zhenya, el remanente del nervio óptico debería percibir los impulsos eléctricos de la misma manera que lo haría un ojo real. En 2018, discutieron el proyecto con el rector de la Universidad Técnica Marítima, Gleb Turishin, y la mentora de Skolkovo, Olga Velichko. Ellos confirmaron que este problema se puede resolver con las tecnologías que ya existen en el mundo.
«Pero este problema es aún más complejo que el desarrollo de prótesis. No podemos siquiera realizar experimentos en ranas para verificar la calidad con que la retina genera impulsos, cómo dependen de diferentes luces, qué parte genera más y cuál menos. Necesitamos financiamiento que nos permita alquilar un laboratorio y contratar personas para descomponer las tareas y reducir los plazos. Además, los costos de todos los materiales necesarios. Como regla general, todo se reduce a dinero.»
Burocracia
Bogdan y Zhenya se dirigieron a Skolkovo en busca de financiamiento, pero les fue negado — allí solo se aceptan productos listos con potencial comercial, y no proyectos de investigación en fase inicial.
A pesar de la singularidad en la historia de Zhenya, sus habilidades y sus inspiradores éxitos, sorprende su inusual mala suerte burocrática. Esto resulta especialmente frustrante al escuchar las noticias. Aquí hay otro «producto necesario para la gente» (una aplicación fotográfica, optimización de publicidad o nuevos tipos de chats) que obtiene sus millones de dólares en ingresos e inversiones. Mientras tanto, un entusiasta desconocido no sabe qué hacer con sus ideas.
Este año, Zhenya ganó una beca para seis meses de estudios gratuitos en Austria a través de un programa de asociación entre universidades, pero no puede ir. Para confirmar la visa, necesita garantías de que tiene dinero para vivienda y vida en Salzburgo.
«La solicitud a los fondos no dio resultados, porque el financiamiento solo se realiza para programas de diploma completos», dice Zhenya, «contactar a la Universidad de Salzburgo también es complicado — la universidad no tiene sus propios dormitorios y no puede ayudarnos con el alojamiento.
Escribí a diez fondos, y solo me respondieron tres o cuatro. Y me dijeron que mi título académico no les era adecuado — necesitan másters o superiores. Mis investigaciones en la licenciatura no son valoradas por ellos. Si estudias en una universidad local, eres un licenciado y te dedicas a investigación técnica, puedes presentar documentos dentro de la universidad. Pero para una persona del extranjero, lamentablemente, no hay tal opción.
Contacté aproximadamente al mismo número de fondos rusos. En Skolkovo me dijeron: lo siento, pero trabajamos solo con másters. En otros fondos me dijeron que no tienen financiamiento para seis meses, o bien también trabajan solo con programas de diploma, o no financian a personas físicas. Y de los fondos Prokhorov y Potanin ni siquiera recibí respuesta.
De Yandex recibí una carta diciendo que están involucrados en una gran labor benéfica y que actualmente no tienen financiamiento, pero me desean lo mejor.
Estuve incluso dispuesto a aceptar una financiación contractual dirigida que me permitiera ir a estudiar, y al final traería algo para la empresa. Pero todo se detiene en un nivel bajo de comunicación. Entiendo a qué se debe. Las personas que trabajan en llamadas telefónicas y correos electrónicos simplemente trabajan con documentos. Ven que ha llegado una solicitud, puede que incluso sea genial. Pero responden: lo siento, no, porque o bien ha expirado el plazo de la solicitud, o no cumples con el estatus. Y no tengo la posibilidad de contactar a alguien más alto, simplemente no tengo esos contactos.
Pero las publicaciones sobre el problema de Zhenya comenzaron a difundirse rápidamente en las redes sociales. En los primeros días se recaudaron alrededor de 50,000 rublos de los 12,000 euros necesarios. Hay poco tiempo para reunir los fondos, pero muchos ya están escribiendo a Zhenya expresando su apoyo. Quizás todo salga bien.
Me gustaría terminar este extenso texto sobre el regreso del héroe de Austria con una nueva y poderosa experiencia. O sobre la obtención de una subvención para uno de los proyectos, y una foto del nuevo laboratorio. Pero el texto se detuvo en la habitación de la residencia estudiantil, donde hay dos armarios, dos camas, dos mesas, dos estantes y un frigorífico.
Me parece que las grandes comunidades profesionales son necesarias para ayudarse mutuamente. Zhenya Nekrasov necesita dinero, contactos útiles, ideas, consejos, cualquier cosa. Vamos a aumentar nuestro karma.
Contactos de Zhenya y otros números importantese-mail: evgeniy@nekrasov.pw
Teléfono: +7-914-968-93-21
Telegram y WhatsApp: +7-999-057-85-48
github:
vk.com: vk.com/ravino_doul
Datos para la transferencia de fondos:
Número de tarjeta: 4276 5000 3572 4382 o al número de teléfono +7-914-968-93-21
Yandex Wallet al número de teléfono +7-914-968-93-21
Destinatario: Evgeny Nekrasov
Fuente: habr.com

