Плюс месяц

Надо бы подвести итоги уже более чем месячного пребывания в Америке.

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

Получил здесь местные водительские права, сдал практику с первого раза. Учитывая то, что на права я сдавал пять лет назад и с тех пор у меня не было машины это было целое достижение. Порадовал инструктор, которому я сдавал на права. Очень спокойный и добродушный американский дядька. Если я ошибался – спокойно мне указывал на ошибку. Набрал 86 баллов, до порога незачета меня отделяло совсем чуть-чуть.

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

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

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

Учитывая, что я переезжал прямо-таки в тепличных условиях, возможно, стоит посмотреть мнения и других людей. Для интересующихся советую govorimpro.us где собрано много разных, в том числе очень непростых, жизненных историй.

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

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

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



Scheduling notifications on Ubuntu in a geeky way

Several days ago I tried to find out a way to schedule notifications on my Ubuntu, mostly for myself. The reason why I bothered about it is because I wanted to get rid of all the distractions namely email notifications, messenger, etc. so that I can verify updates – e.g. new emails without breaking concentration and actually staying in the Flow.

Luckily I’m using Ubuntu as an OS for my work. And this wonderful OS has everything what we need to set up notifications without the need to install extra software, if you geeky enough :)

In order to show notification on Ubuntu you may use wide variety of the existing command line tools, e.g. zenity, notify-send, etc. I picked notify-send as it generates nice auto-dismissable popup notifications, e.g.

notify-send "Check Email: `date`"

For scheduling I used cron.

But the straightforward way of using X-windows-bound things like notify-send won’t work being used by cron directly. This is because cron tasks are executed from the special, cron user. But if this user have sufficient priveleges to read your .Xauthority it is not a problem (and usually it does, and it does on Ubuntu if not specially reconfigured).

So I ended up with the special notification launcher, like this one:

# !/bin/bash

export DISPLAY=:0.0;

# $HOME/.Xauthority
export XAUTHORITY=/home/alex/.Xauthority

/usr/bin/notify-send "Check Email `date`"

I saved this script under the name /home/alex/notify_email

Then I added cron task that was able to launch my script. You may manage your cron tasks by using crontab utility, e.g. list existing task – sudo crontab -l and edit cron task by invoking sudo crontab -e.

My configuration looked as follows:

# m h  dom mon dow   command

40 * * * 1,2,3,4,5  /home/alex/notify_email

This means – invoke notify_email script once per hour, in each *:40 minutes, each working day (remember – the week starts with Sunday that comes under the number 0).

That’s it. Have fun!

О работе, сдаче на права и поезке к океану

Закончилась первая неделя на новой работе, из-за стресса, информационного перегруза и большого количества дел и впечатлений не мог делать заметки в блоге. Чтобы вы могли оценить “маштаб трагедии” замечу, что за первую неделю получил больше 500 писем по email, не говоря уже о большом количестве документации, которую надо хорошо осознать. To make matters worse, как говорится, еще нужно общаться на английском.

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

Пока расскажу совсем кратко. Очень много людей разных национальностей и разного цвета кожи. По первым впечатлениям от процесса – первые дни напомнили мою работу в офисе Моторолы лет шесть тому назад – есть сходные черты, вызвавшие deja vu, хотя подходы этих двух компаний очень сильно отличаются. Рядом с офисом есть парк у озера – Lake Union, как на моей бывшей работе в Yota в Петербурге.

Что касается технических вещей – объем нагрузок, с которым приходится иметь дело инженерам Amazon впечатляет. Из-за специфических и довольно сложных задач компании приходилось находить свои уникальные подходы. В открытых источниках можно найти информацию о том, что, например, в Amazon есть мощный инструмент деплоя apollo, о котором рассказывает Joy Jenkins в докладе “Velocity Culture”.

Сегодня сделал еще два нужных дела – сдал на 100% местную теорию по вождению. Сдал теорию минут за пять вместе с заполнением бумажек и оплатой комиссии за экзамен, равной 15 долларам. Был приятно удивлен отсутствием всяческой бюрократии. Тесты, кстати, доступны бесплатно для всех желающих.
Теперь впереди сдача практики по вождению. Поскольку у меня небольшой опыт вождения, я решил взять занятие по вождению, совмещенное со сдачей экзамена. Сначала инструктор проведет занятие, на котором мы проделаем все элементы, требуемые на экзамене, а после занятия ему же надо будет показать их уже на зачет. Сдавать можно на своей машине, но можно машину взять на месте – это стоит 10 долларов.

Второе нужное дело – подписали контракт на аренду жилья. Очень непривычная вещь для приезжающих из России. Мы подписывали контракт на стандартных условиях. Контракт заключается обычно на длительный срок – мы заключали его на год, некоторые коллеги заключали на полтора года.
В контракте оговорена фиксированная арендная плата, правила проживания и т.п. Поскольку ни у меня, ни у Веры не было кредитной истории – с нас попросили дополнительно внести security deposit – дополнительный взнос, равный месячной арендной плате. Этот security deposit возвращается после года проживания, при условии, что жильцы ничего не поломали и вносили в срок арендную плату. Мелкие поломки оплачиваются отдельно. За составление договора нужно было внести еще дополнительную плату – так называемый application fee в нашем случае равный 42 доллара на каждого взрослого, на которого оформляется договор. Дом сдает компания, занимающаяся сдачей помещений в аренду. Квартира сдается без мебели, но с кухней, стиральной машиной, плитой, микроволновкой, стиралкой, посудомойкой и сушилкой. О сушилке я раньше не знал – насколько удобный и полезный агрегат, но почему-то в России не очень распространенный.

Квартиру мы сняли в том же доме, в котором живем сейчас, так что переезд обещает быть относительно простым и безболезненным. В конечном счете в выборе места сыграли роль несколько факторов: возможность в течении 15 минут неторопливо дойти пешком до работы, относительная близость магазинов и парков, небольшая удаленность от центра города и отсутствие (пока) машины. Да и цена была человеческой, правда квартиру мы сняли, что называется в последний момент – оставалось всего две свободных квартиры из предложений которые нас устраивали по цене.

Менеджер, который оформлял договор был удивительно похож на Шелдона из “Теории большого взрыва”, даже голос похож. Я все ждал какой-нибудь заумной фразы из квантовой механики.

В прошедшие выходные была очень хорошая ясная погода, по прогнозу было +21 C, по ощущениям все 25. В субботу мой новый коллега Денис со своей женой пригласил нас прокатиться к океанскому берегу – по пути проезжали небольшой, симпатичный городок Абердин – если кто не знает родина Нирваны.



Aberdeen

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

В заключение – насколько фотографий с побережья Тихого океана

О дожде, стрессе от переезда и политкорректности

Сначала о дожде. В Петербурге за 12 лет я никогда такого не видел – непрерывный, часто довольно сильный дождь в течении четырех дней. Вчера плюнули на дождь и пошли гулять с ребенком в местный небольшой парк на Lake Union. Забавно, но даже в дождь довольно много людей поддерживает здоровый образ жизни – бегают и катаются на велосипедах. Сегодня дождь, наконец, закончился, и в городе в нескольких местах появилась радуга, было очень красиво в момент отступления грозовых туч и появления солнца.

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

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

Пока писал свою первую заметку думал – стоит ли излагая что-то на русском пытаться быть политкорректным и пытаться найти замену слову “негр”, считающееся неприемлемым у американцев. В конечном счете пришел к выводу, что нет, не стоит заходить настолько далеко – исторически сложилось так, что слово “негр” в русском языке не носит ровно никакой негативной подоплеки, напротив, в бывшем СССР употребляли это слово как синоним угнетенных, которым стремились помочь. Пример такого виден и в кино – “Максимка”, 1952 г -

1864 год. Русский корвет «Богатырь» в водах Атлантического океана встречает американское судно. В его трюме живой товар — негры. Через два дня матросы «Богатыря» снимают с обломков разбитого штормом американского корабля мальчика-негра. Запуганный и забитый работорговцами, негритёнок находит в русских матросах добрых и отзывчивых людей. Вскоре мальчик, прозванный матросами Максимкой, становится любимцем всей команды.

© Wikipedia

Да что там говорить, всеми любимый в России Пушкин сам по крови прадеда отчасти был негром.

28 сентября

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

Впрочем по порядку. Я открывал счет в First Tech Credit Union – это довольно интересный экземпляр из т.н. “Credit Union” серии банков в штатах. Необычность этого банка в том, что открыть счет там могут только сотрудники высокотехнологичных компаний, типа Boeing, Google и Amazon. Аналогично есть Teachers Credit Union – соответственно для американских учителей. Открытие счета “для своих” имеет ряд выгодных особенностей, в числе которых очень толерантное отношение к временному отсутствию SSN – можно пользоваться счетом и расплачиваться чеками и по карте сразу после похода в банк, после получения SSN можно получить кредит на относительно выгодных условиях. К примеру, на машину ставка по кредиту составит примерно 4% годовых – это очень хорошее предложение по сравнению с другими банками, которые без кредитной истории, по рассказам, могут выставить ставку чуть ли не до 20 процентов за автокредит.

Мобильная связь здесь в целом дороже и хуже по качеству, чем в России. Самый дешевый вариант, который только можно было взять, без интернета – prepaid, AT&T – обошелся мне в 50 долларов – 25 долларов за симку (что-то вроде активации) + 25 долларов как минимальный платеж на счет. В некоторых местах, недалеко от центра города, телефон просто не ловит. Удивительно хорошая по качеству связь по скайпу, учитывая географическую отдаленность.

В процессе обзора здешнего съемного жилья оказалось, что в самом городе пары с детьми предпочитают не жить, выбирая более просторные, спокойные и зеленые пригороды – Redmond, Bellevue, Kirkland. По пути Яна (агент по переездам) рассказала, что некоторые новые квартиры сдаются со значительной скидкой за первый месяц, а, зачастую плату не берут совсем – так пытаются привлечь клиентов. В сумме с довольно высоким спросом на жилье это было довольно неожиданно слышать.

Цены на аренду высоки по Питерским меркам – неплохая “однокомнатная” – 1 bath 1 bedroom квартира оказалась по цене примерно 1500$/месяц. Правда это была просторная трехэтажная квартира в коттедже, где на первом этаже был просторный гараж для машины, на втором – кухня с гостиной и спальня на третьем. Можно подобрать более скромные варианты, приближающиеся к 1000$/месяц. Все квартиры сдаются, как правило, без мебели, но с кухней, плюс, обычно, стиралкой и сушилкой. Меблированные квартиры как правило очень крутые и цена вопроса обычно составляет не менее 2000$/месяц.

Из-за долгих дождей и непростой пешей доступности вышел на первое место вопрос по покупке машины – хоть я уже и писал про это раньше, но повторюсь еще раз – без нее тут семейному человеку совсем труба. Пока шел домой с бумажным пакетом с едой из супермаркета пошел дождь, пакет мгновенно промок и развалился. К слову сказать, тут везде бумажные пакеты. Видимо, из-за тяги к “экологичности”. Такие пакеты очень быстро разлагаются, в отличии от полиэтиленовых. Пока собирал просыпавшиеся продукты в рюкзак, поменял ближайшие планы, решив не откладывать надолго занятия по теории, которая немного отличается от наших ПДД.

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

До этого слышал, что и New York Times теперь выходит в том числе и на русском, а так же информационные надписи в метро Нью-Йорка дублируют на русском. И при этом никто не кричит о засилии русских. Удивительная толерантность.

25 сентября, первый день в Сиэтле

Свершилось, наконец перелет завершен.


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


Оказалось, что местные знают о России и, как правило, несколько слов на русском. Таможенник, проверяющий паспорт все повторял на русском: “До свидания, я студент!”.

Очень много людей разных национальностей – японцы, корейцы, негры, индусы, китайцы. Таксист, подвозивший нас был натуральным индусом – в огромной белой чалме и в синем халате (или тоге, не знаю как правильно). Нас удивило, что индус сразу узнал в нас русских и сразу угадал, что я еду работать в Амазон.


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


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

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


Такое ощущение, что город на капитальном ремонте – по ощущениям чуть не каждая вторая улица ремонтируется, полно строек и каких-то ремонтов вокруг, при пешей прогулке часто попадаются знаки Sidewalk Closed вместе с ограждением, что означает, что дальше по тротуару идти нельзя из-за ремонта и надо переходить на другую улицу. При этом, как правило, для машин дорогу не закрывают – если и есть дорожные работы, то улицу стараются оставить хоть минимально проходимой для машин, но не для пешеходов. Удивляло немного как люди на пробежках тут выбирают маршрут. Я бы при таких исходных не сунулся бы бегать на улицу.


Приютили нас в Dexter Apartments, на Dexter Avenue, что рядом с Lake Union. Несмотря на усталость от почти суточного перелета (если считать с момента выхода из дома в СПб) были под впечатлением от квартиры – одна ниша для одежды площадью как кухня на нашей старой съемной квартире в корабле.

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

В местном магазине (QFC, Mercer St 500) почувствовал себя полной деревней – хоть он и напоминал нашу пятерочку, но обслуживание было иным, продукты были совершенно другие – например чувствуется тяга американцев к большим вещам и как правило сходные вещи – пакет молока, булка и т.п. – здесь больше по размеру. Не смог найти гречку, которую так просила жена, обошел магазин раз пять :)


В свое время я как-то пропустил мимо ушей замечание о том, что в Америке другие розетки – и сразу по приезду ни одно устройство не удалось подключить к сети. Тут и пригодился подаренный коллегами c прошлой работы Power Bank. Впрочем в другом магазине – City Hardware внешним стилем будто переехавшим с дикого запада 19-го века оказались переходники для евровилок на американские розетки.


Ну вот, кажется на сегодня хватит.

Select a bunch of values from the DB sequence at a time

Sometimes you need to select multiple values from certain sequence. Surprisingly it is not that easy to find the relevant information on how to do it in Google.
Here is the quick snippets for those who need it. In this snippet my_seq assumed to be a name of the previously created sequence (e.g. CREATE SEQUENCE my_seq) and 42 assumed to be the number of sequence values you want to pick from sequence in one turn.

For Oracle:

SELECT my_seq.nextval FROM dual CONNECT BY level <= 42

For H2 (I heavily use it for unit testing in favor to Oracle because it is fast, small and cool):

SELECT my_seq.nextval FROM system_range(1, 42)

Offtopic:
It is worth to mention that in H2 you can very easily select a sequence of natural numbers by accessing system_range function. E.g. if you want to get a set of {1, 2, 3, 4, 5, 6, 7, 8} you may just do SELECT * FROM system_range(1, 8). I never knew this function before and I'm happy for being accidentally find it.

Oracle+JDBC: how to insert value to the ANYDATA field

This is a short note about working with Oracle’s ANYDATA type, mostly for myself, but may be it will be useful to those who works with Oracle DB via JDBC.
In short: ANYDATA is a “variant” type that allows user to write arbitrary value to it including number, string, structure and so on.

So, assuming you have a table

CREATE TABLE mytable (
    myval        sys.ANYDATA
);

You can use the following SQL to insert the data to it:

INSERT INTO mytable (myval) VALUES (anydata.convertNumber(1));
INSERT INTO mytable (myval) VALUES (anydata.convertVarchar2('hi'));

The main question to me was how to do the same via JDBC. And this is pretty simple if you are aware of the Oracle’s JDBC driver domain model.
Basically Oracle guys provide you with oracle.sql.ANYDATA type that can work with the oracle.sql.Datum instances so that you can construct ANYDATA instance via oracle.sql.ANYDATA.convertDatum(oracle.sql.Datum datum) public static method.

Notice, that Oracle have wrappers for all the standard DB types including numbers and strings, and all of that wrappers, e.g. oracle.sql.NUMBER actually implement oracle.sql.Datum base.

So in JDBC you can do the following:

final ANYDATA value = ANYDATA.convertDatum(new NUMBER(1)); // throws SQLException
// here I use spring's JDBC template, but you can do the very 
// same via the standard PreparedStatement means
jdbcOperations.update("INSERT INTO mytable (myval) VALUES (?)", value);

Maven: Build selected projects

I was surprised when I re-discovered that feature in maven a few days ago. You don’t need to read any further if you constantly use this feature, but those who don’t know about it may find this useful. In fact I never have a dire need in a “partial build” feature, but still it is very nice to have in multimodular maven project especially with multiple heavy projects.

So, in short: in multimodular maven project you can build the selected artifacts without the need to rebuild all again.

Here is how we can do it by sample – the following snippet tells maven to build two projects: myproj-domain and myproj-service without running tests:

mvn install -pl myproj-domain,myproj-service -DskipTests=true