Чикаго 2016

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

Утро первого рабочего дня. В прошлом году я был в этом офисе, но надо вспомнить точный адрес и построить маршрут. Беру телефон, ищу Google на карте. Нахожу почему-то только кафе, но зато примерно в том месте, где ожидал. Еду. Иду. Нахожу. Оказывается, Google съехал оттуда в прошлом году.

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

 

Иду дальше, начинается стройка. Вроде как заборов и знаков нет, но, с другой стороны, вокруг только строительная техника и мужики в касках. Иду через стройку, смотрю на рабочих, они на меня, но вроде никто меня не останавливает. Дохожу до конца стройки, там — забор. Увидел, как один строитель выходил через едва заметную калитку. Калитка кривая, её надо слегка приподнять, чтобы открыть. Выхожу и оказываюсь почти у самого офиса.

Спрашиваю на ресепшне про свободные места. Совсем незанятных столов нет, но некоторые люди работают из дома. Нахожу свободный стол, знакомлюсь с соседом, сажусь. Сосед спрашивает, над чем работаю, я ему — Spanner. — А что это?

Наверное, я так удивлённо на него посмотрел, потому что он сразу добавил, что он финансовый аналитик. А, я и забыл, что у нас кроме армии инженеров работает кто-то ещё.

 

* * *

 

Чикаго прекрасен в тёплое время года.

Плаваем на парусной лодке по Мичигану. Капитан в восторге от того, что мы взяли мыльные пузыри: ветер выдувает их много и быстро. Летя по спиралевидной траектории, пузыри быстро отдаляются от нас.

Chicago downtown view from Michigan

Chicago

Section 8 это статья в законодательстве, обеспечивающая финансовую помощь малоимущим в аренде жилья. У хозяина катера с юмором явно всё ок. Continue reading “Чикаго 2016”

The Design of Everyday Things

The Design of Everyday Things

Любопытная книга The Design of Everyday Things, автор Donald Norman. Дизайн это сложная дисциплина, которая отвечает за то, как люди взаимодействуют с материальным и нематериальным (внешний вид — это только один небольшой аспект дизайна). Эта книга покрывает многие (все?) стороны дизайна, начиная с того, что подсознательно происходит в головах у людей, и кончая местом дизайна в мире бизнеса.

Объясняется, почему мы путаем ручки конфорок на плитах и почему в очередной гостинице бывает трудно разобраться с душем. Отдельная большая глава посвящена человеческим ошибкам (автор разбирается в психологии). Я был рад получить из неё подтверждение своим мыслям по поводу человеческого фактора: поскольку всем известно, что людям свойственно ошибаться, нельзя ссылаться на эти ошибки как на причину техногенных аварий. Если человеческая погрешность привела к беде, виноват дизайн.

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

Памятка: перегрузка и переопределение

Overriding — переопределение — когда подкласс подсовывает свою реализацию метода вместо реализации в суперклассе. При вызове метода выбирается наиболее «специфическая» реализация, то есть реализация в подклассе, если она есть, приоритетнее реализации в суперклассе. В Java выбор выполняемого метода при переопределении происходит динамически (в рантайме) и не зависит от того, каким типом объявлена ссылка на объект:

public class TestOverriding {
    
    private static class Parent {
        String getName() { return "Parent"; }
    }

    private static class Child extends Parent {
        @Override
        String getName() { return "Child"; }
    }

    public static void main(String[] args) {
        Parent child = new Child();
        // Prints "Child"
        System.out.println(child.getName()); 
    }
}

Overloading — перегрузка — объявление методов (или конструкторов) с одинаковыми именами, но разными сигнатурами. Пример — все конструкторы любого класса, если их больше одного. В Java выбор имплементации при перегрузке происходит статически (во время компиляции) и не зависит от типа объекта в рантайме:

import java.util.Collection;
import java.util.HashSet;
import java.util.Set;

public class TestOverloading {

    static void classifyCollection(Collection<?> c) {
        System.out.println("Collection");
    }

    static void classifyCollection(Set<?> s) {
        System.out.println("Set");
    }

    public static void main(String[] args) {
        Collection<?> c = new HashSet<Object>();
        // prints "Collection"
        classifyCollection(c);
    }
}

Среды разработки

Работая в предыдущей команде (GCM), я писал на Java. Я пользовался Intellij IDEA (не люблю Eclipse) с плагинами для Protobuf и чего-то ещё. Всё было хорошо, и я был доволен.

В новой команде (Spanner/Test Infrastructure) я пишу на C++, Python, Go, Java — у нас тут несколько компонентов, написанных на разных языках и обильно склеенных Protobuf-ом. Я начал с Vim, мне не понравилось, попробовал нашу собственную IDE, тоже не особо. Потом подумал, что если мне нравилась Intellij, то может понравиться и CLion, среда разработки на C++ от тех же Jetbrains. Так оно и получилось, в общем. Конечно, с CLion у меня всё не идеально, и я продолжаю разбираться и подстраивать его под себя, но ничего удобнее мне пока не известно.

Как и Intellij, CLion имеет плагины для Python, Go и Protobuf. Однако у CLion нет плагина для Java, ровно как и у Intellij нет плагина для C/C++. Поэтому я, к большому своему сожалению, не могу вести всю свою разработку ни в одном из них. И я не могу понять, почему нельзя было сделать общую IDE платформу с плагинами под разные языки (чтобы некоторые плагины, например C++ и Java, были платными). Меня лично это бы очень устроило. Кажется, что сделать такую среду было бы вполне возможно, и она даже могла быть удобной и приятной в использовании (как умеют сделать в Intellij). Я не проверял, но есть подозрение, что Eclipse как раз таким комбайном и является, что, впрочем, не делает его более привлекательным для меня.

Achievement unlocked

Оставил ненадолго на весеннем калифорнийском солнышке.

iPhone needs to cool down

Накопилось #11

The Psychology of Pricing: A Gigantic List of Strategies. Большой список тактик, которыми пользуются продавцы, чтобы изменить восприятие цен покупателями. Читать там много, советую хотя бы пробежаться по картинкам.

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

Про благотворительность.

Главная Яндекса про полёт Гагарина, выполненная ко дню космонавтики. Очень круто.

Траектория аппарата Розетта, который колбасился по солнечной системе 10 лет, чтобы в конечном итоге приземлиться  на нужной комете. На официальном сайте есть интерактивная модель и много другой информации.

It’s going to be okay.

Continue reading “Накопилось #11”

Гнева пост

Анкета на британскую визу — это ужас. Очень длинная, вопросы поставлены неоднозначно (а на русский перевод лучше вообще не смотреть), работает плохо. Вчера полдня на заполнение потратили.

Сколько вы зарабатываете? Сколько приносят ваши вложения? Сколько у вас всего денег на эту поездку, и почём были билеты и гостиница? Дружите ли вы с террористами? Кто выдал вам предыдущую британскую визу, и зачем? Любите ли кинзу? Хотите ли рассказать нам ещё о чём-нибудь?

Какие страны посетили за последние 10 лет, и когда, с точностью до дня? — Ну как вам сказать, у вас столько строк в анкете нет.

(Наконец сохранил этот список в Evernote, чтобы каждый раз его не воссоздавать)

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

Задержишься долго на одной странице, сохранишь её, а она тебе — сессия истекла. Логинишься опять, и естественно всё надо вводить заново.

После заполнения анкеты нужно сдать биометрию и отправить все документы курьером в Нью-Йорк в течение X дней.

Американцы и не представляют, как им везёт с безвизовым режимом в большинство стран.

И да, я знаю, что с визами во многие другие страны всё не намного лучше.

Гавайи, Большой остров

Рекордный по своей запоздалости рассказ о поездке на Гавайи полтора года назад. Все фотографии кликабельны.

До поездки Гавайи представлялись мне типичным курортом с тёплым морем, сёрфингом, музеем шоколада и фото с обезьянкой. Но всё оказалось гораздо интереснее.

Остров Гавайи, более известный у нас как Большой остров, самый большой из всех гавайских, и площадь его увеличивается с каждым извержением главной природной достопримечательности — вулкана Килауэа (запоминать не обязательно).

Остров можно логически разделить на две части: западную (Kona) и восточную (Hilo). Kona это океан, пляжи, сёрфинг, сноркелинг, наблюдение за черепахами и подобные «тёплые» развлечения. Hilo более дождливая, там тропические заповедники, водопады, парк с активным вулканом.

Загадка: посреди огромного океана торчит сравнительно крошечный остров, и вдруг одна его половина намного дождливее другой. Как такое возможно? Может быть, это продукты горения лавы (дым из кратера), сдуваемые ветром всегда в одну и ту же сторону, конденсируют влагу из воздуха; однако беглый поиск в интернете не дал мне однозначного подтверждения или другого ответа.

Green sea turtle on Big Island of Hawaii // Зелёная черепаха на Гавайях

Big Island of Hawaii // Остров Гавайи Continue reading “Гавайи, Большой остров”

Ключ гаечный

Хвалюсь. Три недели назад я покинул Google Cloud Messaging и пошёл во внутреннюю инфраструктуру. Присоединился к команде Spanner (разрабатывают собственную очень продвинутую базу данных, активно используемую внутри компании).

Весьма интересно и непросто, много чего познаю с нуля — стек языков и технологий абсолютно другой (C++, Python и много чего внутреннего).

Почему не написал сразу? На всякий случай, вдруг сразу бы выгнали :) , ведь полезного опыта для этой работы у меня мало. Впрочем, никакой критичной работы мне пока не дают, поэтому и сломать ничего толком не получится: я работаю над тестовой инфраструктурой и познаю устройство Spanner.

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

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

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

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

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