Статья немного перекликается с работой, которую я проводил месяц назад. Скажу сразу, что для меня это был рабочий проект, так что он под NDA и исходники не могу выложить. Но у меня тоже было сравнение Go и Rust (и другие решения включая чистый Си), но только в совершенно другом масштабе: мне нужно было нагрузить наши железки высокоуровневым (высшие слои OSI) трафиком под завязку. iperf-тесты уже были, но нам нужен был реалистичный трафик.
Мои результаты на localhost на моем рабочем linux ноутбуке (задейственны все ядра CPU, никаких мьютексов и других пожирателей CPU, статистика собиралась lock-free алгоритмами, сокеты с TCP_NODELAY):
Go - 400 тыс запросов секунду
Tokio/hyper - 300 тыс запросов в секунду (да, у меня эта пара оказалась медленнее, но у меня была немного другая методика тестирования)
Чистый epoll (rust и C показали примерно одинаковые результаты) - 600 тыс запросов в секунду
io_uring (пробовал только Rust, программировать на Си все-равно не собирался), тестировал пакеты glommio и monoio - 800 тыс. Остановился на последнем потому что есть fallback на epoll (старые linux) и kqueue (macos).
Ещё хотел бы отметить про hyper - я от него в конце отказался полностью и написал специализированный генератор и парсер HTTP, благо протокол простой. Flamegraph показал что hyper тратит слишком много времени CPU, и хотя у него могут быть более корректные по стандарту парсеры, для benchmark-а он стал бутылочным горлышком.
Таунхаус (меньше площадь, меньше окна, плюс общие стены с соседями, которые эту стены греют, плюс меньше продувается из-за этих же стен) 2014 года (достаточно новая теплоизоляция, ещё не осевшая в стенах) vs detached house (больше площадь, большие окна, продувается всеми ветрами) 2003 года (да, надо обновлять теплоизоляцию, но мне даже страшно представить сколько это стоит). Также много зависит от района, Калгари в целом весьма ветреный, а в нашей локации все весьма плохо.
Думаю, мне надо было уточнить, что я не имел в виду нормальные каркасники, в которых можно жить по 100 лет и более, а то недоразумение, которое строится сейчас в Северной Америке. Вот, например, вы говорите про балки, а я могу сказать сразу что тут строят так совсем не всегда, и я видел своими глазами, как проседают полы, и мои друзья ругались с контрактниками, чтобы они еще одну балку жесткости ставили.
И я не защищал кирпичные дома, и всеми руками за современные технологии. Но я просто вижу какое убожество тут строят, и современными технологиями тут зачастую и не пахнет. Я у себя дома все потолочное освещение менял (тут по умолчанию ставят вырвиглаз 50-летней давности), там зачастую даже заземление не было прикручено, а люстра могла держаться чуть ли не на проводах.
Каркасники для холодного климата вообще не подходят, когда у меня сломалась печка, температура дома упала на 3-4 градуса за час, а еще даже не сильные морозы были. Я читал профессиональные статьи по этому поводу (потому что у таких домов есть и другие проблемы, и сейчас это становится актуально):
это самое дешевое, что можно построить. В Северной Америке одни из самых высоких оплат труда, и чем быстрее и проще залепить, тем дешевле.
это самое простое, что можно ремоделировать. В золотые времена было нормально жить в доме не больше 5 лет здесь, потом его продать, и новые хозяева могут переделать все как хотят относительно дешево.
дешевая энергия - намного дешевле жечь газ или электроэнергию (особенно в США, там и сейчас весьма дешево), чем использовать энергосберегающие технологии. Сейчас это становится актуально, и начинают задумываться об улучшении технологий строительства.
В целом, это просто старая ментальность появившаяся в 50-х, у которой сейчас к счастью идет процесс ломки - можно построить некачественный продукт, который потом не жалко поменять или сломать. Ни о какой преемственности поколений, когда в доме живут больше 20 лет, разговоров вообще не было.
Оттава - замечательный семейный город, были несколько раз, и думаю, он несколько недооцененный. Нравится сеть Play Food & Wine (очень хороший pairing, да и сама кухня замечательная), историческая информация про памятники архитектуры (напр. что один из самых шикарных отелей там был построен изначально как конюшня) и то, что если ликерные закрыты, можно перейти/переехать по мосту во французскую часть и купить там что-нибудь на любой заправке.
Но, к сожалению, просто не наше, не хватает динамики. Пример - у меня супруга поклонница Властелин Колец, и в прошлом году мы посетили Comic Con в Калгари, где она смогла взять автограф и сфотографироваться с Элайджа Вудом. В Оттаве такое не происходит (как и многое другое, например, концерты крупных звезд). Да, можно относительно быстро добраться до Торонто, но по итогу, тогда уж лучше там и жить.
Про цены для сравнения (если бы изначально знали про это и осели в Оттаве, может все по другому и повернулось). В Калгари preschool бесплатных нет, около 1000+ в месяц full day, и 300 за два-три часа в день два раза в неделю (и это с учетом субсидий). daycare - также от 1000, обычно 1200-1400. Бассейнов тут точно нет, климат не позволяет, есть splash park-и, но на свой страх и риск (иногда бывает жара, может неделю-две за все лето). Правда про катки думаю тут не честно сравнивать - здесь идеальный зимний рай, чего только стоит покататься на коньках на Lake Louse.
В США явно не всем будет лучше, поэтому приведу только свои критерии:
медицина и налоги, как уже сказано в параллельной ветке. Для примера, самая лучшая по налогам провинция в Канаде (Альберта) хуже, чем самая худший штат в США (Калифорния). Правда, имею в виду только income tax.
Road trips. Проездил всю западную и часть восточной Канады и США. Дороги в США (по-крайней мере федеральные) лучше, инфраструктура тоже удобная для автомобилистов. Но должен признать что ковид подпортил везде, посмотрим как все изменится.
перелеты. Вне Торонто, и может частично Ванкувера, перелеты баснословно дорогие, и дерут деньги за все. В США все намного проще, особенно если жить в хабах, которых явно больше.
Культурные достопримечательности, музеи Нью-Йорка и других крупных городов. Естественно, не сравнится с Европой, но может в конце концов туда и уедем.
Все остальное, мне кажется, примерно похоже с Канадой. Да, в канадских школах не стреляют, но мне кажется, это вопрос времени. Я уже видел какой беспредел сейчас устраивают подростки, такого раньше не было.
7 лет в Ванкувере жизнью динков, было просто шикарно, особенно первые годы, когда ещё кондо в Коквитламе можно было купить за 150 тыс. (опыт моих друзей, продали в 2018 за 750 тыс). К слову сказать, мы платили за отдельную часть дома, 800 в месяц, общая площадь 100 кв.м, North Burnaby, что весьма хороший район. Но было видно даже за 7 лет, что quality of life снизился, даже безотносительно цен:
Город стал азиатским, как то гуляли поздно вечером в центре, и по ощущениям как будто в Китае оказались (где мы в реальности были много раз): красный неон, все по китайски, китайская речь, запаха тоже азиатские. В принципе, к Китаю отношусь нейтрально, но знаю случаи буллинга китайскими детьми белых в школах Ванкувера. Взрослые вроде ведут себя нормально.
Трафик ухудшился, постоянные пробки и даже не в центре, агрессивное вождение, случаи road rage-а точно известны.
Парковки во все парки забиты, уже съездить погулять стало проблемой. К счастью, public transit нормальный, park and ride, или даже просто приехать в центр и запарковаться на подземной парковке вполне опция. Никогда не имел проблем, но знаю лайфхак - можно парковаться в офисных зданиях, там есть гостевые парковки.
В целом, жить можно, природа красивая, климат приемлемый, есть не только outdoor, но и социальная жизнь. Но конечно дорого, и это отражается даже на вывесках везде help needed, так как никто за копейки не хочет работать (впрочем то же самое про Торонто).
Калгари тоже изменился - во время ковида сюда переехало просто не счесть людей. У нас был тихий район, а сейчас проездной. Здесь альтернативно одарённые умом градостроители решили что roundabout - это наше все, и налепили их везде. Теперь можно спокойно 15-20 минут стоять, чтобы просто на него въехать.
В целом Канада испортилась. Думаю, если выплачена ипотека, есть свой круг друзей и ограниченный набор интересов, то жить можно. Но если есть широкие интересы, как у нас, то тяжко. Просто для примера, часовой перелет (например Калгари - Ванкувер) стоит 100-300 долларов, в США очень часто можно меньше 100. Банфф когда-то 90 долларов за сутки можно было найти отель, сейчас самый зачуханный может до 600 стоить в сезон.
Думаю, моя основная претензия - все-таки медицина и образование. Всё это ухудшилось, в том число из-за массового притока, но при этом ничего толком нового из этих областей не строится. Когда я иммигрировал, надо было английский на хороший балл сдавать, сейчас сильно понизили. Это сказалось и на образовании, не говоря уж про повестку: стучи на родителей, все белые агрессоры и должны преклонять колено, ну и конечно цисгедерные отношения ненормальны. Здесь это вообще на поток поставлено.
Живу в Канаде 12 лет, этот год будет последний, переезжаем в США. Хочу немного дополнить автора:
Жизнь dink-ов (double income, no kids) != жизни с детьми (собственно, поэтому и уезжаем). Торчать в emergency 10 часов, чтобы потом сказали, пейте обезболивающее, а на следующий день ребёнок чуть не умирает, и его откачивают из 911, малости радо. Вон летом в Келовне ребёнок умер от ангины (в цивилизованной Канаде!!!)
Дом, даже в такой глуши, как Калгари, удовольствие ещё то. Торонто относительно тёплый, а здесь за отопление можно спокойно отдавать 300+ в месяц (у нас утилити иногда доходят до 600, но мы позволяем для себя роскошь держать дома 24 градуса тепла). Каждый год расходы стабильно увеличиваются, по двум причинам: налог на воздух ( carbon tax, пока ещё с rebate, но насколько я понимаю, потом его отменят), и обновление инфраструктуры энергокомпаний (Трюдо сказал же что всех нужно пересадить на электромобили через несколько лет, но естественно расходы идут на налогоплательщиков).
Парикмахеров лучше искать русскоговорящих. У нас в Калгари наплыв из Украины, и мастеров, причём очень хороших, стало много. Правда к Торонто это может не относится.
Costco рулит. Я его не любил, но цены и ассортимент меня переубедили. Думаю, две моих самых любимых сети - это Costco и Ikea (причём последний из-за ресторана, мебель не очень). Walmart лучше из жизни исключить, они когда-то были дешёвые, но сейчас нет, и price matching тоже убрали.
В Reddit-e есть хорошие тематические или географические канадские группы. Именно через них я в свое время нашёл хорошие и дешёвые сотовые и интернет. Но учтите, что здесь нет идеала, в Канаде самая настоящая олигополия, так что за достойные услуги приходится платить.
Мы начинали с markdown, но в итоге полностью перешли на asciidoc, когда наши аудиторы попросили переформатировать таблицы в соответствии с официальными требованиями. К счастью, конвертер автоматический и работа заняла недолго.
У markdown достаточно бедное форматирование и даже подсветки синтаксиса кода нет из коробки. Да, есть расширения и прямое использование html, но это все выглядит полумерами. Например, с помощью asciidoctor у нас есть:
TOC (в markdown требуется скрипт для генерации)
Диаграммы (mermaidjs или PlantUML), gitlab поддерживает автоматически
Include (самое мощное что есть, все примеры кода у нас рабочие и вставляются из реального кода), поддерживается gitlab, вряд ли когда-нибудь будет поддерживаться github
Просто приведу примеры тех технологий, которые использую по работе, и которых точно не было в прошлом веке:
zstd (2015) - использовать в наше время gz просто уже стыдно
linux kernel namespaces (2002)/cgroups (2007) - docker, LXC и в целом OCI
sponge functions (2007) - основа современных стандартов криптографии (SHA-3, и в этом году NIST выберет победителя для lightweight/hardware encryption)
SIMD (все это было и раньше, но SSE и NEON появлились только в этом веке)
сетевые протоколы (QUIC, DNS-over-HTTPS, WebRTC etc) - очень много появилось в последние два десятка лет.
И это надо знать - шифрование, сжатие данных, сети, контейнеры - это все входит в арсенал практически любого профессионального программиста. Если кому-то это не надо, то это очень узкий специалист.
Для сравнения скорости необходимо намного больше трудозатрат для проекта, и это не входило в рамки оригинального PoC. Но могу сразу сказать, что Lua достаточно хорош - он и компактный и достаточно быстрый. Но если скорость - это первичный критерий, то надо смотреть на другие бенчмарки (например, после того как Google вбухал огромный деньги в JS, он стал одним из самых быстрых встраиваемых ЯП, но при этом он и весьма увесистый).
На самом деле, не такая уж приличная разница (что подтверждается другими бенчмарками, которые я курирую). Мои данные:
Современная архитектура: Intel Xeon E-2324G
Go (go3, go run concgo.go s): 748,502,994 Rust (rust2, cargo run --release s, запуск как у автора): 941,619,585 Rust (rust2, cargo run --release s, изменён Cargo.toml): 939,849,624 Rust (rust2, RUSTFLAGS="-C target-cpu=native" cargo run --release s, Cargo.toml + target-cpu=native): 965,250,965
В данном случае, lto дает даже чуть худшие результаты, но это прогрешности, и я никогда не видел, чтобы были реально лучше результаты (использование cpu=native совершенно другая история, и это реально может давать улучшения). Насколько я видел, LTO имеет смысл когда линкуются много файлов, и для этого данного теста это не особо важно.
Из моих наблюдений крупных западных компаний в которых я работал (и их софт/сервисы/железо используется повсеместно):
Начальство и непотизм. Это только на словах открытость и инклюзивность. Менеджмент окружён друзьями, и они просто не видят реальности, т.к. друзья не хотят потерять свое положение, если будут рассказывать горькую правду. Плюс многие менеджеры считают себя умнее чернорабочих (именно так они воспринимают программистов), и принимают необоснованные решения.
Квоты социальной справедливости. Если нанимать людей "по повестке", компании получают налоговые вычеты. Более того, потом этих людей практически невозможно уволить, потому что они сразу начнут раздувать шум и даже судится, потому что типа их уволили из-за их расы/ориентации/тд. Этим людям нельзя ни в чем возражать, поэтому их проекты, какие бы не были бредовые, будут поддерживаться. Их код нельзя честно ревьювить, ибо опять-таки будет шум и суды.
Снежинки. В школе их приучают, что они snowflake (т.е. уникальные и неповторимые), поэтому на работе они себя ведут как непризнанные гении, которым нельзя давать монотонную работу. Именно такие внедряют реакты, микросервисы и прочие тренды, ибо это модно и интересно. Алгоритмы, большое О и просто понимание как работает все изнутри - скучно и не нужно. Из-за нехватки специалистов и распространённого глупого мнения, что лучше нанимать джунов ибо "мы их вырастим" (в реальности они покидают компанию через год-два), нанимается очень много именно этих снежинок.
auto не поможет, когда надо написать алгоритм числодробилку, в которой миллиарды надо умножать на миллионы (какой тип будет у "auto c = a * b;", если a и b int?). В этом плане Python с его прозрачным bignum намного удобнее. Другой пример - сложные коллекции (например, словарь со составным ключом и другой коллекцией для значений). В любом случае, это просто был совет, и это ваше полное право его игнорировать.
Во многих серьёзных компаниях есть два пути развития: people manager & individual contributor. Где-то начиная с senior developer можно выбирать и вполне можно оставаться программистом (individual contributor). Например technical leader (моя текущая позиция) эквивалентна director (позиция для менеджера). Естественно, есть дополнительные роли и все-равно не будет много времени на программирование, но с другой стороны, можно продолжать заниматься любимой работой, а не разбираться кто кого обидел.
Единственное исключение я знаю Facebook, они там требуют от всех программировать и у них "горизонтальные" отношения. Деталей дальше не знаю, так как не успел написать решения для их задачек (подсказка всем кто почему-то хочет у них работать - не используйте C++ или что-то другое сильно типизированное, потому что они не принимают псевдокод и надо чтобы программа корректно компилировалась и работала. Естественно, никаких IDE, все в онлайн блокноте с компилятором + несколько предустановленных библиотек).
Новоприбывшим сейчас очень тяжело. Жилье и страховки бешеные, конкуренция с индусами, китайцами и нигерийцами, которые может и менее квалифицированны, но могут лучше влится в коллектив (особенно если компания уже состоит из таких же). Я полностью поддерживаю их мнение что надо получать гражданство и валить. Я ещё верил в Канаду лет пять назад, но сейчас я вижу как все деградирует. Ещё помню когда Ванкувер был реально чистый и красивый, но сейчас в этот бомжатник ни ногой. Монреаля это конечно меньше коснулось, и возможно в вашем райском уголке все хорошо, вам можно только позавидовать.
Вам очень повезло и с компанией и с тем что вы находитесь в Онтарио. Я видел увольнения и за день и за месяц, но должен признать, что когда меня хотели уволить, мне дали шанс, но тем у кого квалификация ниже, обычно придумывают повод и увольняют быстро. Но причина практически всегда одна (из того что я видел) - токсичное поведение (читать, несогласие с начальством). Канадцы очень не любят критику, и поэтому я просто принял позицию "канадцы это дети, общайся с ними, как с детьми". И это работает.
Страховка и интернет в Онтарио дешевле, ибо конкуренция и правила страхования лучше. На западе Канады олигополия (хотя конечно это применимо и ко всей Канаде), а например в BC машины страхует только государство, полная монополия. В Альберте повышенная страховка из-за ужасного климата и постоянных аварий. Например я плачу $350, потому что я провел вне Канады 1.5 года и мне сбросили волительский стаж до нуля (!!!), и это ещё минимальное страхование ответственности (1 миллион, хотели всучить "стандартные" два).
Канада - экспортёр дешевой рабочей силы для США и экспортёр ресурсов + обдирает туристов (включая местных) космическими ценами. Например, самая зачуханная гостиница в Банфе стоит спокойно $300 USD в high season. Хорошие гостиницы типа fairmont могут спокойно стоить $1000+ (можете сами проверить цены на рождественные праздники тут через booking). Причём я останавливался в Fairmont Lake Louise (мне была скидка как резиденту Альберты), $600 выкинуты зря - да, вид красивый, только мутный из-за грязного окна, и обшарпанные стены с облупленной краской никак не создают впечатления высокого класса (сравниваю с Европой и Азией). Так что вот такой тут ВВП, а ай-ти тут имеет очень маленький вклад (T013, примерно 5%): https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=3610043402
Не совсем понял, как это wasm перпендикулярен? Байт-код — это подмножество скриптов, какая разница это бинарный формат или строковой. Lua-байткод не подходил, потому что это проприетарный формат, а оригинальный код не совсем соответствовал требованиям. Wasm стандартизирован, и имеет богатый тулчайн, вплоть до того, что мы можем спокойно модифировать сам байткод, не беспокоясь, что это сломается завтра.
Добавил тест и обновил статью. Документации достаточно мало, плюс нет API для взаимодействия, поэтому написал небольшой менеджер памяти для обмена данных (у меня совсем вылетело из головы, что в WASM-е строк и вообще работы с памятью толком нет, и многие решения основаны на том, что все запускается в JS).
В принципе, качество работы вполне удовлетворительное (правда, C++ биндинги подкачали, но это дело наживное). Будем обсуждать с коллегами, но лично я вижу два главных препятствия для того, чтобы wasm3 стал первичным кандидатом для нас:
большой расход памяти (проверил valgrind-ом, утечек нет, просто расход большой);
[не специфично для wasm3] требуется большой рантайм в самом WASM для хорошей функциональности (я попробовал два варианта: 1) no_std дал размер в несколько десятков байт, но весьма скудная функциональность; 2) полноценный Rust добавил сразу большой рантайм, и хотя стало комфортно программировать, WASM-файл занял несколько сотен килобайт ). Я пытался урезать, но толку мало, все-равно достаточно большие файлы без no_std.
Конечно, компилятор Rust не единственный, можно и Emscripten, но он тоже добавляет свой рантайм, а функциональность будет намного хуже чем в Rust. Впрочем, к самому проекту это отношения не имеет, это отдельная история, и можно рассмотреть те же v-lang, nim и т.п. Дополнительно остается, конечно, вопрос производительности, но этим я буду заниматься в рамках других проектов. Еще раз спасибо за ссылку, при всех сомнениях wasm3 все-равно остается хорошим кандидатом для встраивания.
Как я приложение с Go на Rust переписывал
Статья немного перекликается с работой, которую я проводил месяц назад. Скажу сразу, что для меня это был рабочий проект, так что он под NDA и исходники не могу выложить. Но у меня тоже было сравнение Go и Rust (и другие решения включая чистый Си), но только в совершенно другом масштабе: мне нужно было нагрузить наши железки высокоуровневым (высшие слои OSI) трафиком под завязку. iperf-тесты уже были, но нам нужен был реалистичный трафик.
Мои результаты на localhost на моем рабочем linux ноутбуке (задейственны все ядра CPU, никаких мьютексов и других пожирателей CPU, статистика собиралась lock-free алгоритмами, сокеты с TCP_NODELAY):
Go - 400 тыс запросов секунду
Tokio/hyper - 300 тыс запросов в секунду (да, у меня эта пара оказалась медленнее, но у меня была немного другая методика тестирования)
Чистый epoll (rust и C показали примерно одинаковые результаты) - 600 тыс запросов в секунду
io_uring (пробовал только Rust, программировать на Си все-равно не собирался), тестировал пакеты glommio и monoio - 800 тыс. Остановился на последнем потому что есть fallback на epoll (старые linux) и kqueue (macos).
Ещё хотел бы отметить про hyper - я от него в конце отказался полностью и написал специализированный генератор и парсер HTTP, благо протокол простой. Flamegraph показал что hyper тратит слишком много времени CPU, и хотя у него могут быть более корректные по стандарту парсеры, для benchmark-а он стал бутылочным горлышком.
Сколько стоит жизнь в Канаде. Расходы за год
Таунхаус (меньше площадь, меньше окна, плюс общие стены с соседями, которые эту стены греют, плюс меньше продувается из-за этих же стен) 2014 года (достаточно новая теплоизоляция, ещё не осевшая в стенах) vs detached house (больше площадь, большие окна, продувается всеми ветрами) 2003 года (да, надо обновлять теплоизоляцию, но мне даже страшно представить сколько это стоит). Также много зависит от района, Калгари в целом весьма ветреный, а в нашей локации все весьма плохо.
Сколько стоит жизнь в Канаде. Расходы за год
Думаю, мне надо было уточнить, что я не имел в виду нормальные каркасники, в которых можно жить по 100 лет и более, а то недоразумение, которое строится сейчас в Северной Америке. Вот, например, вы говорите про балки, а я могу сказать сразу что тут строят так совсем не всегда, и я видел своими глазами, как проседают полы, и мои друзья ругались с контрактниками, чтобы они еще одну балку жесткости ставили.
Вот здесь детали: https://constructionphysics.substack.com/p/balloon-framing-is-worse-is-better По сути, вся нагрузка идет на стены, подпорки могут внутри поставить, но обычно опять-таки, вместо них обычно ставят дополнительные стены внизу.
И я не защищал кирпичные дома, и всеми руками за современные технологии. Но я просто вижу какое убожество тут строят, и современными технологиями тут зачастую и не пахнет. Я у себя дома все потолочное освещение менял (тут по умолчанию ставят вырвиглаз 50-летней давности), там зачастую даже заземление не было прикручено, а люстра могла держаться чуть ли не на проводах.
Сколько стоит жизнь в Канаде. Расходы за год
Каркасники для холодного климата вообще не подходят, когда у меня сломалась печка, температура дома упала на 3-4 градуса за час, а еще даже не сильные морозы были. Я читал профессиональные статьи по этому поводу (потому что у таких домов есть и другие проблемы, и сейчас это становится актуально):
это самое дешевое, что можно построить. В Северной Америке одни из самых высоких оплат труда, и чем быстрее и проще залепить, тем дешевле.
это самое простое, что можно ремоделировать. В золотые времена было нормально жить в доме не больше 5 лет здесь, потом его продать, и новые хозяева могут переделать все как хотят относительно дешево.
дешевая энергия - намного дешевле жечь газ или электроэнергию (особенно в США, там и сейчас весьма дешево), чем использовать энергосберегающие технологии. Сейчас это становится актуально, и начинают задумываться об улучшении технологий строительства.
В целом, это просто старая ментальность появившаяся в 50-х, у которой сейчас к счастью идет процесс ломки - можно построить некачественный продукт, который потом не жалко поменять или сломать. Ни о какой преемственности поколений, когда в доме живут больше 20 лет, разговоров вообще не было.
Сколько стоит жизнь в Канаде. Расходы за год
Оттава - замечательный семейный город, были несколько раз, и думаю, он несколько недооцененный. Нравится сеть Play Food & Wine (очень хороший pairing, да и сама кухня замечательная), историческая информация про памятники архитектуры (напр. что один из самых шикарных отелей там был построен изначально как конюшня) и то, что если ликерные закрыты, можно перейти/переехать по мосту во французскую часть и купить там что-нибудь на любой заправке.
Но, к сожалению, просто не наше, не хватает динамики. Пример - у меня супруга поклонница Властелин Колец, и в прошлом году мы посетили Comic Con в Калгари, где она смогла взять автограф и сфотографироваться с Элайджа Вудом. В Оттаве такое не происходит (как и многое другое, например, концерты крупных звезд). Да, можно относительно быстро добраться до Торонто, но по итогу, тогда уж лучше там и жить.
Про цены для сравнения (если бы изначально знали про это и осели в Оттаве, может все по другому и повернулось). В Калгари preschool бесплатных нет, около 1000+ в месяц full day, и 300 за два-три часа в день два раза в неделю (и это с учетом субсидий). daycare - также от 1000, обычно 1200-1400. Бассейнов тут точно нет, климат не позволяет, есть splash park-и, но на свой страх и риск (иногда бывает жара, может неделю-две за все лето). Правда про катки думаю тут не честно сравнивать - здесь идеальный зимний рай, чего только стоит покататься на коньках на Lake Louse.
Сколько стоит жизнь в Канаде. Расходы за год
В США явно не всем будет лучше, поэтому приведу только свои критерии:
медицина и налоги, как уже сказано в параллельной ветке. Для примера, самая лучшая по налогам провинция в Канаде (Альберта) хуже, чем самая худший штат в США (Калифорния). Правда, имею в виду только income tax.
Road trips. Проездил всю западную и часть восточной Канады и США. Дороги в США (по-крайней мере федеральные) лучше, инфраструктура тоже удобная для автомобилистов. Но должен признать что ковид подпортил везде, посмотрим как все изменится.
перелеты. Вне Торонто, и может частично Ванкувера, перелеты баснословно дорогие, и дерут деньги за все. В США все намного проще, особенно если жить в хабах, которых явно больше.
Культурные достопримечательности, музеи Нью-Йорка и других крупных городов. Естественно, не сравнится с Европой, но может в конце концов туда и уедем.
Все остальное, мне кажется, примерно похоже с Канадой. Да, в канадских школах не стреляют, но мне кажется, это вопрос времени. Я уже видел какой беспредел сейчас устраивают подростки, такого раньше не было.
Сколько стоит жизнь в Канаде. Расходы за год
7 лет в Ванкувере жизнью динков, было просто шикарно, особенно первые годы, когда ещё кондо в Коквитламе можно было купить за 150 тыс. (опыт моих друзей, продали в 2018 за 750 тыс). К слову сказать, мы платили за отдельную часть дома, 800 в месяц, общая площадь 100 кв.м, North Burnaby, что весьма хороший район. Но было видно даже за 7 лет, что quality of life снизился, даже безотносительно цен:
Город стал азиатским, как то гуляли поздно вечером в центре, и по ощущениям как будто в Китае оказались (где мы в реальности были много раз): красный неон, все по китайски, китайская речь, запаха тоже азиатские. В принципе, к Китаю отношусь нейтрально, но знаю случаи буллинга китайскими детьми белых в школах Ванкувера. Взрослые вроде ведут себя нормально.
Трафик ухудшился, постоянные пробки и даже не в центре, агрессивное вождение, случаи road rage-а точно известны.
Парковки во все парки забиты, уже съездить погулять стало проблемой. К счастью, public transit нормальный, park and ride, или даже просто приехать в центр и запарковаться на подземной парковке вполне опция. Никогда не имел проблем, но знаю лайфхак - можно парковаться в офисных зданиях, там есть гостевые парковки.
В целом, жить можно, природа красивая, климат приемлемый, есть не только outdoor, но и социальная жизнь. Но конечно дорого, и это отражается даже на вывесках везде help needed, так как никто за копейки не хочет работать (впрочем то же самое про Торонто).
Калгари тоже изменился - во время ковида сюда переехало просто не счесть людей. У нас был тихий район, а сейчас проездной. Здесь альтернативно одарённые умом градостроители решили что roundabout - это наше все, и налепили их везде. Теперь можно спокойно 15-20 минут стоять, чтобы просто на него въехать.
В целом Канада испортилась. Думаю, если выплачена ипотека, есть свой круг друзей и ограниченный набор интересов, то жить можно. Но если есть широкие интересы, как у нас, то тяжко. Просто для примера, часовой перелет (например Калгари - Ванкувер) стоит 100-300 долларов, в США очень часто можно меньше 100. Банфф когда-то 90 долларов за сутки можно было найти отель, сейчас самый зачуханный может до 600 стоить в сезон.
Думаю, моя основная претензия - все-таки медицина и образование. Всё это ухудшилось, в том число из-за массового притока, но при этом ничего толком нового из этих областей не строится. Когда я иммигрировал, надо было английский на хороший балл сдавать, сейчас сильно понизили. Это сказалось и на образовании, не говоря уж про повестку: стучи на родителей, все белые агрессоры и должны преклонять колено, ну и конечно цисгедерные отношения ненормальны. Здесь это вообще на поток поставлено.
Сколько стоит жизнь в Канаде. Расходы за год
Живу в Канаде 12 лет, этот год будет последний, переезжаем в США. Хочу немного дополнить автора:
Жизнь dink-ов (double income, no kids) != жизни с детьми (собственно, поэтому и уезжаем). Торчать в emergency 10 часов, чтобы потом сказали, пейте обезболивающее, а на следующий день ребёнок чуть не умирает, и его откачивают из 911, малости радо. Вон летом в Келовне ребёнок умер от ангины (в цивилизованной Канаде!!!)
Дом, даже в такой глуши, как Калгари, удовольствие ещё то. Торонто относительно тёплый, а здесь за отопление можно спокойно отдавать 300+ в месяц (у нас утилити иногда доходят до 600, но мы позволяем для себя роскошь держать дома 24 градуса тепла). Каждый год расходы стабильно увеличиваются, по двум причинам: налог на воздух ( carbon tax, пока ещё с rebate, но насколько я понимаю, потом его отменят), и обновление инфраструктуры энергокомпаний (Трюдо сказал же что всех нужно пересадить на электромобили через несколько лет, но естественно расходы идут на налогоплательщиков).
Парикмахеров лучше искать русскоговорящих. У нас в Калгари наплыв из Украины, и мастеров, причём очень хороших, стало много. Правда к Торонто это может не относится.
Costco рулит. Я его не любил, но цены и ассортимент меня переубедили. Думаю, две моих самых любимых сети - это Costco и Ikea (причём последний из-за ресторана, мебель не очень). Walmart лучше из жизни исключить, они когда-то были дешёвые, но сейчас нет, и price matching тоже убрали.
В Reddit-e есть хорошие тематические или географические канадские группы. Именно через них я в свое время нашёл хорошие и дешёвые сотовые и интернет. Но учтите, что здесь нет идеала, в Канаде самая настоящая олигополия, так что за достойные услуги приходится платить.
Делаем документацию здорового человека в Git на примере Docs Ozon
Мы начинали с markdown, но в итоге полностью перешли на asciidoc, когда наши аудиторы попросили переформатировать таблицы в соответствии с официальными требованиями. К счастью, конвертер автоматический и работа заняла недолго.
У markdown достаточно бедное форматирование и даже подсветки синтаксиса кода нет из коробки. Да, есть расширения и прямое использование html, но это все выглядит полумерами. Например, с помощью asciidoctor у нас есть:
TOC (в markdown требуется скрипт для генерации)
Диаграммы (mermaidjs или PlantUML), gitlab поддерживает автоматически
Include (самое мощное что есть, все примеры кода у нас рабочие и вставляются из реального кода), поддерживается gitlab, вряд ли когда-нибудь будет поддерживаться github
Admonitions (вставки NOTE, WARNING etc)
IT для неайтишников: Куда исчезают программисты после 40 лет?
Думаю, не помешали бы примеры, почему надо все время учиться, потому что видно, что есть недопонимание. Базовые вещи (алгоритмы) не особо поменялись (хотя, например, современный qsort - это уже не старый книжный, а модифицированный: https://awdesh.medium.com/dual-pivot-quick-sort-javas-default-sorting-algorithm-for-primitive-types-77342e1df5e5)
Просто приведу примеры тех технологий, которые использую по работе, и которых точно не было в прошлом веке:
zstd (2015) - использовать в наше время gz просто уже стыдно
linux kernel namespaces (2002)/cgroups (2007) - docker, LXC и в целом OCI
sponge functions (2007) - основа современных стандартов криптографии (SHA-3, и в этом году NIST выберет победителя для lightweight/hardware encryption)
SIMD (все это было и раньше, но SSE и NEON появлились только в этом веке)
сетевые протоколы (QUIC, DNS-over-HTTPS, WebRTC etc) - очень много появилось в последние два десятка лет.
И это надо знать - шифрование, сжатие данных, сети, контейнеры - это все входит в арсенал практически любого профессионального программиста. Если кому-то это не надо, то это очень узкий специалист.
Сравнение встраиваемых ЯП по размеру в исполняемом файле
Для сравнения скорости необходимо намного больше трудозатрат для проекта, и это не входило в рамки оригинального PoC. Но могу сразу сказать, что Lua достаточно хорош - он и компактный и достаточно быстрый. Но если скорость - это первичный критерий, то надо смотреть на другие бенчмарки (например, после того как Google вбухал огромный деньги в JS, он стал одним из самых быстрых встраиваемых ЯП, но при этом он и весьма увесистый).
Go против Rust — производительность вне конкуренции
На самом деле, не такая уж приличная разница (что подтверждается другими бенчмарками, которые я курирую). Мои данные:
Современная архитектура: Intel Xeon E-2324G
Go (go3,
go run concgo.go s
): 748,502,994Rust (rust2,
cargo run --release s
, запуск как у автора): 941,619,585Rust (rust2,
cargo run --release s
, изменён Cargo.toml): 939,849,624Rust (rust2,
RUSTFLAGS="-C target-cpu=native" cargo run --release s
, Cargo.toml + target-cpu=native): 965,250,965В данном случае, lto дает даже чуть худшие результаты, но это прогрешности, и я никогда не видел, чтобы были реально лучше результаты (использование cpu=native совершенно другая история, и это реально может давать улучшения). Насколько я видел, LTO имеет смысл когда линкуются много файлов, и для этого данного теста это не особо важно.
В софте все всрато и становится еще всратее
Из моих наблюдений крупных западных компаний в которых я работал (и их софт/сервисы/железо используется повсеместно):
Начальство и непотизм. Это только на словах открытость и инклюзивность. Менеджмент окружён друзьями, и они просто не видят реальности, т.к. друзья не хотят потерять свое положение, если будут рассказывать горькую правду. Плюс многие менеджеры считают себя умнее чернорабочих (именно так они воспринимают программистов), и принимают необоснованные решения.
Квоты социальной справедливости. Если нанимать людей "по повестке", компании получают налоговые вычеты. Более того, потом этих людей практически невозможно уволить, потому что они сразу начнут раздувать шум и даже судится, потому что типа их уволили из-за их расы/ориентации/тд. Этим людям нельзя ни в чем возражать, поэтому их проекты, какие бы не были бредовые, будут поддерживаться. Их код нельзя честно ревьювить, ибо опять-таки будет шум и суды.
Снежинки. В школе их приучают, что они snowflake (т.е. уникальные и неповторимые), поэтому на работе они себя ведут как непризнанные гении, которым нельзя давать монотонную работу. Именно такие внедряют реакты, микросервисы и прочие тренды, ибо это модно и интересно. Алгоритмы, большое О и просто понимание как работает все изнутри - скучно и не нужно. Из-за нехватки специалистов и распространённого глупого мнения, что лучше нанимать джунов ибо "мы их вырастим" (в реальности они покидают компанию через год-два), нанимается очень много именно этих снежинок.
«Чтобы это разработать, нужна степень PhD»
auto не поможет, когда надо написать алгоритм числодробилку, в которой миллиарды надо умножать на миллионы (какой тип будет у "auto c = a * b;", если a и b int?). В этом плане Python с его прозрачным bignum намного удобнее. Другой пример - сложные коллекции (например, словарь со составным ключом и другой коллекцией для значений). В любом случае, это просто был совет, и это ваше полное право его игнорировать.
«Чтобы это разработать, нужна степень PhD»
Во многих серьёзных компаниях есть два пути развития: people manager & individual contributor. Где-то начиная с senior developer можно выбирать и вполне можно оставаться программистом (individual contributor). Например technical leader (моя текущая позиция) эквивалентна director (позиция для менеджера). Естественно, есть дополнительные роли и все-равно не будет много времени на программирование, но с другой стороны, можно продолжать заниматься любимой работой, а не разбираться кто кого обидел.
Единственное исключение я знаю Facebook, они там требуют от всех программировать и у них "горизонтальные" отношения. Деталей дальше не знаю, так как не успел написать решения для их задачек (подсказка всем кто почему-то хочет у них работать - не используйте C++ или что-то другое сильно типизированное, потому что они не принимают псевдокод и надо чтобы программа корректно компилировалась и работала. Естественно, никаких IDE, все в онлайн блокноте с компилятором + несколько предустановленных библиотек).
Личный опыт иммиграции, или Чего не хватает в Канаде инженеру
Новоприбывшим сейчас очень тяжело. Жилье и страховки бешеные, конкуренция с индусами, китайцами и нигерийцами, которые может и менее квалифицированны, но могут лучше влится в коллектив (особенно если компания уже состоит из таких же). Я полностью поддерживаю их мнение что надо получать гражданство и валить. Я ещё верил в Канаду лет пять назад, но сейчас я вижу как все деградирует. Ещё помню когда Ванкувер был реально чистый и красивый, но сейчас в этот бомжатник ни ногой. Монреаля это конечно меньше коснулось, и возможно в вашем райском уголке все хорошо, вам можно только позавидовать.
Личный опыт иммиграции, или Чего не хватает в Канаде инженеру
Вам очень повезло и с компанией и с тем что вы находитесь в Онтарио. Я видел увольнения и за день и за месяц, но должен признать, что когда меня хотели уволить, мне дали шанс, но тем у кого квалификация ниже, обычно придумывают повод и увольняют быстро. Но причина практически всегда одна (из того что я видел) - токсичное поведение (читать, несогласие с начальством). Канадцы очень не любят критику, и поэтому я просто принял позицию "канадцы это дети, общайся с ними, как с детьми". И это работает.
Страховка и интернет в Онтарио дешевле, ибо конкуренция и правила страхования лучше. На западе Канады олигополия (хотя конечно это применимо и ко всей Канаде), а например в BC машины страхует только государство, полная монополия. В Альберте повышенная страховка из-за ужасного климата и постоянных аварий. Например я плачу $350, потому что я провел вне Канады 1.5 года и мне сбросили волительский стаж до нуля (!!!), и это ещё минимальное страхование ответственности (1 миллион, хотели всучить "стандартные" два).
Личный опыт иммиграции, или Чего не хватает в Канаде инженеру
Канада - экспортёр дешевой рабочей силы для США и экспортёр ресурсов + обдирает туристов (включая местных) космическими ценами. Например, самая зачуханная гостиница в Банфе стоит спокойно $300 USD в high season. Хорошие гостиницы типа fairmont могут спокойно стоить $1000+ (можете сами проверить цены на рождественные праздники тут через booking). Причём я останавливался в Fairmont Lake Louise (мне была скидка как резиденту Альберты), $600 выкинуты зря - да, вид красивый, только мутный из-за грязного окна, и обшарпанные стены с облупленной краской никак не создают впечатления высокого класса (сравниваю с Европой и Азией). Так что вот такой тут ВВП, а ай-ти тут имеет очень маленький вклад (T013, примерно 5%): https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=3610043402
Сравнение встраиваемых ЯП по размеру в исполняемом файле
Не совсем понял, как это wasm перпендикулярен? Байт-код — это подмножество скриптов, какая разница это бинарный формат или строковой. Lua-байткод не подходил, потому что это проприетарный формат, а оригинальный код не совсем соответствовал требованиям. Wasm стандартизирован, и имеет богатый тулчайн, вплоть до того, что мы можем спокойно модифировать сам байткод, не беспокоясь, что это сломается завтра.
Сравнение встраиваемых ЯП по размеру в исполняемом файле
Добавил тест и обновил статью. Документации достаточно мало, плюс нет API для взаимодействия, поэтому написал небольшой менеджер памяти для обмена данных (у меня совсем вылетело из головы, что в WASM-е строк и вообще работы с памятью толком нет, и многие решения основаны на том, что все запускается в JS).
В принципе, качество работы вполне удовлетворительное (правда, C++ биндинги подкачали, но это дело наживное). Будем обсуждать с коллегами, но лично я вижу два главных препятствия для того, чтобы wasm3 стал первичным кандидатом для нас:
Конечно, компилятор Rust не единственный, можно и Emscripten, но он тоже добавляет свой рантайм, а функциональность будет намного хуже чем в Rust. Впрочем, к самому проекту это отношения не имеет, это отдельная история, и можно рассмотреть те же v-lang, nim и т.п. Дополнительно остается, конечно, вопрос производительности, но этим я буду заниматься в рамках других проектов. Еще раз спасибо за ссылку, при всех сомнениях wasm3 все-равно остается хорошим кандидатом для встраивания.