Подяки
Світ навколо нас рухається складними й дивовижними шляхами. Ми проводимо ранні періоди свого життя, вивчаючи навколишнє середовище через сприйняття і взаємодію. Ми очікуємо, що фізичний світ навколо нас буде поводитися відповідно до нашої перцептивної пам’яті, наприклад, якщо ми впустимо камінь, то він впаде під дією сили тяжіння, якщо здійметься порив вітру, то легші об’єкти буде віднесено далі. Цей курс зосереджений на пізнанні, моделюванні й перенесенні рухомих елементів нашого фізичного світу у цифрові світи, які ми створимо. Ми сподіваємось створити інтуїтивно зрозумілий, насичений і корисний досвід, спираючись на перцептивні спогади наших користувачів.
— Джеймс Ту, опис курсу “Динамічні Тіла”, весна 2003, ITP
У 2003 році, бувши аспірантом програми інтерактивних телекомунікацій (ITP) у Школі мистецтв Тіша Нью-Йоркського університету, я записався на курс під назвою “Динамічні Тіла”. Курс викладав дизайнер інтерактивних з астосунків, професор Джеймс Ту. У той час моя робота була зосереджена на серії програмних експериментів, які створювали нефотореалістичні зображення в реальному часі. Програмні застосунки передбачали захоплення зображень з реального світу і “малювання” елементами, які рухалися по екрану відповідно до різних правил. Курс професора Ту, який охоплював вектори, сили, коливання, системи частинок, рекурсію, керування та пружність, ідеально узгоджувався з моєю роботою.
Я використовував ці концепції у своїх власних проєктах, але ніколи не знаходив часу, щоб уважніше розглянути науку, що стоїть за алгоритмами, або вивчити об’єктно-орієнтовані підходи для формалізації їх реалізації. Того самого семестру я також записався на курс “Основи генеративних художніх систем”, який викладав Філіп Галантер і який зосереджувався на теорії й практиці генеративного мистецтва, охоплюючи такі теми, як хаос, клітинні автомати, генетичні алгоритми, нейронні мережі та фрактали. Обидва курси від Ту і Галантера відкрили мені очі на світ алгоритмів моделювання — технік, які надалі супроводжували мене протягом наступних кількох років роботи й викладання, і які послужили основою та натхненням для цієї книги.
Але в цій історії бракує ще однієї частини головоломки.
Курс Галантера був здебільшого теоретичним, тоді як курс Ту викладався з використанням програмного забезпечення Macromedia Director і мови програмування Lingo. Того семестру я вивчив багато алгоритмів, переклавши їх на C++ (мову, якою я тоді користувався досить незграбно, ще задовго до того, як з’явилися середовища творчого кодування на C++, такі як openFrameworks і Cinder). Однак наприкінці семестру я відкрив дещо під назвою Processing. Тоді Processing-мова знаходилась в альфа-версії і я, маючи певний досвід роботи з Java, був достатньо заінтригований, щоб задати собі запитання: “Чи може ця мова програмування з відкритим кодом, що спрямована на зручність для роботи художників, і її середовище бути правильним інструментом для розробки набору навчальних посібників і прикладів програмування та моделювання”? За підтримки ITP і Processing спільнот я розпочав майже 20-річну подорож навчання програмуванню.
Спочатку я хотів би подякувати Ред Бернс, яка очолювала ITP протягом перших 30 років і пішла з життя у 2013 році. Ред підтримувала і заохочувала мене у моїй роботі понад 10 років. Дену О’Саллівану, помічнику декана з нових медіа у школі мистецтв Тіша, який був наставником і першим запропонував мені спробувати викладати курс використовуючи Processing, що в першу чергу дало мені привід почати збирати навчальні посібники з програмування. Шону Ван Евері, нинішньому завідувачу кафедри, що був моїм товаришем по офісу під час мого першого року викладацької діяльності й протягом багатьох років був багатим джерелом допомоги та натхнення. Я вдячний за підтримку і заохочення професорці ITP Луїзі Перейрі. Її робота над її книгою “Код Музики” була дуже наснажливою. Її інноваційний підхід до інтерактивних навчальних матеріалів допоміг мені переосмислити й переглянути мій власний процес написання і публікації навчальних матеріалів.
Яскраве і сприятливе середовище ITP було сформоване багатьма неймовірними людьми. Незалежно від того, чи були вони колегами з перших днів задуму цієї книги, чи новими обличчями, які принесли свіжі хвилі натхнення, я дуже вдячний штатним викладачам ITP/IMA таким як: Алі Сантана, Еллісон Перріш, Блер Сіммонс, Клей Ширкі, Крейг Протцель, Денні Розін, Девід Ріос, Гейб Барсія-Коломбо, Кетрін Діллон, Маріан Петі, Марина Зурков, Метт Ромен, Мімі Їн, Ненсі Хечінгер, Педро Гальвао Сесар де Олівейра, Сара Ротберг, Шерон Де Ла Круз, Том Айго і Юсул Сонг.
Відданий і невтомний персонал ITP та Interactive Media Arts (IMA) відіграє важливу роль у підтримці процвітання екосистеми. Я дякую багатьом людям з якими я працював протягом багатьох років: Адріан Мандевіль, Браян Кім, Деніел Цадок, Данте Дельгіакко, Едвард Гордон, Емма Асуменг, Джордж Агудоу, Джон Дуейн, Ленін Компрес, Люк Банн, Марлон Еванс, Метт Бергер, Меган Демарест, Мідорі Ясуда, Філ Каріді, Роб Раян, Скотт Бруссард і Ширлі Лін.
Особливу подяку висловлюю помічним викладачкам ITP Еллен Ніклс і Нунтіні Тансрісакул, які разом зі мною викладали онлайн версію курсу “Природа Коду” у 2021 році, на піку глобальної пандемії. Їхні внески та ідеї того семестру значно збагатили матеріали курсу.
Студенти ITP та IMA, яких занадто багато, щоб усіх записати, були дивовижним джерелом зворотного зв’язку протягом усього цього процесу. Значна частина матеріалу у цій книзі взята з мого курсу під тією ж назвою, який я читав уже 17 разів. У мене є стоси видрукованих чернеток книжки з нотатками, розписаними на полях, а також величезний архів студентських електронних листів із виправленнями, коментарями й щедрими словами підбадьорення.
Я хотів би звернути увагу на кількох студентів, які працювали аспірантами над матеріалами Природи Коду. Завдяки своїй роботі з проєктом ITP/IMA Equitable Syllabus, Бріана Джонс і Часкі Но надали надзвичайну підтримку в дослідженні, яке розширило концепції й посилання книги. Як асистент аспіранта першої бакалаврської версії курсу “Природа Коду”, Грейсі Веліхан запропонувала неоціненну підтримку і відгуки та завжди нагадувала мені про диво випадкових чисел.
Джейсон Гао і Стуті Мохгаонкар працювали над системами збірки матеріалів книги, винаходячи нові робочі процеси для написання і редагування. Еліас Ярзомбек також заслуговує на згадку за його поради й технічну підтримку, що випливає з проєкту книги “Код Музики”.
Після закінчення навчання Джейсон Гао продовжив проєктувати й розробляти систему збірки книги та вебсайту. Якщо ви перейдете туди зараз, то побачите плоди його численних талантів: повну версію книги, яка легко інтегрується з вебредактором p5.js. Ця реалізація сайту вийшла далеко за межі мого початкового бачення.
Оформлення книги разом і вебсайт ретельно розроблені Туан Хуанг. Навесні 2023 року Туан почала розробляти ідеї макетів під час проходження курсу “Природа Коду”. Після закінчення навчання Туан ще більше вдосконалила дизайн, працюючи над розробкою узгодженої візуальної мови для багатьох елементів книги. Її мінімалістична та елегантна естетика значно покращила візуальну привабливість і доступність книги. Особлива подяка також OpenMoji project — проєкту емодзі та піктограм із відкритим кодом (ліцензія Creative Commons CC BY-SA 4.0) — за надання чудового і повного набору емодзі, які використовуються в цій книзі у різних місцях.
Я також в боргу перед Processing Foundation і підтримкою енергійної й творчої спільноти програмістів. Я б не написав цю книгу, якби не Кейсі Різ і Бен Фрай, які створили Processing у 2001 році та були співзасновниками Processing Foundation. Вони присвятили понад 20 років створенню і підтримці програмного забезпечення та його спільноти. Я дізнався половину того, що знаю, просто прочитавши вихідний код Processing і документацію. Елегантна простота мови Processing, вебсайту та IDE є першоджерелом натхнення для всієї моєї роботи та викладання.
Лорен Лі Маккарті, творчиня p5.js, заклала зерно, яке зробило можливим перетворення книги із використанням у ній JavaScript мови. Вона невтомна борчиня за залучення і доступ до відкритого коду і її підхід до розбудови спільноти надзвичайно надихнув мене. Кессі Таракаджян створила вебредактор p5.js, героїчну справу, яка дозволила зібрати й впорядкувати всі приклади коду у книзі.
Я щиро дякую іншим поточним і колишнім членам (разом з Кейсі, Беном і Лорен) ради директорів Processing: Дороті Сантос, Йоганні Гедві, Кейт Холленбах і Сінь Сіню. Особлива подяка керівникам проєкту, співробітникам і випускникам фонду, кожен з яких відіграв ключову роль у формуванні та просуванні спільноти та її проєктів: Андресу Колубрі, Чарльзу Рейнхардту, Евелін Массо, Джессі Томпсон, Джонатану Файнбергу, Мойрі Тернер, Цяньцянь Є, Рейчел Лім, Рафаелю де Курвілю, Саберу Кану, Сухюн (Соні) Чой, Тоні Піца, Ціге Тафесс і Сяовей Р. Ванг.
У Розділі 10 я представляю проєкт ml5.js, бібліотеку-супутник p5.js, яка має на меті надати можливості машинного навчання творчим програмістам у простій і доступній формі. Дякую численним дослідникам і студентам ITP/IMA, які зробили внесок у його розробку: Апурві Авадхані, Ешлі Льюїс, Бомані МакКлендону, Крістіні Даканай, Крістобалю Валенсуела, Лідії Джессап, Міаое Ке, Мікаелі Лагес, Майклу Вайнбергу, Орфеасу Кофінакосу, Озі Чуквукеме, Сему Крістал, Інін Ши й Зіюаню (Пітеру) Ліну. Дякую професору Ч.Х. Мун, професору Готфріду Гайдеру і Квінн Фангкін Хе з Нью-Йоркського університету в Шанхаї, які додатково підтримали розвиток бібліотеки та люб’язно прочитали перші чернетки розділів про нейронні мережі. Лінда Пейст заслуговує на згадку за її волонтерські зусилля з покращення кодової бази. Нарешті, я хотів би особливо Джоуї К. Лі, який під час роботи над ml5.js надав цінні поради й відгуки про книгу “Природа Коду”.
Я також хотів би подякувати досліднику штучного інтелекту Девіду Ха, чиє дослідження нейроеволюції (див. “Додаткові Ресурси” на вебсайті книги) надихнуло мене створити приклади реалізації за допомогою ml5.js і додати новий розділ до цієї книги.
Протягом останніх 10 років я витрачав більшу частину свого часу на створення відеоуроків на своєму YouTube каналі Coding Train. Я неймовірно вдячний за величезну підтримку і співпрацю багатьох людей у підтримці робочого процесу, включаючи Хлою Десоллс, Сай Екс, Девіда Снайдера, Даску Віркус, Елізабет Перес, Джейсон Хеглунд, Кеті Чан, Клайн Гарет, Кобі Лізенборгс і Матьє Бланшет. Особлива подяка Мелісі Родрігез, яка допомогла знайти й отримати дозволи для зображень, які ви побачите на початку кожного розділу.
Я також дякую стрімінговій платформі Nebula та її генеральному директору Дейву Віскусу за їх непохитну підтримку, а також творцю Nebula Грейді Гіллхаузу, який порадив мені співпрацювати з No Starch Press, щоб справді надрукувати цю бісову річ. Я б не зміг охопити таку широку аудиторію без самої платформи YouTube, особливу подяку висловлюю моєму видатному менеджеру по роботі з YouTube-партнерами Діну Ковальскі, а також Дорін Тран, яка допомагає керувати YouTube Skilling для Північної Америки.
У мене багато вдумливих, розумних, щедрих і добрих глядачів. Я хотів би особливо подякувати Діпаму Сену, Френсісу Турмелу, Кеті МакГінесс та Саймону Тайгеру, які надали поради, відгуки, виправлення, технічну підтримку і не тільки. Завдяки їм книга стала набагато кращою.
Я також хотів би подякувати багатьом людям, які співпрацювали зі мною понад 10 років тому над виданням 2012 року: Девіду Вілсону (обкладинка та дизайн книги), Руну Медсену та Стіву Клізу (білд-система і вебсайт), Шеннон Фрай (редагування), Евану Емоло, Мігель Бермудес та всім спонсорам Kickstarter, які допомагали фінансувати роботу.
Окремо варто відзначити Занну Марш, яка невтомно працювала над створенням понад 100 ілюстрацій для версії книги 2012 року і якимось дивом погодилася зробити все це знову для цього нового видання. Я особливо хочу подякувати їй за терпіння і готовність плисти за течією, оскільки я забагато разів змінював свою думку щодо певних ілюстрацій. І коти! Я посміхаюся від вуха до вуха кожного разу, коли бачу, як вони друкують.
Тепер справжня причина, чому ми всі тут. Я майже впевнений, що якби не No Starch Press, то ви б ніколи не прочитали ці слова. Звісно, ви можете переглядати оновлені навчальні матеріали на вебсайті, але співпраця, підтримка, а також продумане й доброзичливе встановлення термінів для команди було тим, що справді допомогло мені стрибнути вище голови. Я хочу висловити свою вдячність редактору Натану Гейдельбергеру, який відповідає за те, щоб ця книга взагалі мала сенс, не кажучи вже про всі смішні жарти (провина за будь-які погані каламбури лежить на мені). Дякую Джасперу Палфрі, технічному редактору, який терпляче пояснював мені різницю між лінійним і обертальним рухом стільки разів, скільки було потрібно для того, щоб я це зрозумів (ще він роз’яснив незліченну кількість інших наукових і програмних концепцій). Я також хочу висловити особливу подяку редакторці Шерон Вілкі, чия ретельна увага до деталей відшліфувала кожне речення і додала ідеальні завершальні штрихи. Крім того, дякую Одрі Дойл за її гостре око у пруфрідінгу. Дякую засновнику No Starch, Біллу Поллоку, який навчив мене всьому, що мені потрібно знати про покупки в Trader Joe’s. Головному редактору Джил Франклін за її люб’язну і терплячу підтримку та виробничій команді на чолі зі старшою редакторкою Дженніфер Кеплер і менеджеркою з виробництва Сабріною Пломіталло-Гонсалес, які підтримали мій незвичайний робочий процес: Notion → GitHub → PDF.
Нарешті, сердечна подяка моїй дружині Алікі Калойерас, яка завжди права. Серйозно, це її суперсила. Я тебе люблю. І моїм дітям: Еліасу, який люб’язно дозволяє мені зберігати подобу гідності, не знищуючи мене повністю в баскетболі та відеоіграх, і Олімпії, яка нагадує мені як відчувати себе молодим, коли ми граємо в нарди й карти та сміємося разом. Я також хочу подякувати моєму батькові, Бернарду Шиффману, який щедро поділився своїми математичними знаннями, а також моїй матері, Доріс Яффе Шиффман, і брату, Джонатану Шиффману, які завжди надзвичайно підтримували мене, цікавлячись як просувається книга.