Коротко о погоде в окрестностях Новосибирска 📺
(снято во время утренней пробежки)
(снято во время утренней пробежки)
🔥14🎄9🆒3😁2☃1👍1
На прошлой неделе бизнес-инкубатор, резидентом которого я нынче являюсь, был официально признан лучшим в России среди не столичных. И хотя моё участие в этом достижении равно приблизительно 0% (если не меньше🤭), мне всё равно очень приятно, что Новосибирский Академгородок обретает славу перспективного места не только для учёных, но и для технологических предпринимателей 🦄
❤🔥7
Forwarded from АКАДЕМПАРК | channel
Бизнес-инкубатор Академпарка — лучшая региональная практика по поддержке стартапов в России 💎
2 октября в Москве прошла премия Startup Summit от Сбера, где наградили региональные органы власти и институты развития, которые успешно реализуют меры поддержки для стартапов. Из 79 регионов в шорт-лист номинации вошли Технопарки Новосибирской области (Академпарк), Санкт-Петербурга и Якутии.
Экспертный совет во главе с Первым заместителем Председателя Правления ПАО Сбербанк Александром Ведяхиным и Заместителем Мэра Москвы в Правительстве Москвы — руководителем Аппарата Мэра и Правительства Москвы Натальей Сергуниной из трех финалистов присудили первое место Академпарку.
Эта победа — результат работы команды, которая помогает технологическим стартапам в Новосибирске с момента их зарождения до масштабирования. Уже 15 лет мы создаем условия для успешного старта и роста инновационных проектов.
Бизнес-инкубатор в цифрах:
✅ 140 компаний-резидентов на сегодняшний день
✅ 490 млн руб. годовая выручка резидентов
✅ 380 сотрудников в компаниях-резидентах
✅ 435 компаний-выпускников
✅ 5,5 млрд руб. выручка выпускников в 2024 году
🚀 Благодарим всех, кто причастен к этой победе — наших резидентов, выпускников и партнеров. А мы продолжаем работать, чтобы поддерживать самые смелые идеи и помогать им становиться большим бизнесом.
2 октября в Москве прошла премия Startup Summit от Сбера, где наградили региональные органы власти и институты развития, которые успешно реализуют меры поддержки для стартапов. Из 79 регионов в шорт-лист номинации вошли Технопарки Новосибирской области (Академпарк), Санкт-Петербурга и Якутии.
Экспертный совет во главе с Первым заместителем Председателя Правления ПАО Сбербанк Александром Ведяхиным и Заместителем Мэра Москвы в Правительстве Москвы — руководителем Аппарата Мэра и Правительства Москвы Натальей Сергуниной из трех финалистов присудили первое место Академпарку.
Эта победа — результат работы команды, которая помогает технологическим стартапам в Новосибирске с момента их зарождения до масштабирования. Уже 15 лет мы создаем условия для успешного старта и роста инновационных проектов.
Бизнес-инкубатор в цифрах:
Алексей Логвинский, исполнительный директор Фонда «Технопарк Академгородка», руководитель бизнес-инкубатора Академпарка:
«Мы хотим разделить эту награду за многолетнюю работу с нашими резидентами и выпускниками бизнес-инкубатора Академпарка, с этими активными, творческими, талантливыми и смелыми людьми-предпринимателями, которые много лет доверяют нам и выбирают строить свой бизнес и технологическое будущее страны с Академпарком. Поздравляю команду Академпарка с победой и благодарю Правительство Новосибирской области за надежную поддержку экосистемы Академпарка»
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Рубрика "Голова и пепел" 🤦🏼♂️
Намедни нужно было реализовать логику учёта неких лимитов, получаемых из внешней системы в виде вещественных чисел. Зная, что лимиты могут быть не выставлены (и это ОК), я решил не обкладываться бесконечными
К моему удивлению, на первых же тестах значение
Убедившись, что кукушка на месте, я принялся разбираться и выяснил, что в классе
, то есть действительно самое маленькое, но положительное число. А наименьшее отрицательное выражено другой константой с противоестественным (для непосвященного взгляда) значением:
Аналогичная константа есть и для положительного числа, и это совсем не то же самое, что
Намедни нужно было реализовать логику учёта неких лимитов, получаемых из внешней системы в виде вещественных чисел. Зная, что лимиты могут быть не выставлены (и это ОК), я решил не обкладываться бесконечными
if (limit == null) в коде, а просто принять их равными максимально возможным значениям типа Double. Поскольку недавно решал подобную задачу для целочисленных значений, в качестве этих экстремумов взял константы Double.MIN_VALUE и Double.MAX_VALUE, то есть такие же, как в классе Integer 👌🏼К моему удивлению, на первых же тестах значение
0 не прошло проверку при незаданных лимитах, потому что оказалось... меньше MIN_VALUE 😱Убедившись, что кукушка на месте, я принялся разбираться и выяснил, что в классе
Double константа MIN_VALUE — это, оказывается:A constant holding the smallest positive nonzero value of type `double` (4.9e-324)
, то есть действительно самое маленькое, но положительное число. А наименьшее отрицательное выражено другой константой с противоестественным (для непосвященного взгляда) значением:
public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
Аналогичная константа есть и для положительного числа, и это совсем не то же самое, что
MAX_VALUE. В общем, слово "плавающая" в названии арифметики, похоже, указывает не только на позицию запятой, но и на возможность "поплыть" даже (казалось бы) опытному инженеру. Век живи, век учись 🧑🎓👍16😁6🤯3❤2😨2
Вперёд в прошлое 🕰
Очередным путешествием во времени обернулись раскопки недавно заведённого (якобы) бага в нашей платформе. Автор тикета создавал в БД через платформу некие записи с указанием их точной временной метки, а потом считывал их обратно с указанием той же метки, но полученной расчётами. И если созданные недавно записи считывались успешно, то относительно старые почему-то не находились. Точнее, находились, но только когда в запросе временная метка была сдвинута на 1 час позже 🧐
В #Java коде указание временной метки при добавлении записи сводилось вот к такому вызову:
, где
А при считывании та же временная метка формировалась путем прибавления или вычитания периодов из некой отправной метки, заданной примерно как:
Арифметика там точно правильная, но старые записи почему-то не находятся🤷♂️
Заметили разницу в указании часовых зон? Казалось бы, если Красноярск опережает Лондон на 7 часов, то какая разница, как это указывать:
И действительно никакой, если говорить о том, как он живёт сейчас. Но не факт, что так было в прошлом. Например, в том же 2004 году в Красноярске, как и во всей России, ещё действовали переходы на зимнее и летнее время, а значит, только полгода город жил по GMT+7, а остальные полгода — по GMT+8. И угадайте, в какой период попадала проблемная дата 30.03.2004?.. Правильно 😉
Фишка в том, что при указании
Мораль сей басни такова:
— для всякого "абсолютного" времени указывайте (или запрашивайте) временную зону, даже если это UTC;
— если речь о времени в конкретном месте (точке, городе, области), то её временную зону указывайте не смещением, а названием региона.
Поддерживаемые названия регионов и их характеристики можно посмотреть в этой статье 📚
Очередным путешествием во времени обернулись раскопки недавно заведённого (якобы) бага в нашей платформе. Автор тикета создавал в БД через платформу некие записи с указанием их точной временной метки, а потом считывал их обратно с указанием той же метки, но полученной расчётами. И если созданные недавно записи считывались успешно, то относительно старые почему-то не находились. Точнее, находились, но только когда в запросе временная метка была сдвинута на 1 час позже 🧐
В #Java коде указание временной метки при добавлении записи сводилось вот к такому вызову:
ZonedDateTime zdt = ZonedDateTime.of(year, month, day, hour, minute, second, nanos, zoneId);
, где
zoneId — строковый идентификатор временной зоны. Например, если запись создавалась на полночь 30 марта 2004 года в Красноярске (GMT+7), то строка выше неявно преобразовывалась в:ZonedDateTime zdt = ZonedDateTime.of(2004, 3, 30, 0, 0, 0, 0, "GMT+7");
А при считывании та же временная метка формировалась путем прибавления или вычитания периодов из некой отправной метки, заданной примерно как:
ZonedDateTime baseDateTime = ZonedDateTime.now(ZoneId.of("Asia/Krasnoyarsk"));Арифметика там точно правильная, но старые записи почему-то не находятся🤷♂️
Заметили разницу в указании часовых зон? Казалось бы, если Красноярск опережает Лондон на 7 часов, то какая разница, как это указывать:
GMT+7 или Asia/Krasnoyarsk? 🤔И действительно никакой, если говорить о том, как он живёт сейчас. Но не факт, что так было в прошлом. Например, в том же 2004 году в Красноярске, как и во всей России, ещё действовали переходы на зимнее и летнее время, а значит, только полгода город жил по GMT+7, а остальные полгода — по GMT+8. И угадайте, в какой период попадала проблемная дата 30.03.2004?.. Правильно 😉
Фишка в том, что при указании
GMT+7 автор тикета фактически задавал фиксированное смещение, а не часовой пояс. Разница в том, что пояс может давать разные смещения в зависимости от того, к какой дате он применён, то есть он ещё учитывает историю изменений смещения в заданном регионе. Для этого в состав каждой JDK/JRE встроена база данных временных зон, которую ведёт международная организация с красивым именем IANA. Эта база лежит в виде файлика $JAVA_HOME/lib/tzdb.dat. С ним и сверяется JDK, когда выбирает смещение для заданной даты в заданном регионе 🌍Мораль сей басни такова:
— для всякого "абсолютного" времени указывайте (или запрашивайте) временную зону, даже если это UTC;
— если речь о времени в конкретном месте (точке, городе, области), то её временную зону указывайте не смещением, а названием региона.
Поддерживаемые названия регионов и их характеристики можно посмотреть в этой статье 📚
🔥14👍6😁3❤2😱1
Перекладывая сезонные вещи на балконе, поднял постепенно скопившуюся там коллекцию номеров, с которыми когда-либо участвовал в соревнованиях. Это лишь сохранившиеся, да ещё к ним затесались несколько детских, но всё же не думал, что их уже столько... 🙈
Помятые, местами грязные, пропитанные потом и дождём, часто липкие от пролитого энергетического геля, они как будто до сих пор излучают те энергии и эмоции, с которыми я преодолевал стоявшие за ними дистанции. Может, поэтому я их и не выкидываю. Хотя что с ними ещё делать — до сих пор не придумал... 🤷♂
Может, у кого есть идеи?.. 🙂
#спорт
Помятые, местами грязные, пропитанные потом и дождём, часто липкие от пролитого энергетического геля, они как будто до сих пор излучают те энергии и эмоции, с которыми я преодолевал стоявшие за ними дистанции. Может, поэтому я их и не выкидываю. Хотя что с ними ещё делать — до сих пор не придумал... 🤷♂
Может, у кого есть идеи?.. 🙂
#спорт
🆒6😎4👍2🔥1
Нынче я тружусь над бэкендом российской интеграционной платформы AggreGate, которая используется, в том числе, как BMS — система управления зданиями 🏰
Наверняка вы замечали, как много в современных административных (да и жилых) зданиях всякого рода устройств: от приборов освещения и вентиляции до систем пожаротушения и управления доступом. И ведь всем этим нужно как-то управлять 🛞
Недавно прошёл открытый вебинар о внедрении платформы AggreGate в Лахта-Центре — комплексе зданий, включающем самый высокий небоскрёб в России и Европе (462 м, 87 этажей). На встрече один из моих коллег, а также представитель компании-интегратора рассказали о самом проекте внедрения, его основных технических решениях и особенностях 📺
Мне как разработчику, непосредственно причастному к развитию этой платформы, оченьстрашно приятно узнавать о таких внедрениях и поражаться их масштабности. Одно дело, когда ты запускаешь это всё на своём ноутбуке и играешься с виртуальными девайсами, но совсем другое, когда оно управляет сложнейшими системами огромного здания с сотнями людей внутри... 👷♂️
Пожалуй, всё-таки надо будет наведаться в Лахта-Центр на экскурсию при следующем визите в Петербург 🎯
Наверняка вы замечали, как много в современных административных (да и жилых) зданиях всякого рода устройств: от приборов освещения и вентиляции до систем пожаротушения и управления доступом. И ведь всем этим нужно как-то управлять 🛞
Недавно прошёл открытый вебинар о внедрении платформы AggreGate в Лахта-Центре — комплексе зданий, включающем самый высокий небоскрёб в России и Европе (462 м, 87 этажей). На встрече один из моих коллег, а также представитель компании-интегратора рассказали о самом проекте внедрения, его основных технических решениях и особенностях 📺
Мне как разработчику, непосредственно причастному к развитию этой платформы, очень
Пожалуй, всё-таки надо будет наведаться в Лахта-Центр на экскурсию при следующем визите в Петербург 🎯
🔥12👍6
А пока в Петербурге проходит #Java конференция Joker, в Новосибирске уже официально стартует подготовка к конференции SnowOne. Буду рад видеть вас в числе зрителей, а самых бесстрашных — в числе докладчиков (ссылка на CFP в сообщении ниже) 👇
👍2
Forwarded from SnowOne-канал
Всем привет!
А мы с хорошими новостями о SnowOne ❄️
– Следующий SnowOne состоится и пройдет 27 - 28 февраля 2026 года (опять попадаем в настоящие последние дни зимы!). Место проведения: Новосибирский Академпарк;
– В программе: студенческий и основной дни, как было в последние годы, идем по классике;
– В студенческий день будет 4 доклада, в основной – 15 (на 3-ех треках);
– В этом году очень хотим привлечь больше городских посетителей, поэтому постараемся организовать удобный трансфер;
– Продолжаем жить на новом сайте: https://snowone.ru (на нем, например, появился архив, как вы и просили);
—
Очень скоро мы начнем анонсировать первых спикеров и откроем продажу blind bird билетов, но уже сейчас можно сделать следующее:
1) Подать заявку на доклад через нашу форму cfp;
2) Подписать на нашу рассылку на сайте (внизу главной страницы), чтобы ничего не пропустить.
—
С нетерпением ждем февраля и уже напряженно работаем над программой! У нас очень много классных идей, уверены, что удивим вас в хорошем смысле)
Искренне ваши,
Команда SnowOne ⛄️
А мы с хорошими новостями о SnowOne ❄️
– Следующий SnowOne состоится и пройдет 27 - 28 февраля 2026 года (опять попадаем в настоящие последние дни зимы!). Место проведения: Новосибирский Академпарк;
– В программе: студенческий и основной дни, как было в последние годы, идем по классике;
– В студенческий день будет 4 доклада, в основной – 15 (на 3-ех треках);
– В этом году очень хотим привлечь больше городских посетителей, поэтому постараемся организовать удобный трансфер;
– Продолжаем жить на новом сайте: https://snowone.ru (на нем, например, появился архив, как вы и просили);
—
Очень скоро мы начнем анонсировать первых спикеров и откроем продажу blind bird билетов, но уже сейчас можно сделать следующее:
1) Подать заявку на доклад через нашу форму cfp;
2) Подписать на нашу рассылку на сайте (внизу главной страницы), чтобы ничего не пропустить.
—
С нетерпением ждем февраля и уже напряженно работаем над программой! У нас очень много классных идей, уверены, что удивим вас в хорошем смысле)
Искренне ваши,
Команда SnowOne ⛄️
SnowOne 2026. Content-First Java‑конференция из Сибири
SnowOne 2026 — Content-First Java‑конференция из Сибири
👍5
А тем временем, оказывается, вышел JUnit 6.0 — базовый фреймворк для тестирования всего, что плохо лежит или медленно движется написано на #Java 🎉
Обычно инкремент мажорной версии фреймворка подразумевает обратную несовместимость или вообще полный разлом всего и вся. JUnit переживал такой эпизод в своей жизни, когда 8 лет назад, будучи уже де-факто стандартом, анонсировал свою 5-ю версию. Несмотря на всякие migration guides и отдельный движок для запуска старых тестов (Vintage), во многих проектах так и осталось огромное наследие некогда написанных на JUnit 4 тестов, которые до сих пор некогда/неохота переписывать 🏚
В проекте AggreGate я всё же затеялся и мигрировал несколько тысяч модульных тестов с JUnit 4 (и даже 3!) на JUnit 5, поскольку это было нужно для автоматизации и унификации построения отчётов о тестах. Понятно, что вручную заниматься таким — самоубийство, поэтому я воспользовался OpenRewrite — движком автоматического рефакторинга; благо, в нём оказался целый раздел рецептов для миграции на JUnit 5 🪄
Если верить страничке Upgrading to JUnit 6.0, в этот раз таких подвигов не потребуется:
Самым главным изменением видится выбор Java 17 в качестве базовой версии JDK. В целом, это вполне ожидаемо, а то сколько ж можно сидеть на восьмёрке?! 🤪
Скромный список основных изменений можно посмотреть в официальных Release Notes. Чуть более разжёванное описание всех фич — вот в этой статье моего тёзки на Medium. А любителям кушать под бубнёж умных мужиков с Ютуба советую часовое интервью Марка Филиппа (главного контрибьютора JUnit) Андрею Беляеву, который, кстати, выступал у нас на конференции SnowOne (да ещё в офлайн!)
Приятного просмотра! 🍿
Обычно инкремент мажорной версии фреймворка подразумевает обратную несовместимость или вообще полный разлом всего и вся. JUnit переживал такой эпизод в своей жизни, когда 8 лет назад, будучи уже де-факто стандартом, анонсировал свою 5-ю версию. Несмотря на всякие migration guides и отдельный движок для запуска старых тестов (Vintage), во многих проектах так и осталось огромное наследие некогда написанных на JUnit 4 тестов, которые до сих пор некогда/неохота переписывать 🏚
В проекте AggreGate я всё же затеялся и мигрировал несколько тысяч модульных тестов с JUnit 4 (и даже 3!) на JUnit 5, поскольку это было нужно для автоматизации и унификации построения отчётов о тестах. Понятно, что вручную заниматься таким — самоубийство, поэтому я воспользовался OpenRewrite — движком автоматического рефакторинга; благо, в нём оказался целый раздел рецептов для миграции на JUnit 5 🪄
Если верить страничке Upgrading to JUnit 6.0, в этот раз таких подвигов не потребуется:
Migrating from JUnit 5.x.y to 6.0.0 should be much easier than migrating from 4.x to 5.x.
Самым главным изменением видится выбор Java 17 в качестве базовой версии JDK. В целом, это вполне ожидаемо, а то сколько ж можно сидеть на восьмёрке?! 🤪
Скромный список основных изменений можно посмотреть в официальных Release Notes. Чуть более разжёванное описание всех фич — вот в этой статье моего тёзки на Medium. А любителям кушать под бубнёж умных мужиков с Ютуба советую часовое интервью Марка Филиппа (главного контрибьютора JUnit) Андрею Беляеву, который, кстати, выступал у нас на конференции SnowOne (да ещё в офлайн!)
Приятного просмотра! 🍿
👍9🔥2
Давненько не было новостей про #спорт , а ведь есть что рассказать 👇
В минувшее воскресенье состоялся мой заключительный старт летнего бегового сезона 2025 — Юрманка трейл. Это забег на 35 (по факту 37) километров с набором высота около 1100 м (примерно 380 этажей) по окрестностям реки Бердь и посёлка Маслянино в Новосибирской области. И без того едва заметные тропинки этой трассы во многих местах совсем исчезли под слоем недавно выпавшего снега, поэтому организаторам пришлось размечать трассу "по-дикому": сквозь заросли, косогоры и лес. Вместе с переходящим в грязь снегом это добавило гонке ещё несколько "изюминок" 🚧
Относительно хорошие результаты на минувших в сентябре полумарафоне Раевича (21,1 км) и Альбатрос-трейле (18 км) вселили в меня надежду на то, что в Юрманке я тоже смогу пробежать хорошо, хоть это и пока рекордно большая для меня дистанция в трейлах. Поэтому весь прошлый месяц я целенаправленно готовился:
— выбирал, заказывал и тестировал экипировку (без неё к таким стартам не допускают);
— проверял разные варианты одежды, чтобы при 0 градусов было комфортно бежать 3-4-5 часов;
— и, конечно, тренировался на пересечёнке: по вечерам с фонариком бегал на лыжных имитационных кругах, по утрам в выходные чавкал в ручьях вокруг Академгородка, а как-то раз изрядно помесил свежезаснеженные подъёмы горно-лыжного комплекса ⛷
В объективных цифрах это дало, в целом, неплохой результат: я финишировал за 4 часа 18 минут, став 14-ым из 98 бежавших эту дистанцию мужчин и 7-ым из 32 в категории М30-39 🏆
Однако с точки зрения раскладки сил и, как следствие, полученных впечатлений на финише, этот старт, увы, обернулся для меня фиаско — после 28-го километра, когда закончилась серия крутых подъёмов, я с неприятным удивлением осознал, что ноги тоже "кончились" (мышцы забились). На тот момент я замыкал группу бодрых бегунов, при должной борьбе в которой я мог бы попасть в призы в своей возрастной категории. Мой расчёт был на то, что дальше, когда трасса будет уже более пологой, я смогу этим заняться. Но увы, вместо этого я стал от них отставать, а вскоре и вовсе начал переходить на шаг при малейших подъёмах, постепенно уступив ещё несколько позиций догнавшим меня участникам. В таком полупешем режиме я и дотошнил оставшиеся 8 км до финиша 🏁
Будь я профессиональным спортсменом или помешанным на результатах, я бы всё равно посчитал такой исход успешным, ведь трудность и усталость в таком случае — необходимое зло, которым можно пренебречь. Но поскольку я — любитель (от слова "любить", на минуточку), для меня принципиально важно испытывать позитив, в том числе во время гонок и на их финише. Однако едва ли можно любить находиться в таком состоянии, в каком я был после финиша этой гонки. Уж лучше оказаться далёким от лидеров, но сохранить способность радоваться происходящему, а не сидеть потом полчаса под деревом с языком на плече 😛
Как бы там ни было, опыт получен, работа над ошибками проведена, выводы сделаны. Тем интереснее будет сравнивать результаты в следующий раз 😉
P.S. Часть фото авторские, часть из Telegram-чата гонки, часть от фотографов.
В минувшее воскресенье состоялся мой заключительный старт летнего бегового сезона 2025 — Юрманка трейл. Это забег на 35 (по факту 37) километров с набором высота около 1100 м (примерно 380 этажей) по окрестностям реки Бердь и посёлка Маслянино в Новосибирской области. И без того едва заметные тропинки этой трассы во многих местах совсем исчезли под слоем недавно выпавшего снега, поэтому организаторам пришлось размечать трассу "по-дикому": сквозь заросли, косогоры и лес. Вместе с переходящим в грязь снегом это добавило гонке ещё несколько "изюминок" 🚧
Относительно хорошие результаты на минувших в сентябре полумарафоне Раевича (21,1 км) и Альбатрос-трейле (18 км) вселили в меня надежду на то, что в Юрманке я тоже смогу пробежать хорошо, хоть это и пока рекордно большая для меня дистанция в трейлах. Поэтому весь прошлый месяц я целенаправленно готовился:
— выбирал, заказывал и тестировал экипировку (без неё к таким стартам не допускают);
— проверял разные варианты одежды, чтобы при 0 градусов было комфортно бежать 3-4-5 часов;
— и, конечно, тренировался на пересечёнке: по вечерам с фонариком бегал на лыжных имитационных кругах, по утрам в выходные чавкал в ручьях вокруг Академгородка, а как-то раз изрядно помесил свежезаснеженные подъёмы горно-лыжного комплекса ⛷
В объективных цифрах это дало, в целом, неплохой результат: я финишировал за 4 часа 18 минут, став 14-ым из 98 бежавших эту дистанцию мужчин и 7-ым из 32 в категории М30-39 🏆
Однако с точки зрения раскладки сил и, как следствие, полученных впечатлений на финише, этот старт, увы, обернулся для меня фиаско — после 28-го километра, когда закончилась серия крутых подъёмов, я с неприятным удивлением осознал, что ноги тоже "кончились" (мышцы забились). На тот момент я замыкал группу бодрых бегунов, при должной борьбе в которой я мог бы попасть в призы в своей возрастной категории. Мой расчёт был на то, что дальше, когда трасса будет уже более пологой, я смогу этим заняться. Но увы, вместо этого я стал от них отставать, а вскоре и вовсе начал переходить на шаг при малейших подъёмах, постепенно уступив ещё несколько позиций догнавшим меня участникам. В таком полупешем режиме я и дотошнил оставшиеся 8 км до финиша 🏁
Будь я профессиональным спортсменом или помешанным на результатах, я бы всё равно посчитал такой исход успешным, ведь трудность и усталость в таком случае — необходимое зло, которым можно пренебречь. Но поскольку я — любитель (от слова "любить", на минуточку), для меня принципиально важно испытывать позитив, в том числе во время гонок и на их финише. Однако едва ли можно любить находиться в таком состоянии, в каком я был после финиша этой гонки. Уж лучше оказаться далёким от лидеров, но сохранить способность радоваться происходящему, а не сидеть потом полчаса под деревом с языком на плече 😛
Как бы там ни было, опыт получен, работа над ошибками проведена, выводы сделаны. Тем интереснее будет сравнивать результаты в следующий раз 😉
P.S. Часть фото авторские, часть из Telegram-чата гонки, часть от фотографов.
🏆12🔥5