Як це слухати код зі швидкістю 1000 слів за хвилину

Історія маленької трагедії та великих перемог дуже гарного розробника, якому потрібна допомога

Як це слухати код зі швидкістю 1000 слів за хвилину

У Далекосхідному Федеральному Університеті є центр проектної діяльності — там магістри та бакалаври знаходять для себе інженерні проекти, які вже мають замовників, гроші та перспективи. Ще там проводяться лекції та інтенсивні. Досвідчені фахівці розповідають про сучасні та прикладні речі.

Один з інтенсивностей був присвячений застосуванню системи контейнеризації Docker для розподілених обчислень та оркестрації. На нього прийшли магістри та аспіранти прикладної математики, інженерії, підготовки ПЗ та інших технічних напрямків.

Викладачем був хлопець у темних окулярах, із модною зачіскою, у шарфі, товариський та надто впевнений — особливо для 21-річного студента другого курсу. Його звуть Євген Некрасов, він вступив до ДВФУ лише два роки тому.

Вундеркінд

«Так, вони були старші й статусніші, але не можу сказати, що досвідченіші. Крім цього, я іноді вів лекції своїм одногрупникам за нашого викладача. У якийсь момент ми зрозуміли, що більше нічого за Об'єктно-орієнтованим програмуванням він мені дати не може, тому періодично я читав за нього лекції про ООП, сучасну розробку, GitHub, застосування систем контролю версій».

Як це слухати код зі швидкістю 1000 слів за хвилину

Євген може писати на Scala, Clojure, Java, JavaScript, Python, Haskell, TypeScript, PHP, Rust, C++, C та Assembler. «JavaScript я знаю краще, решта — на рівень, на два нижче. Але запрограмувати контролер на Rust або C++ зможу за годину. Я не вчив ці мови цілеспрямовано. Я вивчав їх під завдання, що мені ставили. Я можу влитися у будь-який проект, вивчивши документацію та мануали. Я знаю синтаксиси мов, і яку саме використовувати, особливого значення не має. Так само з фреймворками та бібліотеками достатньо почитати документацію, і я розумію, як це працює. Все визначає предметна область та завдання».

Євген форсовано вивчає програмування з 2013 року. Шкільний вчитель інформатики, який був сліпим, зацікавив його комп'ютерними науками. Шлях почався з Інтернету - HTML, JavaScript, PHP.

"Мені просто цікаво. Я мало сплю — постійно чимось зайнятий, читаю, вивчаю».

2015 року Євген подав заявку на конкурс „Розумник” щодо підтримки технічних проектів молодих учених від вісімнадцяти років. Але йому вісімнадцяти не було, тож виграти у конкурсі не вдалося — натомість Євгенія помітила місцеву спільноту розробників. Він познайомився із Сергієм Мілехіним, який на той момент організовував конференції у Владивостоці в рамках Google Developer Fest. «Він запросив мене туди, я прийшов, послухався, мені сподобалося. Наступного року прийшов знову, дедалі більше знайомився з людьми, спілкувався».

Андрій Ситник із спільноти VLDC став допомагати Євгену з його веб-проектами. «Мені було необхідно побудувати багатопотокову програму для обробки веб-сокету. Я дуже довго думав, як це зробити на PHP, і звернувся до Андрія. Він мені сказав: „Візьми node.js, npm-пакети, які є в інтернеті, і не ламай голову. І взагалі рухати опенсорс – круто”. Тому я підтягнув англійську, почав читати документації та викладати проекти на Гітхаб».

У 2018 році Євген уже виступав на Google Dev Fest зі своїми доповідями, говорив про напрацювання в області доступних інтерфейсів, протезів верхніх кінцівок, розробку нейроінтерфейсів та систем управління безконтактного доступу. Нині Євген навчається на другому курсі бакалаврату за напрямом „Програмна інженерія”, але вже успішно її закінчив та дописує підсумкову роботу.

«Мені сказали реалізувати структуру даних у хеш-таблиці. Це стандартна штука, яку дають усім у виші. У мене вийшло 12 тисяч рядків коду та купа милиць», — каже Євген зі сміхом, — «Я побудував хеш-таблицю та її видозмінену структуру на JavaScript, щоб швидше зчитувати дані. А викладач каже: „Мені треба, щоб ти написав, як простіше мені, щоб я могла це оцінити”. Було дуже прикро».

Набагато цікавіше виглядають особисті проекти Євгена. Перший — це розробка веб-стандартів для людей з фізичними обмеженнями. Він хоче створити ресурс, що містить асистивну технологію з коробки, щоб люди з порушеннями зору могли легко ними користуватися та не сумніватися, що якась інформація виявиться їм недоступною. Євген добре знає цю проблему, бо втратив зір сам.

Травма

«Раніше я був звичайним підлітком, з усіма кінцівками на місці. 2012 року я підірвався. Вийшов із товаришем прогулятися, підібрав на вулиці балон, і він рвонув у мене в руках. Мені відірвало праву кисть, покалічило ліву, пошкодило зір, понизило слух. Півроку я просто валявся на операційних столах.

Ліву кисть зібрали частинами, поставили пластини та спиці. Через п'ять місяців я зміг їй працювати.

Після травми взагалі нічого не бачив. Але лікарям удалося відновити світловідчуття. Від мого ока у мене не залишилося нічого, крім оболонки. Усередині всі замінили склоподібні тіла, кришталики. Все, що можна.

У 2013 році Женя пішов навчатися в корекційну школу для дітей з порушеннями зору. Той вчитель інформатики, який був сліпим, навчив його користуватися комп'ютером заново. Для цього використовуються спеціальні програми – скринрідери. Вони звертаються до операційних систем API, щоб отримати доступ до інтерфейсу і трохи змінити спосіб управління.

Женя називає себе затятим лінуксоїдом, він використовує Debian. За допомогою клавіатури він переміщається елементами інтерфейсу, а синтезатор мови озвучує те, що відбувається.

"Зараз ти почуєш просто космос", - говорить він мені перед тим, як включити програму.

Це звучить як шифр чи інопланетна балаканина, але насправді — звичайна російська чи англійська мова, просто синтезатор говорить із неймовірною для нетренованого слуху швидкістю.

«Вчитися цьому було не важко. Спочатку я працював у Windows та використовував програму екранного доступу Jaws. Користувався і думав, „пане, як можна на такій повільній швидкості працювати”. Збільшив і зрозумів, що вуха згортаються у трубочку. Повернув назад і поступово почав нарощувати щотижня на 5–10 відсотків. Розігнав синтезатор до ста слів, потім ще більше, ще й ще. Зараз він у мене каже тисячу слів за хвилину».

Женя пише у звичайному текстовому редакторі – Gedit чи Nano. Копіює з гітхабу вихідники, запускає скринрідер та слухає код. Щоб його могли без проблем читати та розуміти інші розробники, він повсюдно використовує лінтери та конфігурації. Але Женя не може використовувати середовища розробки, тому що вони недоступні незрячим через свою реалізацію.

«Вони зроблені таким чином, що їхнє вікно визначається системою, а все, що всередині вікна, — скринрідер не бачить, бо не може отримати доступу. Я зараз зв'язався з JetBrains безпосередньо, щоб спробувати внести деякі патчі в їхнє середовище. Вони скинули мені вихідні коди PyCharm. IDE реалізована на Intellij Idea, тому всі зміни можна буде застосувати і там, і там.

Інша перешкода - недотримання загальних стандартів у Інтернеті. Наприклад, бачимо на сторінці великий заголовок. Багато розробників реалізують його за допомогою тега span, щоб підтягнути шрифт до потрібного розміру, і це виглядає нормально. Але оскільки текст не є заголовком для системи, то скринрідер його не розпізнає як елемент меню, і не дає взаємодіяти.

Женя легко користується мобільною версією «Вконтакте», але оминає Facebook: «VK для мене зручна, тому що там є окремий список меню навігації. У ньому елементи та заголовки, які є для мене семантичним поділом сторінки. Наприклад, заголовок першого рівня, де вказаний мій псевдонім - я знаю, що це назва сторінки. Знаю, що заголовок „повідомлення” поділяє сторінку, і нижче йде список діалогів.

Фейсбук пропагує доступність, але насправді так погано, що нічого неможливо зрозуміти. Я відкриваю його - і програма починає виснути, сторінка моторошно гальмує, у мене все скаче. Скрізь суцільні кнопки, і я такий: „як взагалі із цим працювати?!” Буду ним користуватися тільки якщо допилю свій клієнт або підключу сторонній».

дослідження

Женя живе у Владивостоці у звичайному університетському гуртожитку. Санвузол у кімнаті, дві шафи, два ліжка, два столи, дві полиці, холодильник. Жодних спеціальних гаджетів, але за його словами — вони й не потрібні. «Порушення зору не означає, що я не зможу ходити чи знайду прохід. Але я б може і з радістю обладнав собі розумний будинок, якби я мав витратні матеріали. У мене банально нема грошей купувати компоненти. Для студента витратити п'ять тисяч на плату, щоб її потикати це дуже невигідно».

Женя живе з дівчиною, вона багато в чому допомагає по побуту: бутерброди намазати, чаю налити, випрати. Тому в мене з'явилося більше часу на відпочинок та зайняття улюбленими справами».

Наприклад, у Жені є музичний гурт, де він грає на електрогітарі. Навчився він також після травми. У 2016 році він три місяці провів у центрі реабілітації, де попросив допомогти з гітарою викладача. Спочатку грав швом сорочки, вивернутої навиворіт. Потім спорудив медіатор.

«Я взяв бандаж для зміцнення пензля, який використовують, наприклад, каратисти, розпоров у місцях розділювачів пальців і натягнув на передпліччя. Там є поролонова подушечка, яка захищає кисть від пошкоджень — до неї я приштопав медіатор, який брат вирізав мені з пластикового шпателя. Вийшла така довга пластикова мова, якою я граю по струнах — перебором і боєм».

Вибух вибив барабанні перетинки, тому Женя не чує низьких частот. На його гітарі немає шостої (найнижчої) струни, а п'ята налаштована інакше. Грає він переважно соло-партії.

Але головними заняттями залишаються розробка та дослідження.

Протез руки

Як це слухати код зі швидкістю 1000 слів за хвилину

Один із проектів — розробка протезу верхніх кінцівок із розумною системою управління. У 2016 році Женя прийшов до людини, яка займалася розробкою протезу і стала допомагати йому з тестуванням. У 2017 році вони взяли участь у хакатоні „Нейростарт”. У команді із трьох чоловік Женя програмував низькорівневі контролери. Ще двоє — конструювали самі моделі та навчали нейронні мережі для системи керування.

Зараз Женя взяв усю програмну частину проекту на себе. Він використовує браслет Myo Armband для зчитування потенціалів м'язів, будує маски і зверху застосовує моделі нейронних мереж для розпізнавання жестів — на цьому будується система управління.

«У браслеті вісім датчиків. Вони передають зміни потенціалів будь-який пристрій введення. Я власноруч потрошив їх SDK, декомпілював все, що треба, і писав свою лібу на Python для зчитування даних. Даних, звісно, ​​не вистачає. Навіть якщо я повішу мільярд датчиків на шкіру, все одно не вистачить. Шкірний покрив рухається над м'язами і дані перемішуються».

У майбутньому Женя планує закріпити під шкірою та у м'язах кілька датчиків. Він спробував би це вже зараз — але в Росії заборонені подібні операції. Якщо хірург вживить людині під шкіру несертифіковане обладнання, то втратить диплом. Тим не менш, один датчик Женя зашив у руку - rfid-мітку, як в електронних ключах, щоб відкривати домофон або будь-який замок, до якого ключ буде прив'язаний.

Штучне око

Разом із Богданом Щегловим, біохіміком та біофізиком, Женя працює над прототипом штучного ока. Богдан займається 3D-моделюванням очного яблука та з'єднанням усіх мікросхем у тривимірній моделі з зоровим нервом, Женя будує математичну модель.

«Ми вивчили тонну літератури за існуючими аналогами, технологіями, які були на ринку і є зараз, і зрозуміли, що розпізнавати зображення — це не є актуальним. Натомість дізналися, що раніше було створено матрицю для реєстрації фотонів та їхньої енергії. Вирішили розробити подібну матрицю у зменшеному розмірі, яка була б здатна реєструвати хоча б мінімальний набір фотонів та на їх основі будувати електричний імпульс. Таким чином, ми позбавляємося проміжного шару чіткого зображення та його розпізнавання — ми просто працюємо безпосередньо».

В результаті вийде зір не зовсім у класичному розумінні. Але як каже Женя, залишок зорового нерва має сприймати подачу електричних імпульсів так само, як від справжнього ока. У 2018 році вони обговорювали проект із ректором Морського технічного університету Глібом Турищиним та ментором Сколковою Ольгою Величко. Ті підтвердили, що це завдання можна вирішити за допомогою технологій, які вже є у світі.

«Але це завдання набагато складніше, ніж розробка протезів. Ми не можемо навіть провести експеримент на жабах, щоб перевірити, наскільки якісно сітківка генерує імпульси, як вони залежать від різного світла, яка ділянка генерує більше, якою менше. Потрібне фінансування, яке дозволить нам орендувати лабораторію та найняти людей, щоб декомпозувати завдання та скоротити терміни. Плюс витрати на всі потрібні матеріали. Як правило, все впирається у гроші».

бюрократія

Богдан та Женя звернулися до Сколкового за фінансуванням, але отримали відмову — туди потрапляють лише готові продукти з комерційним потенціалом, а не дослідні проекти на стадії зародження.

За всієї неординарності в історії Жені, за його здібностей та надихаючих успіхів — дивує дивне бюрократичне невдача. Про це особливо прикро слухати на тлі новин. Ось черговий продукт потрібний людям (додаток для фото, оптимізація реклами або нові види чатиків) отримує свої мільйони доларів виручки та інвестицій. А ось нікому невідомий ентузіаст не знає, що робити зі своїми ідеями.

Цього року Женя виграв безкоштовне піврічне навчання в Австрії за партнерською програмою між вишами, але не може туди поїхати. Для підтвердження візи потрібні гарантії, що має гроші на житло і життя в Зальцбурзі.

«Звернення до фондів не дало результатів, тому що фінансування здійснюється лише на повні дипломні програми», — каже Женя, — «Звернення до самого університету Зальцбурга теж — вуз не має своїх гуртожитків і не може допомогти нам із проживанням.

Я написав у десять фондів, і з них мені відповіли лише три чи чотири. Причому відповіли, що мій науковий ступінь їм не підходить — їм потрібні магістри й вищі. Мої наукові напрацювання у бакалавріаті у них не котируються. Якщо ти навчаєшся у місцевому виші, ти бакалавр і займаєшся технічними дослідженнями, то в рамках вишу ти можеш подати документи. А для людини з-за кордону у них такої, на жаль, немає.

Я звернувся приблизно до стільки ж російських фондів. У Сколковому мені сказали: вибач, але ми працюємо лише з магістрами. В інших фондах мені казали, що вони не мають фінансування на півроку, або вони так само працюють лише з дипломними програмами, або вони не фінансують фізичних осіб. А з фондів Прохорова та Потаніна мені навіть не відповіли.

Від Яндекса мені надійшов лист, що вони займаються великою благодійністю і компанія зараз не має фінансування, але вони бажають мені всього найкращого.

Я був навіть згоден на контрактно-цільове фінансування, яке б дозволило мені поїхати відучитися, а за підсумками я б привіз щось для компанії. Але все зупиняється на низький рівень комунікації. Я розумію, із чим це пов'язано. Люди, які працюють на телефонних дзвінках і поштою, працюють просто за документами. Бачать, що надійшла заявка, вона може бути навіть класною. Але напишуть: вибач, ні, бо або минув термін заявки, або ти не підходиш за статусом. А вийти кудись вище на власників фонду я не маю можливості, просто немає таких контактів».

Але пости про Женину проблему почали швидко розходитися по соцмережах. За перші кілька днів зібрали близько 50 000 рублів - з необхідних 12 000 євро. Часу на збори небагато, але Жені вже багато хто пишуть про підтримку. Можливо, все вийде.

Я був би радий закінчити цей довгий текст на поверненні героя з Австрії з новим досвідом. Або на одержанні гранту на один із проектів, і фотографією з нової лабораторії. Але текст зупинився в кімнаті гуртожитку, де дві шафи, два ліжка, два столи, дві полиці, холодильник.

Мені здається, великі професійні спільноти потрібні, щоб допомагати один одному. Жені Некрасову потрібні гроші, корисні контакти, ідеї, поради, що завгодно. Давайте піднімемо собі карму.

Контакти Жені та інші важливі цифриe-mail: [захищено електронною поштою]
Телефон: +7-914-968-93-21
Telegramm and WhatsApp: +7-999-057-85-48
github: github.com/Ravino
vk.com: vk.com/ravino_doul

Реквізити для переказу коштів:
Номер картки: 4276 5000 3572 4382 або за номером телефону +7-914-968-93-21
Яндекс гаманець за номером телефону +7-914-968-93-21

Адресат: Некрасов Євген

Джерело: habr.com

Додати коментар або відгук