История маленькой трагедии и больших побед очень хорошего разработчика, которому нужна помощь
В Дальневосточном Федеральном Университете есть центр проектной деятельности — там магистры и бакалавры находят для себя инженерные проекты, у которых уже есть заказчики, деньги и перспективы. Еще там проводятся лекции и интенсивы. Опытные специалисты рассказывают о современных и прикладных вещах.
Один из интенсивов был посвящен применению системы контейнеризации Docker для распределённых вычислений и оркестрации. На него пришли магистры и аспиранты прикладной математики, инженерии, подготовки ПО и других технических направлений.
Преподавателем был парень в темных очках, с модной прической, в шарфе, общительный и слишком уверенный — особенно для 21-летнего студента второго курса. Его зовут Евгений Некрасов, он поступил в ДВФУ всего два года назад.
Вундеркинд
«Да, они были старше и статуснее, но не могу сказать, что опытнее. Помимо этого я иногда вел лекции своим одногруппникам за нашего преподавателя. В какой-то момент мы поняли, что больше ничего по Объектно Ориентированному Программированию он мне дать не может, поэтому периодически я читал за него лекции про ООП, современную разработку, GitHub, применение систем контроля версий».
Евгений может писать на 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 он три месяца провел в центре реабилитации, где попросил помочь с гитарой преподавателя. Поначалу играл швом рубашки, вывернутой наизнанку. Затем соорудил медиатор.
«Я взял бандаж для укрепления кисти, который используют, например, каратисты, распорол в местах разделителей пальцев и натянул на предплечье. Там есть поролоновая подушечка, которая защищает кисть от повреждений — к ней я приштопал медиатор, который мне брат вырезал из пластикового шпателя. Получился такой длинный пластиковый язык, которым я играю по струнам — перебором и боем».
Взрыв вышиб барабанные перепонки, поэтому Женя не слышит низких частот. На его гитаре нет шестой (самой низкой) струны, а пятая настроена иначе. Играет он в основном соло-партии.
Но главными занятиями остаются разработка и исследования.
Протез руки
Один из проектов — разработка протеза верхних конечностей с умной системой управления. В 2016 году Женя пришел к человеку, который занимался разработкой протеза и стал помогать ему с тестированием. В 2017 году они приняли участие в хакатоне „Нейростарт”. В команде из трех человек Женя программировал низкоуровневые контролеры. Еще двое — конструировали сами модели и учили нейронные сети для системы управления.
Сейчас Женя взял всю программную часть проекта на себя. Он использует браслет Myo Armband для считывания потенциалов мышц, строит по ним маски и сверху применяет модели нейронных сетей для распознавания жестов — на этом строится система управления.
«В браслете восемь датчиков. Они передают изменения потенциалов на любое устройство ввода. Я собственноручно потрошил их SDK, декомпилировал все, что надо, и писал свою либу на Python для считывания данных. Данных, конечно, не хватает. Даже если я повешу миллиард датчиков на кожу, все равно не хватит. Кожный покров двигается над мышцами, и данные перемешиваются».
В будущем Женя планирует закрепить под кожей и в мышцах несколько датчиков. Он бы попробовал это уже сейчас — но в России запрещены подобные операции. Если хирург вживит человеку под кожу несертифицированное оборудование, то лишится диплома. Тем не менее, один датчик Женя зашил в руку — rfid-метку, как в электронных ключах, чтобы открывать домофон или любой замок, к которому ключ будет привязан.
Искусственный глаз
Вместе с Богданом Щегловым, биохимиком и биофизиком, Женя работает над прототипом искусственного глаза. Богдан занимается 3D-моделированием глазного яблока и соединением всех микросхем в трехмерной модели со зрительным нервом, Женя строит математическую модель.
«Мы изучили тонну литературы по существующим аналогам, технологиям которые были на рынке и есть сейчас, и поняли, что распознавать изображения — это не актуально. Зато узнали, что ранее была создана матрица для регистрации фотонов и их энергии. Решили разработать подобную матрицу в уменьшенном размере, которая была бы способна регистрировать хотя бы минимальный набор фотонов и на их основе строить электрический импульс. Таким образом мы избавляемся от промежуточного слоя четкого изображения и его распознавания — мы просто работаем напрямую».
В результате получится зрение не совсем в классическом понимании. Но как говорит Женя, остаток зрительного нерва должен воспринимать подачу электрических импульсов так же, как от настоящего глаза. В 2018 году они обсуждали проект с ректором Морского технического университета Глебом Турищиным и ментором Сколково Ольгой Величко. Те подтвердили, что эту задачу можно решить с помощью технологий, которые уже есть в мире.
«Но эта задача еще сложнее, чем разработка протезов. Мы не можем даже провести эксперимент на лягушках, чтобы проверить, насколько качественно сетчатка генерирует импульсы, как они зависят от разного света, какой участок генерирует больше, какой меньше. Нужно финансирование, которое позволит нам арендовать лабораторию и нанять людей, чтобы декомпозировать задачи и сократить сроки. Плюс затраты на все необходимые материалы. Как правило, все упирается в деньги».
Бюрократия
Богдан и Женя обратились в Сколково за финансированием но получили отказ — туда попадают только готовые продукты с коммерческим потенциалом, а не исследовательские проекты на стадии зарождения.
При всей неординарности в истории Жени, при его способностях и вдохновляющих успехах — удивляет странное бюрократическое невезение. Про это особенно досадно слушать на фоне новостей. Вот очередной «продукт нужный людям» (приложение для фото, оптимизация рекламы или новые виды чатиков) получает свои миллионы долларов выручки и инвестиций. А вот никому неизвестный энтузиаст не знает, что делать со своими идеями.
В этом году Женя выиграл бесплатное полугодовое обучение в Австрии по партнерской программе между вузами — но не может туда поехать. Для подтверждения визы нужны гарантии, что у него есть деньги на жилье и жизнь в Зальцбурге.
«Обращение в фонды не дало результатов, потому что финансирование осуществляется только на полные дипломные программы», — говорит Женя, — «Обращение в сам университет Зальцбурга тоже — вуз не имеет своих общежитий и не может помочь нам с проживанием.
Я написал в десять фондов, и из них мне ответили только три или четыре. Причем ответили, что моя научная степень им не подходит — им нужны магистры и выше. Мои научные наработки в бакалавриате у них не котируются. Если ты учишься в местном вузе, ты бакалавр и занимаешься техническими исследованиями, то в рамках вуза ты можешь подать документы. А для человека из-за рубежа у них такого, к сожалению, нет.
Я обратился приблизительно в столько же русских фондов. В Сколково мне сказали: прости, но мы работаем только с магистрами. В других фондах мне говорили, что у них нет финансирования на полгода, либо они так же работают только с дипломными программами, либо они не финансируют физических лиц. А из фондов Прохорова и Потанина мне даже не ответили.
От Яндекса мне пришло письмо, что они занимаются большой благотворительностью и у компании сейчас нет финансирования, но они желают мне всего самого лучшего.
Я был даже согласен на контрактно-целевое финансирование, которое позволило бы мне поехать отучиться, а по итогам я бы привез что-то для компании. Но все останавливается на низком уровне коммуникации. Я понимаю, с чем это связано. Люди которые работают на телефонных звонках и почте — работают просто по документам. Видят, что пришла заявка, она может быть даже классной. Но напишут: прости, нет, потому что либо истек срок заявки, либо ты не подходишь по статусу. А выйти куда-то выше на владельцев фонда у меня нет возможности, просто нет таких контактов».
Но посты о Жениной проблеме начали быстро расходится по соцсетям. За первые несколько дней собрали около 50 000 рублей — из необходимых 12 000 евро. Времени на сборы немного, но Жене уже многие пишут о поддержке. Возможно, все получится.
Я был бы рад закончить этот длинный текст на возвращении героя из Австрии с новым мощнейшим опытом. Или на получении гранта на один из проектов, и фотографией из новой лаборатории. Но текст остановился в комнате общаги, где два шкафа, две кровати, два стола, две полки, холодильник.
Мне кажется, большие профессиональные сообщества нужны чтобы помогать друг другу. Жене Некрасову нужны деньги, полезные контакты, идеи, советы, все что угодно. Давайте поднимем себе карму.
Контакты Жени и прочие важные цифры
e-mail: evgeniy@nekrasov.pw
Телефон: +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
Адресат: Некрасов Евгений
Телефон: +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
Адресат: Некрасов Евгений
UPD: Евгений запустил краудфандинговую кампанию на GoFundMe