Начало
Познакомился я с программированием лет в 11. Тогда у меня случился острый приступ интереса к компьютерам, и я попросил папу показать мне, что это за зверь такой. Он усадил меня перед компом и вместо того, чтобы включить игрушку, начал вещать про Bubble Sort. Да-да, тот самый, где элементы булькают как вода в чайнике. И велел писать это на Visual Basic. Я покорно строчил то, что диктовал отец, пытался понять смысл бытия, пытался отвечать на его каверзные вопросы... а потом раздавалось: "СТАС, НЕ ИСПОЛЬЗУЙ МЫШКУ! ПИШИ КЛАВОЙ!" (видимо, считалось, что настоящие пацаны кодят вслепую, одной левой на клавиатуре). И снова писал. Суровый руководитель.
Потом случилось счастье – подарили набор с Arduino. Я, как послушный юный инженер, пытался делать всё строго по инструкции из коробки. Узнал, как работает электроника... и сотворил свое первое детище: ползающий труп из Лего и сервопривода. Честно, это был мой первый шаг в робототехнику (и, возможно, некромантию). Школа хоррор-инженерии началась.
Кола без Ш и Яндекс Моб
В 6-7 классах меня дёрнуло на HTML и CSS. Я стал ваятель простеньких сайтиков, где главным украшением был задний фон и табличная верстка, скрепленная молитвами. Эти шедевры цифрового палеолита до сих пор пылятся на CodePen как памятник эпохи. А в школе как раз подвернулся шанс: нужно было приложение для ориентирования по школе – невиданному гиганту, лабиринту Минотавра для первоклашек. Я сделал простенький вебсайт-путеводитель. И тут озарение: "Так ведь нужна мобильная версия!". В 9 классе я ринулся в Android-разработку. Чистую, святую, без этого вашего Kotlin'а и пресловутых "медленных" фреймворков вроде React Native (простите, фанаты). Написал приложение, показал на школьной конференции... и навсегда запомнил, что такое верстать е*чий layout в Android Studio. Это как собирать пазл вслепую, стоя на одной ноге.
Дальше – больше. 10 класс, Яндекс Лицей. Записался туда с другом Андреем. Осваивали Python. Первый год – погружение в синтаксис и философию. Я делал домашку за Андрея, пока он качал ммр в Доте самоотверженно помогал товарищу не отстать от программы. После первого года Андрей слился (видимо, Дота зовет громче), и я остался один на один с мелкими гениями из 8-9 классов (меня, десятиклассника, чудом приняли в этот питомник вундеркиндов).
Начался проект: игра на PyGame. Разбились на пары. Мой боевой дух рвался в бой: я предложил новоиспеченному другу-восьмикласснику сделать аналог Doom! Его ответ был лаконичен: "Это слишком сложно. Давай лучше 2D про космические корабли". Ну, думаю, окей, сражаться со Злом будем в следующей жизни. Я, вдохновленный, накликивал сценарий игры, способный перевернуть Российский Геймдев (по моим скромным оценкам), и мы начали. Я быстренько наваял движение, GUI и коллизии – фундамент! – и торжественно поручил напарнику написать игровую логику. Через неделю открываю проект... и то, что я увидел, не выдержал бы ни один тимлид, ни сеньор, ни даже стажер после трех красных быков. Это была не логика. Это был шедевр легаси-арта: монументальная башня из if и else, возведенная на зыбком песке. Я невозмутимо (снаружи) погрузился в этот сюрреалистичный мир спагетти-кода и просто... переписал. В итоге игра была. Она работала. Она почти удовлетворяла моим ожиданиям (ключевое слово – почти). Зато я, для души, написал еще и движок для Doom. Take that, восьмиклассник!
Следующий акт – проект на Flask. Я создал интернет-магазин одежды. Дизайн? Честно позаимствован с сайта, торгующего аниме-футболками и прочим "шмотьем". Хомяк дизайн-решений – это тоже навык!
Университет
Время великих экспериментов. Чем я только не занимался: работал в "киберзоне" (где все ПК имели шанс 50/50 взлететь в воздух от моих манипуляций), писал читы, верстал сайты и прочее, прочее.
Первый курс
Познакомился с C++. Чтобы отточить мастерство (и получить кайф), я начал писать читы для игр. Реверс через Гниду (IDA Pro), оффсеты, external/internal читы для CS... Кайфы ловил – настоящие! Это был мой dark side of the force.
Второй курс
Java. Боже... Мой удел внезапно стал – скачивать моды для Майнкрафта. Gradle и прочая "ересь" казались мне тогда квантовой физикой. Это был мой "второй класс" в мире JVM.
Третий курс
Python, SQL, Linux, ML, DeepML, конфигурационное управление. Вот тут было круто.
В первой половине года третьего курса я активно изучал ML. Особенно был кайф обучать стандартный трансформер 1 день на 1050TI чтобы в конце он выдал гениальную фразу...
черная кошка жила жила была была . .
Ссылки на гитхаб, к сожалению, не будет, я убил SSD статическим электричеством. Далее был GAN, который выдовал лица людей из ваших сновидений. Я прошел все задания на kispython.ru (их CI/CD тут: http://80.87.195.95:3000/, логин/пароль были шедеврально просты – типа admin/1234) и кайфанул на Judgement Day. Пришел, сделал ДВА задания на Python... и получил зачет. Один. Из всей группы. Чувство было, будто я Нео, а вокруг – агенты Смиты в замешательстве.
Четвертый курс
Гениальная змейка.. Вдохновлялся консолью и Assembler'ом. Также учавствовал в CTF и занял ~200 место. Базы данных, Linux HYPRLAND I USE ARCH BTW, Docker и все такое.
Также из интересных проектов были:
Так как в C++ я не сильно разбираюсь и не умею байпасить kernel античиты, решил перейти в забытое ардуино, сделав себе эмулятор мыши. Подробнее об этом напишу в отдельной статье. Прожил месяц. Причина бана от EA Games была немного тупа - COMPETITIVE_ADVANTAGE. Я так полагаю было большое соотношение выстрелов/попаданий
Самый тупой и одновременно хороший античит Vanguard не мог найти мой эмулятор до того момента как я забыл, что у ардуино есть Bootloader...
Прожил 2 недели. Аккаунт отлетел из-за репортов.
Относительно недавно решил вернуться в веб. Раз был Not Bad в FastAPI и бэкенде с БД, то провозгласил себя Fullstack разрабом, он же 10x Developer. Дозубрил Docker, проникся в CI/CD, наделал концептуальной колбасы в Postgres и Linux. И вот он, момент истины: время погрузиться в озеро фекалий под названием REACT FRONTEND РАЗРАБОТКА.
Боже, сколько же фреймворков напридумывали! Один поливает хуями другой, третий объявляется устаревшим, четвертый... Хрен пойми. Я решил не выбываться и выбрал классику жанра – виртуальный DOM РЕАКТ))).
Написал приложение. Посмотрел на код:
const [newValue, setNewValue] = useState(0); const [nothing, setNothing] = useState(0); useEffect(() => { setNewValue(newValue + 1); setNewValue(newValue + 1); }, [nothing])
...и ах*ел. Дважды сеттаю стейт, а newValue увеличивается только на 1? Магия? Чёрная магия ящера Цукерберга?
Узнал про Lighthouse, ибо я перфекционист. Запустил на своем продакшене (скромный VPS)... 73 БАЛЛА??? ОДНА СТРАНИЦА – 73??? Это как получить "удовл" за шедевр. Почитал про SSR и Next.js и Остановился на нем.
Ват из нау?
Работаю в стартапе. Делаю абсолютно все: от разработки сайта до IoT-проектов. Сейчас разбираюсь в микроконтроллерах, но по прежнему занимаюсь Fullstack разработкой. Сижу, пишу прошивку на ESP32, паяю, изучаю протокол Crossfire... И глядя на это всё, на весь свой путь – от булькающей сортировки в 11 лет до ползающих лего-трупов, читов для CS, React'ного недоумения и летающих железок – понимаю одну простую вещь:
Я бы абсолютно ничего не менял. Мой путь аху*енен.
И вот они, проекты (гордость, смущение и тонны опыта):
- Personal
- Sky-Master
- Duckhacks
- Kali
- Рукодельница
Мой стек технологий:
- React (Next.js)
- HTML, TAILWIND, CSS, JavaScript
- FastAPI, MySQL, Postgres, SQLAlchemy, Redis, REST API, Архитектура делоть жиест, Rest API.
- ML, DeepML, PyTorch, TensorFlow (ненавижу), Scikit-learn, Matplotlib, Pandas, NumPy, Seaborn (чуть-чуть)
- Discord.py, aiogram, asyncio, asyncpg,
- Docker, Docker Compose, CI/CD, NGINX.
Для связи: https://t.me/daixe