Jak to jest słuchać kodu z prędkością 1000 słów na minutę

Historia małej tragedii i wielkich zwycięstw bardzo dobrego programisty, który potrzebuje pomocy

Jak to jest słuchać kodu z prędkością 1000 słów na minutę

Na Dalekowschodnim Uniwersytecie Federalnym istnieje centrum działalności projektowej — tam magistrowie i bakalariusze znajdują dla siebie projekty inżynieryjne, które już mają zamawiających, fundusze i perspektywy. Odbywają się tam również wykłady i intensywne kursy. Doświadczeni specjaliści opowiadają o rzeczach nowoczesnych i praktycznych.

Jednym z intensywów poświęconych zastosowaniu systemu konteneryzacji Docker do obliczeń rozproszonych i orkiestracji. Przybyli na niego magistrowie i doktoranci z zakresu matematyki stosowanej, inżynierii, przygotowania oprogramowania oraz innych kierunków technicznych.

Nauczycielem był facet w ciemnych okularach, ze stylową fryzurą, w szalu, towarzyski i zbyt pewny siebie — szczególnie jak na 21-letniego studenta drugiego roku. Nazywa się Jewgienij Niekrasow, na DWFU dostał się zaledwie dwa lata temu.

Cudowne dziecko

„Tak, byli starsi i bardziej prestiżowi, ale nie mogę powiedzieć, że bardziej doświadczeni. Poza tym czasami prowadziłem wykłady za naszego nauczyciela. W pewnym momencie zrozumieliśmy, że nie może mi dać nic więcej na temat programowania obiektowego, dlatego okresowo prowadziłem wykłady o OOP, nowoczesnym rozwoju, GitHubie, zastosowaniu systemów kontroli wersji.”

Jak to jest słuchać kodu z prędkością 1000 słów na minutę

Jewgienij potrafi programować w Scala, Clojure, Java, JavaScript, Python, Haskell, TypeScript, PHP, Rust, C++, C i Assembler. „JavaScript znam najlepiej, pozostałe — na poziomie, dwa niżej. Ale jednocześnie mogę zaprogramować kontroler w Rust lub C++ w ciągu godziny. Nie uczyłem się tych języków celowo. Studiowałem je w odniesieniu do zadań, które mi powierzono. Mogę wpasować się w każdy projekt, studiując dokumentację i instrukcje. Znam składnię języków i to, którego użyć, nie ma większego znaczenia. Podobnie z frameworkami i bibliotekami — wystarczy przeczytać dokumentację, a rozumiem, jak to działa. Wszystko zależy od obszaru tematycznego i zadania.”

Jewgienij intensywnie uczy się programowania od 2013 roku. Nauczyciel informatyki w szkole, który był całkowicie niewidomy, zainteresował go naukami komputerowymi. Droga zaczęła się od webu — HTML, JavaScript, PHP.

„Po prostu mnie to interesuje. Mało sypiam — ciągle jestem czymś zajęty, coś czytam, uczę się.”

W 2015 roku Jewgienij złożył wniosek do konkursu „Umyk” wspierającego techniczne projekty młodych naukowców od osiemnastego roku życia. Jednak nie miał jeszcze osiemnastu lat, więc nie udało mu się wygrać konkursu — za to zauważyła go lokalna społeczność programistów. Poznał Siergieja Mielechina, który w tym czasie organizował konferencje we Władywostoku w ramach Google Developer Fest. „Zaproponował mi przyjście, przyszedłem, posłuchałem, spodobało mi się. W następnym roku przyszedłem ponownie, coraz bardziej poznawałem ludzi, rozmawiałem.”

Andriej Sitnik ze społeczności VLDC zaczął pomagać Jewgienijowi w jego projektach webowych. „Potrzebowałem zbudować aplikację wielowątkową do obsługi websocketów. Długo myślałem, jak to zrobić w PHP i skontaktowałem się z Andriejem. Powiedział mi: „Weź node.js, pakiety npm, które są w internecie, i nie łam sobie głowy. I w ogóle rozwijanie open source — to świetne”. Dlatego poprawiłem swój angielski, zacząłem czytać dokumentację i publikować projekty na GitHubie.”

W 2018 roku Jewgienij już występował na Google Dev Fest ze swoimi prezentacjami, mówił o osiągnięciach w zakresie dostępnych interfejsów, protez górnych kończyn, opracowywaniu neurointerfejsów i systemów zarządzania dostępem bezdotykowym. Teraz Jewgienij uczy się na drugim roku studiów licencjackich na kierunku „Inżynieria oprogramowania”, ale już ukończył ten kierunek z sukcesem i pisze prace końcową.

„Powiedziano mi, żebym zaimplementował strukturę danych w tablicy haszującej. To standardowa rzecz, którą wszyscy dostają na uczelni. Udało mi się napisać 12 tysięcy linii kodu i mnóstwo obejść,” — mówi Jewgienij z uśmiechem, — „Zbudowałem tablicę haszującą i jej zmodyfikowaną strukturę w JavaScript, aby szybciej odczytywać dane. A nauczyciel mówi: „Musisz napisać to w prostszy sposób — żebym mogła to ocenić”. To było bardzo frustrujące.”

Znacznie ciekawiej wyglądają osobiste projekty Jewgienija. Pierwszy z nich — to opracowanie standardów internetowych dla osób z ograniczeniami fizycznymi. Chce stworzyć zasób, zawierający technologię asystującą prosto z pudełka, aby osoby z zaburzeniami wzroku mogły łatwo z nich korzystać i nie martwić się, że jakaś informacja będzie dla nich niedostępna. Jewgienij dobrze zna ten problem, ponieważ sam stracił wzrok.

Urazy

Kiedyś byłem zwykłym nastolatkiem, z wszystkimi kończynami w komplecie. W 2012 roku miałem wypadek. Wyszedłem na spacer z kolegą, znalazłem na ulicy pojemnik i eksplodował mi w rękach. Straciłem prawą dłoń, uszkodziłem lewą, uszkodziłem wzrok i straciłem część słuchu. Przez pół roku tylko leżałem na stołach operacyjnych.

Lewe rękę złożyli z części, założyli śruby i stalowe płytki. Po pięciu miesiącach mogłem nią pracować.

Po urazie w ogóle nie widziałem nic. Jednak lekarzom udało się przywrócić mi odczucie światła. Z mojego oka nie zostało nic poza błoną. Wewnątrz wszystko wymienili — ciało szkliste, soczewki. Wszystko, co możliwe.

W 2013 roku Żenia poszedł uczyć się do szkoły dla dzieci z zaburzeniami wzroku. Nauczyciel informatyki, który był całkowicie niewidomy, nauczył go ponownie korzystać z komputera. Używa się do tego specjalnych programów — czytników ekranu. Odwołują się one do API systemów operacyjnych, aby uzyskać dostęp do interfejsu i nieco zmienić sposób obsługi.

Żenia nazywa siebie zapalonym użytkownikiem Linuksa, korzysta z Debiana. Za pomocą klawiatury przemieszcza się po elementach interfejsu, a syntezator mowy odczytuje, co się dzieje.

„Teraz usłyszysz po prostu kosmos”, mówi mi przed włączeniem programu.

Brzmi to jak szyfr lub kosmiczny bełkot, ale w rzeczywistości to po prostu zwykły język rosyjski lub angielski, tylko że syntezator mówi z niesamowitą prędkością, która dla nieprzeszkolonego ucha jest szokująca.

„Nauka tego nie była trudna. Na początku pracowałem na Windowsie i używałem programu do czytania ekranu Jaws. Używałem go i myślałem, ‚Boże, jak można pracować z tak wolną prędkością’. Zwiększałem i zauważyłem, że uszy mi się zwijają. Wróciłem do wcześniejszej prędkości i stopniowo zwiększałem co tydzień o 5-10 procent. Przyspieszyłem syntezator do stu słów, potem jeszcze więcej, jeszcze i jeszcze. Teraz mówi mi tysiąc słów na minutę.”

Żenia pisze w zwykłym edytorze tekstu — Gedit lub Nano. Kopiuje źródła z Gita, uruchamia czytnik ekranu i słucha kodu. Aby inni programiści mogli go bez problemu czytać i rozumieć, powszechnie używa linterów i konfiguracji. Ale Żenia nie może korzystać ze środowisk programistycznych, ponieważ są niedostępne dla niewidomych z powodu swojej implementacji.

„Są one zbudowane w ten sposób, że ich okno jest rozpoznawane przez system, a wszystko, co znajduje się wewnątrz okna, jest niewidoczne dla czytnika ekranu, ponieważ nie ma dostępu. Skontaktowałem się teraz bezpośrednio z JetBrains, aby spróbować wprowadzić pewne poprawki do ich środowisk. Przesłali mi źródła PyCharm. IDE jest zaimplementowane na Intellij Idea, więc wszystkie zmiany można będzie zastosować zarówno tam, jak i tam”.

Inną przeszkodą jest brak przestrzegania ogólnych standardów w sieci. Na przykład widzimy na stronie duży nagłówek. Wielu deweloperów stosuje znacznik span, aby dostosować rozmiar czcionki, przez co wygląda to dobrze. Ale ponieważ tekst nie jest nagłówkiem w systemie, czytnik ekranu nie rozpoznaje go jako elementu menu i nie pozwala na interakcję.

Żenia łatwo korzysta z mobilnej wersji „VKontakte”, ale omija Facebooka: „VK jest dla mnie wygodne, ponieważ ma osobny spis menu nawigacyjnego. Są tam elementy i nagłówki, które są dla mnie semantycznym podziałem strony. Na przykład nagłówek pierwszego poziomu, w którym podany jest mój pseudonim — wiem, że to jest tytuł strony. Wiem, że nagłówek „wiadomości” dzieli stronę, a poniżej znajduje się lista dialogów.”

Facebook promuje dostępność, ale w praktyce jest tak źle, że nic nie można zrozumieć. Otwieram go — program zaczyna się zawieszać, strona strasznie się zacina, wszystko skacze. Wszędzie same przyciski i ja myślę: „jak w ogóle można z tym pracować?!” Będę go używać tylko wtedy, gdy dopracuję swój klient lub podłączę zewnętrzny.”

Badania

Żenia mieszka w Władywostoku w zwykłym akademiku uniwersyteckim. Łazienka w pokoju, dwie szafy, dwa łóżka, dwa biurka, dwie półki, lodówka. Żadnych specjalnych gadżetów, ale jak twierdzi — nie są one potrzebne. „Uszkodzenie wzroku nie oznacza, że nie będę mógł chodzić ani nie znajdę przejścia. Ale może z przyjemnością urządziłbym sobie inteligentny dom, gdybym miał na to środki. Po prostu nie mam pieniędzy, żeby kupować komponenty. Dla studenta wydanie pięciu tysięcy na płytę, żeby ją poeksperymentować — to bardzo niekorzystne.”

Żenia mieszka z dziewczyną, która w dużej mierze pomaga mu w codziennych sprawach: „posmarować kanapki, nalać herbaty, wyprać. Dlatego mam więcej czasu na odpoczynek i zajmowanie się ulubionymi rzeczami.”

Na przykład, Żenia ma zespół muzyczny, w którym gra na gitarze elektrycznej. Nauczył się tego również po kontuzji. W 2016 roku spędził trzy miesiące w ośrodku rehabilitacyjnym, gdzie poprosił nauczyciela o pomoc z gitarą. Na początku grał szwem koszuli, wywróconym na lewą stronę. Potem stworzył mediatory.

„Wziąłem bandaż do wzmacniania nadgarstka, który używają na przykład karatecy, przeciąłem w miejscach rozdzielających palce i naciągnąłem na przedramię. Jest tam piankowy podkład, który chroni nadgarstek przed uszkodzeniami — do niego przyszył mediator, który mój brat wyciął z plastikowej szpatułki. Powstał taki długi plastikowy język, którym gram po strunach — słyszalnie i akordami.”

Eksplozja uszkodziła błony bębenkowe, więc Żenia nie słyszy niskich częstotliwości. Na jego gitarze nie ma szóstej (najniższej) struny, a piąta jest inaczej strojona. Głównie gra partie solowe.

Jednak główne zajęcia to pozostają rozwój i badania.

Proteza ręki

Jak to jest słuchać kodu z prędkością 1000 słów na minutę

Jednym z projektów jest opracowanie protezy kończyn górnych z inteligentnym systemem sterowania. W 2016 roku Żenia zgłosił się do osoby, która zajmowała się opracowaniem protezy i zaczął mu pomagać w testowaniu. W 2017 roku wzięli udział w hackathonie „Neurostart”. W zespole z trzech osób Żenia programował kontrolery niskiego poziomu. Dwóch pozostałych — konstruowało modele i uczyło sieci neuronowe dla systemu sterowania.

Teraz Żenia wziął na siebie całą część programową projektu. Używa opaski Myo Armband do odczytu potencjałów mięśniowych, buduje odpowiednie maski, a na to nakłada modele sieci neuronowych do rozpoznawania gestów — na tym opiera się system sterowania.

„W opasce jest osiem czujników. Przesyłają zmiany potencjałów do dowolnego urządzenia wejściowego. Sam rozebrałem ich SDK, dekompilowałem wszystko, co potrzebne, i pisałem swoją bibliotekę w Pythonie do odczytu danych. Oczywiście danych brakuje. Nawet jeśli zawieszę miliard czujników na skórze, i tak będzie ich za mało. Skóra porusza się nad mięśniami, a dane się mieszają.”

W przyszłości Żenia planuje umieścić pod skórą i w mięśniach kilka czujników. Chciałby spróbować tego już teraz, ale w Rosji takie operacje są zabronione. Jeśli chirurg wszczepi człowiekowi niecertyfikowane urządzenie pod skórę, straci dyplom. Niemniej jednak, jeden czujnik Żenia wszył w rękę — znacznik RFID, jak w elektronicznych kluczach, aby otwierać domofon lub każde zamki, do których klucz będzie przypisany.

Sztuczne oko

Razem z Bogdanem Szegłowem, biochemikiem i biofizykiem, Żenia pracuje nad prototypem sztucznego oka. Bogdan zajmuje się modelowaniem 3D gałki ocznej i połączeniem wszystkich układów scalonych w trójwymiarowym modelu z nerwem wzrokowym, Żenia buduje model matematyczny.

„Zbadaliśmy tonę literatury na temat istniejących analogów, technologii, które były na rynku i są teraz, i zrozumieliśmy, że rozpoznawanie obrazów nie jest aktualne. Z kolei dowiedzieliśmy się, że wcześniej stworzono matrycę do rejestracji fotonów i ich energii. Postanowiliśmy opracować podobną matrycę w zmniejszonej formie, która byłaby w stanie rejestrować przynajmniej minimalny zestaw fotonów i na ich podstawie generować impuls elektryczny. W ten sposób pozbywamy się pośredniej warstwy ostrego obrazu i jego rozpoznawania — po prostu pracujemy bezpośrednio.”

W wyniku powstanie wzrok nieco inny niż w klasycznym rozumieniu. Ale jak mówi Żenia, reszta nerwu wzrokowego powinna odbierać impulsy elektryczne w ten sam sposób, jak od prawdziwego oka. W 2018 roku omawiali projekt z rektorem Morskiego Uniwersytetu Technicznego Glebem Turiścinem i mentorką Skolkowo Olgą Wielićko. Oni potwierdzili, że to zadanie można rozwiązać przy użyciu technologii, które już istnieją na świecie.

„Ale to zadanie jest jeszcze trudniejsze niż opracowywanie protez. Nie możemy nawet przeprowadzić eksperymentu na żabach, aby sprawdzić, jak dobrze siatkówka generuje impulsy, jak zależą one od różnego światła, który obszar generuje więcej, a który mniej. Potrzebne są fundusze, które pozwolą nam wynająć laboratorium i zatrudnić ludzi, aby rozbić zadania i skrócić terminy. Plus koszty wszystkich niezbędnych materiałów. Zazwyczaj wszystko sprowadza się do pieniędzy.”

Biurokracja

Bohdan i Żenia zwrócili się do Skolkovo o finansowanie, ale dostali odmowę — trafiają tam tylko gotowe produkty z potencjałem komercyjnym, a nie projekty badawcze na etapie początkowym.

Pomimo niezwykłości historii Żeni, jego umiejętności i inspirujących sukcesów — dziwi dziwne biurokratyczne nieszczęście. To szczególnie przykre słyszeć na tle wiadomości. Oto kolejny «produkt potrzebny ludziom» (aplikacja do zdjęć, optymalizacja reklamy lub nowe rodzaje czatów) zarabia miliony dolarów przychodu i inwestycji. A nieznany entuzjasta nie wie, co zrobić ze swoimi pomysłami.

W tym roku Żenia wygrał bezpłatne półroczne szkolenie w Austrii w ramach programu partnerskiego między uczelniami — ale nie może tam pojechać. Do potwierdzenia wizy potrzebne są gwarancje, że ma pieniądze na zakwaterowanie i życie w Salzburgu.

«Skontaktowanie się z funduszami nie przyniosło rezultatów, ponieważ finansowanie odbywa się tylko na pełne programy dyplomowe», — mówi Żenia, — «Kontakt z samym Uniwersytetem w Salzburgu również — uczelnia nie ma swoich akademików i nie może nam pomóc z zakwaterowaniem.

Napisałem do dziesięciu funduszy i tylko trzy lub cztery mi odpowiedziały. Przy czym odpowiedziały, że mój stopień naukowy im nie odpowiada — potrzebują magistrów i wyżej. Moje osiągnięcia naukowe na poziomie licencjatu nie są u nich uznawane. Jeśli studiujesz w lokalnej uczelni, jesteś licencjatem i zajmujesz się badaniami technicznymi, w ramach uczelni możesz złożyć dokumenty. Dla osoby z zagranicy niestety nie mają takiej możliwości.

Zwróciłem się mniej więcej do tyle samo rosyjskich funduszy. W Skolkovo powiedzieli mi: przepraszam, ale pracujemy tylko z magistrami. W innych funduszach mówili mi, że nie mają finansowania na pół roku, albo również współpracują tylko z programami dyplomowymi, albo nie finansują osób fizycznych. A z funduszy Prochorowa i Potanina nawet nie dostałem odpowiedzi.

Z Yandexa przyszło mi pismo, że zajmują się dużą działalnością charytatywną i firma obecnie nie ma finansowania, ale życzą mi wszystkiego najlepszego.

Byłem nawet gotów zgodzić się na finansowanie celowe w formie kontraktu, co pozwoliłoby mi pojechać na studia, a w rezultacie przywieźć coś dla firmy. Ale wszystko zatrzymuje się na niskim poziomie komunikacji. Rozumiem, z czym to się wiąże. Ludzie, którzy pracują w telefonach i e-mailach, po prostu działają według dokumentów. Widzą, że wpłynął wniosek, który może być nawet niezły. Ale napiszą: przepraszam, nie, ponieważ albo upłynął termin wniosku, albo nie pasujesz pod kątem statusu. Nie mam możliwości dotarcia gdzieś wyżej do właścicieli funduszu, po prostu nie mam takich kontaktów.

Jednak posty o problemie Żeni zaczęły szybko rozchodzić się po mediach społecznościowych. W ciągu pierwszych kilku dni zebrano około 50 000 rubli — z wymaganych 12 000 euro. Czasu na zbiórki jest mało, ale Żenie już wielu pisze o wsparciu. Może się uda.

Chciałbym zakończyć ten długi tekst powrotem bohatera z Austrii z nowym, wspaniałym doświadczeniem. Albo uzyskaniem grantu na jeden z projektów i zdjęciem z nowej laboratorium. Ale tekst zatrzymał się w pokoju akademika, gdzie są dwie szafy, dwa łóżka, dwa biurka, dwie półki i lodówka.

Uważam, że duże profesjonalne społeczności są potrzebne, by wspierać się nawzajem. Żenie Nekrasowowi potrzebne są pieniądze, przydatne kontakty, pomysły, porady, wszystko co się da. Podnieśmy sobie karma.

Kontakty Żeni i inne ważne danee-mail: evgeniy@nekrasov.pw
Telefon: +7-914-968-93-21
Telegram i WhatsApp: +7-999-057-85-48
github: github.com/Ravino
vk.com: vk.com/ravino_doul

Dane do przelewu:
Numer karty: 4276 5000 3572 4382 lub według numeru telefonu +7-914-968-93-21
Portfel Yandex według numeru telefonu +7-914-968-93-21

Odbiorca: Nekrasow Jewgienij

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster