Windows, Linux и шифрованные диски

Я очень долго использовал устройства Apple в качестве основных рабочих систем и дома и на работе, лет 10, наверное. В целом, это удобно, так как доступны как все приложения которые нужны как для хобби (Capture One & Photoshop), так и рабочие инструменты. Ко времени очередного обновления железа я успел не только заинтересоваться машинным обучением и внимательно посмотреть на современный рынок железа, но и упереться в то, что Apple и GPGPU не совместимы в принципе. После всех метаний и попыток запустить то что мне хочется на устройствах от Apple у меня состоялся большой исход к их конкурентам, ведь зачем платить больше и не иметь доступа к GPGPU, если можно его получить за меньшие деньги?

Перебравшись на Windows дома я довольно долго пытался убедить себя в том, что к всему этому ужасу можно привыкнуть и я просто забыл как классно работать в Windows разработчику… но все же нет. Привыкнуть к PowerShell и его окружению вместо Bash и стандартного набора команд POSIX, а так же отсутствию не глючного терминала просто не возможно. И WSL тут никак не спасает, так как подсистема не только ощутимо тормозит на любом I/O, но и довольно глючная, а кривые терминалы еще сильнее сужают возможности её использования в разработке.

Continue reading

Это был интересный период в моей карьере

На сегодня Автодеск – это компания в которой я проработал дольше всего, без месяца 5 лет! Компания по многим параметрам замечательная, иначе что бы я тут так долго работал? Но всё хорошее рано или поздно заканчивается и в данном случае я даже несколько поздновато принял решение уйти, но об этом ниже.

Наверное самым интересным и полезным за это время были многонациональные команды в которых пересекались люди из разных стран: Китая, Ирландии, Вьетнама, Индии, Мьянмы, Украины, США, Сингапура. Научиться доносить свои мысли и продвигать идеи так что бы, с одной стороны, все всё поняли и в идеале согласились, а, с другой стороны, что бы никто не остался обиженным или недовольным в таком коллективе задача не из простых хотя и решаемая. Так как Автодеск компания большая и обладает очень (я бы даже сказал через-чур) разлапистой иерархией, удалось хорошо поупражняться в таких социальных активностях как корпоративные игры, интриги и войны.

Continue reading

C++ идет в облака

Попасть на CppCon в этом году по ряду причин не вышло, поэтому я смотрю видео на YouTube. В процессе просмотра списка докладов глаз моментально зацепился за The Design of the C++ Runtime for AWS Lambda и я не разочаровался. Доклад в чем-то знаковый, так как он показывает применимость языка в области о которой C++ разработчики не думают и, обычно, ничего не знают.

Ключевые моменты из доклада:

  • AWS SDK for C++ позволяет оперировать всеми сервисами AWS, SDK доступен на GitHub. Там же можно найти огромное количество примеров использования.
  • SDK использует libCURL и разработчик должен сам разобраться с инициализацией хранилища сертификатов, расположение которого, конечно же, может зависеть от версии Linux.
  • Много воевали с libC, который довольно объемный с точки зрения набора библиотек и дистрибутиво-зависимый. Остановились на решении паковать все файлы проекта (включая libC) в один архив и запускать через ld-linux.so.
  • Если хочется уменьшить количество файлов привносимых libC, хотя целесообразность этого действия под вопросом так как еще есть libC++/libStdC++, то можно воспользоваться musl.
  • AWS гарантирует минимальный уровень процессора SkyLake, так что если вам нужен SIMD, то вполне можно включать процессоро-специфические оптимизации.

При том, что один из основных сценариев использования лямбды это – по-быстрому что-то посчитать, причем “по-быстрому” тут ключевое ведь оплата за время, то потенциал использования C++ (еще и с включенными SIMD-оптимизациями) на этом поприще выглядит очень заманчивым.

9-9-6 к нам мчится

На прошлой неделе я, как обычно, был на Go-митапе, который на этот раз проводился в Shopee. Компания расстаралась: закупили кучу пиццы, раздали всем на входу брошюрки с рекламой самих себя и предложением пойти к ним работать. В целом разумно, если уж ты принимаешь у себя какой-то митап, тратишься на это, хорошо бы и выхлоп получить в виде потока резюме. Открывал митап их HR, который с задором рассказал, что они уже успели разрастись до 8К человек (что они делают такой толпой?! они же просто онлайн платформа для торговли!) и это не предел, в их планах расти и дальше. Тут все, конечно, понятно, чем больший рост ты покажешь, тем больше инвесторы тебе бабла отвалят. Стружка должна лететь!

Continue reading

Rust и не звездные команды

Сегодня мне удалось немного с другой стороны посмотреть на Rust, что дало интересную пищу для размышлений. В общем случае я склонялся к мнению, что Rust – это, конечно, прекрасно, но по уровню сложности он мало чем уступает C++, а при таком раскладе зачем нужно разбираться с еще одним монстром? Но, похоже что, эта позиция может быть довольно большим заблуждением.

Continue reading

Методологии разработки ПО, лучшие книги

Да, довольно странная для меня тематика, обычно я технические вещи про саму разработку пишу. При этом, тема управления проектами и людьми мне достаточно близка, просто как-то не пишется в этом направлении. Недавно мне подумалось, что я мог и упустить что-то стоящее из области фундаментальных знаний о методологии разработки ПО. После некоторых раздумий я пришел к выводу, что так и есть, это “Путь камикадзе” за авторством Эдварда Йордона. Перевод на русский довольно посредственный, но читать на английском, почему-то в этот раз не захотелось.

Несмотря на почтенный по меркам IT индустрии возраст (больше 20 лет), книга отнюдь не утратила своей актуальности, ну может за исключением пары страниц, где говорится про технологические решения, типа Lotus Notes и им подобные. Книга легко читается и полезна как рядовым программистам (что бы понять что вообще вокруг происходит) так и тимлидам, архитекторам, менеджерам и всем остальным причастным к разработке. В итоге, книгу я прочел в один присест и всем рекомендую (если, конечно, найдется еще много тех, кто не прочел сей фундаментальный труд). Continue reading

Форумы умерли, да здравствует Slack

Когда я только добрался до интернета, а сделал я это довольно поздно, судя по дате регистрации на РСДН-е я активен в сети с года так 2006, то был восхищён профессиональными форумами. Это было место с реальной движухой, там были умные люди, они обсуждали интересные вопросы и вообще жизнь кипела ключом. Время шло, форумы стали отмирать. Какие-то стали местом обсуждения политики, какие-то годятся только на то, что бы замерять у кого длиннее, где-то принято плакаться на тяжелую жизнь и мечтать свалить, а какие-то годятся только для мастурбации на карму. Когда-то активные завсегдатаи говорят что куда интереснее обсудить политику или похвастаться большой ЗП, нежели поговорить про дело… а для дела есть StackOverflow, где уже на все вопросы давно ответили. Я никогда не понимал как можно сравнить форум и SO, ведь SO – это про вопрос/ответ и все дискуссии строго пресекаются, а форум был в первую очередь про дискуссию. Можно еще вспомнить про Reddit, но по мне так это скорее коллекция ссылок, нашел что-то интересное, запостил даже не потрудившись пары предложений со своими мыслями добавить, а тебе почесали ЧСВ поставив плюсики.

При этом я всегда думал, что должны быть еще люди, которым интересно профессиональное общение в первую очередь, а потом уже карма, политика и прочие не имеющие к профессиональной деятельности вещи. И да, догадка была верна, я наткнулся на Slack! На сегодня хотелось бы отметить следующие сообщества: Continue reading

Приведение интерфейсов для базовых типов в Go

На работе завязалась интересная дискуссия: если в Go вообще всё можно привести к интерфейсу, является ли интерфейс некой базой для любого типа в Go? Как отслеживаются ошибки приведения типов для таких случаев? К примеру возьмем следующий код:

import (
    "fmt"
    "reflect"
)

func interfaceArg(i interface{})  {
    fmt.Println("type:", reflect.TypeOf(i))
}

func main() {
    var x float64 = 3.14
    interfaceArg(x)
}

Continue reading

Clojure и AWS Lambda

Последнее время я неспешно работаю над своим новостным C++ ботом и в качестве заключительного шага его нужно где-то “поселить” жить. Вариантов, конечно же довольно много, начиная своим компьютером заканчивая облаками, но наиболее экономически целесообразным и простым в поддержке выглядит какое-либо бессерверное решение, например AWS Lambda. Так как Clojure приложение как Lambda я еще никогда не запускал, то решил вынести эксперименты отдельно от основного проекта. Оказалось не сложнее чем с Go, всего-то нужно взять подходящую библиотеку для простой и наглядной реализации точки входа, сделать правильную сборку, да не забыть про Terraform для удобного управления инфраструктурой.
Continue reading

C++ интервью && многопоточность

В рамках поддержки формы и необходимости размяться перед серьезным поиском работы я походил по разным собеседованиям и надо сказать, вопросы по многопоточности в связке с С++ на них стали появляться. Очень редко по сравнению с количеством вопросов по сортировке гномиков и прочей ересью, но тем не менее за этот год я столкнулся аж с 2 вопросами из этой области в компаниях, которые активно используют C++11 и выше. Что удивительно, некоторые до сих пор сидят на С++98, а то и на вообще Си-с-классами.
Continue reading