Геймдизайнер: Один против индустрии и Apple
Глава 1
Глава 1 — Пробуждение
Сначала был запах.
Едкий, химический — не то стиральный порошок, не то дешёвый освежитель, которым пытались замаскировать что-то худшее. Михаил сморщил нос и попытался повернуться на бок, но тело не послушалось. Оно вообще ощущалось неправильно — лёгкое, ватное, будто он потерял килограммов десять за одну ночь.
Он открыл глаза.
Потолок был серым от трещин, совсем не похожим на белый гипсокартон его съёмной квартиры. Где-то за стеной гудел холодильник — мерзким, высоким звуком, от которого сразу заболела голова. И главное — пахло по-другому. Не родным запахом подъезда и маминых пирожков, а чем-то чужим. Чем-то американским, как в дешёвых фильмах.
Михаил сел. Сердце заколотилось где-то в горле.
Комната была крошечной и захламлённой. Обшарпанный стол, заваленный бумагами и какими-то железками. Плакат с непонятной группой на стене. И зеркало — мутное, в дешёвой пластиковой раме.
Он встал, покачнувшись, и подошёл ближе.
Из зеркала на него смотрел совершенно незнакомый человек. Худое лицо, впалые щёки, глаза с тёмными кругами. Недельная щетина, которую явно не планировал сбривать хозяин этого лица. Михаил поднял руку — отражение сделало то же самое.
— Какого… — начал он и осёкся.
Голос был чужим. Чуть выше, с другой интонацией.
Он опустил взгляд на стол и схватил первую попавшуюся бумажку. Текст был на английском. Латинские буквы поплыли перед глазами, отказываясь складываться в знакомые слова. Михаил напрягся, пытаясь вспомнить школьные уроки. Бесполезно. Он, конечно, учил английский — все учили. Но его максимумом было «Ландон из зе кэпитал оф Грейт Британ» с таким произношением, от которого Вера Павловна, его школьная учительница, готова была рыдать.
Он перевернул бумажку. Ещё один документ, на этот раз с фотографией. Его новое лицо — и имя внизу. Буквы сложились с трудом.
— Марк Андерсон, — прочитал он вслух, и это прозвучало как «Марк Андэрсон» с жутким русским акцентом.
Его передёрнуло.
Следующий час он провёл, лихорадочно перебирая вещи. Чужая одежда в шкафу — джинсы, футболки с непонятными надписями. Ноутбук на столе — старый, тяжёлый, весь в царапинах. Когда Михаил нажал кнопку включения, тот загудел, как турбина самолёта, и минут пять загружал систему. Весь интерфейс, разумеется, был на английском.
И тут до Михаила по-настоящему дошло.
Он не просто в чужой квартире. Он в чужой стране. В теле человека, который, судя по бумагам на столе — он смог разобрать только цифры и грозные красные штампы — был по уши в долгах и явно не ждал ничего хорошего от жизни.
Михаил опустился на скрипучую кровать и уставился в стену.
Последнее, что он помнил — это улица. Они с друзьями дурачились после пар, и Серёга всё совал ему в руки свою портативную консоль. «Да попробуй ты, это же крутая игра!» Михаил отмахивался — он никогда не был геймером. Компьютером пользовался для учёбы и соцсетей, а игры… ну, в детстве был «Сапёр», и хватит. Но Серёга не отставал, и Михаил сдался. Экран загорелся, он нажал какую-то кнопку — и тут фары. Яркие. Резкий звук. Темнота.
А теперь это.
Он потёр лицо ладонями. Кожа была чужой на ощупь. Ладони — тоже чужие. Тонкие пальцы, без единой мозоли. Этот Марк явно не держал в руках ничего тяжелее компьютерной мышки.
Михаил вздохнул и попытался рассуждать логически. Фантастика фантастикой, но он здесь. Значит, надо как-то жить. Первым делом — понять, кто он такой и чем занимался. Вдруг этот Марк богатый наследник? Или хотя бы просто обеспеченный человек?
Быстрый осмотр бумаг убил эту надежду.
Счета. Просроченные. С красными предупреждениями, смысл которых он не мог разобрать, но тон улавливал без перевода: «заплати немедленно, или тебе конец». Какие-то письма с логотипами в шапке — яркие, явно от игровых студий. Михаил напряг зрение, пытаясь расшифровать хоть что-то, но узнал только одно слово, повторявшееся в каждом письме: «regret». И контекст подсказывал, что ничего хорошего оно не означает.
Марк был разработчиком игр. Или пытался им стать.
Михаил горько усмехнулся. Ему, человеку, который не мог пройти даже обучающий уровень в Серёгиной игре, досталось тело программиста. Ирония судьбы, не иначе.
Он снова посмотрел на ноутбук. Тот наконец загрузился и теперь показывал рабочий стол, забитый иконками с непонятными названиями. Всё на английском. Все папки, все подписи — сплошная абракадабра из чужих букв. Он ткнул в первый попавшийся файл просто наугад.
Окно заполнилось строками кода. Бесконечные ряды символов, скобок, отступов. Это был даже не английский — это был какой-то инопланетный язык, в котором Михаил не понимал ни единого знака. Строчки сливались в серую кашу, и от попытки вчитаться заболели глаза.
Он захлопнул ноутбук и снова лёг на кровать.
На сегодня хватит. Ему нужно просто… принять это. Завтра он попробует разобраться. Может, поищет еду в холодильнике. Может, найдёт словарь и попробует перевести хоть что-то. Может, узнает по карте, где он вообще находится.
А потом — видно будет.
Одно он знал точно: Марк Андерсон был никем. И теперь эта пустая, неприкаянная жизнь принадлежит ему.
С этой мыслью Михаил провалился в беспокойный, тяжёлый сон.
Глава 2
Глава 2 — Чужой язык в голове
Проснулся Михаил от боли.
Не от тупой, ноющей, к какой можно привыкнуть и снова забыться сном. Нет — в череп будто залили расплавленный свинец, и теперь он пульсировал где-то за глазными яблоками, растекался к затылку, отдавался в висках.
Михаил застонал. Звук вышел жалкий, сдавленный.
— Блядь… — прохрипел он и тут же замер.
Слово вырвалось на автомате, на чистом русском. Но где-то на грани сознания, под слоем этой адской рези, шевельнулось что-то ещё. Какое-то странное эхо. Будто мозг хотел сказать это же слово по-другому.
Он осторожно приоткрыл глаза. Комната была залита серым утренним светом. Тот же обшарпанный потолок. Тот же запах химии. Ничего не изменилось.
Кроме одного.
В голове, поверх пульсирующей рези, начали всплывать слова. Не русские. Английские.
Он смотрел на потолок — и вдруг поймал себя на том, что мысленно называет трещины «cracks». На письменный стол — «desk». На собственное отражение в мутном зеркале — «loser».
Михаил резко сел на кровати. Сердце заколотилось.
— Что за хуйня? — прошептал он.
И снова — эхо. Мозг услужливо подкинул перевод: What the fuck?
Он помотал головой, и это было ошибкой. Боль взорвалась новой вспышкой, прострелила от затылка к глазам. Михаил сжал виски ладонями, зажмурился и просидел так, наверное, минуту.
Когда резь немного отступила, он осторожно встал и побрёл на кухню. Холодильник встретил его сиротливой пустотой: полпачки дешёвого растворимого кофе и банка консервированных бобов. Ни хлеба. Ни молока. Даже яиц не было.
— Ну и срань, — пробормотал он, разглядывая банку.
Этикетка была на английском. Но теперь — он это почувствовал сразу — буквы перестали быть просто набором символов. Они начали складываться. Медленно, с трудом, как пазл, который кто-то собирал прямо у него в голове.
«B… e… a… n… s. Бобы. Срань господня, я правда это прочитал?»
Он отложил банку и потёр лицо. Боль никуда не ушла — она притаилась, готовая атаковать в любой момент. Но вместе с ней пришло и что-то ещё. Что-то чужое.
Знания.
Они не были его собственными. Он это чётко ощущал. Будто кто-то вливал ему в голову чужие воспоминания — не картинки, не лица, а просто слова. Сотни слов, которые он никогда не учил, но теперь они просто были там.
Он вернулся к столу, где вчера оставил документы. Взял верхнее письмо. То самое, с логотипом игровой студии.
Вчера он видел только незнакомые буквы и слово «regret».
Сегодня он читал.
«Dear Mr. Anderson, thank you for your application for the position of Junior Developer at DreamForge Studios. We regret to inform you that we have decided to proceed with another candidate whose qualifications more closely match our current needs… (Уважаемый мистер Андерсон, благодарим вас за заявку на должность младшего разработчика в DreamForge Studios. С сожалением сообщаем, что мы решили продолжить работу с другим кандидатом, чья квалификация более точно соответствует нашим текущим потребностям…)»
Михаил отбросил письмо, будто оно жгло пальцы.
— Пиздец, — выдохнул он.
Он не просто прочитал. Он понял. Каждое слово. Каждую чёртову вежливую формулировку, за которой скрывалось равнодушное «ты не подходишь».
Мозг горел. Но теперь в этом огне выплавлялось что-то новое.
Он открыл ноутбук. Тот загудел, загрузился — теперь интерфейс не казался совсем уж чужим. Слова обретали смысл прямо на глазах. «File». «Edit». «Project». «Build».
Михаил открыл вчерашний файл с кодом. Сотни строк, которые ещё вечером были инопланетной кашей.
Теперь он смотрел на них — и видел.
Не всё. Далеко не всё. Но разрозненные куски вдруг обрели структуру. Вот здесь объявляется переменная. Вот здесь функция. А вот здесь — ошибка. Он не знал, откуда он это знает, но он знал. Какая-то часть мозга, принадлежавшая Марку, наконец проснулась.
— Holy shit, — прошептал Михаил и осёкся. (Чёрт возьми.)
Английское ругательство вылетело само собой. Без акцента. Без запинки.
Он замер, глядя в экран невидящим взглядом.
Кем был Марк Андерсон? Неудачником, который рассылал резюме и получал отказы? Или кем-то ещё? И главное — что происходило с ним самим, с Михаилом? Если знания Марка просачиваются в его мозг, то что останется от него самого через месяц? Через год?
Он потёр виски. Боль понемногу стихала, превращаясь в тупую, ноющую тяжесть.
Ладно. Сейчас не до философии. У него в холодильнике — банка бобов и растворимый кофе. На столе — куча просроченных счетов. А за окном — чужая страна, в которой он не может даже в магазин сходить без того, чтобы не выглядеть как идиот.
Или теперь может?
Он снова посмотрел на код. Потом на письмо с отказом. Потом на банку бобов, этикетку которой он теперь понимал.
— Ну, Марк, — сказал он по-русски, чувствуя, как родной язык даётся привычно и легко. — Похоже, ты всё-таки кое-что умел. Жаль только, что мне теперь разгребать твоё долговое дерьмо.
Ноутбук мирно гудел. За окном просыпался чужой город. А в голове Михаила, словно второе сердце, билась чужая жизнь, готовая вот-вот стать его собственной.
Глава 3
Глава 3 — Первый выход
Следующие два дня Михаил провёл в добровольном заточении.
Он выходил из квартиры только до почтового ящика в подъезде и обратно. В ящике каждый раз обнаруживались новые счета — красные цифры, жирные шрифты, угрожающие фразы, которые его новый, просыпающийся английский переводил почти без запинки. «Final notice». «Immediate payment required». «Legal action pending». (Последнее уведомление. Требуется немедленная оплата. Ожидается судебное разбирательство.)
Каждое такое письмо он складывал в отдельную стопку — не потому, что собирался платить, а просто чтобы не валялись по всей квартире. Денег не было. Вообще. В ящиках стола он нашёл три доллара мелочью и подарочную карту на десять баксов в какой-то супермаркет — судя по дате на обороте, просроченную ещё в прошлом месяце.
Зато знания продолжали приходить.
Это происходило не плавно, а рывками. Иногда он просто сидел, пил кофе — и вдруг ловил себя на том, что думает о цикличных алгоритмах. Или о том, как правильно организовать структуру базы данных. Или о разнице между C++ и C#, хотя ещё три дня назад он даже расшифровать эти названия не смог бы.
Хуже всего были моменты, когда он открывал рот, чтобы выругаться по-русски — и первым вылетало английское ругательство. Русский мат пока побеждал, но с каждым днём борьба становилась всё напряжённее.
На третий день Михаил понял, что дальше так нельзя.
Кофе закончился. Бобы закончились. В животе урчало так, что соседи за стенкой, наверное, слышали. Надо было идти в магазин. Надо было выходить в город и как-то взаимодействовать с людьми.
Он оделся в то, что нашёл в шкафу: джинсы, старая футболка с надписью «I code therefore I am» (Я программирую, следовательно, я существую) — он смог перевести это только со второго раза — и мятая толстовка с капюшоном. Кроссовки оказались на полразмера больше, но это была наименьшая из его проблем.
— Так, — сказал он сам себе перед дверью. — Магазин. Еда. Ни с кем не разговаривать. Зашёл, взял, заплатил, ушёл. Проще пареной репы.
Он открыл дверь и вышел на лестничную клетку.
Город назывался Окленд. Это Михаил выяснил ещё вчера, разглядывая письма и документы Марка. Где именно находится этот Окленд, он представлял смутно — где-то в Калифорнии, кажется? Или это другой Окленд? Он не был уверен.
Улица встретила его серым небом и запахом выхлопных газов. Дома были невысокими, обшарпанными — явно небогатый район. На углу стоял ржавый «Форд» без колёс. Где-то лаяла собака.
Магазин нашёлся через два квартала — небольшой, с выцветшей вывеской «Mike's Groceries» (Бакалея Майка). Михаил глубоко вздохнул и толкнул дверь.
Внутри пахло хлебом и чем-то сладким. Он схватил корзину и двинулся вдоль полок, стараясь не смотреть по сторонам. Хлеб. Молоко. Какая-то дешёвая колбаса. Рис. Ещё банка кофе — на этот раз не самого дерьмового, потому что он заслужил. Может, даже нормального.
— Hey, man, you gonna stand there all day? (Эй, парень, ты там весь день стоять будешь?)
Михаил вздрогнул и обернулся. Здоровенный мужик в рабочей куртке стоял прямо за ним и ждал, пока он освободит проход к полке с чипсами.
— Sorry, — выдавил Михаил, отодвигаясь. (Извини.)
Мужик хмыкнул, взял пару пачек и ушёл. А Михаил остался стоять с колотящимся сердцем. Он ответил. На английском. И его поняли.
Касса была главным испытанием. Он вывалил покупки на ленту, стараясь не встречаться глазами с кассиршей — полной женщиной с уставшим лицом и бейджиком «Sheryl».
— That all? (Всё?) — спросила она, пробивая товары.
— Yeah, — кивнул он. (Да.)
— Cash or card? (Наличные или карта?)
— Cash. (Наличные.)
Он высыпал мелочь на прилавок. Шерил пересчитала, поджав губы — кажется, он дал чуть меньше, чем нужно. Михаил уже приготовился провалиться сквозь землю, но она просто вздохнула, махнула рукой и протянула ему пакет.
— Have a good one, — бросила она без особого энтузиазма. (Всего хорошего.)
— You too, — ответил Михаил и чуть не споткнулся о собственный язык. (Вам тоже.)
Он вышел из магазина на ватных ногах. Пакет оттягивал руку. Сердце всё ещё колотилось где-то у горла.
Он поговорил. На английском. С настоящим американцем. И его не послали, не ударили, даже не посмотрели как на идиота. Ну, может, чуть-чуть. Но он справился.
— Yeah, I fucking did it, — пробормотал он себе под нос. — То есть… блядь. Я это, короче, сделал. (Да, я, чёрт возьми, сделал это.)
Дома он разложил продукты, сварил новую порцию кофе — уже не такого мерзкого — и уселся за ноутбук. Теперь, когда желудок перестал сводить от голода, можно было заняться делом.
Два дня назад он смотрел на код Марка и ничего не понимал. Вчера он начал различать структуру. А сегодня он впервые попытался что-то написать сам.
Пальцы легли на клавиатуру. Чужую, затёртую, с буквами на английском. И вдруг — словно кто-то включил автопилот.
Руки задвигались быстрее, чем он успевал думать. Строчки кода появлялись на экране одна за другой. Функция. Переменная. Цикл. Он не знал, откуда это берётся, но знал, что это правильно.
Через час перед ним был прототип.
Маленькая утилита. Ничего грандиозного. Но она работала.
Программа отслеживала объём корзины, и как только тот превышал триста мегабайт — автоматически очищала её. Никаких предупреждений, никаких лишних кликов. Просто — забилась корзина, опустела, работаешь дальше.
Михаил понятия не имел, зачем он это написал. Мозг Марка, видимо, просто нашёл какую-то старую задумку и реализовал её. Но факт оставался фактом: утилита была готова и работала.
Он откинулся на спинку стула и уставился на экран.
Оставалось только назвать эту штуку.
Он на секунду задумался. Потом, сам не зная почему, напечатал в строке названия: «TireKan cleaner».
Дурацкое название. Бессмысленное. «TireKan» — это вообще что? Он не знал. Просто пальцы сами напечатали. Ещё один подарок от подсознания Марка, решил он.
— Ну, TireKan так TireKan, — пробормотал Михаил и нажал «Сохранить». — Похуй
Он запустил утилиту. Нашёл на рабочем столе пару ненужных файлов, отправил их в корзину. Через пару секунд корзина опустела.
Михаил глупо улыбнулся.
Да, это была мелочь. Да, это не принесёт денег. Но он написал программу. Свою первую программу. Вернее, их первую — его и Марка.
Он допил кофе, потянулся и вдруг заметил, что за окном уже стемнело. Ещё один день прошёл. Ещё один шаг в чужой жизни.
Завтра надо было искать работу. Настоящую. Ту, что приносит деньги. Но сегодня — сегодня он был программистом.
И это было охрененно.
Глава 4
Глава 4 — Работа, язык и ночной код
Утро началось с решения.
Михаил проснулся рано, ещё до будильника, и понял, что больше не может сидеть в четырёх стенах. Деньги почти кончились. Те жалкие три доллара, что он нашёл в столе, ушли на хлеб и дешёвый кофе. Нужна была работа. Срочно. Любая.
Он встал, умылся ледяной водой, посмотрел на себя в зеркало. Отражение уже не казалось таким чужим. Худое лицо, тёмные круги под глазами, недельная щетина — ну и пусть. Сойдёт. Не на собеседование в банк идти.
Он натянул джинсы, толстовку и вышел на улицу.
Город встретил его прохладным ветром и запахом бензина. Михаил шёл без определённой цели, просто осматривался. За три дня заточения он успел немного изучить карту в телефоне Марка и теперь примерно представлял, где находится. Окленд, Калифорния. Не самый богатый район, но и не трущобы. Рабочий класс, мелкие магазинчики, забегаловки.
Именно возле одной из таких забегаловок он и остановился.
«Tony's Pizza» — гласила вывеска над входом. Старая, выцветшая от солнца, но всё ещё читаемая. На двери висело объявление, написанное от руки на картонке: «Delivery driver wanted. Inquire inside.» (Требуется доставщик. Спросить внутри.)
Михаил перечитал объявление дважды, чтобы убедиться, что правильно понял. Потом глубоко вздохнул и толкнул дверь.
Внутри пахло сыром, томатным соусом и чем-то жареным. За прилавком стоял крупный мужчина лет пятидесяти, с седыми усами и руками, покрытыми мукой. Он поднял глаза на вошедшего.
— What can I do for you? (Что я могу для тебя сделать?)
Михаил набрал воздуха в грудь. Мозг на секунду завис — а потом словно переключился в другой режим.
— I'm here about the delivery job. You still hiring? (Я насчёт работы доставщиком. Ещё нанимаете?)
Слова вышли ровно, чисто, почти без акцента. Он сам удивился.
Мужчина — видимо, тот самый Тони — прищурился, оглядел его с ног до головы.
— You got a license? (Права есть?)
— Yeah, I do. (Да, есть.)
Это было правдой. Среди документов Марка он нашёл водительское удостоверение. Оставалось надеяться, что оно не просрочено.
Тони помолчал, вытирая руки о фартук.
— Experience? (Опыт?)
— Not much, — честно признался Михаил. — But I learn fast. And I really need the job. (Немного. Но я быстро учусь. И мне очень нужна работа.)
Последнюю фразу он сказал без акцента. Вообще. Слова прозвучали так, будто он говорил на английском всю жизнь. Тони, кажется, тоже это заметил, потому что хмыкнул и кивнул каким-то своим мыслям.
— Alright. You start tomorrow. Five bucks an hour plus tips. Moped's out back. Don't crash it. (Ладно. Начинаешь завтра. Пять баксов в час плюс чаевые. Мопед на заднем дворе. Не разбей его.)
Михаил моргнул.
— That's it? Just like that? (И всё? Вот так просто?)
— You want the job or not? (Ты хочешь работу или нет?)
— I want the job. Yeah. Thanks, Tony. (Хочу. Да. Спасибо, Тони.)
— Don't thank me yet. Thank me after your first shift. (Пока не благодари. Поблагодаришь после первой смены.)
Тони усмехнулся и махнул рукой в сторону выхода, давая понять, что разговор окончен.
Михаил вышел на улицу, и только там до него дошло, что сейчас произошло. Он только что провёл собеседование. На английском. Без запинок. Без русского акцента, над которым ржали бы все окружающие.
Он посмотрел на свои руки. Они не дрожали. Голос не срывался. Слова приходили сами собой, естественно, как дыхание. Та часть мозга, что принадлежала Марку, наконец проснулась полностью. Языковой барьер рухнул.
— Holy shit, — прошептал он и тут же усмехнулся. — То есть… да хуй с ним, пусть будет holy shit. Получилось же. (Чёрт возьми.)
Первая смена оказалась адом.
Мопед, который Тони назвал «не разбей его», был древним, как говно мамонта. Он тарахтел, дымил и норовил заглохнуть на каждом светофоре. Шлем был на размер меньше, и ремешок впивался в подбородок. Адреса путались, клиенты попадались разные — от сонных студентов до злых тёток, недовольных тем, что пицца приехала на пять минут позже.
Михаил мотался по всему Окленду. Улицы, которые он видел только на карте, теперь становились реальностью — с их пробками, кривыми перекрёстками и вечно орущими автомобилистами. Он промок под внезапным дождём, обжёг пальцы о горячую коробку и один раз чуть не влетел в припаркованный грузовик.
Но он справился.
К концу смены он вернулся в пиццерию уставший, пропахший бензином и потом, но живой. Тони отсчитал ему сорок долларов — на пять больше обещанного — и сунул в руку бумажный пакет.
— Dinner. On the house. See you tomorrow. (Ужин. За счёт заведения. Увидимся завтра.)
В пакете оказалась большая пицца с пепперони. Настоящая, горячая, с тянущимся сыром. Михаил чуть не прослезился.
Дома он съел половину пиццы прямо из коробки, даже не разогревая, и запил холодным кофе. Тело гудело от усталости, ноги ныли, но на душе было странно хорошо. Он заработал денег. Настоящих. Честных. Этого хватит на еду, а если поднакопить — то и на интернет.
Но спать он не пошёл.
Вместо этого он открыл ноутбук и запустил свой проект. TireKan cleaner. Крошечная утилита, которую он написал почти случайно. Теперь, когда голова немного прояснилась, а знания Марка улеглись внутри плотным фундаментом, он видел: программу можно улучшить. И нужно.
Пальцы легли на клавиатуру, и код снова потёк свободно, будто он занимался этим годами.
Первым делом — стабильность. Он переписал несколько функций, убрал лишние циклы, добавил обработку ошибок. Теперь утилита не вылетала, если корзина была пуста, и не пыталась очистить то, чего нет.
Второе — анализ. Вот тут пришлось попотеть. Он хотел, чтобы программа перед удалением проверяла файлы. Не просто смотрела на размер, а реально анализировала: нет ли среди мусора чего-то важного.
Он написал простой фильтр. Если в корзине оказывался файл с серьёзным расширением — .doc, .pdf, .xls, .ppt — или с названием, содержащим слова вроде «contract», «tax», «invoice», «report» (контракт, налоги, счёт, отчёт), программа останавливалась. На экране появлялось маленькое окошко с вопросом:
«Эти файлы выглядят важными. Вы точно хотите удалить их? Да / Нет»
И только если пользователь нажимал «Да» — корзина очищалась полностью.
Михаил протестировал механизм на десятке случайных файлов. Работало. Программа не просто чистила мусор — она думала. Хотя бы немного.
Он откинулся на спинку стула и посмотрел на часы. Три ночи. За окном уже давно было темно, только редкие машины шуршали шинами по мокрому асфальту.
— TireKan cleaner, версия вторая, — пробормотал он. — Уже не просто чистилка, а почти умная чистилка.
Он сохранил проект, закрыл ноутбук и лёг в кровать. Мышцы ныли. Глаза слипались. Но перед тем как провалиться в сон, он поймал себя на мысли, что впервые за всё время здесь чувствует не страх, не растерянность, а что-то похожее на азарт.
Завтра снова работа. Снова мопед, снова коробки с пиццей. Но после работы — снова код. И с каждым днём этот код будет становиться лучше.
Глава 5
Глава 5 — Docdows, Csnux и первый настоящий код
Пятый день в новом мире начался с того, что Михаил впервые не ударился коленом о мопед.
Он поймал себя на этом уже на перекрёстке, ожидая зелёный свет. Нога привычно встала на подножку. Руки сами выровняли руль. Тело наконец запомнило, что эта дребезжащая развалюха — его рабочий инструмент, и перестало бояться каждого виража.
— Надо же, — пробормотал он. — Привыкаю.
Смена пролетела быстрее, чем вчера. Адреса складывались в маршруты, маршруты — в районы. Он уже не путался в улицах и не вздрагивал от каждого окрика. Один раз даже задребезжал мотор на подъёме, но Михаил вовремя сбросил газ, не дав тому заглохнуть. Тони у входа в пиццерию проводил его взглядом и молча кивнул. Это было высшей формой одобрения.
Вечером, закрывшись в комнате с остатками вчерашней пиццы и кружкой кофе, он открыл ноутбук.
TireKan cleaner. Теперь это называлось так — не «та штука», не «утилита для корзины». У него было имя. И Михаил собирался сделать из него нечто большее.
Он запустил старую версию, покрутил её пару минут, проверил, как она справляется с мусором. Потом открыл редактор кода и начал писать.
План был амбициозным. Михаил видел его всё отчётливее с каждым днём, по мере того как знания Марка укладывались в его голове всё плотнее. TireKan cleaner не должен был остаться просто чистилкой корзины. Он должен был стать полноценным оптимизатором. Программа, которая следит за системой и держит её в тонусе.
Удаление мусорных файлов, забивающих диск. Контроль оборотов вентиляторов — чтобы в офисном режиме они не выли как турбины и не жрали лишнюю энергию. Установка лимита частоты процессора — чтобы не греть железо без нужды. Отключение лишних ядер, когда нагрузка минимальна. Поиск проблем в реестре операционной системы.
Михаил писал этот список, и пальцы чесались начать всё сразу. Но он заставил себя остановиться.
— По одному, — сказал он вслух. — Меню и удаление мусора. Остальное позже.
Он глубоко вздохнул и принялся за работу.
Сначала — каркас приложения. Он создал пустой проект, прописал структуру, вывел на экран простенькое окно: сверху название, по центру список доступных функций, снизу кнопка «Запустить». Пока что список состоял из одного пункта: «Очистка мусорных файлов». Но выглядело это уже как настоящее приложение, а не как поделка на коленке.
Затем — сам модуль очистки. Это было сложнее. Надо было научить программу обходить стандартные папки, где скапливается мусор: временные файлы, кэш, обновления, старые логи. Михаил писал функцию за функцией, проверял каждую на маленьком тестовом файле, исправлял ошибки. Код Марка в его голове работал как чужой опыт — не всегда понятный, но надёжный.
Где-то на четвёртом часу работы TireKan cleaner научился находить и удалять мусорные файлы. Сам. Без участия пользователя. Ставишь галочку, жмёшь «Запустить» — и через минуту на диске свободно на пару сотен мегабайт больше.
Михаил откинулся на спинку стула и с наслаждением потянулся.
— Растём, — улыбнулся он. — Медленно, но растём.
Потом он поставил чайник и решил ещё раз пройтись по системе. Просто чтобы убедиться, что всё работает.
И тут его накрыло.
Он открыл сведения о системе — просто чтобы посмотреть, сколько памяти осталось. И замер, не донеся кружку до рта.
Название операционной системы было ему незнакомо.
Docdows 8.1 Professional Edition.
Михаил поставил кружку. Открыл диспетчер задач. Потом панель управления. Потом корневой каталог диска.
Никакого Windows. Вообще. Ни единого упоминания. Вместо него везде — Docdows. Другая иконка, другой логотип, другое название. Но интерфейс… интерфейс был похож до дрожи. Те же окна, те же кнопки, тот же «Пуск», только переименованный в «Start».
— Что за херня? — прошептал он.
Пальцы сами набрали в поиске «Linux». Пусто. «Ubuntu». Ничего. «Microsoft». Ноль результатов.
Вместо них вылезали другие названия. Csnux. Suse. Mint OS. И ещё десятки незнакомых имён, от которых в памяти Марка поднималась смутная волна раздражения. Особенно от Csnux.
Михаил кликнул на ссылку и погрузился в чтение.
Csnux — операционная система для продвинутых пользователей и разработчиков. Распространяется бесплатно, но требует прямых рук и стальных нервов. В отзывах пользователи называли её по-разному: «система для мазохистов», «игрушка для хакеров», «способ превратить ноутбук в кирпич за один вечер».
— Охренеть, — выдохнул Михаил.
Он нашёл видео, где парень пытался запустить на Csnux какую-то игру. Тот танцевал вокруг компьютера, перезагружал систему шесть раз, вводил команды в терминал и матерился так виртуозно, что даже Михаил позавидовал. В конце видео игра всё-таки запустилась — под торжественный вой вентиляторов и гробовую тишину зрителей.
А Docdows, судя по отзывам, был просто глючным. Не плохим, не хорошим — просто бесконечно глючным. Любая ошибка грозила синим экраном, который здесь называли «Blue Screen of Death». То же самое, что и на Windows, только чаще.
Михаил закрыл браузер и уставился в одну точку.
Windows нет. Linux нет. Microsoft не существует. Есть Docdows, Csnux и Apple, которая, судя по новостям, процветала и доминировала на рынке. Единственная стабильная система в мире.
В его голове всколыхнулась чужая память. Марк, оказывается, знал об этом с детства. Для него Docdows был обыденностью, Csnux — развлечением для гиков, а Apple — дорогой штукой для тех, у кого есть деньги. Для него это было нормально.
Михаил потёр виски.
— Ну и мир, — пробормотал он. — Windows потеряли, а Apple до сих пор на коне. Хотя… чего я удивляюсь. Здесь даже игры через жопу устанавливаются.
Он вернулся к своему проекту. TireKan cleaner мирно висел в трее, готовый к работе. Михаил посмотрел на него долгим взглядом.
Значит, мир другой. Значит, система другая. Значит, и проблемы другие.
Но он уже начал делать то, что умел. И останавливаться не собирался.
Он сохранил проект, выключил ноутбук и лёг спать.
Завтра снова пицца. Завтра снова мопед. А послезавтра — новый модуль для TireKan.
Глава 6
Глава 6 — Воспоминания, быдло и синий экран
Проснулся Михаил от знакомой, пульсирующей боли.
Она пришла не так резко, как в первый раз, но глубже. Будто кто-то вкручивал в висок тонкое сверло. Он застонал, перевернулся на бок, попытался снова заснуть — бесполезно.
Вместе с болью приходили образы.
Не код. Не английские слова. А что-то другое. Тёплое, давно забытое.
Просторная кухня. Запах свежих блинов. Мужчина с усами и добрыми глазами сидит за компьютером, а маленький Марк пристроился рядом, заглядывает через плечо. Мужчина смеётся, сажает его на колени и показывает что-то на экране. Код. Первый в жизни Марка код.
— Смотри, сынок. Вот так машины учатся думать.
Михаил зажмурился. Боль усилилась. Воспоминания потекли быстрее.
Отец. Мать. Дом, в котором пахло корицей и свежей выпечкой. Не богатство, но достаток. Семейные ужины. Отец-программист, влюблённый в свою работу. Именно от него Марк подхватил эту искру.
А потом — шестнадцать лет. Телефонный звонок. Авария. Отец и мать погибли.
И добивка — новость, которая сломала всё окончательно: Марк приёмный. Это открылось случайно, при разборе документов. А сводные дяди, дельцы с мутными глазами, провернули какую-то схему с бумагами и взятками. Наследство ушло их собственному сыну. Марку досталась лишь эта квартира — старая, в которой отец жил один ещё до встречи с мамой.
Михаил открыл глаза. Сердце колотилось. Боль понемногу отступала, но в груди осталось тянущее чувство — не своё, чужое. Горе Марка, которое теперь стало его собственным.
— Блядь, — тихо сказал он. — Тебя, Марк, жизнь тоже не жалела.
Он встал, попил воды, съел остатки холодной пиццы. Еда помогла. Мигрень ушла, оставив после себя лёгкую туманность в голове.
Смена началась как обычно. Заказы, адреса, мопед. Маршруты складывались почти автоматически. Тони утром буркнул что-то одобрительное — кажется, про то, что «парень наконец перестал выглядеть как напуганный щенок».
А потом случилось оно.
Михаил подъехал к дому на окраине. Заказ — три пиццы. Дверь открыл мужик лет сорока, в грязной майке, с красным лицом и мутными глазами. От него разило перегаром.
— Took you long enough, you lazy piece of shit, — с порога начал он. (Долго же ты, ленивый кусок дерьма.)
Михаил стиснул зубы, но промолчал.
— Total's twenty-two fifty, — сказал он, стараясь держать голос ровным. (Итого двадцать два пятьдесят.)
— Twenty-two fifty? For three pizzas? You kidding me? (Двадцать два пятьдесят? За три пиццы? Ты шутишь?)
— No, sir. That's the price. (Нет, сэр. Это цена.)
Мужик побагровел. Он швырнул Михаилу скомканные купюры — часть упала на пол у самых ног.
— Take it and fuck off, — бросил он. (Забирай и проваливай.)
Михаил молча наклонился, поднял деньги. Пиццу поставил на пол — разгибаться второй раз перед этим уродом он не собирался.
— Have a nice evening, — сказал он с ледяной улыбкой и вышел, не дожидаясь ответа. (Хорошего вечера.)
Всю дорогу обратно его трясло. Хотелось вернуться и врезать. Но он сдержался. Работа есть работа. Зато вечером мысленно проговорил всё, что думал об этом мудаке — по-русски, с матами, в полный голос.
Дома, когда волна злости спала, он открыл ноутбук.
TireKan cleaner ждал. Михаил решил не растягивать и заняться тем, что давно вертелось в голове.
Первое — меню. Он переписал интерфейс с нуля. Теперь программа выглядела не как поделка, а как взрослое приложение: аккуратные кнопки, понятные подписи, переключатели. Всё на английском, как и положено в этом мире.
Второе — контроль вентиляторов. Это было сложнее. Он написал модуль, который считывал скорость вращения кулеров и при низкой нагрузке снижал её или вовсе отключал вентиляторы. Офисный режим. Экономия энергии. Тишина.
Михаил увлёкся. Строчки кода летели одна за другой. Он почти не думал — пальцы работали сами, а мозг Марка подсказывал решения. Всё шло настолько хорошо, что он даже улыбался.
А потом экран посинел.
Резко. Без предупреждения. Вся система — в один миг.
Blue Screen of Death.
Михаил уставился на белые буквы, которые насмешливо сообщали: «Система обнаружила критическую ошибку и была остановлена для предотвращения повреждения данных».
— Ты. Что. Сделала. — прошипел он.
Ноутбук перезагрузился. TireKan cleaner открылся — на удивление, целый. Но все сегодняшние правки слетели. Последние два часа работы исчезли, будто их не было.
Михаил почувствовал, как внутри закипает ярость.
— Да ты блядь издеваешься, — выдохнул он.
Он не стал бить ноутбук. Вместо этого открыл системные файлы Docdows и начал копаться.
Это было как вскрытие. Слой за слоем он продирался сквозь процессы, службы, фоновые задачи. И чем глубже залезал, тем мрачнее становилось его лицо.
Обнаружилось то, что он сначала принял за вирусы. Но нет. Это были оригинальные программы. Встроенные. Легальные. Мусорные утилиты, которые сидели в системе и собирали информацию. Что-то про «телеметрию». Что-то про «анализ пользовательского опыта». Десятки фоновых процессов, которые жрали память, грузили процессор и отправляли данные куда-то в сеть.
Михаил усмехнулся.
— Ну конечно. Кто бы сомневался. Windows у нас нет, а привычки — те же. В нашем мире эта херня тоже собирает всё подряд.
Он принялся сносить. Один процесс за другим. Службу за службой. Он отключал, удалял, вычищал. Руки работали быстро и зло. Через час система лишилась доброй половины ненужного балласта.
Ноутбук перестал гудеть так, будто готовится к взлёту. Вентиляторы стихли. Нагрузка на процессор упала в разы. Docdows, конечно, не стал от этого гениальной системой, но хотя бы перестал притворяться пылесосом.
— Вот так-то лучше, — пробормотал Михаил.
Он вернулся к TireKan. Восстановил утраченные правки — теперь уже в ускоренном темпе, потому что помнил каждую строчку. Заодно внёс пару улучшений, которые пришли в голову во время чистки системы.
Закончил он далеко за полночь. Часы на экране показывали 11:55 PM.
Михаил откинулся на стуле, чувствуя, как усталость наваливается тяжёлым одеялом. Голова больше не болела. Злость ушла. Осталась только спокойная, уверенная пустота.
Завтра — снова доставка. Снова чужие улицы и чужие двери. Но это ничего. У него есть TireKan. У него есть цель. И теперь он знает, что даже самая кривая система может работать лучше, если её как следует почистить.
Он закрыл ноутбук и рухнул в кровать.
Сон пришёл мгновенно.
Глава 7
Глава 7 — Сеть
Утро началось с того, что Михаил решил привести себя в порядок.
Не то чтобы его кто-то заставлял. Просто тело Марка, доставшееся ему в наследство, ощущалось как старая машина, которую давно не загоняли на техосмотр. Слабые руки, впалая грудь, одышка после подъёма на третий этаж. В прошлой жизни Михаил держал себя в форме — не качок, но подтянутый. А этот парень явно годами жил на кофе, дошираке и самокопании.
Он стянул футболку и встал перед мутным зеркалом в ванной.
— Блядь, — выдохнул он.
Пресс был. Но какой-то… недоделанный. Шесть кубиков угадывались под тонкой прослойкой, но выглядели так, будто их нарисовали карандашом и наполовину стёрли. Михаил цокнул языком. В прошлом теле у него были честные четыре кубика, которые можно было увидеть без рентгена. А тут — шесть, но едва различимых.
— Ладно, — пробормотал он. — Шесть лучше, чем четыре. Хоть что-то.
Он натянул футболку и решил: с завтрашнего дня — зарядка. Каждое утро. Пресс, отжимания, приседания. Тело Марка придётся приводить в порядок, если он собирается выживать в этом мире без инфаркта к тридцати.
Смена началась как обычно.
Мопед тарахтел, ветер бил в лицо, коробки с пиццей грели колени. Первые три заказа — скучные, без чаевых. Потом пошло веселее: студенты из колледжа скинули мелочь, тётка с третьего этажа добавила доллар, парень в офисном здании вообще кинул пятёрку сверху.
А ближе к вечеру случилось то, что Михаил запомнит надолго.
Заказ был в богатый район — туда, где дома не обшарпанные, а аккуратные, с ухоженными газонами и дорогими машинами у тротуаров. Дверь открыл мужик в дорогом халате, с бокалом вина и слегка пьяной улыбкой. Он явно ждал гостей, но заказ сделал один, на скорую руку.
— Keep the change, man. You look like you need it more than me. (Сдачи не надо, парень. Тебе, похоже, нужнее.)
Михаил опустил взгляд. В руках у него оказалась купюра в пятьдесят долларов. Сверху, поверх цены заказа.
— Sir, that's… that's way too much. (Сэр, это… это слишком много.)
— Don't care. Have a good one. (Плевать. Всего хорошего.)
Дверь закрылась. Михаил остался на крыльце с купюрой в руке, не зная, что сказать.
Пятьдесят долларов чаевых. За один заказ.
Он сунул деньги в карман, сел на мопед и ещё несколько минут просто смотрел перед собой, переваривая. Это были не просто деньги. Это была возможность. Интернет, который он не мог себе позволить уже неделю, вдруг стал реальностью.
После смены он не пошёл домой. Поехал прямиком в офис местного провайдера, который заприметил ещё пару дней назад. Маленький салон с выцветшими плакатами и скучающим консультантом за стойкой.
— Need help? (Нужна помощь?) — спросил парень, не поднимая глаз от телефона.
— Yeah, I want to set up internet. (Да, хочу подключить интернет.)
Парень нехотя оторвался от экрана и начал перечислять тарифы. Михаил слушал внимательно, кивал, переспрашивал. Мир, в котором нет Google, зато есть Reddit, требовал от пользователя большей самостоятельности. Провайдеров было несколько, но он выбрал средний тариф: не самый дешёвый, но и не грабительский. Стабильная скорость, безлимит, подключение завтра.
— Tomorrow, between nine and twelve. Technician will come. (Завтра, с девяти до двенадцати. Придёт техник.)
— Works for me. (Мне подходит.)
Он подписал бумаги, оставил предоплату и вышел на улицу. В кармане оставалась ещё пара десятков долларов. На жизнь хватит. А завтра — уже с интернетом.
Дома он поужинал, принял душ и лёг в кровать. Голова больше не болела. Знания Марка давно улеглись, и теперь он даже не замечал, что думает на двух языках одновременно. В теле появилась лёгкая усталость от смены, но она была приятной.
Завтра будет интернет. Завтра он наконец сможет выйти в сеть и изучить этот мир по-настоящему. Форумы, обсуждения, индустрия, пользователи. Всё, что нужно, чтобы понять, куда двигаться дальше.
Он закрыл глаза.
Где-то за окном проехала машина, и звук её мотора растворился в тёплой тьме.
Глава 8
Глава 8 — OptiBoost
Утро снова началось с зарядки.
Михаил сдержал слово, данное самому себе вчера. Отжимания, приседания, планка. Тело Марка отвыкло от нагрузки, поэтому уже через десять минут он дышал как загнанный мопед. Но он не сдавался. В голове крутилась простая мысль: если уж жить в этом теле, то хотя бы не как овощ.
После душа и пары бутербродов он глянул в зеркало. Пресс всё ещё был бледным намёком на шесть кубиков. Но где-то в глубине уже теплилась мысль, что через пару недель станет лучше.
Смена в пиццерии прошла спокойно. Заказы, адреса, привычное тарахтение мопеда. Чаевые капали, но уже без таких безумств, как вчера. И это было нормально.
Главное ждало его вечером.
Он вернулся домой, поужинал и сел за ноутбук. Система работала на удивление шустро после вчерашней чистки — Docdows явно приободрился, когда Михаил снёс его шпионские потроха. TireKan cleaner, теперь уже переименованный, висел в трее. Точнее, не совсем TireKan cleaner.
Михаил открыл папку проекта и какое-то время смотрел на название.
Затем переименовал программу.
TireKan OptiBoost v1.15
Пятнадцать — потому что шёл 2015 год. А «OptiBoost» — потому что это звучало солидно. Не просто чистилка корзины, а оптимизатор. Ускоритель. Улучшатель.
Он открыл редактор и принялся за работу.
Сначала — интерфейс. Он уже делал его красивее, но теперь нужно было полное обновление. Михаил добавил вкладки: «Очистка», «Оптимизация», «Безопасность», «Настройки». Приложение перестало быть одним окном с одинокой кнопкой и превратилось в нечто похожее на настоящий продукт.
Диспетчер задач. Михаил писал его первым. Нужен был инструмент, который показывает, какие процессы жрут память и процессор, и позволяет их прибить. В Docdows был свой диспетчер, но он был кривой, неудобный и постоянно зависал. Михаил сделал лучше: лёгкий, быстрый, с нормальной сортировкой.
Потом — исправитель реестра. Этот модуль занял больше всего времени. Он учился сканировать записи, находить битые ссылки, мусор от удалённых программ и системные ошибки. Код Марка подсказывал, как не сломать систему. Михаил писал аккуратно, с частыми сохранениями. Никаких синих экранов сегодня.
Блокировщик рекламы. С ним пришлось повозиться. Нужно было отслеживать исходящие запросы и резать те, что шли на рекламные серверы. Список он собрал вручную, по форумам и открытым базам. Работало неровно, но на простых сайтах — уже ощутимо.
А потом он сделал то, чего не делал раньше.
Система пожертвований.
Маленькая кнопка в углу. «Support the developer» (Поддержать разработчика). По клику открывалось окно с реквизитами — электронный кошелёк, который он зарегистрировал ещё вчера, после подключения интернета. Он не ждал денег. Просто решил: пусть будет. Вдруг кому-то понравится.
И премиум-режим.
В настройках появилась вкладка с демо-версией антивируса. Точнее, намёком на него. Программа сканировала запущенные процессы на совпадение с базой сигнатур, которую он составил из открытых источников. Находила пару десятков известных угроз. Писала, что в полной версии будет глубже, быстрее, умнее.
Полная версия пока не существовала. Но звучало солидно.
Михаил откинулся на спинку стула и оглядел свою работу.
TireKan OptiBoost v1.15. Очистка мусора. Диспетчер задач. Исправление реестра. Блокировщик рекламы. Демо-антивирус. Пожертвования.
— Ну неплохо, — пробормотал он. — Для парня, который неделю назад не знал, как выглядит код.
Он запустил программу на полную, прогнал все модули по очереди. Всё работало. Да, не идеально. Да, где-то могли быть баги. Но это был настоящий продукт.
Он сохранил проект, сделал резервную копию на старую флешку, найденную в ящике. Потом закрыл ноутбук и уставился в потолок.
Завтра он выложит это в сеть.
От этой мысли в животе что-то сжалось. Страх? Да. Но и азарт. Настоящий, живой, какой он чувствовал только в детстве, когда впервые выиграл дворовый турнир по футболу.
— Завтра, — сказал он вслух. — Завтра начнём.
Он выключил свет и лёг. Сон пришёл не сразу, но когда пришёл — глубокий, без сновидений.
Глава 9
Глава 9 — Первый шаг в сеть
Утро началось с зарядки.
Михаил уже не заставлял себя через силу. Тело понемногу привыкало. Отжимания давались легче, чем вчера. Планка — дольше. Пресс всё ещё был бледным, но он чувствовал, как мышцы наливаются кровью. Это было приятно. Как будто он возвращал себе самого себя.
После душа и кофе он глянул на ноутбук. TireKan OptiBoost v1.15 ждал его на рабочем столе. Свеженький, готовый к выходу в свет. Михаил усмехнулся и захлопнул крышку.
— Вечером, — сказал он сам себе. — Сначала заработаем на еду.
Смена прошла как в тумане.
Мопед тарахтел, коробки грели колени, но мысли были далеко. Он прокручивал в голове одно и то же: куда выкладывать? На каких форумах сидят люди, которым нужна такая программа? Как написать пост, чтобы не закидали говном в первые пять минут?
Вечером он вернулся домой, наскоро поужинал и сел за ноутбук. Интернет работал стабильно — вчерашний техник сделал всё на совесть. Впервые за всё время Михаил не экономил каждую секунду и не боялся, что соединение оборвётся.
Он открыл Reddit.
Здешний Reddit почти не отличался от того, что он помнил из своего мира. Те же сабреддиты, те же гифки, те же срачи. Только названия другие. Михаил нашёл пару сообществ, где сидели разработчики и гики. Почитал посты, приценился к атмосфере.
Люди жаловались. На Docdows, на кривые программы, на то, что систему невозможно заставить работать нормально. Про Csnux говорили с уважением, но сквозь зубы — мол, для избранных. Apple хвалили, но цены кусались.
Михаил понял: его утилита здесь нужна.
Он открыл одно из сообществ для разработчиков и начал писать пост.
«TireKan OptiBoost v1.15 — бесплатный оптимизатор для Docdows»
Текст получился простой, без пафоса. Он честно написал, что программа умеет: — очищать мусорные файлы; — показывать процессы и снимать лишние; — исправлять ошибки реестра; — блокировать рекламу; — сканировать систему на вирусы (демо-режим).
В конце добавил ссылку на файлообменник, куда заранее залил установщик. И приписку:
«Программа бесплатная. Есть премиум-режим с расширенным функционалом в будущем. Поддержать разработчика можно кнопкой внутри приложения»
Пост ушёл в сеть.
Михаил откинулся на спинку стула и шумно выдохнул. Всё. Теперь только ждать.
Первые полчаса ничего не происходило.
Он уже начал сомневаться, что вообще стоило это делать. Открыл пост, перечитал. Вроде всё нормально. И тут — уведомление.
Комментарий.
«Чувак, это реально работает? Или очередной вирус?»
Михаил улыбнулся и ответил:
«Работает. Я сам писал. Если что-то сломается — пиши, будем разбираться»
Через час комментариев стало больше. Кто-то написал, что программа подняла его старый ноутбук с колен. Кто-то пожаловался на баг с блокировщиком рекламы — тот резал не только рекламу, но и картинки на одном сайте. Михаил взял на заметку.
Первый настоящий отзыв прилетел под утро:
«Скачал, протестировал. Очистка работает отлично. Диспетчер — лучший из того, что я видел под Docdows. Блокировщик сыроват, но это мелочи. Жду обновлений»
Михаил перечитал три раза. Потом встал, прошёлся по комнате, сел обратно. Спать не хотелось. Адреналин бурлил в крови.
Его программу скачали. Кому-то она помогла. Кто-то ждёт обновлений.
Это было только начало. Крошечное, неуверенное, но настоящее.
Он снова открыл редактор и начал выписывать баги, которые прислали пользователи. Работы было много. Но теперь она имела смысл.
Глава 10
Глава 10 — День тринадцатый
Михаил проснулся, полежал немного, глядя в потолок, и вдруг поймал себя на том, что считает.
Он закрыл глаза и мысленно прошёлся по последним дням. Пробуждение в чужой квартире — раз. Мигрень и первые английские слова — два. Два дня взаперти, потом магазин — три, четыре, пять. Собеседование у Тони — шесть. Первая смена — семь. День, когда он осознал, что вместо Windows здесь Docdows, — восемь. Воспоминания о семье Марка и синий экран — девять. Подключение интернета — десять. Вчера — двенадцать. Значит, сегодня — тринадцатый день в этом мире.
— Тринадцатый, блядь, — пробормотал Михаил. — И чёртова дюжина. Надеюсь, не обосрёмся.
Он встал, сделал зарядку. Тело уже не ныло так, как в первые дни, мышцы наливались силой. Пресс по-прежнему был скорее намёком, но Михаил чувствовал: ещё пара недель — и появятся нормальные кубики. Он решил, что с этого дня будет вести счёт дням осознанно. Не просто в уме, а записывать в блокнот. Чтобы не путаться и чувствовать, что он живёт, а не плывёт по течению.
Смена в пиццерии прошла буднично. Заказы, дороги, привычное тарахтение мопеда. Михаил уже не вздрагивал от окриков и не путал улицы. Он даже начал получать удовольствие от езды — ветер в лицо, город, который постепенно становился своим. Иногда он ловил себя на том, что насвистывает какую-то мелодию из прошлой жизни, и улыбался.
Вечером он сел за ноутбук. TireKan OptiBoost v1.15 встретил его привычным интерфейсом. После вчерашней публикации на Reddit пришло несколько сообщений. Кто-то благодарил, кто-то ругался на блокировщик рекламы, кто-то просил добавить функцию поиска шпионских программ. Последнее зацепило Михаила сильнее всего.
Он помнил, как четыре дня назад вычищал из Docdows встроенную телеметрию. Как копался в системных файлах и находил процессы, которые тихо собирали данные. Он знал, как сильно система любит следить за пользователем. И мысль о том, что обычные люди даже не подозревают об этом, не давала покоя.
— Ладно, сделаем, — пробормотал он и открыл редактор.
Модуль анализа системы на шпионские программы родился за несколько часов. Михаил писал его, опираясь на свой опыт: он знал, где Docdows прячет свои процессы, какие имена файлов маскируют сбор данных, какие службы запускаются втихую. Программа сканировала реестр, автозагрузку, активные процессы и сравнивала с базой сигнатур. Если находила совпадение — выводила предупреждение с описанием, что именно делает эта дрянь.
Но Михаил не остановился на встроенных программах. Он расширил базу: добавил сигнатуры для известных сторонних шпионских утилит, которые скачивались вместе с «бесплатными» программами и так же тихо воровали данные. Пока база была маленькой, но структура позволяла легко дополнять её.
Тестирование показало: встроенные шпионские модули Docdows TireKan ловил идеально. Сторонние — хуже, но первые результаты уже были.
— Отлично, сука, — выдохнул Михаил, глядя на список найденных угроз. — Теперь ты не просто оптимизатор. Ты — сторожевой пёс.
Он сохранил новую версию, обновил пост на Reddit, добавив упоминание о новом модуле. Название тоже пришлось обновить.
Он удалил старое имя из строки заголовка и вписал новое:
TireKan OptiBoost v2.15
А модуль, который он только что написал, получил собственное обозначение — TireKan SDC (Spyware Detection Component). Красиво, подумал он. Взросло. Пусть так и останется.
Он обновил пост на Reddit, добавил описание нового модуля, упомянул, что программа теперь умеет искать шпионские программы. Потом записал в блокнот, который отныне стал его дневником:
«День 13. Добавил в OptiBoost анализ на шпионские программы. Устал как собака, но доволен. Завтра, может, снова отзывы. Пора спать».
Михаил закрыл ноутбук и повалился на кровать. Глаза слипались. Где-то за окном проехала машина, но он уже не слышал. Тринадцатый день закончился. Начинался четырнадцатый.
Глава 11
Глава 11 — Скачок
Михаил проснулся на удивление бодрым. Никакой мигрени, никаких чужих воспоминаний. Просто тихое, спокойное утро. Он полежал пару минут, глядя в потолок, потом встал, сделал зарядку. Мышцы приятно гудели. Пресс уже не был просто намёком — шесть кубиков начали проступать отчётливее. Михаил усмехнулся, глянув на себя в зеркало.
— Качаемся, — сказал он своему отражению.
Потом, как обычно, кофе, бутерброд. И почти машинально — ноутбук. Проверить, не пришли ли новые комментарии под постом. Он уже привык к этому ритуалу.
Открыл Reddit. Зашёл в свой пост.
И замер.
Число под постом было другим. Не тем, что он видел вчера вечером перед сном. Тогда было около пятисот скачиваний. Может, чуть меньше. Он помнил это точно, потому что сам обновлял страницу перед тем, как лечь спать.
Теперь счётчик показывал другое.
1 277.
Михаил моргнул. Потом ещё раз. Открыл файлообменник, где лежал установщик. Та же цифра. Тысяча двести семьдесят семь скачиваний.
— Какого хера? — выдохнул он.
Он принялся листать комментарии. Их стало заметно больше. Кто-то хвалил очистку. Кто-то писал, что диспетчер задач — лучший, что они видели под Docdows. Но главное — появилось несколько постов, которых вчера не было.
Один из пользователей написал:
«Ребята, эта штука реально работает. Я прогнал OptiBoost на ноуте, который тормозил так, что хотелось выкинуть его в окно. Теперь он летает. Всем советую»
Другой добавил:
«Проверил SDC. Нашёл у себя три шпионских процесса от Docdows. Снёс. Система стала быстрее. Не думал, что сама ОС так следит»
Михаил откинулся на спинку стула и шумно выдохнул. Он понял, что произошло. Сарафанное радио. Люди, которым понравилась программа, рассказали другим. Те — следующим. За ночь пост растащили по другим сабреддитам и форумам. Кто-то, возможно, написал об этом в блоге. Скачивания поползли вверх.
Он открыл статистику скачиваний. Кривая была красноречивой: вечером — пологий подъём, а ночью — резкий скачок. Пик пришёлся на время, когда он спокойно спал и видел сны про пиццу и мопед.
— Ни хрена себе, — пробормотал Михаил.
Он встал, прошёлся по комнате. Энергия распирала. 1277 скачиваний. Это не миллионы, но для программы, которую он написал в свободное от доставки пиццы время, — это было невероятно.
Он снова сел за ноутбук и начал читать все комментарии подряд. Выписывал баги. Отмечал пожелания. Кто-то просил добавить планировщик очистки. Кто-то — тёмную тему. Кто-то жаловался, что блокировщик рекламы всё ещё режет картинки на некоторых сайтах. Михаил всё фиксировал в отдельный файл.
Потом он открыл Reddit и набросал ответы на самые частые вопросы. Поблагодарил за отзывы. Пообещал исправить баги в следующем обновлении. Постарался звучать уверенно, хотя внутри всё дрожало от возбуждения.
Смена в пиццерии прошла как в тумане. Он ездил по адресам, отдавал коробки, получал деньги, но мысли были далеко. 1277 пользователей. 1277 человек, которые скачали его программу. Которые ей пользуются. Которым она, возможно, помогает.
Вечером он снова сел за код. Впереди было много работы. Но теперь у него появилось то, чего не было раньше, — понимание, что он движется в правильном направлении. И что это направление может завести его гораздо дальше, чем он предполага
Глава 12
Глава 12 — Майкл
Майкл ненавидел свой сранный ноутбук.
Нет, не так. Майкл ненавидел сранный Docdows, который превращал его ноутбук в ревущий, тормозящий кусок пластика и кремния. Машина была не новой, но и не мусорной. Ещё год назад она спокойно тянула его проекты. А теперь — висла на ровном месте, задумывалась при открытии любой папки и выла вентиляторами так, будто собиралась взлететь и присоединиться к членам Аполлон 11.
Он знал, что проблема не в железе. Проблема была в системе. Точнее — в том дерьме, которое накопилось внутри за годы работы. Но лезть в код Docdows он боялся. Одно неверное движение — и прощай, проект. А у него как раз горел дедлайн.
Поэтому Майкл сделал то, что делал всегда в таких случаях: открыл Reddit и начал искать решение.
Он пролистал с десяток тем, натыкаясь на одни и те же советы: переустанови систему, купи новый ноут, почисти реестр вручную. Последнее звучало особенно издевательски. Чистить реестр вручную под Docdows — это как разминировать бомбу с завязанными глазами.
И тут он наткнулся на пост.
TireKan OptiBoost v2.15 — бесплатный оптимизатор для Docdows
Название было странным. «TireKan» — это что вообще? Описание тоже не внушало доверия: чистит мусор, исправляет реестр, блокирует рекламу, ищет шпионов. Автор — какой-то Tirekaha. В сети. Прямо сейчас. Пообещал обновить приложение до v3.15 в ближайшее время.
— Ну-ну, — пробормотал Майкл. — Очередной чудо-чистильщик.
Он хотел закрыть вкладку, но что-то остановило. Комментарии под постом были живыми. Люди писали, что программа реально работает. Кто-то хвалил диспетчер задач. Кто-то — модуль SDC, который нашёл шпионские процессы от Docdows.
Майкл вздохнул. Терять было нечего.
Он скачал установщик. Маленький файл, подозрительно лёгкий. Установка прошла быстро, без рекламы и навязчивых галочек. Уже это удивило.
Интерфейс оказался… нормальным. Даже красивым. Тёмная тема, вкладки, понятные надписи. Никакого аляповатого дизайна, как у дешёвых «оптимизаторов». Майкл хмыкнул и запустил полное сканирование.
Первые результаты появились через несколько минут.
Очистка нашла пару гигабайт мусора. Диспетчер показал процессы, о существовании которых Майкл даже не подозревал. А потом включился SDC — и тут стало интереснее.
— Да ладно, — выдохнул Майкл, глядя на экран.
TireKan SDC нашёл четыре шпионских утилиты, встроенных в сам Docdows. Не сторонних, не случайных — родных, системных. Плюс пару троянов, о которых Майкл не знал. И майнер. Самый настоящий скрытый майнер, который, судя по всему, жрал его процессор уже несколько недель.
Майкл нажал «Удалить».
И тут началось.
Вентиляторы взвыли так, что он испугался за свои барабанные перепонки. Ноутбук затормозил, экран мигнул. Приложение как будто сражалось с чем-то внутри системы. Майкл смотрел на полоску прогресса и не дышал.
Двадцать пять минут.
Двадцать пять минут TireKan OptiBoost выгрызал трояны и майнер из его системы. Иногда казалось, что всё зависло. Иногда — что ноутбук сейчас вспыхнет. Но прогресс шёл. И в конце концов программа сообщила:
«Угрозы удалены. Требуется перезагрузка»
Майкл перезагрузил ноутбук.
Тот включился за полминуты. Просто включился. Без привычного воя, без пятиминутного ожидания, без тормозов. Рабочий стол открылся мгновенно. Вентиляторы молчали.
— Не может быть, — прошептал Майкл.
Он открыл свой проект. Тот, который раньше грузился по десять минут и вылетал через раз.
Проект открылся.
Да, слегка подлагивал. Всё же старый движок и куча незакрытых задач. Но он открылся. И работал. Майкл кликнул по сцене, повертел камеру. Всё двигалось.
И тут на экране всплыло окно.
TireKan OptiBoost предлагал исправить системные ошибки в реестре и оптимизировать процессор вместе с видеокартой.
Майкл нажал «Да».
Система ещё немного пошумела, что-то поправила, перезапустила пару служб. А потом ноутбук окончательно ожил. Старый, замученный, но живой.
Майкл откинулся на спинку кресла и уставился в потолок.
— Tirekaha, — пробормотал он. — Кто бы ты ни был… спасибо.
Он нашёл пост на Reddit и написал отзыв. Длинный, благодарный. Потом скинул ссылку в рабочий чат — пусть ребята попробуют.
А потом сел и наконец-то доделал то, что откладывал неделю.
Глава 13
Глава 13 — Новый день и полноценный антивирус
Михаил понял, что ему нужен полноценный антивирус, когда начал разбирать отзывы под своим постом.
После скачка до 1277 скачиваний комментариев стало много. Люди писали разное: кто-то хвалил очистку, кто-то удивлялся диспетчеру задач, кто-то восхищался SDC. Но была и общая боль, которая повторялась из комментария в комментарий: демо-версия антивируса, встроенная в OptiBoost, слишком слабая. Она ловила только простые угрозы. А людям нужно было что-то серьёзное.
Один из пользователей написал:
«SDC — огонь, но антивирус в OptiBoost — как игрушка. Покажи полноценный модуль, и я готов платить»
Михаил перечитал это сообщение несколько раз. Потом открыл статистику. Скачивания росли. Люди ждали обновлений. И он понял: пора.
Он назвал будущий антивирус Kaspersky.
Почему — он и сам не мог объяснить. Слово всплыло в памяти откуда-то из прежней жизни. Кажется, в его мире была такая программа. Или что-то похожее. Звучание было подходящим: серьёзное, весомое, с лёгким холодком. То, что нужно для антивируса.
— Kaspersky, — пробормотал он, глядя на пустой файл. — Ну, поехали.
Три дня.
Три дня Михаил приходил домой после смены, ужинал на скорую руку и садился за код. Он почти не спал. Зарядку делал через силу, на автомате. Всё остальное время уходило на антивирус.
Это была совсем другая задача, чем всё, что он делал раньше. Утилита для очистки могла ошибиться — и ничего страшного не случилось бы. Диспетчер задач мог зависнуть — и пользователь просто перезапустил бы его. Антивирус ошибаться не имел права. Если он пропустит угрозу — человек потеряет файлы. Если удалит что-то важное — система рухнет.
Михаил писал и переписывал. Он строил базу сигнатур — список известных угроз, по которому программа сверяла файлы. Он добавлял эвристический анализатор, который искал не только известные вирусы, но и подозрительное поведение. Он учил программу проверять запущенные процессы, загружаемые модули, скрытые службы.
В первый день он почти не продвинулся. Казалось, что задача слишком большая. Слишком сложная. Но знания Марка, смешавшиеся с его собственным опытом, работали как разогнанный процессор. На второй день появился каркас. На третий — первое сканирование.
Михаил запустил Kaspersky на собственном ноутбуке.
Программа прошлась по файлам, процессам, реестру. Нашла три угрозы, которые SDC пропустил. Две из них были безобидными — старые шпионские куки. А вот третья оказалась настоящим трояном, который прятался в системной папке Docdows.
— Ну и как ты туда попал, сука? — пробормотал Михаил.
Он нажал «Удалить». Kaspersky сработал быстро, без лишних звуков. Троян исчез.
Михаил откинулся на спинку стула. Глаза слипались. Тело ныло от усталости. Но внутри разливалось спокойное, тихое удовлетворение.
Он открыл проект OptiBoost и встроил в него Kaspersky как полноценный модуль. Теперь программа умела не только чистить и оптимизировать, но и защищать. По-настоящему.
Версию он обновил до v3.15.
Потом написал пост на Reddit:
«TireKan OptiBoost v3.15. Добавлен Kaspersky — полноценный антивирус. Теперь OptiBoost не только чистит, но и защищает. Спасибо всем за отзывы»
Он нажал «Опубликовать» и повалился на кровать.
Завтра снова работа. Завтра снова пицца. Но сегодня — он сделал то, что казалось невозможным. Полноценный антивирус за три дня.
Он закрыл глаза и улыбнулся в темноту.
— Касперский, блядь, — прошептал он. — Звучит гордо.
Глава 14
Глава 14 — Поддержка
Михаил проснулся с мыслью, что его проект растёт слишком быстро.
Нет, это было не жалоба. Скорее осознание. Скачивания перевалили за полторы тысячи. Комментарии сыпались десятками. Люди задавали вопросы, предлагали идеи, сообщали о багах. И Михаил физически не успевал отвечать всем.
После смены он сидел за ноутбуком и листал сообщения. Их было много. Слишком много. Кто-то спрашивал, как правильно чистить реестр. Кто-то жаловался, что блокировщик рекламы срезает картинки на любимом сайте. Кто-то просто благодарил. А он не мог разорваться.
— Так, — пробормотал он. — Пора что-то делать.
Так появилась идея встроить службу поддержки прямо в Kaspersky.
Он назвал её просто — Kaspersky Support. Идея была в том, чтобы пользователи могли оставлять вопросы, не уходя из программы. Но простое окно с текстом не решило бы проблему. Нужна была система.
Михаил взялся за работу.
Это заняло три дня.
День 19. Он сделал очередь запросов. Простую, но рабочий механизм, который собирал сообщения от пользователей и выстраивал их в порядке поступления. Никакого хаоса — только структура.
День 20. Он добавил расписание ответов. Михаил работал в пиццерии с семи вечера до четырёх дня, поэтому свободное время оставалось только вечером. В программе появилось окно:
«Поддержка отвечает с 16:25 PM до 18:45 PM»
Полтора часа в день. Не много, но достаточно, чтобы помочь тем, кто реально застрял.
День 21. Он ограничил количество вопросов: до трёх на одного пользователя в день. Это должно было спасти его от спама и дать время на обновления. И на жизнь — ту самую, о которой он почти забыл.
Но Михаил не остановился на этом.
Ему пришла в голову мысль: а что, если сделать аккаунты? Не просто безликую очередь, а профили. Чтобы каждый пользователь видел свою историю, свою статистику. И чтобы было видно, кто из них больше всего помогает программе ловить вирусы.
Так появилась система учётных записей.
Теперь Kaspersky собирал статистику. Сколько вирусов нашёл пользователь. Сколько вредоносных утилит отправил на проверку. Каждый раз, когда антивирус находил что-то подозрительное, пользователь мог отправить файл на анализ. Если файл действительно оказывался вредоносным, человек получал +1 к показателю «Борец с вирусами».
Михаил смотрел на этот показатель и не мог сдержать улыбки. Просто, наглядно, и людям приятно.
А потом он добавил достижения.
Вот тут он оторвался по-настоящему.
При 10 очках «Борца с вирусами» пользователь получал:
«Эй, чувак, ты пробовал не скачивать пиратские игры с левых сайтов?»
При 100:
«Чел, мы серьёзно. Перестань скачивать пиратские игры с левых сайтов в таком количестве»
При 1000:
«Ты мазохист или откровенный идиот? Мы ставим на второе. Иди траву потрогай, чел»
А при 10 000:
«Ты… Ты серьёзно?! Откуда у тебя столько памяти на игры?! Ты что, скачиваешь все игры подряд со всех пиратских сайтов?!»
Михаил прописал каждое достижение, потешаясь над формулировками. Это было как глоток свежего воздуха после трёх дней кода. Юмор, который никто не заказывал, но который точно оценят.
Kaspersky тем временем вырос с v1.15 до v2.15.
Параллельно он поправил и TireKan OptiBoost. Добавил стабилизацию работы — теперь программа меньше падала на слабых машинах. Сделал полноценное меню пожертвований — с кнопками, суммами, сообщением «даже доллар помогает». И добавил ссылку на аккаунт автора, на TireKanaha.
Того самого TireKanaha, под которым он сидел на Reddit. Теперь это был не просто ник. Это был бренд.
OptiBoost обновился до v4.15.
Михаил закончил глубокой ночью. Глаза слипались, голова гудела. Но он был доволен. Теперь у него был не просто набор утилит. У него была система. С аккаунтами, поддержкой, статистикой и достижениями.
— Ну что, Касперский, — пробормотал он, закрывая ноутбук. — Ты теперь почти человек.
Он повалился на кровать и заснул раньше, чем голова коснулась подушки.
Глава 15
Глава 15 — Новое лицо Kaspersky
Майкл узнал об обновлении из уведомления.
Он сидел за своим ноутбуком — тем самым, что ещё неделю назад выл, как раненый зверь, а теперь тихо шумел в углу, — и правил код. Проект наконец перестал падать. Движок работал стабильно. И всё благодаря той утилите, которую он случайно нашёл на Reddit.
Уведомление всплыло в углу экрана:
«TireKan OptiBoost v4.15 уже доступен. Обновить?»
Майкл моргнул. Он ещё не привык, что программы в этом мире обновляются так быстро. Обычно всё происходило так: скачал, установил, страдай. А тут — бац, и новая версия.
Он нажал «Обновить».
Программа мигнула, перезапустилась и встретила его свежим интерфейсом. Майкл открыл вкладку Kaspersky и замер.
Всё изменилось.
Теперь здесь были аккаунты. Настоящие, с профилем и статистикой. Он быстро зарегистрировался, ввёл ник, который использовал на Reddit, и попал в личный кабинет.
— Ни хрена себе, — пробормотал он.
Kaspersky показывал, сколько вирусов он нашёл, сколько файлов отправил на проверку, сколько раз чистил систему. А ещё — достижения. Они были как в играх, только за реальные дела.
Майкл увидел одно из них и рассмеялся в голос:
«Эй, чувак, ты пробовал не скачивать пиратские игры с левых сайтов?»
Он тут же открыл форум. Пост TireKanaha уже обновился, и под ним кипела жизнь.
«Кто-нибудь видел новую поддержку?» — писал один пользователь. «Да, очередь, конечно, но отвечают быстро. За день решают по два-три вопроса» «Достижения — это гениально. У меня уже 10 очков, я — борец с вирусами» «А я отослал файл на проверку, и Kaspersky реально нашёл троян. Получил +1. Чувствую себя охотником»
Майкл улыбнулся. Он узнавал в этих людях себя. Неделю назад он был таким же: недоверчивым, уставшим от тормозов и вечных лагов. А теперь сидел с ноутбуком, который летал, и проектом, который наконец открывался.
Он решил написать в поддержку.
Не потому, что что-то сломалось. Просто хотел спросить: будет ли Kaspersky сканировать больше, чем обычные вирусы? Например, скрытые майнеры?
Сообщение улетело. Майкл не ждал быстрого ответа — всё же поддержка работала по расписанию, с 16:25 до 18:45. Он отложил ноутбук и пошёл варить кофе.
Ответ пришёл вечером.
«Здравствуйте, Майкл. Спасибо за вопрос. Kaspersky уже умеет находить скрытые майнеры, но в будущем планирую добавить отдельный модуль для защиты от них. Следите за обновлениями. — TireKanaha»
Майкл перечитал. Коротко, по делу. Без лишнего. Он вдруг понял, что за всё время использования программы впервые подумал об авторе как о живом человеке.
TireKanaha. Парень, который пишет софт после работы. У которого есть расписание ответов, потому что он, возможно, тоже где-то работает. Который придумывает мемные достижения и не боится шутить.
Майкл улыбнулся и написал в ответ:
«Спасибо. Жду обновлений. И да, достижения — топ»
Он закрыл ноутбук и пошёл спать. Впервые за долгое время на душе было спокойно.
Глава 16
Глава 16 — Сеть, деньги и мышцы
К концу четвёртой недели Михаил начал замечать, что его жизнь меняется.
Не резко, не громко. А так, как меняется погода: ещё вчера ты мёрз под дождём, а сегодня вдруг понимаешь, что солнце пригревает сильнее.
Началось с донатов.
Он открыл статистику в один из вечеров и уставился на цифры. Раньше ему скидывали по доллару-два. Редко. Он и не ждал большего. Но теперь — всё изменилось.
Кто-то перевёл пять долларов. Кто-то десять. Один пользователь, судя по нику, — разработчик вроде него самого, — скинул сразу двадцать и написал: «Продолжай, чувак. Ты делаешь то, что Docdows не смог за десять лет».
Михаил сидел и смотрел на список переводов. В груди разливалось что-то тёплое. Не только из-за денег. Из-за того, что люди верили в него. В его программу. В его работу.
Пиццерия Тони тоже начала процветать.
Михаил не сразу это заметил. Просто в какой-то момент заказов стало больше. Тони повесил новое меню, нанял второго доставщика — молодого парня по имени Дерек. Теперь они вдвоём развозили коробки по всему Окленду, и чаевые шли заметно веселее.
— Бизнес пошёл в гору, — сказал Тони однажды, отсчитывая Михаилу зарплату. — Сам не пойму, с чего вдруг. Народ стал заказывать чаще.
Михаил не стал объяснять, что, возможно, люди просто начали больше доверять. Или что сарафанное радио сработало не только в интернете, но и в реальной жизни. Он просто кивнул, взял деньги и поехал домой.
А дома — снова код.
Kaspersky Security Network. Сокращённо — KSN.
Идея была простой и мощной. Раньше Kaspersky блокировал вирусы и забывал о них. Теперь Михаил хотел, чтобы каждая угроза оставляла след. Он встроил собственную базу данных: антивирус анализировал каждый заблокированный файл, разбирал его структуру, записывал поведение, сигнатуры, источник. Всё это складывалось в общую сеть.
KSN, конечно, подтягивала данные и из интернета — но теперь меньше, чем раньше. Основной массив информации генерировался самим Kaspersky. Михаил видел в этом будущее: чем больше пользователей, тем умнее сеть.
Параллельно он добавил проактивную защиту.
Теперь Kaspersky не ждал, когда вирус попадёт на диск. Он резал заражение на корню. Если пользователь пытался скачать приложение из любого лаунчера, и код этого приложения был зашифрован или содержал вредоносные элементы, — Kaspersky блокировал загрузку. На экране всплывало предупреждение:
«Этот файл может быть опасен. Рекомендуем отложить загрузку до появления песочницы Kaspersky, где файл можно будет проверить безопасно»
Михаил ещё не написал эту песочницу, но пообещал. Люди ждали.
Блокировщик рекламы получил собственное имя — AdBlock.
Раньше он был просто модулем внутри OptiBoost. Теперь Михаил сделал его самостоятельным и умным. AdBlock не просто резал баннеры. Он анализировал сайты, на которые поступали жалобы о вредоносном коде, и блокировал их рекламу целиком. Всплывающие окна, автозапуск видео, переходы на мусорные домены — всё срезалось. А в паре с Kaspersky он превращался в настоящий щит.
Михаил писал код ночами, а по утрам делал зарядку.
Он наконец начал набирать массу.
Не быстро, не как качки на стероидах. Но мышцы становились плотнее, плечи — шире. Он замечал это по одежде: футболки уже не висели мешком, а обтягивали спину и руки. Пресс проступил отчётливо: шесть кубиков, которые уже не нужно было высматривать в полумраке.
Питание тоже изменилось. Вместо бобов и пустого кофе — нормальная еда. Мясо, овощи, яйца. Иногда — фастфуд, но не каждый день. Михаил чувствовал, как тело Марка, слабое и измученное, наконец набирает силу.
На двадцать шестой день он встал перед зеркалом и посмотрел на себя.
Из отражения смотрел уже не тот худой, уставший парень с чужого паспорта. Это был он. Михаил. Или Марк. Или уже кто-то третий — тот, кем он становился.
— Ну и рожа, — усмехнулся он. — Но уже лучше.
Он натянул футболку и пошёл на смену.
Глава 17
Глава 17 — Незнакомка
К концу четвёртой недели Михаил начал привыкать к ритму, который сам же и создал.
Утро — зарядка. Душ. Кофе. Пиццерия. Вечером — код, поддержка, ответы на форуме. Иногда он ловил себя на том, что уже не разделяет дни на «рабочие» и «выходные». Выходных не было. Были просто дни, в которые он делал своё дело.
Скачивания TireKan OptiBoost перевалили за десять тысяч.
Михаил увидел эту цифру поздно вечером и какое-то время просто смотрел на экран. Десять тысяч человек. Десять тысяч установок. Люди из разных городов, а может, и стран, скачали его программу. И пользовались ею.
Это было невероятно.
Но вместе с ростом популярности росли и требования. Техподдержка, которую он запустил как эксперимент, превратилась в полноценную службу. Сообщения приходили десятками. Очередь запросов разбухала. И Михаил понял: три вопроса в день на человека — слишком мало.
Он переписал лимит.
Теперь каждый пользователь мог задать до восьми вопросов в день. А если случай был серьёзным — поломка системы, блокировка важного файла, атака вируса — то можно было получить ещё два дополнительных. Михаил встроил простой алгоритм: если человек писал слова «срочно», «не запускается», «синий экран», «потерял файлы» — система автоматически расширяла лимит.
Это сразу снизило недовольство. Люди стали реже злиться и чаще благодарить. Михаил отвечал каждый вечер, с шестнадцати двадцати пяти до восемнадцати сорока пяти. Иногда задерживался дольше, если вопросов было много.
Параллельно он продолжал работать над KSN.
База данных росла. Каждый новый вирус, каждый троян, каждый подозрительный файл, пойманный Kaspersky, оставлял в сети свой след. Михаил видел, как система умнела: если раньше антивирус полагался на сигнатуры из интернета, то теперь всё чаще сам распознавал угрозы по поведению. Это было приятно. Как смотреть на ребёнка, который учится ходить.
Он чинил мелкие баги. Блокировщик рекламы срезал картинки на двух сайтах — исправил. Диспетчер задач иногда зависал на слабых машинах — поправил. Исправитель реестра слишком осторожничал и пропускал пару битых записей — научил работать глубже.
Дни шли: двадцать седьмой, двадцать восьмой, двадцать девятый, тридцатый.
Михаил уже почти перестал удивляться, когда жизнь подкидывала что-то новое.
И вот однажды вечером, когда он разбирал очередную пачку запросов, в очереди всплыло сообщение.
Тема: «Нужна помощь с настройками»
Отправитель: AnnaRiley
Сообщение было коротким и немного сумбурным:
«Привет! Я скачала вашу программу, но не понимаю, как правильно настроить вентиляторы. Они то крутятся, то встают, то снова крутятся. Такое чувство, что система не понимает, чего я хочу. Подскажете?»
Михаил улыбнулся. Типичный вопрос новичка.
Он открыл окно ответа и начал писать:
«Здравствуйте, Анна. Спасибо за обращение. Давайте разберёмся. Сначала откройте вкладку „Оптимизация“, затем найдите раздел „Контроль вентиляторов“…»
Он расписал всё по шагам. Объяснил, как выставить офисный режим, как задать порог температур, как проверить, чтобы система не конфликтовала с настройками Docdows. В конце добавил:
«Если что-то не сработает — напишите, будем смотреть дальше»
Ответ пришёл через десять минут:
«О боже, я всё настроила! Вентиляторы больше не воют. Спасибо вам огромное!»
Михаил хмыкнул. Мелочь, а приятно.
Он закрыл тикет и перешёл к следующему.
А в это время — он узнает об этом только позже — Анна Райли начала стрим.
________________________________________
Анна села за компьютер, поправила камеру и улыбнулась в объектив.
— Всем привет! Сегодня играем в ту самую игру, что была на прошлой неделе. Но перед этим покажу кое-что.
Чат встретил её десятками сообщений. Зрителей было около тринадцати тысяч. Кто-то писал «привет», кто-то просил включить камеру поближе, кто-то вспоминал прошлый стрим.
— Короче, — продолжила Анна. — Я вчера скачала одну программку. TireKan OptiBoost называется. Кто-нибудь слышал?
Чат запестрел. Кто-то писал «да, юзаю, топ», кто-то — «не, что за зверь?», кто-то — «покажи настройки».
— Я её ещё не тестировала толком, но автор помог мне с вентиляторами. Сейчас посмотрим, как она справится с игрой.
Она запустила игру.
Зрители замерли.
Обычно на прошлых стримах счётчик FPS держался на стабильных шестидесяти. Машина у Анны была мощная, но игра всё равно упиралась в потолок. А теперь — счётчик показывал девяносто пять. Иногда — сто.
— Вы видите? — Анна подняла брови. — Девяносто пять! И картинка не мылится!
Чат взорвался.
«ЧТО ЭТО ЗА ЧЕРНАЯ МАГИЯ»
«Как так? У меня на такой же карте 60 максимум»
«TireKan — зверь»
«Кинь ссылку на прогу»
Анна улыбалась, но в глазах было искреннее удивление.
— Я сама в шоке. И знаете, что ещё? Ноутбук греется меньше. Раньше он горячий был, как печка. А теперь — тёплый. Всё из-за баланса вентиляторов. Эта штука их регулирует.
Она повертела камерой, показывая системный монитор. Температура процессора была на несколько градусов ниже, чем обычно.
— Ладно, хватит рекламы, — рассмеялась Анна. — Играем!
Стрим пошёл своим чередом. Но в чате ещё долго мелькали сообщения о TireKan OptiBoost. Люди спрашивали ссылку, делились впечатлениями, строили теории о загадочном авторе.
А Михаил в это время сидел у себя в квартире, допивал кофе и отвечал на очередной тикет. Он не знал, что его программа только что показали тринадцати тысячам зрителей. Не знал, что скачивания снова поползли вверх. И уж точно не знал, что AnnaRiley из техподдержки — та самая стримерша, которая только что сделала ему самую мощную рекламу в его жизни.
Он просто закрыл ноутбук и пошёл спать.
Завтра будет новый день.
Глава 18
Глава 18 — Valve
День тридцать первый начался с того, что Михаил понял: откладывать больше нельзя.
Он уже несколько дней обдумывал большое обновление. Не мелкий фикс, не заплатка — полноценный рывок вперёд. TireKan OptiBoost должен был вырасти до версии v5.15, а Kaspersky — до v3.15. И это требовало времени. Много времени.
Он записал в блокнот:
«Глобальное обновление. OptiBoost v5.15 + Kaspersky v3.15. Начать сегодня»
И начал.
Первый день ушёл на фундамент.
Михаил пересобрал архитектуру OptiBoost. В старой версии всё было свалено в кучу: модули, функции, настройки. Теперь он выстроил систему заново — аккуратно, с разделением на слои. Это было скучно, но необходимо. Без нормальной архитектуры программа не выдержала бы добавления новых модулей.
Вечером, уже в кровати, он прокручивал в голове план на завтра. Сон пришёл быстро, но был тревожным: снились какие-то обрывки кода и бесконечные строки, убегающие в темноту.
День тридцать второй.
Михаил добавил менеджер автозагрузок. Простой и понятный инструмент: программа показывала всё, что запускается вместе с Docdows, и позволяла отключать лишнее. Пользователи жаловались, что система грузится по десять минут, — теперь у них был способ это исправить.
Потом — ускоритель браузера и Wi-Fi. Тонкий модуль, который выставлял приоритеты трафика и резал фоновые процессы, мешающие интернету. Работал не идеально, но на слабых машинах давал заметный прирост.
К вечеру Михаил выдохся. Глаза слезились, в висках пульсировало. Но останавливаться было нельзя.
День тридцать третий.
Он взялся за оптимизацию драйверов BIOS и видеокарты. Это было сложнее всего: приходилось работать с низкоуровневыми параметрами, где одна ошибка могла отправить систему в синий экран. Михаил действовал осторожно, как сапёр. Сохранял резервные копии, тестировал на своём ноутбуке, откатывал, если что-то шло не так.
Затем — виртуальный браузер.
Идея была простой: полностью изолированная среда, где можно открывать подозрительные ссылки без риска для системы. Браузер шифровал данные и не оставлял следов на диске. Правда, Михаил честно указал в описании: провайдеры и администраторы сети всё равно видят трафик. Но он планировал добавить VPN позже.
Kaspersky тем временем тоже рос.
Михаил обновил базу KSN, ускорил сканирование, улучшил эвристический анализатор. Песочница, которую он начал делать раньше, теперь работала стабильнее. Подозрительные файлы можно было запускать в изолированном пространстве и смотреть, что они будут делать.
К вечеру тридцать третьего дня всё было готово.
Михаил откинулся на спинку стула и шумно выдохнул.
— Ну что, — пробормотал он. — Пора.
Он открыл Reddit и написал официальный пост.
TireKan OptiBoost v5.15 и Kaspersky v3.15 — большое обновление
*«Привет всем! Это TireKanaha.
Сегодня выходит крупное обновление. В OptiBoost добавлены: — менеджер автозагрузок; — ускоритель браузера и Wi-Fi; — оптимизация драйверов BIOS и видеокарты; — виртуальный браузер с анонимностью.
Kaspersky обновлён до v3.15: быстрее, точнее, с поддержкой песочницы. Теперь подозрительные файлы можно проверять безопасно.
И ещё кое-что.
Я начинаю работу над лаунчером для игр. Он будет называться Steam. Установка игр в один клик, без танцев с бубнами. Выпуск — от компании Valve.
Спасибо всем за поддержку. Оставайтесь на связи»*
Михаил перечитал пост несколько раз. Палец завис над кнопкой «Опубликовать».
Компания Valve.
Он улыбнулся. Компания, которой ещё не существовало. Но которая уже звучала так, будто была всегда.
Он нажал кнопку.
Пост ушёл в сеть.
Комментарии не заставили себя ждать. Люди спрашивали, что за Valve, правда ли лаунчер будет бесплатным, когда выйдет первая версия. Михаил отвечал коротко: «Подробности позже. Сначала — тесты».
Он закрыл ноутбук и лёг спать.
Завтра снова пицца. Но послезавтра — может быть, начнётся новая эра.
Глава 19
Глава 19 — Хелперы
День тридцать четвёртый.
Михаил начал с того, что открыл новый проект и назвал его Steam.
Пустой файл, мигающий курсор. Всё, как тогда, в самый первый вечер в этом мире. Только теперь он не боялся. Он знал, что делает.
Идея лаунчера была проста: пользователь заходит, видит список игр, нажимает «Установить» — и через несколько минут игра готова. Без архивов с паролями, без кривых лаунчеров, без танцев с бубнами. Один клик.
Но простота обманчива. Михаил понимал: чтобы всё работало, нужна инфраструктура. Сервер для загрузки, система обновлений, проверка целостности файлов. Всё это ещё предстояло построить.
Он начал с малого: написал базовый каркас будущего лаунчера. Пока что программа умела только выводить окно с названием и пустым списком игр. Но это было началом.
День тридцать пятый и тридцать шестой слились в один непрерывный поток.
Утром — зарядка, работа в пиццерии. Вечером — код. Steam понемногу обрастал функциями. Михаил добавил простую систему загрузки: программа могла скачать файл по прямой ссылке и распаковать его. Без красоты, без интерфейса — просто логика, которая должна была лечь в фундамент.
Параллельно он продолжал поддерживать OptiBoost и Kaspersky. Отвечал на вопросы в техподдержке, правил баги, обновлял базы KSN. И всё чаще ловил себя на мысли, что не справляется.
Вопросов становилось всё больше. Люди писали днём, вечером, ночью. Очередь росла. Михаил понимал: если он будет тратить по полтора часа в день на ответы, Steam он не закончит никогда.
Вечером тридцать шестого дня он открыл блокнот и записал:
«Нужны хелперы. 2–3 человека. Пусть разгружают техподдержку. Иначе я сдохну»
Он закрыл блокнот и уставился в потолок.
Идея была проста. Оставалось придумать, как её реализовать.
________________________________________
ПОВ: Майкл
Майкл заметил обновление не сразу.
Он вернулся домой поздно, уставший после работы. Бросил рюкзак у двери, включил ноутбук. TireKan OptiBoost v5.15 встретил его уведомлением:
«Доступно обновление. Установить?»
— Ну давай, — пробормотал он.
Установка заняла пару минут. Майкл потянулся за кружкой, а когда вернулся, программа уже перезагрузилась. Он открыл вкладку Kaspersky и присвистнул.
Песочница. Полноценная, рабочая. Он сразу же закинул туда подозрительный файл, который валялся на рабочем столе ещё с прошлой недели. Тот запустился в изолированном окне, повертелся, попытался что-то записать в систему — и не смог.
— Красавец, — улыбнулся Майкл.
Он открыл OptiBoost и прошёлся по новым модулям. Менеджер автозагрузок показывал, что Docdows грузит в фоне целую кучу ненужного хлама. Майкл отключил половину. Ноутбук стал запускаться быстрее.
— Это просто магия какая-то, — сказал он вслух.
________________________________________
ПОВ: Анна
Анна сидела перед камерой, поправляя микрофон.
Чат бурлил. Тысячи сообщений летели одно за другим: кто-то просил запустить новую игру, кто-то задавал вопросы, кто-то просто здоровался. Она улыбнулась, тряхнула светлыми волосами — длинными, почти до лопаток, с лёгким тёплым отливом.
— Всем привет! Сегодня снова играем в то, что вы так просили. И да, я наконец разобралась с настройками OptiBoost.
Чат отреагировал мгновенно. Кто-то писал «TireKan топ», кто-то — «покажи фпс». Анна запустила игру.
Счётчик кадров взлетел до ста десяти. Плавно, без просадок. Игра шла как по маслу. Вентиляторы на ноутбуке работали тихо, температура держалась в норме.
— Вы видите это? — Анна рассмеялась. — Я думала, после обновления будет хуже, а стало только лучше.
Она играла около часа. В перерыве показала зрителям меню OptiBoost, зашла в настройки, продемонстрировала, как работает виртуальный браузер.
— Кстати, автор добавил песочницу в Kaspersky. Можете тестировать подозрительные файлы и не бояться. Это гениально.
Чат пестрел смайликами. Анна чувствовала, как растёт интерес к её стримам. Она знала, что TireKan OptiBoost — только начало. И где-то в глубине души уже чувствовала, что этот загадочный TireKanaha скоро станет кем-то большим.
________________________________________
ПОВ: Михаил
Поздно вечером тридцать седьмого дня Михаил сел за Reddit.
Он долго формулировал текст, переписывал, удалял. Наконец пост был готов.
________________________________________
Набор хелперов в службу поддержки
*«Привет всем! TireKanaha на связи.
Проект растёт, и мне нужна помощь. Ищу трёх человек для работы в техподдержке Kaspersky и OptiBoost.
Условия:
— зарплата 14–17$ в час;
— если деньги не нужны — вечный премиум в Kaspersky и OptiBoost;
— первые обновления;
— ранний доступ к будущему лаунчеру Steam.
Задачи: отвечать на вопросы, помогать с настройками, собирать баги.
Пишите в личку. Подробности там же»*
________________________________________
Михаил нажал «Опубликовать».
Он не ждал, что откликнутся сразу. Думал, пройдёт день, может, два. Но уже через час в личке было пять сообщений. Люди писали, что хотят помочь, что пользуются его программами, что верят в проект.
Михаил откинулся на спинку стула и улыбнулся.
— Ну что, Valve, — прошептал он. — Похоже, мы растём.
Глава 20
Глава 20 — Трое кандидатов и 1000$
День тридцать восьмой начался с того, что Михаил открыл личку и обалдел.
Сообщений было больше, чем он ожидал. Двадцать три отклика за ночь. Люди писали по-разному: кто-то длинно и подробно, кто-то — коротко, в стиле «если надо, я готов». Кто-то даже приложил резюме.
Михаил налил кофе, сел за ноутбук и начал разбирать завалы.
Первым он открыл сообщение от AnnaRiley. Та самая, которой он недавно помогал с вентиляторами. Она писала, что уже несколько недель пользуется OptiBoost, что ей нравится программа и что она хочет помочь проекту расти. В конце добавила, что у неё есть опыт общения с людьми и что она умеет объяснять сложное простыми словами.
— Пойдёт, — пробормотал Михаил.
Вторым был Michael_builds. Тот самый Майкл, инди-разработчик, который когда-то оставил восторженный отзыв. Он написал коротко и по делу: «Могу отвечать на вопросы, находить баги, писать инструкции. Главное — чтобы проект жил».
— Тоже пойдёт.
Третьим шёл Relan_87.
Сообщение было пафосным. Relan_87 писал, что он «опытный IT-специалист с десятилетним стажем», что он «видел сотни таких проектов» и что «знает, как вывести продукт на новый уровень». В конце предложил сразу обсудить «условия партнёрства» и намекнул, что его время стоит дорого.
Михаил скривился.
Он решил дать ему шанс. Открыл диалог, задал пару простых вопросов: какой опыт, какие языки знает, как бы он построил работу в поддержке. Ответы пришли через полчаса. В них было много воды, ноль конкретики и куча пассивной агрессии. Relan_87 писал, что «не собирается отвечать на глупые вопросы», и что «нормальные люди сначала договариваются о деньгах».
— Понятно, — сказал Михаил и закрыл диалог.
Он вернулся к списку. Дальше шли ещё отклики. Кто-то отпадал сразу, кто-то — после пары сообщений. И вот, почти в самом конце, он наткнулся на письмо от пользователя Luban.
Тот писал:
«Привет. Я художник и дизайнер. Код не знаю, но могу помочь с интерфейсом, иконками, оформлением. Если нужно рисовать — это ко мне. Если нужно объяснять людям, как всё работает, — тоже умею. В общем, посмотри мои работы, они в профиле»
Михаил открыл профиль.
Там было портфолио. Иконки, логотипы, шрифты. Не то чтобы шедевры, но всё сделано аккуратно, с чувством стиля. Без вычурности, без кричащих цветов. Михаилу понравилось.
Он написал Luban'у. Тот ответил почти сразу. Они обменялись парой сообщений. Из переписки стало ясно: человек адекватный, не лезет в кодеры, но хочет быть полезным. И зовут его Виктор.
— Окей, — кивнул Михаил. — Три человека: Анна, Майкл, Виктор.
Он отправил всем троим приглашения. Написал, что они приняты, объяснил условия, рассказал, что нужно будет делать. В конце добавил, что зарплата будет 15$ в час — среднее между обещанным минимумом и максимумом.
День закончился. Михаил выключил ноутбук и пошёл спать. Впервые за долгое время он засыпал с мыслью, что у него появилась команда.
________________________________________
ПОВ: Анна
Анна получила письмо поздно вечером и, не сдержавшись, взвизгнула от радости.
Она читала и перечитывала сообщение: «Поздравляю, вы приняты в команду поддержки TireKan OptiBoost». Это было так неожиданно и так приятно. Она уже месяц пользовалась программой, хвалила её на стримах, советовала зрителям. А теперь — будет помогать самому TireKanaha.
Она вскочила с кресла, прошлась по комнате, села обратно. Потом всё-таки успокоилась и написала короткий ответ:
«Спасибо! Когда начинать?»
Ответ пришёл через несколько минут:
«Завтра. Создам чат для команды. Обсудим детали»
Анна улыбнулась. Ей нравилось, что всё происходит так быстро. Она снова села в кресло, поправила волосы и открыла чат своих подписчиков. Надо было готовиться к завтрашнему стриму. Но мысли то и дело возвращались к тому, что завтра у неё начнётся новая, незнакомая жизнь.
________________________________________
ПОВ: Майкл
Майкл прочитал письмо, сидя на кухне с кружкой остывшего чая.
Он не взвизгнул. Он вообще был не из тех, кто бурно выражает эмоции. Но внутри что-то щёлкнуло. Приятно, чертовски приятно, когда твою работу замечают.
Он ответил коротко: «Принято. Готов работать».
Потом закрыл ноутбук, допил чай и долго смотрел в тёмное окно.
Ещё полгода назад он был уверен, что его жизнь катится в никуда. Проект разваливался, денег не было, Docdows превращал каждый вечер в пытку. А теперь у него был не просто ноутбук, который летает, а ещё и работа в проекте, который он сам считал гениальным.
— Иногда всё-таки что-то меняется, — пробормотал он.
________________________________________
ПОВ: Виктор
Виктор жил в маленькой квартире на окраине Окленда.
Вся комната была завалена рисунками: на столе, на полу, на подоконнике. Портреты, пейзажи, какие-то абстрактные наброски. На стареньком ноутбуке крутился редактор, где он недавно сделал очередной набор иконок для неизвестного заказчика.
Виктору было тридцать один. Он перебрался в Калифорнию четыре года назад. До этого жил на севере, в маленьком городке, где все знали друг друга и никто не понимал, зачем взрослому человеку тратить жизнь на рисование.
Он не жалел. Работал по ночам, днём брался за фриланс, экономил на всём. Иногда казалось, что всё зря. Но вот — пришло то самое письмо.
«Поздравляю, вы приняты в команду поддержки TireKan OptiBoost»
Виктор перечитал дважды. Потом встал, подошёл к окну. Ночной город мигал огнями. Где-то там, за этими огнями, сидел человек, который поверил в него. Пусть пока только как в хелпера. Но это было началом.
Он сел за ноутбук и написал:
«Спасибо. Я рад. Готов приступить»
________________________________________
ПОВ: Михаил
День сороковой.
Михаил уже собирался ложиться, когда заметил уведомление в кабинете разработчика.
Донат.
Он открыл вкладку и замер.
1000 долларов.
Михаил моргнул. Обновил страницу. Сумма не изменилась.
Он открыл комментарий к переводу. Там было короткое сообщение:
«Надеюсь, ты сможешь сделать Касперский сильнее. Обрати внимание на шифровальщики, руткиты и бесфайловые вирусы. Это то, с чем обычные антивирусы не справляются. Удачи»
Михаил перечитал трижды.
Шифровальщики. Руткиты. Бесфайловые вирусы. Он знал, о чём идёт речь. Это были самые опасные типы угроз. Те, что прячутся глубоко в системе, крадут данные, шифруют файлы и требуют выкуп. Обычные антивирусы часто пасовали перед ними.
— Ну и запросы, — пробормотал он. — Но за такие деньги…
Он открыл блокнот и записал:
«Kaspersky. Усилить защиту: шифровальщики, руткиты, бесфайловые угрозы. Начать завтра»
Потом закрыл ноутбук и долго смотрел в потолок.
Тысяча долларов. Невероятно. Но ещё невероятнее было то, что кто-то поверил в него настолько, чтобы отдать такие деньги. Не просто так, а с конкретной просьбой. С надеждой.
Михаил вздохнул.
— Что ж, аноним, — сказал он в темноту. — Будем делать.
Глава 21
Глава 21 — MAXlegram и Воспоминания
День сорок первый начался с мысли, которая ещё вчера показалась бы Михаилу бредом.
Нужен был чат. Общий, для всех хелперов. Не на Reddit, где сообщения тонули в общих ветках, а отдельное пространство. Быстрое, удобное, с нормальными уведомлениями.
В прошлой жизни у него для таких дел был Telegram. Но здесь, как он уже успел понять, многого не было. Он полез в поиск — и почти сразу наткнулся на местный аналог.
MAXlegram.
Михаил замер, глядя на название.
MAXlegram.
В голове тут же всплыли воспоминания из прошлой жизни. MAX — российский мессенджер, который в 2026 году навязывали всем подряд. Власти заставляли переходить на него школьников, студентов, бюджетников. Сотрудников чуть ли не под роспись обязывали ставить это приложение. Всё делалось так, будто MAX — спасение нации. А по факту это было убожество.
Михаил помнил, как сам пытался пользоваться MAX. Кривой интерфейс, вечные лаги, сообщения, которые то не отправлялись, то приходили по три раза. Звонки срывались, файлы не грузились, уведомления приходили тогда, когда уже никому не были нужны. Репутация у MAX была соответствующая: над ним ржали, его ненавидели, но продолжали ставить, потому что сверху давили. И от этого давление чувствовалось ещё гаже.
И вот теперь — MAXlegram.
Михаил усмехнулся.
— Ну, если местный мессенджер хотя бы вполовину так же хорош, как наш MAX, — пробормотал он, — то мы в жопе.
Он на всякий случай скачал установщик и запустил его в песочнице Kaspersky. Через пару минут утилита выдала вердикт: чисто. Никакого вредоносного кода, никаких скрытых процессов. Уже лучше, чем оригинальный MAX, подумал он.
Михаил установил MAXlegram на ноутбук и на телефон.
Интерфейс оказался на удивление приличным. Чаты, группы, каналы, стикеры. Всё работало быстро, без лагов. Сообщения отправлялись мгновенно, уведомления приходили вовремя. Ничего общего с тем кошмаром, который он помнил из России 2026-го.
— Чудеса, — сказал он вслух.
Он быстро создал общий чат. Назвал его коротко и по делу:
TireKan Team
Затем добавил всех троих.
Первой откликнулась Анна. Прислала стикер с улыбающейся рожицей и короткое: «Всем привет!»
Потом подтянулся Майкл. Написал: «Привет. Готов работать».
Виктор появился последним. Прислал анимированную картинку с котом, который машет лапой. Михаил не сдержал улыбки.
— Ну, команда, — пробормотал он.
Он написал приветственное сообщение:
«Всем привет. Добро пожаловать в TireKan Team. Здесь будем обсуждать всё: баги, обновления, обращения пользователей. Сейчас раздам вам доступы к системе поддержки. Потом расскажу, что делать»
Михаил открыл кабинет разработчика и начал настраивать права. Анне выдал доступ к очереди запросов и к ответам на стандартные вопросы. Майклу — к тикетам, связанным с техническими проблемами и багами. Виктору — к тем обращениям, где пользователи просили помочь с интерфейсом или оформлением.
Потом он вернулся в чат и пояснил:
«Каждый видит свою часть запросов. Отвечаете в своём блоке. Если что-то серьёзное — пересылайте мне»
Анна написала: «Поняла. А если пользователь будет хамить?»
Михаил усмехнулся и ответил:
«Тогда пиши мне. Я сам разберусь»
Майкл спросил: «А что с обновлениями? Будут ещё?»
«Конечно. Сейчас готовлю кое-что большое. Но об этом позже»
Они ещё немного поболтали. Виктор рассказал, что уже придумал пару новых иконок для OptiBoost. Анна поделилась, что после её стрима программу скачали ещё больше людей. Майкл отчитался, что нашёл баг в менеджере автозагрузок, и Михаил тут же записал это в список.
Потом он закрыл чат и открыл Steam.
________________________________________
Работа над лаунчером шла медленно, но верно.
Михаил уже не просто писал каркас. Он продумывал архитектуру. Пользователь должен был видеть список игр, нажимать «Установить», а дальше программа сама качала файлы, распаковывала, проверяла целостность. Всё — без участия человека.
Но чем глубже он погружался в код, тем яснее понимал: без серверов не обойтись.
Хранилище для игр. Каналы загрузки. Система обновлений. Всё это требовало мощностей. А мощности стоили денег.
Он открыл несколько сайтов, где сдавали серверы в аренду. Цены кусались. Нет, не космические, но для человека, который работал доставщиком пиццы, — ощутимые. Он прикинул свои сбережения. Хватало на месяц, может, два. Но что потом?
— Нужна компания, — пробормотал он.
Не просто ник на Reddit. Не просто «TireKanaha». А полноценное юридическое лицо. Чтобы серверы оформлялись на него, чтобы с ним считались, чтобы его письма не выбрасывали в спам.
В этом мире, как и в его старом, бизнес не строился на энтузиазме. Нужны были документы, лицензии, налоги. Нужны были деньги.
Михаил откинулся на спинку стула.
Деньги. Опять деньги.
Он работал в пиццерии, но этого не хватит. Чаевые — хорошая штука, но нестабильная. Донаты — приятно, но тоже не фонтан. Нужен был стабильный доход.
И тут в голове щёлкнуло.
Премиум.
Он уже давно задумывался об этом. В OptiBoost был режим пожертвований, но не было настоящей платной версии. Люди спрашивали, что даст премиум. Некоторые писали, что готовы платить, если появится что-то стоящее.
Михаил открыл блокнот и начал записывать:
«Премиум-режим. Что включить?»
Идеи посыпались одна за другой:
— приоритетная техподдержка;
— ранний доступ к обновлениям;
— расширенные настройки вентиляторов и процессора;
— облачная база KSN с автообновлением;
— эксклюзивные темы оформления;
— защита от шифровальщиков в реальном времени (когда будет готова).
Он писал и чувствовал, как зреет план.
Если сделать премиум нормальным, без жадности и без уничтожения бесплатной версии, — люди потянутся. А это уже доход. Доход — это серверы. Серверы — это Steam. Steam — это будущее.
— Ну что ж, — сказал он, закрывая блокнот. — Начнём.
________________________________________
Дни сорок второй и сорок третий ушли на подготовку.
Михаил перечитал отзывы, собрал самые частые пожелания. Выписал, за что люди готовы платить, а что считают священным. Бесплатная версия должна была остаться рабочей. Никаких урезанных функций, никакого мусора. Премиум — только как дополнение.
Параллельно он отвечал на вопросы хелперов в MAXlegram. Анна уже разбирала простые тикеты, Майкл — технические. Виктор прислал первые наброски новых иконок. Михаил смотрел на них и понимал: с командой дело идёт быстрее.
День сорок четвёртый.
Михаил написал в чат:
«Готовлю премиум-режим. Будет платным. Бесплатная версия останется. Что вы думаете?»
Анна ответила первой:
«Давно пора! Многие на стримах спрашивали, когда будет»
Майкл написал:
«Главное — не урезать бесплатное. Люди этого не прощают»
Виктор добавил:
«Могу нарисовать бейдж для премиум-аккаунтов. И эксклюзивную тему»
Михаил улыбнулся. Команда работала.
— Тогда делаем, — написал он.
________________________________________
Дни сорок пятый и сорок шестой.
Он писал код премиум-системы. Добавил платёжный модуль, чтобы пользователи могли оплачивать картой. Прикрутил проверку статуса. Настроил, чтобы после оплаты открывались дополнительные функции.
Параллельно — работа над защитой от шифровальщиков.
Тот анонимный донат не выходил из головы. Михаил читал статьи, разбирал образцы вирусов, которые находил в базе KSN. Шифровальщики, руткиты, бесфайловые угрозы — всё это требовало глубокой защиты. Не просто сигнатур, а поведенческого анализа. Программа должна была замечать, когда что-то начинает шифровать файлы, и мгновенно останавливать это.
Он начал писать модуль. Времени не хватало, но он разбивал работу на куски. Днём — пицца. Вечером — код. Ночью — тесты.
День сорок седьмой.
Майкл нашёл серьёзный баг в OptiBoost: на некоторых системах программа конфликтовала с драйвером видеокарты. Михаил провёл час в переписке, разбираясь в деталях. Вместе они нашли обходное решение, и Майкл скинул патч пострадавшему пользователю.
— Хорошая работа, — написал Михаил в чат.
Майкл ответил скромно: «Это было несложно».
Анна в это время разбирала тикеты, помогала новичкам настраивать вентиляторы. Она делала это так легко и с таким терпением, что Михаил иногда заглядывал в чат только чтобы почитать её ответы.
Виктор тем временем прислал первые эскизы премиум-бейджа. Аккуратная золотистая рамка с буквой «T» в центре. Михаил посмотрел и одобрил.
День сорок восьмой.
Вечером Михаил собрал команду в MAXlegram и написал:
«Завтра выпускаю обновление. Добавлю премиум, исправлю баги, улучшу Kaspersky. Готовьтесь к наплыву вопросов»
Анна прислала стикер с горящим огоньком. Майкл — короткое «Принято». Виктор — гифку с котом, который надевает шляпу.
Михаил улыбнулся.
— Ну, пацаны и девчата, — пробормотал он. — Кажется, у нас всё по-настоящему.
Он выключил ноутбук и лёг спать.
Завтра будет новый день. И, возможно, новая эра.
Глава 22
Глава 22 — Премиум и команда
День сорок девятый.
Михаил сел за ноутбук с чётким планом: доделать премиум и выпустить обновление.
Он открыл проект и погрузился в код. Премиум-система должна была быть не просто красивой обёрткой, а полноценным дополнением к OptiBoost. Никакого мусора, никаких бессмысленных ограничений бесплатной версии. Только то, что реально поможет пользователю.
Первым делом он добавил приоритетную техподдержку. Теперь сообщения от премиум-пользователей шли в отдельную очередь и получали ответы в первую очередь. Вторая фишка — ранний доступ к обновлениям. Тоже просто: премиум-аккаунты получали патчи и новые версии на пару дней раньше остальных.
Дальше — расширенные настройки вентиляторов. Он давно хотел сделать это. В бесплатной версии OptiBoost балансировал обороты автоматически, а премиум давал пользователю возможность вручную задавать кривую вращения в зависимости от температуры. Полезно для тех, кто знал, что делает.
Разгон процессора. Вот это уже было серьёзно. Михаил долго думал, стоит ли добавлять такую опцию. Разгон всегда был риском: слишком сильное вмешательство могло сжечь железо. Но именно за этим приходили энтузиасты. Они писали: «Дай мне больше контроля». И он дал.
Премиум-пользователи получали доступ к тонкой настройке частот. С предупреждением, с двойным подтверждением, с кучей страховочных надписей. Но — получали.
Последним пунктом стало снятие заводских ограничений видеокарты. Многие производители искусственно резали мощность, чтобы карты не перегревались. OptiBoost Premium позволял снять эти лимиты. И снова — с кучей предосторожностей.
К вечеру всё было готово.
Михаил нажал «Сборка».
________________________________________
TireKan OptiBoost v6.15
Обновление вышло на следующий день. Вместе с ним — Kaspersky v4.15, который получил ускоренное сканирование, улучшенный поведенческий анализ и первые наработки по защите от шифровальщиков.
Михаил написал пост на Reddit, разослал уведомления в MAXlegram и открыл вкладку статистики.
Первые премиум-подписки не заставили себя ждать.
— Ну что, пацаны, — пробормотал он, глядя на цифры. — Кажется, мы начали зарабатывать.
________________________________________
Дни пятидесятый и пятьдесят первый ушли на поддержку.
Михаил отвечал на вопросы, правил баги, следил за жалобами. Команда в MAXlegram работала слаженно. Анна разбирала простые тикеты, Майкл — технические. Виктор помогал с оформлением и присылал новые иконки.
А по ночам Михаил возвращался к Steam.
Лаунчер обретал очертания. Уже был список игр — правда, пустой. Была кнопка «Установить» — пока нерабочая. Был интерфейс, который Виктор обещал отрисовать позже. Но фундамент стоял.
Михаил понимал: чтобы Steam ожил, нужны серверы. А чтобы купить серверы, нужны деньги. Премиум давал какой-то доход, но этого не хватит на серьёзные мощности.
Он снова и снова прокручивал в голове варианты.
Работа в пиццерии оставалась. Но она съедала слишком много времени. Чаевые были приятными, но нестабильными. Донаты — хорошая штука, но не предсказуемая. Премиум — первый настоящий шаг. Но что дальше?
Михаил открыл блокнот и записал:
«Способы заработка: премиум (есть), донаты (есть), что ещё?»
Он долго смотрел на пустую строку. Идей не было.
— Ладно, — пробормотал он. — Придумаем.
________________________________________
ПОВ: Виктор
Виктор сидел за столом и рисовал иконку для будущего лаунчера.
Steam. Одно слово, а сколько простора. Виктор уже сделал несколько вариантов: пар, выходящий из трубы, стилизованный под букву «S»; круглый вентиль, как на старых паровозах; облако, из которого выглядывает шестерёнка.
Пока что ни один не нравился ему до конца. Хотелось сделать что-то простое, но запоминающееся. Чтобы человек, бросив взгляд, сразу понимал: это Steam.
Он откинулся на спинку стула и потянулся. В MAXlegram пришло сообщение от Анны:
«Виктор, ты видел, сколько новых премиум-пользователей? Это же прорыв!»
Виктор улыбнулся. Анна всегда была такой — живой, весёлой, с кучей энергии. Даже в переписке от неё исходил какой-то свет.
«Видел, — ответил он. — Надо будет обновить бейдж премиума»
«Точно! Я на стриме сегодня расскажу. Народ будет в восторге»
Виктор отложил телефон и снова взялся за планшет. Он не знал, куда заведёт его эта работа. Но чувствовал: что-то большое начинается.
________________________________________
ПОВ: Майкл
Майкл разбирал тикеты.
Кто-то жаловался, что после обновления пропал звук. Кто-то не мог разобраться с настройками вентиляторов. Кто-то просил добавить тёмную тему. Майкл отвечал спокойно, по делу. Он вообще был не из тех, кто паникует.
В MAXlegram пришло сообщение от TireKanaha:
«Как дела с багами?»
Майкл напечатал:
«Норм. Один серьёзный: на старой видеокарте OptiBoost вылетает при разгоне. Предлагаю пока отключить эту функцию для слабых карт»
«Согласен. Сделай патч, потом обновим»
Майкл кивнул сам себе и полез в код. Ему нравилось, что TireKanaha доверяет ему. Не сюсюкает, не проверяет каждый шаг. Просто ставит задачу — и даёт делать.
Вечером он выключил ноутбук и пошёл на кухню. Налил чай, сел у окна. Город гудел, мигали огни. Майкл думал о том, как странно изменилась его жизнь за последние недели. Ещё недавно он ненавидел свой ноутбук и боялся смотреть в код. А теперь — чинит баги в программе, которую качают тысячи людей.
— Прикольно, — тихо сказал он в темноту.
________________________________________
ПОВ: Анна
Анна включила стрим ровно в восемь вечера.
— Всем приветик! — пропела она в микрофон. — Сегодня у меня для вас новость!
Чат сразу ожил. Зрители писали «привет», «какая новость», «покажи фпс». Анна выдержала паузу, потом рассмеялась.
— Короче, вы не поверите! Меня взяли в команду TireKan OptiBoost!
Чат взорвался. Сотни сообщений полетели одно за другим: «ого», «поздравляю», «ты теперь работаешь на них?», «что за команда?».
— Да! Я теперь хелпер. Отвечаю на вопросы, помогаю людям. Ну, типа, работаю в поддержке.
Она откинулась в кресле и закинула ногу на ногу. Волосы рассыпались по плечам.
— Вы же знаете, я уже сто лет пользуюсь этой программой. И вот теперь я внутри. И знаете что? Это круто. Ребята там отличные. Автор — просто гений.
Чат снова зашумел. Кто-то спрашивал, сколько платят. Кто-то — как попасть в команду. Анна смеялась, отвечала уклончиво.
— Не, зарплату не скажу. Но поверьте, это приятно. Главное — я теперь знаю всё о OptiBoost. Ну, почти всё. Так что задавайте вопросы — отвечу, как настоящий профи.
Она провела стрим, отвечая на вопросы о программе, показывая настройки, объясняя, как работает премиум. И, конечно, хвасталась. Как девчонка, которая только что купила новый айфон и теперь не может сдерживать восторг.
— Гляньте, какой у меня бейджик! — говорила она, показывая экран. — Это только для премиум-хелперов. Красивый, да?
Зрители смеялись, подкалывали её в чате, но в целом — поддерживали. Им нравилось, что она не скрывает радость. Что она живая.
После стрима Анна закрыла трансляцию и откинулась в кресле. Усталая, но довольная.
Она открыла MAXlegram и написала в общий чат:
«Народ, я вас там расхвалила. Так что не подведите))»
Виктор ответил сразу:
«Постараемся. Я как раз рисую иконку для Steam»
Майкл добавил:
«Чат уже штурмуют вопросами о твоём бейдже. Ты теперь звезда»
Анна улыбнулась.
— Ну и пусть, — прошептала она. — Мне нравится.
________________________________________
ПОВ: Михаил
День пятьдесят пятый.
Михаил сидел в темноте, глядя на экран.
Steam понемногу оживал. Лаунчер уже умел скачивать файлы, проверять целостность, распаковывать. Пока что — только в тестовом режиме. Но это было начало.
Он открыл статистику OptiBoost. Премиум-подписки росли. Кто-то платил за месяц, кто-то — за год. Впервые за всё время Михаил почувствовал, что у него есть не просто проект, а бизнес.
Он записал в блокнот:
«День 55. Премиум запущен. Steam движется. Нужно больше денег. Думать»
Потом закрыл ноутбук и лёг спать.
Завтра будет новый день.
Спасибо за чтение
Вернуться к книге
