La storia di una piccola tragedia e di grandi vittorie di un ottimo sviluppatore che ha bisogno di aiuto

Presso l'Università Federale del Far East c'è un centro per attività di progetto, dove i magistri e i laureandi trovano progetti ingegneristici con clienti, fondi e prospettive già presenti. Inoltre, si tengono lezioni e intensivi. Specialisti esperti parlano di argomenti moderni e applicabili.
Uno degli intensivi era dedicato all'applicazione del sistema di containerizzazione Docker per calcoli distribuiti e orchestrazione. A questo evento hanno partecipato magistri e dottorandi in matematica applicata, ingegneria, preparazione software e altri ambiti tecnici.
L'insegnante era un ragazzo con occhiali scuri, con una pettinatura alla moda, avvolto in un foulard, socievole e troppo sicuro di sé, specialmente per uno studente di 21 anni del secondo anno. Si chiama Evgeny Nekrasov, si è iscritto al DFU solo due anni fa.
Genio
«Sì, erano più grandi e con maggior prestigio, ma non posso dire che fossero più esperti. Inoltre, a volte tenevo lezioni ai miei compagni di corso quando il nostro insegnante non c'era. Ad un certo punto abbiamo capito che non era in grado di insegnarmi nulla di più sull'Programmazione Orientata agli Oggetti, quindi periodicamente leggevo lezioni per lui su OOP, sviluppo moderno, GitHub e utilizzo di sistemi di controllo versione».

Evgeny è in grado di programmare in Scala, Clojure, Java, JavaScript, Python, Haskell, TypeScript, PHP, Rust, C++, C e Assembler. «Con JavaScript me la cavo meglio, mentre con gli altri linguaggi sono un livello o due sotto. Tuttavia, posso programmare un controller in Rust o C++ in un'ora. Non ho studiato questi linguaggi specificamente, ma li ho imparati con riferimento ai compiti che mi venivano assegnati. Posso adattarmi a qualsiasi progetto leggendo la documentazione e i manuali. Conosco la sintassi dei linguaggi e sapere quale usare non ha molta importanza. Lo stesso vale per i framework e le librerie: basta leggere la documentazione e capisco come funziona. Tutto dipende dall'area tematica e dal task».
Evgeny studia programmazione in modo intensivo dal 2013. Un insegnante di informatica che era completamente non vedente lo ha incuriosito per le scienze informatiche. Il suo percorso è iniziato con il web: HTML, JavaScript, PHP.
«Mi interessa semplicemente. Dormo poco e sono costantemente impegnato, leggo e studio qualcosa».
Nel 2015, Evgenij ha presentato domanda per il concorso "Umnik" a sostegno dei progetti tecnici di giovani scienziati di età superiore ai diciotto anni. Ma lui non aveva ancora diciotto anni, quindi non è riuscito a vincere il concorso — ma è stato notato dalla comunità locale degli sviluppatori. Ha incontrato Sergey Milekhin, che in quel momento stava organizzando conferenze a Vladivostok nell'ambito del Google Developer Fest. "Mi ha invitato a partecipare, sono andato, ho ascoltato, mi è piaciuto. L'anno successivo sono tornato, ho conosciuto sempre più persone, ho interagito."
Andrej Sitnik della comunità VLDC ha iniziato ad aiutare Evgenij con i suoi progetti web. "Avevo bisogno di costruire un'applicazione multithread per la gestione dei websocket. Ho pensato a lungo su come farlo in PHP e mi sono rivolto ad Andrej. Mi ha detto, 'prendi node.js, i pacchetti npm disponibili su Internet e non pensarci troppo. E in generale, lavorare con l'open source è fantastico'. Così ho migliorato il mio inglese, ho cominciato a leggere la documentazione e a caricare i progetti su GitHub."
Nel 2018, Evgenij ha già parlato al Google Dev Fest con le sue presentazioni, parlando delle sue ricerche nel campo delle interfacce accessibili, delle protesi per gli arti superiori, dello sviluppo di interfacce neurali e dei sistemi di gestione degli accessi senza contatto. Ora Evgenij è al secondo anno di laurea in "Ingegneria del Software", ma ha già finito il corso con successo e sta completando il lavoro finale.
"Mi è stato detto di realizzare una struttura dati in una tabella hash. È una cosa standard che tutti devono fare all'università. Ho finito con 12.000 righe di codice e un sacco di soluzioni di fortuna", dice Evgenij ridendo, "ho costruito una tabella hash e la sua struttura modificata in JavaScript, per leggere i dati più velocemente. E il docente dice: 'Ho bisogno che tu scriva in modo più semplice per me — così posso valutarlo'. È stato molto frustrante."
I progetti personali di Evgenij sono di gran lunga più interessanti. Il primo di essi è lo sviluppo di standard web per persone con disabilità fisiche. Vuole creare una risorsa contenente tecnologia assistiva pronta all'uso, in modo che le persone con disabilità visive possano usarla facilmente e non dubitare che alcune informazioni siano loro inaccessibili. Evgenij conosce bene questo problema, perché ha perso lui stesso la vista.
Infortunio
«Prima ero un ragazzo normale, con tutte le parti del corpo a posto. Nel 2012 ho subìto un'esplosione. Sono uscito con un amico per fare una passeggiata, ho trovato una bombola per strada, e questa è esplosa nelle mie mani. Mi hanno staccato il polso destro, danneggiato il sinistro, compromesso la vista e diminuito l'udito. Per sei mesi sono rimasto semplicemente sul tavolo operatorio.
Hanno ricostruito il polso sinistro a pezzi, mettendo placche e boccole. Dopo cinque mesi sono riuscito a usarlo di nuovo.
Dopo l'incidente non vedevo nulla. Ma i medici sono riusciti a ripristinare la percezione della luce. Il mio occhio non ha più nulla tranne che la membrana. Dentro hanno sostituito tutto: corpi vitreali, cristallini. Tutto ciò che era possibile.
Nel 2013, Zhenya è andato a scuola per bambini con problemi visivi. Quel professore di informatica, che era completamente cieco, gli ha insegnato a usare il computer da capo. Per questo si utilizzano programmi specifici: i lettori di schermo. Questi accedono alle API dei sistemi operativi per ottenere accesso all'interfaccia e modificare leggermente il modo di controllo.
Zhenya si definisce un accanito utente di Linux, usa Debian. Con la tastiera si muove tra gli elementi dell'interfaccia, mentre il sintetizzatore vocale legge ciò che accade.
«Adesso sentirai semplicemente il cosmo», mi dice prima di avviare il programma.
Suona come un codice o un linguaggio alieno, ma in realtà è solo russo o inglese normale, solo che il sintetizzatore parla a una velocità incredibile per un orecchio non allenato.
«Imparare questo non è stato difficile. Inizialmente lavoravo su Windows e usavo il programma di accesso allo schermo Jaws. Utilizzavo e pensavo: 'Dio mio, come si può lavorare a una velocità così lenta'. Ho aumentato e ho capito che le mie orecchie si contorcevano. Sono tornato indietro e gradualmente ho aumentato ogni settimana del 5–10 percento. Ho spinto il sintetizzatore fino a cento parole, poi ancora di più, ancora e ancora. Ora parla mille parole al minuto».
Zhenya scrive in un editor di testo normale — Gedit o Nano. Copia le sorgenti da GitHub, avvia il lettore di schermo e ascolta il codice. Per poter essere letti e compresi senza problemi da altri sviluppatori, usa ovunque linters e configurazioni. Ma Zhenya non può utilizzare ambienti di sviluppo, perché non sono accessibili ai ciechi a causa della loro implementazione.
«Sono fatti in modo tale che la loro finestra è definita dal sistema, e tutto ciò che è all'interno della finestra non è visibile allo screen reader, perché non può accedervi. Ho contattato direttamente JetBrains per cercare di apportare alcune correzioni nei loro ambienti. Mi hanno inviato il codice sorgente di PyCharm. L'IDE è realizzato su Intellij Idea, quindi tutte le modifiche potranno essere applicate sia lì che lì».
Un altro ostacolo è la non conformità agli standard generali nel web. Ad esempio, vediamo sulla pagina un grande titolo. Molti sviluppatori lo realizzano con un tag span, per aumentare il carattere alla dimensione desiderata, e di conseguenza appare normale. Ma poiché il testo non è riconosciuto come titolo dal sistema, lo screen reader non lo identifica come un elemento di menu e non consente l'interazione.
Zhenya usa facilmente la versione mobile di «VKontakte», ma evita Facebook: «VK per me è comodo, perché lì c'è un elenco separato di navigazione. Contiene elementi e titoli che costituiscono per me una suddivisione semantica della pagina. Ad esempio, il titolo di primo livello, dove è indicato il mio soprannome – so che questo è il titolo della pagina. So che il titolo “messaggi” separa la pagina, e sotto c'è l'elenco delle conversazioni.
Facebook promuove l'accessibilità, ma nella pratica è così male che non si capisce nulla. Lo apro e il programma inizia a bloccarsi, la pagina è incredibilmente lenta, tutto salta. Ci sono solo pulsanti ovunque, e io penso: „come si fa a lavorare con questo?!” Lo userò solo se riesco a ottimizzare la mia applicazione o a collegare un client di terze parti».
Ricerca
Zhenya vive a Vladivostok in un normale dormitorio universitario. Il bagno è in camera, ci sono due armadi, due letti, due scrivanie, due scaffali, un frigorifero. Nessun gadget speciale, ma a suo dire – non ne ha bisogno. «Avere problemi di vista non significa che non riuscirò a muovermi o a trovare il passaggio. Ma forse mi sarebbe piaciuto allestire una smart home, se avessi avuto i materiali. Non ho semplicemente i soldi per comprare i componenti. Per uno studente spendere cinquemila per una scheda, solo per provarla – è molto svantaggioso».
Zhenya vive con la sua ragazza, che lo aiuta molto nelle faccende domestiche: «spalmare i panini, versare il tè, lavare i panni. Quindi ho più tempo per riposare e dedicarmi alle mie passioni».
Ad esempio, Genya ha una band musicale, dove suona la chitarra elettrica. Ha imparato anche dopo l'infortunio. Nel 2016 ha trascorso tre mesi in un centro di riabilitazione, dove ha chiesto aiuto a un insegnante per suonare la chitarra. Inizialmente suonava con la manica della camicia, girata al contrario. Poi ha creato un plettro.
«Ho preso una benda per rinforzare il polso, che viene utilizzata, ad esempio, dai karateka, l'ho aperta nei punti di separazione delle dita e l'ho infilata all'avambraccio. C'è un cuscinetto in schiuma che protegge il polso dai danni — a questo ho cucito il plettro che mio fratello ha ritagliato da una spatola di plastica. È venuto fuori un lungo linguaggio di plastica, con cui suono le corde — sia a pizzico che con colpi».
L'esplosione ha distrutto le membrane timpaniche, quindi Genya non sente le basse frequenze. Sulla sua chitarra non c'è la sesta corda (la più bassa), mentre la quinta è accordata diversamente. Suona principalmente parti soliste.
Ma le attività principali rimangono lo sviluppo e la ricerca.
Protesi della mano
Uno dei progetti è lo sviluppo di una protesi per gli arti superiori con un sistema di controllo intelligente. Nel 2016, Genya si è recato da una persona che si occupava dello sviluppo della protesi e ha iniziato ad aiutarlo nei test. Nel 2017 hanno partecipato a un hackathon "Neurostart". Nella squadra di tre persone, Genya programmava i controllori di basso livello. Gli altri due costruivano i modelli stessi e addestravano le reti neurali per il sistema di controllo.Attualmente, Genya ha preso in carico tutta la parte software del progetto. Utilizza il bracciale Myo Armband per leggere i segnali muscolari, costruisce maschere basate su di essi e sopra applica modelli di reti neurali per il riconoscimento dei gesti — su questo si basa il sistema di controllo.
«Nel bracciale ci sono otto sensori. Trasmettono le variazioni di potenziale a qualsiasi dispositivo di input. Ho smontato manualmente il loro SDK, decompilato tutto ciò che serviva e scritto la mia libreria in Python per leggere i dati. Certamente, i dati non bastano. Anche se appendessi miliardi di sensori sulla pelle, non basterebbero mai. La pelle si muove sopra i muscoli e i dati si mescolano».
In futuro, Zhenya prevede di fissare sotto la pelle e nei muscoli alcuni sensori. Vorrebbe provarlo già adesso, ma in Russia operazioni simili sono vietate. Se un chirurgo impiantasse attrezzature non certificate sotto la pelle di un individuo, perderebbe il diploma. Tuttavia, Zhenya ha impiantato un sensore nella mano: un'etichetta RFID, come quelle delle chiavi elettroniche, per aprire il citofono o qualsiasi lucchetto a cui la chiave sarà collegata.
Occhio artificiale
Insieme a Bogdan Shcheglov, biochimico e biofisico, Zhenya sta lavorando a un prototipo di occhio artificiale. Bogdan si occupa della modellazione 3D del bulbo oculare e della connessione di tutti i circuiti integrati nel modello tridimensionale con il nervo ottico, mentre Zhenya costruisce il modello matematico.
«Abbiamo studiato una tonnellata di letteratura sugli analoghi esistenti, sulle tecnologie che erano sul mercato e che ci sono ancora oggi, e abbiamo capito che il riconoscimento delle immagini non è attuale. D'altra parte, abbiamo scoperto che in precedenza era stata creata una matrice per la registrazione dei fotoni e della loro energia. Abbiamo deciso di sviluppare una matrice simile in dimensioni ridotte, che fosse in grado di registrare almeno un minimo insieme di fotoni e sulla base di questi costruire un impulso elettrico. In questo modo ci liberiamo dello strato intermedio di un'immagine chiara e del suo riconoscimento: stiamo semplicemente lavorando direttamente».
Il risultato sarà una visione non del tutto nel senso classico. Ma come dice Zhenya, il resto del nervo ottico dovrebbe percepire la somministrazione di impulsi elettrici così come avviene con un vero occhio. Nel 2018 hanno discusso il progetto con il rettore dell'Università Tecnica Marittima, Gleb Turishchin, e con la mentore di Skolkovo, Olga Velichko. Questi hanno confermato che questo compito può essere risolto con le tecnologie già disponibili nel mondo.
«Ma questo compito è ancora più complesso rispetto allo sviluppo di protesi. Non possiamo nemmeno condurre esperimenti su rane per verificare quanto bene la retina generi impulsi, come dipendono da diverse fonti di luce, quale area genera di più e quale meno. Abbiamo bisogno di finanziamenti che ci permettano di affittare un laboratorio e di assumere persone per decomporre i compiti e ridurre i tempi. In aggiunta ai costi di tutti i materiali necessari. Di solito, tutto si riconduce al denaro».
Burocrazia
Bogdan e Zhenya si sono rivolti a Skolkovo per ottenere finanziamenti, ma hanno ricevuto un rifiuto: lì vengono accettati solo prodotti finiti con potenziale commerciale, e non progetti di ricerca in fase di avvio.
Nonostante l'unicità della storia di Zhenya, le sue capacità e i suoi successi ispiratori, sorprende la strana sfortuna burocratica. È particolarmente frustrante sentirne parlare sullo sfondo delle notizie. Ecco un altro "prodotto necessario per le persone" (un'app per foto, ottimizzazione della pubblicità o nuovi tipi di chat) che riceve milioni di dollari in ricavi e investimenti. Mentre un entusiasta sconosciuto non sa cosa fare con le proprie idee.
Quest'anno Zhenya ha vinto un corso di formazione gratuito di sei mesi in Austria tramite un programma di collaborazione tra università, ma non può andarci. Per confermare il visto sono necessarie garanzie che abbia soldi per l'alloggio e per vivere a Salisburgo.
"La richiesta ai fondi non ha dato risultati, perché il finanziamento viene effettuato solo per programmi di laurea completi", dice Zhenya, "Anche contattare l'università di Salisburgo non ha avuto successo: l'università non ha alloggi di sua proprietà e non può aiutarci con la sistemazione.
Ho scritto a dieci fondi e di questi solo tre o quattro mi hanno risposto. E hanno risposto dicendo che il mio titolo di studio non è adatto a loro: vogliono solo laureati magistrali o superiori. Le mie ricerche scientifiche durante la laurea triennale non sono considerate valide. Se studi in un'università locale, sei un laureato e ti occupi di ricerche tecniche, puoi presentare domanda tramite l'università. Ma per una persona proveniente dall'estero purtroppo non hanno questa possibilità.
Ho contattato circa lo stesso numero di fondi russi. A Skolkovo mi hanno detto: scusa, ma lavoriamo solo con laureati magistrali. In altri fondi mi hanno detto che non hanno finanziamenti per sei mesi, oppure che anche loro lavorano soltanto con programmi di laurea o non finanziano persone fisiche. E dai fondi di Prokhorov e Potanin non ho ricevuto nemmeno una risposta.
Ho ricevuto una lettera da Yandex che dice che si occupano di grande beneficenza e che attualmente l'azienda non ha finanziamenti, ma mi augurano tutto il meglio.
Ero persino disposto a un finanziamento contrattuale mirato, che mi avrebbe permesso di andare a studiare, e avrei portato qualcosa per l’azienda. Ma tutto si ferma a un livello comunicativo basso. Capisco da cosa dipende. Le persone che lavorano nelle chiamate telefoniche e nelle e-mail si occupano semplicemente dei documenti. Vedono che è arrivata una richiesta, che potrebbe essere anche interessante. Ma scriveranno: scusa, no, perché o è scaduto il termine della richiesta, o non soddisfi i requisiti. E non ho la possibilità di contattare i proprietari del fondo, semplicemente non ho quei contatti.
Ma i post sul problema di Zhenya hanno iniziato a diffondersi rapidamente sui social network. Nei primi giorni hanno raccolto circa 50.000 rubli — dei necessari 12.000 euro. Il tempo per le raccolte è poco, ma molti scrivono già a Zhenya per offrirle supporto. Forse ce la faremo.
Sarei felice di concludere questo lungo testo con il ritorno dell’eroe dall’Austria con una nuova e potente esperienza. O con l’assegnazione di un grant per uno dei progetti, e una foto dal nuovo laboratorio. Ma il testo si è fermato nella stanza dell'alloggio, dove ci sono due armadi, due letti, due tavoli, due mensole, un frigorifero.
Penso che grandi comunità professionali siano necessarie per aiutarsi a vicenda. A Zhenya Nekrasov servono soldi, contatti utili, idee, consigli, qualsiasi cosa. Alziamo un po' il nostro karma.
Contatti di Zhenya e altri numeri importantie-mail: evgeniy@nekrasov.pw
Telefono: +7-914-968-93-21
Telegram e WhatsApp: +7-999-057-85-48
github:
vk.com: vk.com/ravino_doul
Dettagli per il trasferimento di fondi:
Numero di carta: 4276 5000 3572 4382 oppure per numero di telefono +7-914-968-93-21
Portafoglio Yandex per numero di telefono +7-914-968-93-21
Destinatario: Nekrasov Evgeniy
Fonte: habr.com

