Cómo es escuchar código a 1000 palabras por minuto

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

Cómo es escuchar código a 1000 palabras por minuto

En la Universidad Federal del Lejano Oriente hay un centro de actividades de proyectos: allí los estudiantes de maestría y licenciatura encuentran proyectos de ingeniería que ya cuentan con clientes, dinero y perspectivas. Allí también se imparten conferencias y cursos intensivos. Especialistas experimentados hablan de cosas modernas y aplicadas.

Uno de los cursos intensivos se dedicó al uso del sistema de contenedorización Docker para computación distribuida y orquestación. Asistieron estudiantes de maestría y posgrado de matemáticas aplicadas, ingeniería, preparación de software y otras áreas técnicas.

El profesor era un chico con gafas oscuras, un corte de pelo a la moda, un pañuelo, sociable y demasiado seguro de sí mismo, especialmente para un estudiante de segundo año de 21 años. Su nombre es Evgeny Nekrasov, ingresó a la FEFU hace apenas dos años.

Niño prodigio

“Sí, eran mayores y tenían más estatus, pero no puedo decir que tuvieran más experiencia. Además, a veces daba conferencias a mis compañeros para nuestro profesor. En algún momento, nos dimos cuenta de que no podía darme nada más sobre programación orientada a objetos, así que de vez en cuando le daba conferencias sobre programación orientada a objetos, desarrollo moderno, GitHub y el uso de sistemas de control de versiones”.

Cómo es escuchar código a 1000 palabras por minuto

Evgeniy puede escribir en Scala, Clojure, Java, JavaScript, Python, Haskell, TypeScript, PHP, Rust, C++, C y Assembler. “Conozco mejor JavaScript, el resto está uno o dos niveles por debajo. Pero al mismo tiempo, puedo programar un controlador en Rust o C++ en una hora. No estudié estos idiomas a propósito. Los estudié para las tareas que me fueron asignadas. Puedo incorporarme a cualquier proyecto estudiando la documentación y manuales. Conozco las sintaxis de los idiomas y realmente no importa cuál usar. Lo mismo ocurre con los marcos y las bibliotecas: simplemente lea la documentación y entenderé cómo funciona. Todo está determinado por el tema y la tarea”.

Evgeniy ha estado estudiando programación intensamente desde 2013. Un profesor de informática de secundaria que era completamente ciego hizo que se interesara por la informática. El camino comenzó con la web: HTML, JavaScript, PHP.

"Tengo curiosidad. No duermo mucho, estoy constantemente ocupado con algo, leyendo algo, estudiando algo”.

En 2015, Evgeniy se presentó al concurso "Umnik" para apoyar proyectos técnicos de jóvenes científicos mayores de dieciocho años. Pero no tenía dieciocho años, por lo que no pudo ganar el concurso, pero la comunidad de desarrolladores local notó a Evgeniy. Conoció a Sergei Milekhin, que en ese momento estaba organizando conferencias en Vladivostok en el marco del Google Developer Fest. “Me invitó, vine, escuché, me gustó. Al año siguiente volví, conocí cada vez más gente y me comuniqué”.

Andrey Sitnik de la comunidad VLDC comenzó a ayudar a Evgeniy con sus proyectos web. “Necesitaba crear una aplicación de socket web multiproceso. Pensé durante mucho tiempo en cómo hacer esto en PHP y recurrí a Andrey. Me dijo: “toma node.js, paquetes npm que están en Internet, y no te rompas la cabeza. Y, en general, trasladar el código abierto es genial”. Así que mejoré mi inglés, comencé a leer documentación y a publicar proyectos en GitHub”.

En 2018, Evgeniy ya hizo presentaciones en Google Dev Fest, hablando sobre desarrollos en el campo de las interfaces accesibles, prótesis de miembros superiores, el desarrollo de interfaces neuronales y sistemas de control de acceso sin contacto. Ahora Evgeniy está en su segundo año de licenciatura en Ingeniería de Software, pero ya lo completó con éxito y está terminando su trabajo final.

“Me dijeron que implementara la estructura de datos en una tabla hash. Esto es algo estándar que se les da a todos en la universidad. Terminé con 12 mil líneas de código y un montón de muletas”, dice Evgeniy riendo, “construí una tabla hash y su estructura modificada en JavaScript para leer datos más rápido. Y la profesora dice: “Necesito que escribas lo que me resulte más fácil para poder evaluarlo”. Fue muy molesto".

Los proyectos personales de Evgeniy parecen mucho más interesantes. El primero de ellos es el desarrollo de estándares web para personas con discapacidad física. Quiere crear un recurso que proporcione tecnología de asistencia lista para usar para que las personas con discapacidad visual puedan usarla fácilmente sin preocuparse de perderse información. Evgeniy conoce bien este problema porque él mismo perdió la vista.

Lesión

“Yo era un adolescente normal y corriente, con todos mis miembros en su lugar. En 2012 me hice estallar. Salí a caminar con un amigo, recogí un cilindro en la calle y me explotó en las manos. Me arrancaron la mano derecha, la izquierda quedó lisiada, mi visión quedó dañada y mi audición quedó dañada. Durante seis meses estuve simplemente en la mesa de operaciones.

La mano izquierda se ensambló en partes, se instalaron placas y agujas de tejer. Después de cinco meses pude trabajar para ella.

Después de la lesión no pude ver nada en absoluto. Pero los médicos lograron restablecer la percepción de la luz. No quedaba nada de mi ojo excepto el caparazón. Todo el interior fue reemplazado: los cuerpos vítreos, las lentes. Todo es posible."

En 2013, Zhenya fue a estudiar a una escuela correccional para niños con discapacidad visual. Aquel profesor de informática, que era completamente ciego, le volvió a enseñar a utilizar un ordenador. Para ello, se utilizan programas especiales: lectores de pantalla. Accede a las API del sistema operativo para obtener acceso a la interfaz y cambiar ligeramente la forma en que se controlan.

Zhenya se autodenomina un ávido usuario de Linux; usa Debian. Utilizando el teclado, navega por los elementos de la interfaz y un sintetizador de voz expresa lo que está sucediendo.

“Ahora escucharás solo el espacio”, me dice antes de encender el programa.

Suena como un código o una charla extraterrestre, pero en realidad es ruso o inglés común y corriente, solo que el sintetizador habla a una velocidad increíble para el oído inexperto.

“No fue difícil aprender esto. Al principio trabajé en Windows y usé el lector de pantalla Jaws. Lo usé y pensé: "Señor, ¿cómo puedes trabajar a una velocidad tan lenta?". Me acerqué y me di cuenta de que las orejas estaban curvadas formando un tubo. Lo devolví y gradualmente comencé a aumentarlo entre un 5 y un 10 por ciento cada semana. Aceleré el sintetizador a cien palabras, luego incluso más, y una y otra vez. Ahora habla mil palabras por minuto”.

Zhenya escribe en un editor de texto normal: Gedit o Nano. Copia fuentes de Github, inicia el lector de pantalla y escucha el código. Para garantizar que otros desarrolladores puedan leerlo y comprenderlo fácilmente, utiliza linters y configuraciones en todas partes. Pero Zhenya no puede utilizar entornos de desarrollo porque, debido a su implementación, son inaccesibles para los ciegos.

“Están hechos de tal manera que su ventana está determinada por el sistema, y ​​el lector de pantalla no ve todo lo que hay dentro de la ventana porque no puede acceder a él. Ahora me comuniqué directamente con JetBrains para intentar realizar algunos parches en sus entornos. Me enviaron las fuentes de PyCharm. El IDE se implementa en Intellij Idea, por lo que todos los cambios se pueden aplicar tanto allí como allí”.

Otra barrera es la falta de cumplimiento de los estándares web comunes. Por ejemplo, vemos un título grande en una página. Muchos desarrolladores implementan esto usando una etiqueta span para ajustar la fuente al tamaño deseado y termina luciendo bien. Pero como el texto no es un título para el sistema, el lector de pantalla no lo reconoce como un elemento del menú y no permite la interacción.

Zhenya usa fácilmente la versión móvil de VKontakte, pero evita Facebook: “VK me resulta conveniente porque tiene una lista separada de menús de navegación. Tiene elementos y encabezados que para mí son la división semántica de la página. Por ejemplo, el encabezado del primer nivel donde se indica mi apodo: sé que este es el título de la página. Sé que el encabezado "mensajes" divide la página y debajo hay una lista de diálogos.

Facebook promueve la accesibilidad, pero en realidad todo es tan malo que es imposible entender nada. Lo abro y el programa comienza a congelarse, la página es terriblemente lenta, todo salta para mí. Hay todos los botones por todas partes y me pregunto: "¿Cómo puedo trabajar con esto?". Solo lo usaré si termino mi cliente o conecto a un tercero”.

Estudios

Zhenya vive en Vladivostok, en una residencia universitaria normal y corriente. La habitación tiene un baño, dos armarios, dos camas, dos mesas, dos estanterías, un frigorífico. No hay aparatos especiales, pero según él, no son necesarios. “La discapacidad visual no significa que no podré caminar o que no encontraré el camino. Pero podría y felizmente podría equiparme con una casa inteligente si tuviera los consumibles. Simplemente no tengo dinero para comprar componentes. Que un estudiante gaste cinco mil en matrículas sólo para husmear no es muy rentable”.

Zhenya vive con una niña y ayuda de muchas maneras en la casa: “prepara sándwiches, sirve té, lava la ropa. Por lo tanto, tuve más tiempo para relajarme y hacer las cosas que amo”.

Por ejemplo, Zhenya tiene un grupo musical en el que toca la guitarra eléctrica. También aprendió tras la lesión. En 2016 pasó tres meses en un centro de rehabilitación, donde le pidió a un profesor que le ayudara con su guitarra. Al principio jugué con la costura de una camiseta al revés. Luego construí un mediador.

“Tomé una venda para fortalecer la mano, que usan, por ejemplo, los karatekas, la abrí en los lugares donde se separan los dedos y la puse en el antebrazo. Allí hay una almohadilla de espuma que protege el cepillo de daños; le cosí un pico que mi hermano cortó para mí con una espátula de plástico. Resultó ser una lengua de plástico muy larga, que uso para tocar las cuerdas, puntear y rasguear”.

La explosión le arrancó los tímpanos, por lo que Zhenya no puede oír las frecuencias bajas. Su guitarra no tiene la sexta cuerda (la más baja) y la quinta está afinada de manera diferente. Toca principalmente papeles solistas.

Pero las principales actividades siguen siendo el desarrollo y la investigación.

mano protésica

Cómo es escuchar código a 1000 palabras por minuto

Uno de los proyectos es el desarrollo de una prótesis de miembro superior con un sistema de control inteligente. En 2016, Zhenya se acercó a la persona que estaba desarrollando la prótesis y comenzó a ayudarlo con las pruebas. En 2017 participaron en el hackathon Neurostart. En un equipo de tres personas, Zhenya programó controladores de bajo nivel. Otros dos construyeron los modelos ellos mismos y enseñaron redes neuronales para el sistema de control.

Ahora Zhenya se ha hecho cargo de toda la parte de software del proyecto. Utiliza Myo Armband para leer los potenciales musculares, construye máscaras basadas en ellos y aplica modelos de redes neuronales en la parte superior para reconocer gestos: en esto se basa el sistema de control.

“La pulsera tiene ocho sensores. Transmiten cambios potenciales a cualquier dispositivo de entrada. Destruí su SDK con mis propias manos, descompilé todo lo que necesitaba y escribí mi propia biblioteca en Python para leer datos. Por supuesto, no hay suficientes datos. Incluso si me pusiera mil millones de sensores en la piel, no sería suficiente. La piel se mueve sobre los músculos y los datos se confunden”.

En el futuro, Zhenya planea instalar varios sensores debajo de la piel y los músculos. Lo intentaría ahora, pero este tipo de operaciones están prohibidas en Rusia. Si un cirujano implanta equipo no certificado debajo de la piel de una persona, perderá su diploma. Sin embargo, Zhenya cosió un sensor en su mano: una etiqueta RFID, como en las llaves electrónicas, para abrir un intercomunicador o cualquier cerradura a la que se conectará la llave.

ojo artificial

Junto con Bogdan Shcheglov, bioquímico y biofísico, Zhenya está trabajando en un prototipo de ojo artificial. Bogdan se dedica al modelado 3D del globo ocular y a conectar todos los microcircuitos en un modelo tridimensional con el nervio óptico, Zhenya está construyendo un modelo matemático.

“Estudiamos un montón de literatura sobre análogos existentes, tecnologías que estaban en el mercado y que están ahora, y nos dimos cuenta de que el reconocimiento de imágenes no es relevante. Pero supimos que previamente se había creado una matriz para registrar fotones y su energía. Decidimos desarrollar una matriz similar en tamaño reducido, que sería capaz de registrar al menos un conjunto mínimo de fotones y generar un pulso eléctrico a partir de ellos. De esta manera nos deshacemos de la capa intermedia de una imagen clara y su reconocimiento; simplemente trabajamos directamente”.

El resultado será una visión que no es del todo en el sentido clásico. Pero como dice Zhenya, el resto del nervio óptico debe percibir el suministro de impulsos eléctricos del mismo modo que lo haría un ojo real. En 2018, discutieron el proyecto con el rector de la Universidad Técnica Marina, Gleb Turishchin, y con la mentora de Skolkovo, Olga Velichko. Confirmaron que este problema se puede solucionar utilizando tecnologías que ya existen en el mundo.

“Pero esta tarea es aún más difícil que desarrollar prótesis. Ni siquiera podemos realizar un experimento con ranas para comprobar qué tan bien genera impulsos la retina, cómo dependen de diferentes luces, qué área genera más y cuál menos. Necesitamos financiación que nos permita alquilar un laboratorio y contratar personas para descomponer tareas y reducir los plazos. Más el coste de todos los materiales necesarios. Por regla general, todo se reduce al dinero”.

Burocracia

Bogdan y Zhenya solicitaron financiación a Skolkovo, pero se les negó: allí sólo van productos terminados con potencial comercial, no proyectos de investigación en fase incipiente.

A pesar de toda la originalidad de la historia de Zhenya, a pesar de sus habilidades y éxitos inspiradores, uno se sorprende por la extraña mala suerte burocrática. Es especialmente molesto escuchar esto en el contexto de las noticias. He aquí otro “producto que la gente necesita” (una aplicación de fotografía, optimización de publicidad o nuevos tipos de chats) que recibe millones de dólares en ingresos e inversiones. Pero un entusiasta desconocido no sabe qué hacer con sus ideas.

Este año, Zhenya ganó un estudio gratuito de seis meses en Austria en el marco de un programa de colaboración entre universidades, pero no puede ir allí. Para confirmar el visado se necesitan garantías de que tiene dinero para vivir y vivir en Salzburgo.

“Apelar a la financiación no dio resultados, porque sólo se financian programas de diploma completo”, dice Zhenya, “apelar a la Universidad de Salzburgo tampoco dio resultados: la universidad no tiene residencias propias y no puede ayudarnos con el alojamiento.

Escribí a diez fondos y sólo me respondieron tres o cuatro. Además, respondieron que mi título científico no les convenía: necesitaban una maestría o más. Mis logros científicos en los estudios de pregrado no son valorados por ellos. Si estás estudiando en una universidad local, tienes una licenciatura y te dedicas a la investigación técnica, entonces puedes presentar tu solicitud dentro de la universidad. Pero, lamentablemente, una persona que viene del extranjero no tiene esto.

Me puse en contacto con aproximadamente la misma cantidad de fondos rusos. En Skolkovo me dijeron: lo siento, pero sólo trabajamos con maestros. Otras fundaciones me dijeron que no tienen financiamiento para seis meses, o solo trabajan con diplomados, o no financian a personas. Y las fundaciones Prokhorov y Potanin ni siquiera me respondieron.

Recibí una carta de Yandex diciendo que están realizando una gran labor benéfica y que la empresa actualmente no tiene financiación, pero me desean todo lo mejor.

Incluso acepté una financiación por contrato, lo que me permitiría ir a estudiar y, como resultado, aportaría algo a la empresa. Pero todo se detiene ante un bajo nivel de comunicación. Entiendo de qué se trata esto. Las personas que trabajan mediante llamadas telefónicas y correo simplemente trabajan según documentos. Ven que ha llegado una aplicación, que incluso podría ser interesante. Pero te escribirán: lo siento, no, porque o el período de solicitud ha expirado o no calificas según tu estado. Pero no tengo la posibilidad de llegar a ningún lugar más alto que los propietarios del fondo, 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 recaudamos unos 50 rublos, de los 000 euros necesarios. No hay mucho tiempo para prepararse, pero muchas personas ya le están escribiendo a Zhenya para pedirle apoyo. Quizás todo salga bien.

Me encantaría terminar este largo texto sobre el regreso del héroe de Austria con una experiencia nueva y poderosa. O recibir una subvención para uno de los proyectos y una fotografía del nuevo laboratorio. Pero el texto se detuvo en un dormitorio, donde hay dos armarios, dos camas, dos mesas, dos estantes y un frigorífico.

Me parece que se necesitan grandes comunidades profesionales para ayudarse unos a otros. La mujer de Nekrasov necesita dinero, contactos útiles, ideas, consejos, cualquier cosa. Elevemos nuestro karma.

Los contactos de Zhenya y otras figuras importantese-mail: [email protected]
Телефон: +7-914-968-93-21
Telegrama y WhatsApp: +7-999-057-85-48
github: github.com/Ravino
vk.com: vk.com/ravino_doul

Detalles para transferir fondos:
Número de tarjeta: 4276 5000 3572 4382 o número de teléfono +7-914-968-93-21
Billetera Yandex por número de teléfono +7-914-968-93-21

Destinatario: Nekrasov Evgeniy

Fuente: habr.com

Añadir un comentario