Com'è ascoltare il codice a una velocità di 1000 parole al minuto

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

Com'è ascoltare il codice a una velocità di 1000 parole al minuto

Presso l'Università Federale del Faro Orientale c'è un centro di attività progettuale, dove i laureandi e i dottorandi trovano progetti ingegneristici già finanziati e con prospettive. Vi si tengono anche lezioni e workshop. Esperti del settore parlano di temi moderni e pratici.

Uno dei workshop era dedicato all'applicazione del sistema di containerizzazione Docker per il calcolo distribuito e l'orchestrazione. A questo evento hanno partecipato laureandi e dottorandi in matematica applicata, ingegneria, sviluppo software e altri ambiti tecnici.

Il docente era un ragazzo con occhiali scuri, acconciatura alla moda, sciarpa, socievole e troppo sicuro di sé — specialmente per uno studente di ventun anni al secondo anno. Si chiama Evgeny Nekrasov ed è entrato all'Università Federale del Faro Orientale solo due anni fa.

Bambino prodigio

«Sì, erano più anziani e con maggiore status, ma non posso dire che avessero più esperienza. Oltre a ciò, a volte tenevo lezioni ai miei compagni di corso al posto del nostro insegnante. Ad un certo punto, abbiamo realizzato che non poteva darmi altro sulla Programmazione Orientata agli Oggetti, quindi occasionalmente leggevo per lui delle lezioni su OOP, sviluppo moderno, GitHub e uso dei sistemi di controllo versione».

Com'è ascoltare il codice a una velocità di 1000 parole al minuto

Evgenij può programmare in Scala, Clojure, Java, JavaScript, Python, Haskell, TypeScript, PHP, Rust, C++, C e Assembler. «Con JavaScript me la cavo meglio, gli altri sono a un livello inferiore. Tuttavia, posso programmare un controller in Rust o C++ in un’ora. Non ho studiado questi linguaggi intenzionalmente. Li ho appresi per le esigenze dei progetti che mi sono stati assegnati. Posso inserirsi in qualsiasi progetto, studiando la documentazione e i manuali. Conosco le sintassi dei linguaggi e quale utilizzare non ha particolare rilevanza. Lo stesso vale per i framework e le librerie: basta leggere la documentazione e capisco come funzionano. Tutto dipende dall'area tematica e dal compito».

Eugene ha iniziato ad apprendere la programmazione in modo approfondito dal 2013. Un insegnante di informatica che era completamente cieco lo ha avvicinato alle scienze informatiche. Il suo percorso è iniziato con il web: HTML, JavaScript, PHP.

«Sono semplicemente curioso. Dormo poco — sono sempre occupato, leggo, studio qualcosa».

Nel 2015, Eugene ha presentato domanda per il concorso "Umnik" a sostegno dei progetti tecnici per giovani scienziati di età superiore ai diciotto anni. Ma non aveva ancora compiuto diciotto anni, quindi non ha potuto vincere — tuttavia, la comunità locale degli sviluppatori l'ha notato. Ha incontrato Sergey Milekhin, che in quel momento stava organizzando conferenze a Vladivostok nell'ambito del Google Developer Fest. «Mi ha invitato lì, sono andato, ho ascoltato, mi è piaciuto. L'anno successivo sono tornato, ho iniziato a conoscere sempre più persone, ho interagito».

Andrei Sitnik della community VLDC ha iniziato ad aiutare Evgeny con i suoi progetti web. «Avevo bisogno di costruire un'applicazione multithread per la gestione dei websocket. Ho pensato a lungo a come farlo in PHP e mi sono rivolto ad Andrei. Mi ha detto: “usa node.js, i pacchetti npm che trovi online, e non preoccuparti troppo. E in generale, contribuire all'open source è fantastico.” Così ho migliorato il mio inglese, ho iniziato a leggere la documentazione e a caricare i progetti su GitHub.»

Nel 2018, Evgeny ha già presentato al Google Dev Fest con le sue relazioni, parlando degli sviluppi in termini di interfacce accessibili, di protesi per gli arti superiori, dello sviluppo di neurointerfacce e di sistemi di accesso senza contatto. Ora Evgeny è al secondo anno di laurea in 'Ingegneria del software', ma ha già completato con successo il corso e sta scrivendo la tesi finale.

«Mi hanno chiesto di realizzare una struttura dati in una tabella hash. È una cosa standard che danno a tutti all'università. Ho scritto 12.000 righe di codice e accumulato un sacco di workaround», racconta Eugenio 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 davvero frustrante.»

I progetti personali di Eugenio sono molto più interessanti. Il primo di questi è lo sviluppo di standard web per persone con disabilità fisiche. Vuole creare una risorsa che offra tecnologia assistiva 'out of the box', affinché le persone con problemi di vista possano utilizzarla facilmente e non si preoccupino di perdere l'accesso a qualche informazione. Eugenio conosce bene questo problema, perché ha perso la vista lui stesso.

Infortunio

«Prima ero un normale adolescente, con tutte le mie estremità al loro posto. Nel 2012 ho avuto un'esplosione. Sono uscito a fare una passeggiata con un amico, ho trovato un cilindro per strada e è esploso nelle mie mani. Mi hanno strappato il polso destro, ferito il sinistro, compromesso la vista e ridotto l’udito. Per sei mesi sono rimasto sui lettini operatori.

Il polso sinistro è stato ricostruito a pezzi, con impianti e placche. Dopo cinque mesi sono riuscito a usarlo di nuovo.

Dopo l'infortunio non vedevo nulla. Ma i medici sono riusciti a ripristinare la percezione della luce. Non mi è rimasto niente del mio occhio tranne la membrana. Dentro hanno sostituito tutto: corpi vitre, lenti. Tutto ciò che era possibile.»

Nel 2013, Zhenya ha iniziato a studiare in una scuola correttiva per bambini con problemi visivi. Un insegnante di informatica, completamente non vedente, gli ha insegnato a usare di nuovo il computer. Per fare ciò si usano programmi speciali — screen reader. Questi accedono all'API dei sistemi operativi per ottenere l'interfaccia e modificare leggermente il modo di controllare.

Zhenya si definisce un appassionato di Linux e utilizza Debian. Con la tastiera si sposta tra gli elementi dell'interfaccia, mentre un sintetizzatore vocale descrive ciò che accade.

«Adesso sentirai un vero capolavoro», mi dice prima di avviare il programma.

Suona come un codice segreto o un linguaggio extraterrestre, ma in realtà è semplice russo o inglese, solo che il sintetizzatore parla a una velocità incredibile per un orecchio non allenato.

«Imparare a farlo non è stato difficile. All'inizio lavoravo su Windows e usavo un software di lettura dello schermo chiamato Jaws. Pensavo, 'madonna, come si fa a lavorare a una velocità così lenta'. Ho aumentato la velocità e mi sono reso conto che le orecchie mi si piegavano. Sono tornato indietro e gradualmente ho iniziato ad aumentare ogni settimana del 5–10%. Ho portato il sintetizzatore a cento parole al minuto, poi ancora di più, sempre di più. Ora parla a mille parole al minuto.»

Zhenya scrive in un editor di testo semplice — Gedit o Nano. Copia il codice sorgente da GitHub, avvia il lettore di schermo e ascolta il codice. Affinché altri sviluppatori possano leggerlo e comprenderlo senza problemi, utilizza ovunque linters e configurazioni. Ma Zhenya non può utilizzare ambienti di sviluppo, poiché non sono accessibili agli ipovedenti a causa della loro implementazione.

«Sono progettati in modo tale che la loro finestra sia definita dal sistema, e tutto ciò che si trova all'interno della finestra — il lettore di schermo non lo vede, perché non può accedervi. Ho contattato direttamente JetBrains per cercare di apportare alcune patch ai loro ambienti. Mi hanno inviato i codici sorgente di PyCharm. L’IDE è implementato su IntelliJ IDEA, quindi tutte le modifiche possono essere applicate sia lì che lì».

Un'altra barriera è la non conformità agli standard comuni del web. Ad esempio, vediamo un grande titolo sulla pagina. Molti sviluppatori lo realizzano utilizzando il tag span per aumentare la dimensione del carattere, e di conseguenza appare normale. Ma poiché il testo non è un titolo per il sistema, il lettore di schermo non lo riconosce come un elemento di menu e non permette l'interazione.

Zhenya utilizza facilmente la versione mobile di «Vkontakte», ma evita Facebook: «VK per me è comodo, perché c'è un elenco separato del menu di navigazione. Contiene elementi e titoli che fungono da separazione 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 in realtà è così complicato che non si riesce a capire nulla. Lo apro — e l'app inizia a bloccarsi, la pagina rallenta terribilmente, tutto salta. Ci sono solo pulsanti ovunque, e io mi dico: «come si fa a lavorarci?!» Lo utilizzerò solo se riesco a migliorare il mio client o collegarne uno di terze parti».

Le ricerche

Zhenya vive a Vladivostok in un normale dormitorio universitario. C'è un bagno in camera, due armadi, due letti, due scrivanie, due scaffali e un frigorifero. Non ci sono gadget particolari, ma secondo lui non servono. «Una disabilità visiva non significa che non possa camminare o che non troverò il passaggio. Ma forse avrei anche voluto avere una casa intelligente, se avessi avuto i materiali. Non ho semplicemente i soldi per comprare i componenti. Per uno studente, spendere cinquemila per una scheda per sperimentare è davvero poco conveniente.»

Zhenya vive con la sua ragazza, che lo aiuta molto nelle faccende domestiche: «spalmare i panini, versare il tè, lavare i vestiti. Così ho avuto più tempo per rilassarmi e dedicarmi ai miei hobby.»

Ad esempio, Zhenya ha una band musicale, dove suona la chitarra elettrica. Ha imparato a suonare anche dopo l'infortunio. Nel 2016 ha trascorso tre mesi in un centro di riabilitazione, dove ha chiesto aiuto a un insegnante per la chitarra. Inizialmente suonava usando il colletto della maglietta rovesciato. Poi ha costruito un plettro.

«Ho preso una fasciatura per rinforzare il polso, che viene utilizzata, ad esempio, dai karateka, l'ho aperta nei punti di separazione delle dita e l'ho indossata sull'avambraccio. C'è un cuscinetto in schiuma che protegge il polso dagli infortuni — a questo ho attaccato un plettro che mio fratello ha ritagliato da una spatola di plastica. È venuto fuori un lungo linguaggio di plastica con cui suono le corde — sia con arpeggi che con colpi».

L'esplosione ha colpito i timpani, quindi Zhenya non sente le basse frequenze. La sua chitarra non ha la sesta corda (la più bassa), e la quinta è sintonizzata in modo diverso. Suona principalmente parti soliste.

Ma le principali attività rimangono lo sviluppo e la ricerca.

Protesi della mano

Com'è ascoltare il codice a una velocità di 1000 parole al minuto

Uno dei progetti è lo sviluppo di una protesi per gli arti superiori con un sistema di controllo intelligente. Nel 2016 Zhenya si è avvicinato a una persona che si occupava della progettazione di protesi e ha iniziato ad aiutarlo con i test. Nel 2017 hanno partecipato all'hackathon "Neurostart". Nella squadra di tre persone, Zhenya ha programmato i controllori a basso livello. Gli altri due hanno progettato i modelli e addestrato le reti neurali per il sistema di controllo.

Ora Ievgen ha preso su di sé l'intera parte software del progetto. Utilizza il bracciale Myo Armband per leggere i potenziali muscolari, costruisce maschere basate su di essi e applica modelli di reti neurali per il riconoscimento dei gesti, da cui si sviluppa 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 era necessario e ho scritto la mia libreria in Python per la lettura dei dati. Naturalmente, i dati non sono sufficienti. Anche se mettessi miliardi di sensori sulla pelle, non sarebbero comunque abbastanza. La pelle si muove sui muscoli e i dati si mescolano».

In futuro, Ievgen prevede di fissare sotto la pelle e nei muscoli alcuni sensori. Vorrebbe provarlo già adesso, ma in Russia queste operazioni sono vietate. Se un chirurgo impianta attrezzature non certificate sotto la pelle di una persona, perde il diploma. Tuttavia, ha cucito un sensore nella mano — un'etichetta RFID, come quelle delle chiavi elettroniche, per aprire un 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 esaminato una quantità enorme di letteratura sugli analoghi esistenti, sulle tecnologie disponibili sul mercato ora e in passato, e abbiamo capito che il riconoscimento delle immagini non è più rilevante. Tuttavia, 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 dimensione ridotta, capace di registrare almeno un numero minimo di fotoni e, sulla base di essi, generare un impulso elettrico. In questo modo eliminiamo il livello intermedio di un'immagine chiara e del suo riconoscimento — lavoriamo semplicemente in modo diretto.»

Il risultato sarà una visione non proprio nella sua accezione classica. Ma come dice Zhenya, il resto del nervo ottico dovrebbe ricevere impulsi elettrici proprio come farebbe un occhio reale. Nel 2018, hanno discusso un progetto con il rettore dell'Università Tecnica Marittima, Gleb Turishin, e la mentore di Skolkovo, Olga Velichko. Loro hanno confermato che questo compito può essere risolto con tecnologie già esistenti nel mondo.

«Ma questo compito è ancora più complesso rispetto allo sviluppo delle protesi. Non possiamo nemmeno effettuare esperimenti su rane per verificare quanto bene la retina generi impulsi, come questi dipendano da differenti fonti di luce, quale area generi di più, e quale di meno. Abbiamo bisogno di finanziamenti che ci permettano di affittare un laboratorio e assumere persone per decomporre i compiti e ridurre i tempi. Inoltre, ci sono i costi per tutti i materiali necessari. Di solito, tutto si riduce a questioni di denaro».

Burocrazia

Bohdan e Zhenya si sono rivolti a Skolkovo per ottenere finanziamenti, ma hanno ricevuto un rifiuto: lì vengono accolti solo prodotti pronti con potenziale commerciale, e non progetti di ricerca in fase embrionale.

Nonostante l'eccezionalità della storia di Zhenya, le sue capacità e i suoi successi ispiratori, sorprende il suo strano sfortuna burocratica. È particolarmente frustrante ascoltare tutto ciò sullo sfondo delle notizie. Ecco un altro "prodotto utile alle persone" (un'app per foto, un'ottimizzazione della pubblicità o nuovi tipi di chat) che ottiene milioni di dollari di entrate e investimenti. E nel frattempo, un entusiasta sconosciuto non sa cosa fare con le proprie idee.

Quest'anno Zhenya ha vinto un corso gratuito di sei mesi in Austria attraverso un programma di cooperazione tra università, ma non può andarci. Per confermare il visto sono necessarie garanzie che dimostrino di avere fondi per l'alloggio e il sostentamento a Salisburgo.

"Richiedere ai fondi non ha portato risultati, perché i finanziamenti sono concessi solo per programmi di laurea completi," dice Zhenya, "Richiedere anche direttamente all'università di Salisburgo non aiuta: l'università non ha alloggi e non può aiutarci con l'abitazione."

Ho scritto a dieci fondi e solo tre o quattro mi hanno risposto. In effetti, hanno risposto dicendo che il mio titolo di studio non è idoneo per loro: hanno bisogno di laureati magistrali o superiori. Le mie ricerche scientifiche nel mio corso di laurea non sono riconosciute da loro. Se studi in un'università locale, possiedi una laurea triennale e ti occupi di ricerche tecniche, all'interno dell'università puoi presentare la tua domanda. Purtroppo, per una persona dall'estero non esiste questa possibilità.

Ho contattato circa lo stesso numero di fondi russi. A Skolkovo mi hanno detto: mi dispiace, ma lavoriamo solo con laureati magistrali. In altri fondi mi hanno detto che non hanno finanziamenti per sei mesi, oppure che lavorano solo con programmi di diploma, o ancora che non finanziano persone fisiche. Dai fondi Prokhorov e Potanin non ho ricevuto nemmeno una risposta.

Mi è arrivata una lettera da Yandex che diceva che si occupano di grande beneficenza e attualmente non hanno finanziamenti, ma mi augurano ogni bene.

Ero persino disposto a un finanziamento mirato che mi avrebbe permesso di andare a studiare, e al ritorno avrei portato qualcosa per l'azienda. Ma tutto si ferma a un livello di comunicazione molto basso. Capisco a cosa è dovuto. Le persone che lavorano con telefonate e email si occupano semplicemente di pratiche burocratiche. Vedono che è arrivata una richiesta, che potrebbe anche essere interessante. Ma rispondono: mi dispiace, no, perché il termine per la richiesta è scaduto o perché non hai il profilo adatto. E non ho modo 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 media. Nei primi giorni abbiamo raccolto circa 50.000 rubli, rispetto ai 12.000 euro necessari. Il tempo per raccogliere i fondi è scarso, ma molte persone stanno già contattando Zhenya per offrire supporto. Forse ce la faremo.

Sarei felice di concludere questo lungo testo con il ritorno dell'eroe dall'Austria con nuove, potenti esperienze. O con il ricevimento di un grant per uno dei progetti e una fotografia dal nuovo laboratorio. Ma il testo si è fermato nella stanza del dormitorio, dove ci sono due armadi, due letti, due scrivanie, due scaffali e un frigorifero.

Credo che grandi comunità professionali siano necessarie per aiutarsi a vicenda. A Evgeniy Nekrasov servono soldi, contatti utili, idee, consigli, qualsiasi cosa. Solleviamo il nostro karma.

Contatti di Evgeniy e altre informazioni importantie-mail: evgeniy@nekrasov.pw
Telefono: +7-914-968-93-21
Telegram e WhatsApp: +7-999-057-85-48
github: github.com/Ravino
vk.com: vk.com/ravino_doul

Dettagli per il trasferimento di fondi:
Numero di carta: 4276 5000 3572 4382 oppure al numero di telefono +7-914-968-93-21
Yandex wallet al numero di telefono +7-914-968-93-21

Destinatario: Evgeniy Nekrasov

Fonte: habr.com

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster