Мне в детстве захотелось сделать ёлочную гирлянду — тогда их почти не было в продаже. Нужно было, чтобы она работала от розетки на 220 вольт. Я посмотрел, какие бывают лампочки, понял, что нацело 220 делится только на 2,5 вольта, так что мне пришлось спаять 88 штук.
Позже захотелось сделать эльфийский светильник: чтобы он плавно зажигался и гас. И чтобы не было видно ни кнопок, ни проводов, ни батареек. Сначала собрал схему на транзисторах, но она вышла большой и неустойчивой: меняешь что-то в одном месте — расползается в другом.
Хотелось сделать компактно, поэтому я пришёл к мысли, что надо изучать микроконтроллеры. Почитал характеристики — понял, что тема правильная, спаял программатор, выучил ассемблер и сделал светильник как надо.
У того микроконтроллера не было нормальной оперативной памяти: по сути, только регистры — 32 штуки по 8 бит, глубина стека — три вызова. Никакого программирования на C там быть не могло, прошивка — на ассемблере. Тогда я брал пример кода и разбирал построчно, а программатор подключал к последовательному порту — в те времена это было несложно.
Я всё время делаю то, чего нет, что нельзя купить. И друзьям говорю то же самое: если это можно купить — идите и купите. Но часто на маркетплейсах много барахла, это не то, чего хочется.
Тогда сам себе ставишь задачу: хочу эльфийский кристалл. А дальше конкретика: сколько светодиодов — пусть будет восемь, какого цвета — скорее холодного белого, как звёзды, он должен светить вокруг, нужен аккумулятор. Как это крепить к кристаллу, как обрамить в корпус — расписываешь план и собираешь.
Но если сложный проект разложить на 100500 пунктов, это пугает и демотивирует — так ты просто не возьмёшься что-то делать. Тут важно найти реализуемые подзадачи с явным результатом. Например, я спаял программатор — вот готовая железка, которой вчера не было. Подключил микроконтроллер — он отозвался. Это позволяет выделиться дофамину: ты дошёл до первого этапа и хочется двигаться дальше.
Пробуешь, получается криво, ещё пробуешь, на десятый раз что-то начинает получаться. На сотый делаешь уже не задумываясь, после трёхсотого окружающие восхищаются тем, как ты это делаешь.
Раньше я не умел варить кофе — и вот понадобилось научиться. Я примерно знал, что нужно насыпать порошка, довести до кипения. Но дальше возникли вопросы: сколько порошка сыпать, на какой объём воды, сколько времени греть... Говорят, что нужно не давать кипеть, — а что будет, если дать покипеть, что изменится? Ну и так далее.
Вот мне нужно сварить чашку кофе — берём эту чашку и используем как точку отсчёта. Есть какая-то турка — не знаю, почему она такая. Наверное, если их такими делают, значит, это хорошо. И дальше насыпал столько-то ложек кофе, попробовал, вылил, насыпал столько-то, попробовал, вылил, варил минуту после закипания, попробовал, вылил... Я извёл эту пачку — и теперь могу сварить кофе. Потратил 300 ₽ и три часа — вроде звучит не страшно.
Есть ещё прикольный метод — переводить всё в финансы. Сколько стоит научиться работать с фанерой? Ну четыре вида морилки, два лака, день времени, лобзик, кисточки — полторы-две тысячи. День работы и две тысячи рублей — и ты молодец, ты уже умеешь добиваться нескольких разных эффектов.
В 2014 году была большая ролевая игра по Fallout, примерно на семьсот человек. От организаторов прилетел запрос на носимое устройство игрока. Задача — перенести в мир игры идею радиации: прибор должен был показывать здоровье, сигнализировать, что оно изменилось, и фиксировать момент, когда персонаж «умер». Плюс хотелось, чтобы можно было «принять таблетку» и становилось лучше.
Конечно, было желание сделать пип-бой — тот самый мемный браслет из игры, по сути электронный органайзер. Но тут нужен был простой носимый прибор с понятной индикацией под правила конкретной игры.
Отзывы были скорее позитивные: всё работало. Потом мы эти девайсы использовали ещё на десятках игр, например как медальон-передатчик. Человек идёт по лесу — а перед ним загораются волшебные огоньки, светящаяся дорожка.
Сначала появляется желание и техническое задание — набор ограничений. Например, мне захотелось настенные часы. Но бесшумные, чтобы не тикали, и чтобы при этом достаточно было бросить взгляд и понять, который час. Электронные с горящими цифрами — это не волшебство, хотелось в эльфийском стиле, точнее, ар-нуво.
Дальше начинаются конкретные шаги. Решил, что на циферблате будут камни: пошёл на выставку «Симфония самоцветов», купил аметисты, цитрины и агаты, наклеил на циферблат, каждый камень подсветил светодиодом. Собрал плату с микроконтроллером и написал прошивку, чтобы цвета между камнями переключались плавно.
В процессе, кстати, обнаружилось, что лучше всего светятся куски горного хрусталя.
Если упираюсь в то, что нет какого-то железа или кода, действую так же: читаю документацию, разбираю примеры построчно — а сейчас это гораздо проще делать с помощью нейросетей. Инструменты — это только средство, первична цель.
Хотелось сделать волшебную палочку, которая распознаёт жесты, как в «Гарри Поттере»: машешь — и что-то происходит. Радиомодуль — окей, но дальше вопрос в распознавании движений. Мы много экспериментировали, и выяснилась неловкая вещь.
Пока человек смотрит на экран и видит траекторию — он может нарисовать, например, букву S. Не смотрит — траектория расползается. И нет гарантий, что удастся снизить шум при распознавании до приемлемого уровня. В итоге признали тему неперспективной. Можно упростить ТЗ: задать примитивные жесты («палка вверх», «палка вбок», «палка вниз») — и это уже работает, но изначально идея была сложнее.
Конечно. Были моменты, когда я сознательно отказывался от каких-то направлений, хотя мог бы развиваться в них дальше.
Например, в какой-то момент я стал шить костюмы — такие, под XII век. А это просто: берёшь два куска ткани, сшиваешь — и вот у тебя средневековый силуэт. Я научился делать простые элементы вроде ластовицы — это квадрат, который вшивается в подмышку, чтобы рука поднималась удобно.
Но дальше стало понятно: чтобы делать костюмы по-нормальному, надо осваивать проектирование одежды — вытачки, посадку по фигуре. А это уже совсем другой уровень вовлечённости. И я задал себе честный вопрос: я правда хочу этим заниматься? Ответ был — нет. Поскольку я точно знаю, что хочу развиваться в электронике. И всё, я отрезал это направление.
Это не поражение, это выбор: невозможно делать всё, нужно расставлять приоритеты.
Самый большой скачок для человечества на моей памяти — это появление доступных персональных компьютеров. Второй — появление ИИ. Вот именно того ИИ, в который ты можешь закинуть 100 килобайт кода и попросить объяснить, что тут вообще происходит. Ты можешь ему задавать уточняющие вопросы нормальным человеческим языком.
Она представит сколько-то вариантов, и можно, постепенно уточняя, получить картинку, которая соответствует тому, что у тебя в воображении. А потом думать, как это сделать.
3D-принтер был мечтой очень долгое время, потому что сделать корпус в домашних условиях, чтобы он прилично выглядел, — это прямо нетривиальная задача. Я паял корпус своего первого светильника неделю! А теперь кнопочку нажал — вот они, красивые, напечатались. Ещё нажал — ещё напечатались, пожалуйста.
Необязательно C++ — смотря какая задача. Можно создавать волшебные вещи разными инструментами, если есть чувство прекрасного и желание.
У человечества появляется всё больше возможностей, о которых тридцать лет назад и не мечтали. Эти инструменты позволяют творить прекрасное волшебство — украшать мир. Но люди часто используют их, чтобы создавать ерунду. И я не скажу, что очень этому рад.
Для меня электроника, языки программирования, 3D-принтер — это просто инструменты. Я осваивал их, чтобы добиться цели. Если бы можно было выучить заклинание и палочкой делать светильники — делал бы палочкой.
Раньше в мире в целом было сложнее делать что-то новое, если ты в этом не эксперт. С современным миром в этом плане попроще: чему-то можно научиться в турборежиме, если захотеть (от микроэлектроники до программирования), а что-то можно и делегировать нейронке.
Тут мы вступаем в область священной войны двух подходов. Первый — разобрать, что внутри у микроконтроллера: из каких блоков он состоит, как работает память, писать на ассемблере. Второй — считать внутреннее устройство «чёрным ящиком» и сразу писать на C++ программу, которая решает практические задачи. Я адепт второго подхода.
Это так работает: сначала мигаешь одним светодиодом — и это уже суперкруто. Потом двумя. Потом управляешь ими по кнопке. Да, поначалу это «магия», ты не знаешь, что внутри, но жизнь неумолимо заставляет разбираться дальше — по мере решения реальных задач, и вот ты уже находишь недокументированные баги в процессоре.
Развивайте концентрацию. Освойте тайм-менеджмент и разберитесь с «пожирателями времени». Я когда-то прочитал статью, извёл у себя несколько таких — времени стало больше. Найдите, прочитайте — реально появляются ресурсы на творчество.
Вообще, очень важно не распыляться. Вокруг масса интересного, и хочется всего и сразу. Но получишь ничего и постепенно, если не сосредоточиться на двух-трёх направлениях.