Pull to refresh
246
19
Егор Смирнов @JediPhilosopher

Учим ИИ проектировать города

Send message

Я в свое время делал навигатор для построения интересных маршрутов по городу. Который умеет строить не кратчайший путь между двумя точками, а более интересный. Алгоритмы описывал на Хабре https://habr.com/ru/articles/414433/

Сам навигатор доступен онлайн https://sightsafari.city и под андроид

Пока делал, столкнулся с рядом подводных камней, это касается не только вашего или моего приложения, а в целом всех идей "приложений для туристов".

Во-первых, в приложениях для туризма денег нет, если это не брони отелей и покупка билетов. Ну еще немного в продаже экскурсий, но тут и присесть можно (см недавний кейс Спутника, где владельца платформы посадили за то, что через его платформу продали тур в котором люди погибли).

Все остальное не вызывает интереса у инвесторов и не приносит денег. Всякие izi.travel уже банкротились и хз как выживают, Maps.me добавляли маркетплейс туров в попытках выйти на рентабельность но он был убыточен. Куча стартапов в этой сфере умерли после пары лет попыток, и их имена я уже сейчас не вспомню, так как изучал этот вопрос уже довольно много лет назад.

Любые идеи типа "на карте для туристов что-то отмечаем" не рентабельны. Гиганты типа яндекс-карт еще могут как-то приносить доход за счет масштаба. Но если вы не они - то забудьте о методе монетизации через платные точки и объявления на карте, не взлетит. Хотя я слышал что и Google Maps убыточен, и нужен только как часть инфраструктуры Google.

Так что если такое и делать - то только либо на голом энтузиазме, либо с четким планом как потом это продать какому-то крупному игроку в его инфраструктуру. Такие стартапы могли взлетать на инвесторские деньги в жирные годы, когда на какую только чушь не давали, если уметь убедительно болтать языком. Сейчас же в годы дорогих денег и сокращений вам точно не дадут ничего.

Во-вторых внезапно многие люди не хотят этим пользоваться, как бы увлекательно не выглядела ваша идея в теории. Большинство людей планирует крупные поездки 1-2 раза в год. И когда у них встает вопрос, воспользоваться каким-то ПО для планирования маршрута, которое надо устанавливать, регистрироваться, разбираться, изучать, то люди чаще всего забивают и берут привычные им карты. Потому что для одной поездки в году изучить ваше приложение скорее всего будет сложнее чем самому прошерстить интернет и построить маршрут вручную.

Да, на словах в опросе вам скажут, что им идея нравится. Но пользоваться ей не будут и тем более не будут за нее платить.

Поэтому эта сфера она такая, не самая радужная для стартапов, как кажется на первый взгляд.

Независимо от погоды только метро. И то — не от наводнения.

Чтобы нельзя было ездить на авто, погода должна быть совсем уж ппц уровня стихийного бедствия типа наводнения или урагана.

А вот погода, в которую нельзя летать мелкой авиации случается регулярно. Ветер в 10 м/с для человека-то не особо сильный, а вот для легкомоторных самолетов и тем более СЛА уже нелетный обычно. На облачность на машине вообще пофиг, на осадки и видимость тоже, в черте города видимости в 30-40 метров хватит, а для любой мелкоавиации это тоже уже за пределом возможного.

В общем сильно, сильно все хуже. И это я еще вопросов аэрологии и турбулентности не касаюсь. В аэродинамических трубах между многоэтажками в сильный ветер будет такая турбула фигачить что легкий самолет уронить может.

Вид транспорта на это, скорее всего, мало влияет.

Принципиально влияет. Мелкие столкновения и неисправности на авто - и вы просто останавливаетесь. На городских скоростях, если не превышать, убиться сложно, жертвы это чаще всего пешеходы. А вот такое же столкновение для летающих аппаратов - и почти гарантированное падение с разрушением, а потом еще и взрывом.

В Гостилицах например лет десять назад два самолета легкомоторных столкнулись на кругу вокруг аэродрома. Один упал и разбился, второй долетел и сел со сломанной стойкой шасси. В случае с авто отделались бы парой вмятин, относительная скорость была небольшая.

В общем все это на мой взгляд принципиально отличает летающий транспорт от наземного.

Человек пять ко мне обращались с интересом про ИТ, из них один прошел путь до конца и сейчас работает у меня джуном. Остальные отваливались на этапе вопросов или более близкого ознакомления с учебными материалами.

Просто потому что на самом деле для большинства людей программирование - это скучный и сложный аутизм. Заниматься которым они просто физически не способны, и быстро это понимают.

Что каждый ответственный родитель должен сделать для ребенка - это зарегистрировать ему с детства какой-то нормальный почтовый адрес, к которому будут привязаны все аккаунты. Чтобы потом, устраиваясь на работу или еще в какой-то формальной обстановке, он предъявлял почтовый адрес типа "ivanov_i_i@gmail.com", а не какой-нибудь кринжовый "ultranagibator9999@gmail.com". Который казался офигенно крутым в 7 лет, но несколько странным в 20.

Логично такой адрес заводить на той платформе, с которой связаны гаджеты в семье - Google или Apple.

И вот с почтой на них прям реально проблемы, все короткие сочетания имен-фамилий уже заняты, надо или цифры добавлять или еще что-то.

В Дубае в магазине половина товаров российских. Korovka is Korenovki и Uncle Vanya. Уж думаю и Ессентуки найдутся.

По диагонали прочитал, увидел только хотелки, обещания, прототипы и государственную сертификацию.

Я сам пилот-парапланерист и немного понимаю в полетах. И не вижу как бы современные технологии могли решить следующие проблемы всех этих летающих такси и машин:

  • Зависимость от погоды. Нафиг мне такси которое не летает если облачность ниже 100 метров или ветер сильнее 10 м/с (условно)?

  • В городе все небо в проводах и прочих помехах, где они будут садиться и взлетать? Даже с вертикальным взлетом-посадкой. Когда в Питере был теракт в метро, чтобы вертолеты скорой помощи могли сесть рядом с местом события, пришлось спешно снимать со столбов провода

  • Проблема с авариями. Никто не захочет чтобы ему на голову периодически падали какие-нибудь летающие машины. А они будут, как только их станет достаточно много: и потому, что контроль за ними сильно ниже чем за "большой" авиацией, и потому что любое столкновение будет приводить к падению.
    На всякую малую и сверхлегкую авиацию постоянно бочки катят, что они падают периодически и проблемы всем создают.

Ни одна из этих проблем внятно не решается, независимо от того что вы там делаете - олдскульный "летающий автомобиль" из 40-х (авто с прилепленными крыльями), или модный смузихлебный мультикоптер на электромоторах и с ИИ. Вас все равно будет сдувать ветер, вам все равно нужна площадка для посадки и вы все равно можете упасть от любого столкновения или отказа.

Поэтому все это выглядит как очередная волна глупого хайпа и раздувания пузыря на ровном месте.

Это не работает для пет-проектов. Вот я сделал пешеходный навигатор Sight Safari, про который тут писал https://habr.com/ru/articles/414433/. Он работает, пользователи какие-то есть. Но и развивать я его не развиваю, так как денег он не приносит.

Иногда, редко-редко, фикшу какие-то критические баги.

И тут бац, меня гугл извещает что начиная с какого-то момента если я не обновлю targetSDK на новую версию то меня больше не пустят в гугл плей.

И начались пляски с бубном, так как глобально я проект давно не обновлял. Апдейт tagetSDK тащит за собой апдейт примерно всего: грейдла, андроид студии. Затем выясняется что куча библиотек больше не работает, ведь в новом андроиде еще подзакрутили гайки и поломали совместимость. У меня например это оказалась библиотека рисования карт. Та что у меня новые андроиды больше не поддерживает, а новая версия - это такой мажорный апдейт, который ломает просто ВСЁ приложение, потому что там теперь все делается иначе, другие методы апи, другой флоу работы с картой. Весь старый код (а у меня там много чего было чтобы рисовать свои собственные маршруты по достопримечательностям, а не кратчайшие пути) у меня сломался и перестал работать.

В итоге плюнул и забил. Больше у приложения видимо не будет обновлений.

При том что веб-версия работает и есть не просит.

Китайцы уже запустили городские аэротакси

Да? Можно пруф? Не на то что где-то какие-то очередные зумеры переизобрели в тысячный раз идею аэротакси и показали на какой-нибудь стартап-конференции. А на прям коммерчески действующие такие системы?

Это вызвано необходимостью или синхронизировать вращение винтов, или иметь один двигатель вращающий оба винта и тогда длинную и сложную трансмиссию.

Думаю в случае с электромоторами все будет сильно проще, хоть и с ограниченной грузоподъемностью.

Затем что так в целом картография устроена. Уровень дороги (местная, магистральная, служебный проезд) - понятие юридическо-административное, а не физическое, и прямой связи с физическими же свойствами дороги не имеет.

Исторически идет с бумажных карт, где пользователям важно было понимать, где главная улица города и где транзитный маршрут через город, а где местные улочки. А на бумаге кроме цвета и толщины линии ничего особо не отобразишь.

Этот же принцип перенесли на электронные карты. Где у дороги есть первичный тип (в терминах OpenStreetMap - всякие primary/secondary/residential/service) описывающий использование и назначение дороги. А остальная информация добивается опциональными тегами, в которых уже можно записать количество полос, ширину, материал покрытия, наличие освещения и т.п.

Но эти дополнительные теги есть далеко не везде. И автоматических их проставлять тоже сложно. На спутниковом снимке можно увидеть дорогу и примерно прикинуть ее тип, но вот число полос разглядеть уже не факт что выйдет (качество за пределами крупных городов так себе), как и качество покрытия.

Опять же, грунтовая грунтовой рознь. Грунтовая может означать как хороший свежий грейдер из гравия и песка, по которому в целом можно гонять на чем угодно. Так и разбитую колею с лужами, в которых можно УАЗ утопить по крышу. Более того, одно время от времени превращается в другое. Если тип дороги меняется редко, то вот физические свойства покрытия меняются при ремонтах или со временем.

Поэтому текущий подход остается - первично назначение дороги, а ее физические свойства вторичны. Что в целом работает, но иногда вот приводит к казусам, да.

В Индии как раз распространена практика, когда один спец проходит собеседование за всю деревню, они устраиваются на работу (пользуясь тем что белые люди их не различают особо визуально), "работают" пару месяцев пока их не уволят. При том что зарплата даже джуна в западной компании за пару месяцев это примерно доход типичного индуса из деревни за несколько лет.

Уволишь сразу - на Хабре будут кричать "ооо он еще не разобрался, у него стресс, надо дать время на вкатывание в проект, вот у меня это бы месяца 3-4 заняло чтобы только первую строчку кода написать, ты дурак а не начальник"

Уволишь выждав месяц на всякий случай, вдруг человеку действительно нужно время освоиться - "ооо ревьювер плохой, не понял что программист ничего не умеет, ты дурак а не начальник".

Смешно, Хабр (и вообще русскоязычное коммьюнити) никогда не меняется. Что бы ты ни сказал и ни сделал - ты дурак. Примерно как на картинке

Ну что поделать, я могу, вы не можете. Вероятно это не моя проблема.

О, я вас ждал. Это же Хабр, тут тебе всегда объяснят, какой ты лох и ничего не умеешь, хех. Причем отвечают зачастую своему представлению о ситуации.

И увидели вы это не через пару дней, что ничего не делает, ни через неделю, а спустя 2 месяца.

Месяц я списывал это все на ввод в курс дела, проект у нас достаточно большой и сложный. Ну и первые задачки были простые, там он более-менее справлялся. Хотя первые звоночки были уже тогда, что скорее "менее". Но, повторюсь, я оптимистично смотрю на людей, и всегда верю в лучшее. С другими членами команды это осечек не давало.

Потом там были еще организационные причины, по которым меня попросили не увольнять человека в определенный диапазон дат.

Для этого есть ревью, где указывают на недостатки/улучшения. Если его PR замерджили - значит качество кода компанию устраивает. Если же приходится исправлять потом - то это вопрос к ревьюверам, а не к новому сотруднику.

Исправление было в его ветках, в мастер оно попадало готовым в итоге. Но времени отнимало многовато и руководить им надо было почти как джуном. У нас много студентов-джунов практику проходило, и вот как-то слишком похоже было. Хотя вообще-то идея была взять миддла с опытом, которого не надо учить писать код.

Что значит вовремя? Через 10 минут это вовремя или нет? У меня знакомому макака СТО писала в 10 вечера по задачам.

Вовремя это значит в рабочее время в пределах 20 минут. Это озвучивалось на собеседовании и еще несколько раз ему проговаривалось. По факту ответы бывали через несколько часов (пишут в 13 часов - ответ получаю в 19), а то и на следующий день.

Человек просто продалбывался за пределами допустимого.

Если да, то сами и наняли? Если нет, то почему сами не собесили? 

Да, сам нанял. И до сих пор честно говоря в недоумении как так вышло. Я выше уже писал, что если бы не лично собеседовал - решил бы что это какой-то обман, типа что один человек проходит собеседование а "работает" другой. Человек на собеседовании был адекватен, решал задачи, отвечал по опыту, вспомнил даже какую-то базу из CS.

Это меня расстроило, первый раз так лоханулся с отбором.

Смешно, вы всерьез думаете, что человек с опытом в 15 лет не сможет разобраться в коде на смежном языке программирования?

Ладно еще на Haskell мне было бы сложновато понять что происходит. Но после Java читать код на C# особых проблем не вызывает

Я и был его ревьювером. В итоге простые задачи превращались в бесконечную череду доделок. Нет, в мастер ветку оно конечно не попадало.

Я это отлично понимаю и готов с этим мириться.

Этого как раз обычно не понимают в комментариях на хабре с их вечным "ой я такой гениальный разработчик, но ваши фильтры не пройду".

Да пофиг. Нам важнее не взять еще раз вот такого кадра. Если при этом мы упустим какое-то количество хороших разработчиков - в большинстве случаев это не является критичным.

Нет, не могу. Если бы я сам его не собеседовал очно - решил бы что это какой-то обман, типа что собеседование проходит один человек, а работает другой.

Общался на собеседовании он нормально, мои пару простых задачек на код решил, по прошлому опыту отвечал адекватно.

В итоге, если не брать сказочные варианты с братом-близнецом, у меня два варианта. Либо он просто решил работать сразу на нескольких работах и не справился. При том что отвечать он начинал в мессенджере обычно вечером и увиливал днем иногда от предложений прийти в офис и очно порешать вопросы. В итоге все силы у него уходили на другое место работы, а нам доставался ночной вайбкодинг. Ну либо он просто забухал сильно или что-то в таком духе, хех.

Пока единственный полезный совет что мы вынесли из этой истории - проверять трудовую книжку. Там у него метания с 2-4 месяца на работу заметные, плюс еще одно увольнение по статье за то же самое. Тут мы продолбались, что не посмотрели внимательно.

У меня 15 лет опыта работы с Java. Исправить простые ошибки компиляции в коде на C# проблем не составляет. Плюс пара лет опыта работы на С++, так что от вида интерфейса Visual Studio я тоже не падаю в обморок.

У меня 8 лет опыта работы с GIS и картографией, так что я хоть и не работал напрямую с AutoCAD, но база работы с геометрией и координатами везде одинаковая. Плюс у меня хорошее фундаментальное ИТ образование, включавшая в том числе вычислительную геометрию и компьютерную графику, так что я знаю что такое сплайн или кривая второго порядка. И по названиям методов мне не сложно понять что они делают.

Я работал с разными гуевыми фреймворками, от WinAPI до Android, так что прочитать код, делающий формочки и таблицы, мне не сложно на любом языке программирования.

Поэтому я без проблем могу оценить правильность этого кода. Написать его с нуля я бы тоже мог, но у меня бы это заняло очень много времени, так как буквально каждую синтаксическую конструкцию или название метода пришлось бы гуглить. А имея код уже перед глазами, проверить что он компилируется, протестировать что он делает что надо и проглядеть и оценить общую логику - ваще не сложно.

Да, для этого надо быть мной, синьором-помидором, который видел некоторое дерьмо, делал игры для PS3, нигерийский финтех, ИИ и машинлернинг в урбанистике, имеет хорошее фундаментальное образование и умеет работать с джунами и учить людей программированию.

Вот для меня нейросети от офигенчик и я могу ими эффективно пользоваться.

Джун не сможет на таком уровне. Ему нейросеть выдаст нерабочий код, а он не сможет его понять, да. Поэтому мое ощущение что джуны станут через пару лет реально не нужны, а потом нашу отрасль ждет кризис. Но это уже не тема этой статьи и комментариев.

Ну вот я сейчас за два дня написал плагин для AutoCAD который экспортирует чертеж в нужном мне JSON формате.

При этом я раньше никогда не работал с AutoCAD и его SDK, а на C# я в последний раз писал лет 15 назад на семестровом курсе в университете.

Если бы я занимался этим полностью сам, у меня ушла бы минимум неделя, а то и больше. А тут примерно день на вайбкодинг с нуля, плюс еще день на зачистку багов и неработающего кода. И у меня есть плагин, который по команде рисует окошко, позволяет выбрать слои, назначить им свойства (то есть там еще и UI нетрививальный на WinForms), потом делает некие непростые преобразования координат (AutoCAD поддерживают кучу видов всяких сплайнов и кривых, а мне надо все превратить в ломаные линии) и сохраняет в файл.

Офигеть.

Да, это не то как в рекламе говорят. Да, за ним надо подчищать, правильно по кусочкам скармливать задачу и в целом понимать как ее решить самому, чтобы понимать где он продалбывается и какими уточняющими промптами надо его направлять.

Но в целом очень круто.

Information

Rating
391-st
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity