Глава 14
СПЕНСЕР: «Ладно, я смотрю на это уже час! Какого чёрта!?! Я беру перерыв. Пожалуйста, скажи мне, что я упускаю?? Пожалуйста??»
СПЕНСЕР: «public static class StringExtensions
{
Public static DateTime ParseDateTime(string dt)
{
string dayOfWeek = dt.Substring(0, 3).Trim();
string month = dt.Substring(4, 3).Trim();
string dayInMonth = dt.Substring(8, 2).Trim();
string year = dt.Substring(10, 4).Trim();
string dateTime = string.Format(“{0} — {1} — {2}”, dayInMonth, month, year);
DateTime returnValue = DateTime.Parse(dateTime);
return returnValue;
}
} »
Аарон немного посмеялся над раздражением Спенсера, потому что точно знал, что он чувствует. Несколько дней назад Аарон сам прошёл через это, когда облажался и забыл, что базисный индекс на векторе единица, а не ноль. Так что вся его схема сбилась из-за одного значения. Это сводило Аарона с ума, пока он не нашёл ошибку. Скопировав код Спенсера в свою среду разработки, Аарон минут за десять создал быструю программу, чтобы подтвердить классификацию и проверить данные. С изолированным проблемным кодом было легче выявить неточность, если это вообще было возможно.
Первая дата, которую он вставил в проверенный объект, сработала хорошо; как и вторая, и третья. Ладно, значит, будет сложнее. Он вспомнил, как доктор Майер совсем недавно учил их проверять свои приложение — всегда проверять пределы, границы и всё, чего быть не должно. Если пользователь может ввести что-то в интерфейс, то введёт. Так что Аарон внёс наименьшую и наибольшую дату, которую позволяла строчка. Всё было в порядке. Со всеми специфическими подстрочками, которые использовал Спенсер, может быть, дело было скорее в формате даты, когда доходило до класса. Не упоминая о том, что он не проводил проверки на ошибки и формат. Он практически будто хотел, чтобы пользователь облажался. Так что вместо того, чтобы вводить дату стандартного формата, Спенсер ввёл первые цифры месяца и дня, и получилось 1/1/2000 вместо 01/01/2000. Бинго.
ААРОН: «О да!»
Аарон свернул окошко чата и принялся работать над добавлением тестов на различные форматы дат, ожидая ответа Спенсера. Он удивился, когда компьютер пискнул практически сразу. Должно быть, Спенсер закончил со своим перерывом и вернулся к кодированию. Когда Аарон открыл окошко обратно, его дыхание застыло в лёгких.
СПЕНСЕР: «Да. Ты меня так возбуждаешь».
Какого. Чёртового. Хрена? Он отодвинулся от стола, отстраняясь от шокирующих слов на экране. Паника сдавила его лёгкие, и его сердце угрожало выпрыгнуть из горла. После всего, о чём они говорили, чего так осторожно избегали, Аарон не мог поверить, что Спенсер сказал ему такое. Должно быть, от него исходила аура, которая так и говорила — «посмейся надо мной». Боже, Аарон не мог это выдержать. Он не мог дружить со Спенсером, если ожидания были такими. Он не мог... Он просто... он...
СПЕНСЕР: «О боже, мне так жаль. Это было не тебе. Я разговаривал с другим человеком в другом окошке, и когда твоё высветилось, я не проверил имя».
Аарон не мог дышать, не мог ответить, не мог делать ничего, кроме как смотреть на слова на экране и пытаться остановить изображения, которые заполонили его разум. Когда Аарон подвинулся обратно к столу, его руки тряслись над клавиатурой. Горло жгло, пока слова возвращались к нему и атаковали его мозг.
Вот так, малыш.
Ты меня так возбуждаешь.
СПЕНСЕР: «Пожалуйста, Аарон. Прости меня. Пожалуйста, скажи что-нибудь».
ААРОН: «Я нашёл твою ошибку. Отравлю код по электронной почте».
СПЕНСЕР: «Забудь про код. Прямо сейчас мне на него плевать».
ААРОН: «Какой к чёрту разговор у тебя был, что ты отправил мне такое случайно?»
Злость, унижение, страх — всё это кружилось и горело в его груди. Чёрт возьми, он ненавидел чувствовать такое отсутствие контроля, и всё из-за нескольким слов на экране. Не удивительно, что родители хотели куда-нибудь его вышвырнуть.
СПЕНСЕР: «Я говорил кое с кем о сексе, при этом дрочил. Я никогда не собирался тебе этого показывать. У меня не часто бывает секс, потому что люди считают меня отсталым. Приходится брать там, где получается».
Аарон редко бывал в интернете и определённо ни с кем при этом не общался. Он не мог общаться даже с людьми, которые стояли перед ним, не говоря уже о людях по всему миру. Хотя, может быть, было бы проще говорить с кем-то, кого он никогда не увидит. Он понятия не имел. Долгое время всё было так испорчено, ничего больше не казалось настоящим. Ничего, кроме страха.
ААРОН: «Ты часто этим занимаешься? Может, нам не стоит общаться в чате».
СПЕНСЕР: «Нет, не часто. Только иногда».
ААРОН: «Почему?»
СПЕНСЕР: «Почему не часто или почему я вообще этим занимаюсь?»
ААРОН: «И то, и другое, наверное».
СПЕНСЕР: «Я делаю это потому, что мне надоело быть одному. Приятно быть желанным, даже если я никогда не увижу этого человека. Я не часто этим занимаюсь, потому что это вызывает ощущение пустоты».
Аарон не знал, что на это ответить, но не хотел, чтобы Спенсер чувствовал пустоту, и не хотел, чтобы Спенсер чувствовал себя виноватым, перепутав экраны чата. Да, это шокировало Аарона, и он ненавидел то, как его это пугало, но Спенсер не хотел намеренно навредить или мучить его. Где-то глубоко внутри он знал, что Спенсер не сделал бы этого. В мыслях Аарона промелькнуло быстрое, но сбивающее с толку изображение того, как Спенсер лежит на спине на обычном одеяле и дрочит, и Аарон отдёрнул руку от клавиатуры, будто обжёгся. Это была первая за долгое время сексуальная мысль, которая пришла ему в голову. Страх кипел, поднимаясь от его желудка к груди и наполняя его такими противоречивыми эмоциями, что их тяжело было осмыслить. Страх, влечение, вина, похоть... паника.
ААРОН: «Мне нужно идти. Я пришлю код по почте».
Прежде чем Спенсер успел прислать очередной ответ, Аарон захлопнул свой ноутбук. Он практически слышал, как его зовут лекарства из аптечки родителей, предлагая способ забыть изображение Спенсера на кровати, мужчин над самим Аароном и Джульетты — он всегда слышал крики Джульетты.
Таблетки оказались в его руке раньше, чем он успел передумать.
***
— Для этого теста у вас есть в распоряжении весь компьютерный класс на три часа, но я сомневаюсь, что кому-то из вас понадобится так много времени. Когда закончите, можете уходить, — сказал студентам доктор Майер, и Аарон решил, что напишет своей матери после того, как выйдет с экзамена. Хоть он и не думал, что доктор Майер заподозрит его в списывании, если написать сообщение сейчас, Аарону не хотелось иметь проблемы с кем-либо ещё. Он посмотрел на Спенсера, который улыбнулся ему, и неуверенно улыбнулся в ответ. Было приятно, когда кто-то смотрел на него и улыбался, а не морщился.
Как Аарон и ожидал, тест был для него не особо тяжёлым. Ему не хватало компьютерного автодополнения ввода, чтобы заканчивать код, когда он начинал писать, чтобы не запоминать все методы и объекты. Например, Аарон знал, что стандартный обработчик событий тестового блока — это «ontextchanged», но потребовалась секунда, чтобы вспомнить, как отметить список — «activeitem» или «selecteditem». Он без проблем мог объяснить разницу между щелчком, поворотом колёсика мыши вниз и вверх.
Спенсер перевернул следующую страницу с заданием, удивляя Аарона, который только приступил к последнему вопросу на первой странице. Жилка соперничества, которая проснулась в голове Аарона, шокировала его. Со времён нападения не было ничего, напоминающего амбиции или желание в чём-то победить. Улыбнувшись, Аарон закончил вопрос и быстро перешёл к следующей странице. Когда третью страницу он открыл первым, Спенсер усмехнулся и через пару секунд перевернул страницу сам. Казалось, Спенсер понял его маленькую игру и решил бросить вызов.
Впервые за долгое время, Аарон чувствовал себя хорошо.
Спенсер ошеломил его, внезапно поднявшись и надев свой рюкзак. Аарон находился на последней странице теста и еле слышно хохотнул, потеряв друга. Своего друга. Он наблюдал, как Спенсер отдал свой тест и подмигнул ему, выходя из класса. Опустив взгляд обратно на тест, Аарон обнаружил, что остался только бонусный вопрос. «Объясните, как использовать интерфейс программирования стороннего приложения для развития Visual Studio». Он тихо фыркнул. Именно это они со Спенсером делали в своём проекте. Он задумался, пропустил ли Спенсер этот вопрос, чтобы его победить. Сделав мысленную пометку написать Спенсеру и спросить о дополнительном вопросе, Аарон начал писать, потому что никогда не знал, когда несколько баллов сыграют разницу между проходным балом и неудом. В хорошие для себя дни он должен был стараться изо всех сил, чтобы компенсировать плохие дни.
Сегодня день был хорошим.
Закончив с вопросом, Аарон схватил свою сумку с ноутбуком и отнёс тест доктору Майеру, который посмотрел на него с улыбкой.
— Я так понимаю, не особо сложно? — спросил преподаватель, и Аарон увидел, что доктор Майер доволен тем, как быстро он закончил.
— Нет, совсем не тяжело, — сказал Аарон, протягивая ему тест.
— Хорошо. Кажется, тебя ждёт твой сообщник, так что увидимся на лекции на следующей неделе, — сказал доктор Майер, наклоняя голову в сторону двери. Аарон посмотрел туда, и, конечно же, Спенсер стоял в дверном проёме и ждал его. Вместо того, чтобы расстроиться или почувствовать себя загнанным в угол, как бывало обычно, если кто-то ждал его для разговора, Аарон был доволен.
— Увидимся на следующей неделе, профессор, — сказал Аарон своему преподавателю и пошёл к двери. Они со Спенсером прошли чуть дальше по коридору, чтобы не мешать другим студентам выполнять тест.
— Ланч? — спросил Спенсер в своём медленном ритме. Аарон посмотрел на свои часы. Если он не напишет маме, она приедет только через два часа. Обычно он ходил на урок и после этого ехал прямиком домой. За исключением книжного магазина, кабинета директора и библиотеки, Аарон не видел никаких других частей школы. Он даже не был уверен, знает ли, где находится столовая. Он чуть не отказался, не желая рисковать и сталкиваться с чем-то, что может вывести его из себя. Кто-то мог толкнуть его в очереди за едой или узнать со времён старшей школы, как та девушка в книжном магазине. В конце концов, желание быть ближе к Спенсеру победило.