среда, 30 сентября 2009 г.

Спасательные жилеты

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

Марина два раза ездила на занятия в Хитроу, ей понравилось. Правда, на второй раз вышло недоразумение: её не пускали в служебный автобус BA, требовали билет. Хотя в первый раз ничего не проверяли, и вообще по идее достаточно было показать бейдж. Водитель никак не мог понять, зачем сотрудник NHS едет в аэропорт.

- Без билета не положено.
- Ну, я из автобуса не выйду, мне деваться некуда! Следующий автобус не скоро, да вести его, скорее всего, опять будете Вы. Вызывайте полицию!
- Ладно, покажи мне приглашение.
- Распечатку я не брала в этот раз. Могу показать емейл на BlackBerry.

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


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

Говорит, что у BA zero-tolerance policy насчет серьезных ошибок. Если тебя поймали, то увольняют. Если ты допустил ошибку и признался сам, то переводят на менее ответственную работу. Например, из стюардессы в секретарши.

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

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

Широкая британская душа

Послушайте, ребята,
Что вам расскажет дед.
Земля наша богата,
Порядка в ней лишь нет.

А.К. Толстой, 1868 год


The NHS is to receive an increased budget from £90 billion this year to £110 billion by 2010-11, an increase of 4%, the Chancellor announced on Tuesday.

10 Oct 2007


Продолжаю тему про американского профессора, у которого поместье с двумя горами. Оказывается, за 2.5 дня его консультации госпиталь заплатил 50 тысяч. Не знаю, долларов или фунтов, но не важно, сумма впечатляющая. Я понимаю, что там всякие налоги, гостиница, проезд, посредники, но всё равно на такие деньги можно и третью гору прикупить :-)

А вот другой поразительный пример жизни на широкую ногу. На совещании Марина услышала, что одно собеседование с кандидатом обходится госпиталю в 2400 фунтов. Нет, я не имею в виду оплату услуг рекрутеров (как правило, они берут ещё больше). 2400 фунтов соответствующее подразделение платит своему HR за то, что они вешают объявление на сайт, выполняют грубый отсев резюме (при этом даже не звонят кандидату) и присылают некоторым письменное приглашение на собеседование. Кроме того, в случае успеха HR рассылает запросы на рекомендации.

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

А теперь - простые вычисления. За два года у Марины было 70-80 собеседований. Пусть 70. Получается, что государство потратило около 170 тысяч фунтов на то, чтобы нанять Марину на работу. Это во много, много раз больше, чем она заработала за то же самое время!

Марина хотела озвучить эту цифру на совещании, но ей слово не дали.

Зато в Британии очень любят собирать пожертвования на помощь слепым, больным раком и пр. По телевизору часто просят жертвовать по несколько фунтов в месяц. А в Маринином госпитале разрешили приходить по пятницам в джинсах при условии, что ты жертвуешь фунт в неделю на программу Jeans for Genes.

Но мы ничего не жертвуем. Не сочувствуем детям Германии? Сочувствуем. Действительно очень жалко тех, кому сильно не повезло со здоровьем. Жалко пару фунтов? Нет, не жалко. Но не хотим, потому что видим, как бездарно расходуются эти деньги.

понедельник, 28 сентября 2009 г.

Спасибо тебе, Assembler

Я получил предложение.

Краткие итоги:

  • Почти 5 месяцев без работы, из них 4 месяца активных поисков.

  • Собеседования с 12 работодателями.

  • Лишь 2 из них отказали. 1 сделал предложение, 1 звал на ещё одно собеседование, а 10 остальных просто замолчали, и на емейлы не отвечали.

  • Всего 17 личных и 2 телефонных собеседования (если я никого не забыл).

  • Около 7 встреч с рекрутерами (сделать копию паспорта, попить кофе, поговорить ни о чем).

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



Я уже давно сократил свои запросы по зарплате... потом сократил ещё раз, но толку не было. Находясь в отчаянии, даже прошел два собеседования по Delphi. Кроме лета и глобального кризиса в поисках мешало и слишком богатое резюме: за последние 5 лет я сменил 6 работ. Практически каждому работодателю приходилось долго объяснять причины. И вдруг начали звонить. Так всегда бывает. Уже четвертый раз я искал работу летом, так что мне хорошо знакома летняя депрессия и шквал звонков в сентябре.

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

Собеседование, которое принесло мне удачу, было необычным. В течение часа почти все вопросы были так или иначе связаны с оптимизацией кода. Например: что быстрее - for или foreach, и почему? как hashtables устроены изнутри? как устроены индексы в базе данных? что быстрее - array или list, и почему? как устроен Interlocked, почему он быстро работает?

Кое-что я ответил, потом задумался и сказал: "Не знаю, как в .NET, не интересовался особо... а в C++ было так-то, но, наверное, в .NET сделано умнее". При слове "C++" собеседник обрадовался и сказал, что .NET работает так же тупо, как и C++, так что все мои соображения оказались справедливыми.

А потом на вопрос про Interlocked я ответил, что, вероятно, он использует всего одну мнемонику Assembler, поэтому и работает быстро и безопасно. Как образно сказал наш друг Игорь, я случайно нащупал эрогенную зону!

- Ты знаешь Assembler? А почему же ты не включил его в резюме?
- Ну, блин, писал на нем 15 лет назад, и ни один рекрутер про этот навык не спрашивал.
- Ты что, обязательно надо было включить! А как делать цикл в Assembler?
- Эээ.... loop? И ещё какие-то другие похожие варианты...
- А почему он быстро работает?
- Ну... потому что одна мнемоника...
- А ещё почему?
- Ну, я уже не помню, пожалейте...
- Нет, вспоминай!

И вдруг из глубин подсознания, из-под пожелтевших листьев ненужных знаний всплыло: read-ahead cache! Поскольку процессор точно знает, куда пойдет наш цикл, он может закэшировать данные заранее, не дожидаясь, пока мы их затребуем.

Бинго!


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

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

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

Кого-то недавно уволили за разглашение конфиденциальной информации. Кадровичка предупредила, что конкуренты пользуются самыми грязными методами. Звонят и говорят что-то вроде: "Алло, это Вася? Привет, это Петя из бухгалтерии. Слушай, мне тут срочно надо сделать шефу отчет, а программа что-то зависает... Ты не подскажешь, какая у нас была прибыль в прошлом году? Ага, понял... А сколько новых клиентов? Спасибо, выручил!" А доверчивые программисты всё рассказывают. Ну, я вроде в этом смысле человек бывалый, в моем украинском банке к защите информации относились очень серьезно...

Но могут действовать они
не прямиком:
Шасть в купе — и притвориться
мужиком,
А сама наложит тола
под корсет...
Ты проверяй, какого пола
твой сосед!


Внимательно прочел employee handbook. Позабавило два момента:

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

  • Запрещено использовать Интернет в личных целях. Примечание: исключением явлются развлекательные цели (например, онлайновые игры), если они не мешают коллегам и не отвлекают тебя от работы.

четверг, 24 сентября 2009 г.

Дешевый dishwasher

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

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

Так и посудомойки: "Да они же тратят столько воды и света... и так долго работают... и отмывают плохо..." На самом деле для современных посудомоек воды требуется гораздо меньше, чем для ручной мойки. Электричество? Да, требуется, но оно в Англии стоит почти столько же, как и в Украине, хотя зарплаты существенно выше. Тем более, что ночью электричество дешевле (в некоторых квартирах, не у всех). Скорость? Да, 45 минут. Конечно, если тебе срочно понадобилась тарелка, то придется помыть руками. Но такого почти не случается. Вечером раз в 1-2 дня я всё загружаю, и нам чистой посуды обычно хватает до следующего моечного сеанса.

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

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


Ну, это всё было предисловие. А рассказ о том, как Марина решила заранее купить подержанную посудомойку. Я был против: "Давай сначала переедем, а там уже подумаем. И лишний раз не таскать её с квартиры на квартиру, и вообще, осмотримся сначала - куда в новой квартире поставить, как подключить..."

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

Для обычной посудомойки у нас, скорее всего, места на кухне не будет. Марина нашла на eBay настольный вариант, это называется tabletop dishwasher. Начальная цена была 1 фунт. Марина поручила мне торговаться. В случае успеха ехать за покупкой хрен знает куда, в какую-то деревню. Я очень надеялся, что честно проиграю аукцион, Марина вздохнет и успокоится. Но, увы, я выиграл. Подержанная машинка досталась нам всего за 21 фунт. В магазине аналогичные модели стоят 200-300. Продавец говорит, что кроме переключателя программ всё работает хорошо. У него отличный рейтинг на eBay, так что я верю.

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

Марина думала, что машинка размерами с микроволновку, и весит килограмм 20. Решили купить у бабаев тележку. Знаете, такая двухколесная, с которой старики ходят за продуктами. Ох, как хорошо, что я её купил! Машинка оказалась здоровенная, размером с маленький холодильник. И весила она не 20, а 35 кг. Моя тележка явно не была рассчитана на такой вес (пенсионеры обычно не покупают так много продуктов). Она захрустела, но всё же не треснула. Хорошо, что Марина подсказала взять с собой ремни, иначе бы мой груз на тележке не удержался.

Накладная мне не понадобилась, но проводник в поезде спросил: "А она у тебя пустая?" Нет, блин, везу сразу с посудой и водой! Хотя таки немного воды было, в поезде натекла маленькая лужица.

Я ехал с тремя пересадками. Сначала нужно было пересесть на другой поезд, а на станции не было съездов для инвалидов. Вниз по лестнице, вверх, потом оказалось, что я ошибся платформой... снова вниз, вверх... Пот валился градом. Один пассажир пошутил: "Путешествуешь налегке, ха?"

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

Кстати, многие не знают, что в Баркинге тоже есть лифт. Но только с первой платформы (куда можно попасть с любой платформы через тоннель, а в туннеле плавные съезды). Лифт не автоматический, потому что иначе им бы пользовались "зайцы". Нужно воспользоваться интеркомом или подняться наверх и попросить сотрудников спустить лифт.

Итак, какова же общая стоимость? 21 фунт за покупку, 18 - на проезд, 10 - за тележку. Шлаг надо купить. Возможно, придется ещё вызывать водопроводчика. А может и нет... мы не обратили внимание, как на новой квартире проложены трубы.

Главное, что пока я осваивался в роли грузчика, от натуги треснул мой сотовый телефон. За ремонт просят 60 фунтов. Я не люблю этот глюкавый, тормознутый телефон (MDA с Windows Mobile, он же - HTC Diamond)... но, с другой стороны, жалко... за него ещё год контракт платить...

Так что дороговато обошлась машинка, если учесть все расходы :) Утешает одно: наверное, в случае чего мы тоже сможем её продать. Может быть, даже не за 21 фунт, а за целых 25, потому она теперь находится в Лондоне, а не в деревне :)

среда, 23 сентября 2009 г.

U-crane

Вышли с Мариной на вечерний променад. Кто-то кричит мне: "Эй, чувак!" Оборачиваюсь и вижу обкуренного негра ямайского происхождения. Ну, думаю, сейчас загрузит, что он сам не местный, и нужна мелочь на билет домой... Но нет - на самом деле он искал карибское кафе. Говорит: "Хочу жрать, и деньги есть, а найти еду не могу." Вокруг было полно индийских или китайских забегаловок, но никаких карибских в этом районе мы не знали, к сожалению.

Но разговор на этом не закончился.

- Вы - хорошие ребята. Вы откуда?
- From Ukraine.
- О! Это прекрасно звучит! Ukraine! U-crane (Ты-кран)! Вы любите подъемные краны, вы любите строить и созидать, это хорошо! И вообще украинцы - это великолепные люди! У меня есть друган Мирон - вот такой чувак!

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

Но нет, у негра были свои резоны: "Мы, люди, мы все хотим жить. Украинцы сказали - нахрен, твою мать, это ядерное оружие, оно нам не нужно. А Россия продолжает гонку вооружений. Вот почему я люблю украинцев".

Культурная страна Англия. Как приятно бывает поговорить с умным негром на улицах Баркинга, и при этом не приходится отвечать на вопрос, сколько денег в твоем кошельке :)

XForms

Я попал на первое, учредительное собрание XForms User Group. Людей было мало, все представлялись и рассказывали о своих интересах.

Я был краток: "5 лет назад я читал книгу про XML. Там была глава про XForms, где говорилось, что пройдет несколько лет, и эта технология сделает революцию в веб-программировании. Так вот я пришел спросить: и шо, таки революция случилась или нет?"

Раздался смех. Марк Бирбек ответил: "Как и со многими другими технологиями, вначале была эйфория. Потом люди увидели, что как-то революция не происходит, и перестали этим интересоваться. Но прошли годы. Кто-то (в том числе наша компания) продолжали тихо работать, и мне кажется, что таки сейчас XForms снова начинают входить в моду."

XForms - это декларативный способ реализации MVC-паттерна, причем, так сказать, в чистом виде. С помощью XML ты описываешь модель данных и бизнес-правила (в основном они связаны с валидацией). Потом напускаешь на этот файл какой-нибудб XForms-процессор, и получаешь веб-форму для ввода данных.

Причем она работает в стиле, похожем на Excel: ты поменял значение в одном поле, и сразу же пересчитались данные во всех связанных полях. Потому что изменение значения в поле автоматически передается в модель, а оттуда - во все связанные объекты UI. Здесь есть хорошие, пошаговые демо.

Главная фишка XForms в абстракции. Программист не говорит "нарисовать текстовое поле" или "нарисовать выпадающий список". Вместо этого он просто говорит "хочу получить от пользователя такие-то данные". А дальше уже XForms-процессор решает, как заполучить эти данные. Если нужно выбрать значение из списка, то процессор может нарисовать выпадающий список, простой список или радиокнопки. Но если тот же самый XML-файл обрабатывается голосовым информатором, то он скажет в трубку: "Пожалуйста, нажмите 1 для этого, 2 для того, 3 для сего".

Или, к примеру, мы хотим сделать кнопку "Удалить всё". Программист просто пишет <hint>Вы действительно хотите удалить всё?</hint>. Что такое hint? Если это веб-форма, то мы увидим подсказку, когда наведем курсор; или диалоговое окно, когда нажмем кнопку. А если эта же форма используется голосовым информатором, то он произнесет подсказку вслух.

Другой пример, который произвел на всех впечатление. Нужно получить строчку с адресом. Это может быть просто обычная строчка, текст. А может быть объект Google Maps, который ты таскаешь. Отличие будет только в классе CSS, который присваивается этому полю ввода.

Конечно, чтобы всё это заработало, нужен XForms-процессор. Ведь XML сам по себе - это просто текстовый файл, его нужно как-то обрабатывать. Процессоров существует много, и у них разный принцип действия. Можно всё обрабатывать на сервере, и клиент получает обычный HTML с JavaScript. Можно передавать XML, а в браузере его обрабатывает специальная JavaScript-библиотека. Или передавать XML, а его обрабатывает специальный плагин к браузеру. Наверное, есть и процессоры, которые можно вставить в Flash и Silverlight.

Кроме того, это может быть вообще не веб. Ничто не мешает описывать интерфейс Windows-приложения в виде файла XForms. Т.е. это будет как бы замена XAML. Отличие в том, что XAML гораздо больше ориентирован на красивый интерфейс, а XForms - на четкую модель. И наконец, как я уже писал, XForms-процессором может быть голосовой информатор. В этом случае графического интерфейса вообще нет.

Одну вещь я не спросил у Марка: можно ли использовать XForms не для UI, а для построения веб-сервисов? Т.е. понятно, что всё можно при желании, но надо ли, или это уже будет извращение?

Теперь о том, что меня смущает.

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

Во-вторых, абстракция абстракцией, но любая серьезная фирма хочет, чтобы с их сайтом поработали веб-дизайнеры. Никто не согласится с таким подходом: "Я хочу, чтобы пользователь выбрал страну из списка, и мне пофиг, как этот список выглядит, лишь бы работало." Может, для внутренного сайта такой подход и годится, но если мы говорим про фирму с миллиардными оборотами, то наверняка их дизайнеры захотят контролировать внешний вид вплоть до пикселя. Не то чтобы XForms не позволяет это делать... используя CSS, можно много чего настраивать. Но мне кажется, это как-то неестественно. Получается, что со одной стороны они добиваются абстракции, а с другой - и модель, и бизнес-логика, и во многом интерфейс описывается в одном и том же XML-файле. Правда, можно использовать внешний CSS. Но всё равно как-то коряво. CSS - он же изначально для веба. А как он должен использоваться в Windows-приложении или голосовом информаторе, непонятно.

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

Я сказал Марку: по моему мнению, чтобы эта технология получила широкое распространение, нужны не только хорошие XForms-процессоры, но и хорошие средства разработки или плагины. Которые, в частности, будут автоматизировать написание XPath-выражений. И то не факт, что это поможет.

Мне кажется, что XForms повторит судьбу XSLT. Тоже была красивая идея: декларативно описать, как один XML преобразовать в другой; или просто XML в текстовый файл; или (с помощью некоторых дополнительных наворотов) даже в бинарный типа PDF. Лет 5 назад было модно использовать XSLT, чтобы, скажем, покупатель мог взять готовый электронный магазин и самостоятельно подкрутить дизайн. Я сам пару раз был в роле такого клиента. И впечатления неважные. На практике оказалось, что XSLT с XPath - это громоздкий способ создания веб-страниц.

Да и медленный. Вот другой пример из моего опыта: была утилита, которая занималась импортом/экспортом данных между нашей системой и чужой. Обе системы импортируют и экспортируют данные в виде XML, но в совершенно разных форматах. Казалось бы, совершенно естественно использовать XSLT для преобразования, ведь в случае чего бизнес-логику можно менять прямо в файле конфигурации, не меняя программу! Увы, это работало очень медленно. И тогда мы всё переписали, используя XmlReader и XmlWriter, а всю логику перенесли из XSLT прямо в C#. Тупо, некрасиво? Возможно. Но это работало в 50-100 раз быстрее!


Не знаю, буду ли когда-нибудь использовать XForms, но на следующее собрание обязательно постараюсь прийти, они меня заинтересовали. Обещают показать реальное, работающее приложение, а не просто демо.

четверг, 17 сентября 2009 г.

Плата за проверку рекомендаций

Подслушал интересный разговор в агентстве по недвижимости. Американский студент собрался снять квартиру на Уимблдоне. Он не работает, кредитной истории в Британии нет, поэтому с него попросили заплатить вперед за полгода. Плюс депозит в размере полутора месяцев аренды. Обычная практика в Британии, у нас было то же самое. Его квартира стоит 1500 фунтов в месяц, итого надо сразу отдать больше 11 тысяч фунтов. У студента обеспеченные родители, так что он готов заплатить.

Но с него ещё просят 37 фунтов за "проверку рекомендаций". А он резонно спрашивает: "Какого хрена?" Он не работает, т.е. справку с работы не запросишь. Выписка из американского банка есть, но американским бумагам они особо не верят. Тем более, что выписка на имя родителей. Звонить предыдущему лэндлорду в Америку и спрашивать, не было ли проблем с платежами, им в лом. Хотя звонки в Америку стоят копейки, и говорят там на том же языке, но не положено. Мало ли, что там в Америке наврут, они же не джентельмены. Британского гражданина, который сможет подвердить "хороший характер арендатора", тоже нет.

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

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

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

Незаменимых у нас нет

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

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

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

И рассказал про свой опыт. У них в госпитале был всего один нейрохирург, который однажды прогулял операцию. Нейрохирург знал, что ему ничего не сделают, потому что в радиусе 100 миль других специалистов его профиля нет (надо отметить, что в Америке готовят врачей меньше, чем в Украине, хотя население больше раз в 6). А главврач взял да и уволил его на следущее утро. Это было тяжелое решение, потом два года они не могли найти замену. Но зато это стало отличным примером для других сотрудников, дисциплина резко улучшилась.

понедельник, 14 сентября 2009 г.

17 лет

Англичанин лет 50-ти рассказывал, как ему отказались продавать спиртное:

- Но я же явно совершеннолетний! Могу показать права.
- Сэр, я Вам верю, но я не совершеннолетний.

Продавцу 17 лет, и, оказывается, он не может сам продавать спиртное. Должен звать начальника.

Палочки

Марина пошла в кафе с подругой-китайкой. Спросила её:

- А вы и дома тоже едите палочками?
- Нет, конечно! Что мы, идиоты, что ли!

Т.е. по-крайней мере некоторые из них просто выпендриваются при белых людях. Ну что ж, это мне понятно. Я сам при москалях всегда говоря "в Украине", а дома - как придется, и "на", и "в" :)

Англичанин-нелегал

Меня позабавила эта история. Англичанин приехал в Украину к своей украинской жене. Увлекся и просидел без визы 93 дня вместо максимально возможных 90.

Украинские пограничники выписали ему штраф на 680 грн (50 фунтов). Это, в общем-то, позитив; так сказать, месть за всех наших соотечественников, с которых британское посольство содрало гораздо большие деньги и по каким-то причинам не дало визу. Украина встает с колен и так далее :) Некоторые, правда, говорят, что наказание слишком мягкое.

Но интересно другое. Мужу сказали: "Вообще-то по правилам мы должны запретить Вам въезд на два года, но как-то несерьезно запрещать въезд англичанину, поэтому мы штрафуем Вас не на 340 (как положено), а на 680 грн. Зато не делаем никаких отметок."

Т.е. соблюдать правила - это "как-то несерьезно". Я бы ещё понял, если бы попросили взятку. Или погрозили пальчиком и отпустили. Но ему официально выписали штраф с неправильной суммой.

четверг, 10 сентября 2009 г.

TFS

Провел три дня на курсах по Microsoft Foundation Server. Это официальные курсы Microsoft 6215A и 6214A. Стоимость - около 1400 фунтов, но меня, как известного халявщика, пригласили бесплатно. В списке делегатов напротив моего имени было написано "место работы - Microsoft" (эх!) Это потому, что они заплатили за меня.

Вообще понравилось, но из своего кармана я ни за что бы такую сумму не стал платить, оно того не стоит. Лабораторные работы особой пользы не приносили. Мы просто делали то же самое, что предварительно показывал преподаватель. Считается, что лучше запонимаешь, когда делаешь сам, но это не всегда так. Препод показывает, объясняет, что и зачем. А когда делаешь сам, то тупо повторяешь шаги из методички, не очень понимая смысл. Особенно когда надо набирать какие-то длинные фразы в командной строке.

Про TFS я первый раз услышал ещё в 2005, в Америке. Наша контора тогда думала, не перейти ли на него. Потом в 2007 году в Харьков приезжали представители Microsoft и предлагали бесплатные лицензии и обучение, но с условием, что фирма полностью перейдет на TFS в течение какого-то достаточно короткого срока. Как я понимаю, целью Microsoft было получить success story в Украине.

Наша фирма тогда отказалась. Во-первых, трудно мигрировать, у нас была куча проектов (потому что занимались аутсорсингом). Но это пол-беды. Некоторые заказчики требовали, чтобы мы использовали не свой традиционный набор (SVN, CruiseControl, NAnt, NUnit, Mantis), а что-то другое, что нравилось им больше. Таких заказчиков надо было бы убедить, что TFS лучше.

Многие думают, что TFS - это просто следующая версия VSS. На самом деле TFS - это контроль версий, билды, тестирование, bug tracking, project management в одном флаконе. С моей точки зрения, прелесть заключается не в каких-то навороченных фичах, а в хорошей интеграции с существующими технологиями. База в SQL Server, отчеты в SSRS, OLAP в SSAS, портал в SharePoint, билды в MSBuild, интерфейс в Visual Studio, возможность работать с Work Items не в Visual Studio, а в Excel или в MS Project. Бизнес-логика доступна через веб-сервисы. Т.е. при желании можно написать свою клиентскую часть.

Проблемы две. Сложно настроить шаблон своего процесса разработки. Поэтому многие предпочитают сделать наоброт - изменить свой процесс под готовый шаблон, придуманный Microsoft или кем-то другим. А вторая, более важная проблема - TFS очень дорогой. Даже для Лондона. Так что бесплатному софту вроде SVN и CruiseControl Microsoft пока угрожает. Но если сравнить с продуктами IBM, то у TFS цена вполне конкурентноспособная.

Чем ты хочешь заниматься

Рекрутерша поставила меня в тупик:

- Какую работу ты ищешь?
- C# Developer role in London.
- А чем ты хочешь заниматься?
- В основном ищу работу в финансовом секторе, но рассматриваю и другие варианты.
- Не поняла. А заниматься-то ты чем хочешь?
- Последнее время в основном занимался ASP.NET, но могу разрабатывать WinForms тоже.
- Я не про это спрашиваю. Чем ты хочешь заниматься?
- В основном я работал как разработчик, но кроме этого я люблю собирать требования, работать непосредственно с заказчиками.
- А заниматься-то чем хочешь?
- Извините, не понимают Ваш вопрос. Уточните, что Вас интересует?

Положила трубку. Может, надо было сказать: "Хочу в рабочее время заниматься чтением анекдотов"?

Мне вспомнился какой-то фантастический рассказ про инопланетян, которые много лет летели, специально чтобы встретиться с землянами. Они надеялись, что земляне нашли ответ на "основные вопросы мирового бытия". Земляне переспросили:

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

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

среда, 2 сентября 2009 г.

mssql_connect() на Godaddy

Продолжаю бороться с GoDaddy.

Итак, shared Windows hosting. Я могу подключиться к MySQL из PHP, и могу подключиться к MS SQL из ASP.NET. А вот из PHP к MySQL не могу: при вызове mssql_connect($host, $user, $password) получаю:

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: mydatabase.db.1234543654.hostedresource.com in D:\Hosting\1234543654\html\test_mssql.php on line 3

Конечно, первое, что приходит в голову - неправильно ввел имя, пароль или название хоста. Но я уверен, что правильно. Используя те же самые параметры, я успешно подключаюсь с своему MS SQL из ASP.NET или удаленно (например, с домашней SQL Management Studio).

Быстрый поиск в Гугле показывает, что у многих людей такая же проблема, но решения я не нашел.

Пишу им письмо. Отвечают: "Наверное, Вы путаете параметры соединения. Зайдите в свой hosting account и посмотрите, какая правильная connection string для этой базы".

Я: "Это бессмысленный ответ. Во-первых, в функции mssql_connect() не используется connection string. Во-вторых, даже если бы и использовалась, вы всё равно не даете примеры PHP кода. Я уверен, что набираю всё правильно. И у других ваших пользователей такие же проблемы".

Они: "Мы проверили соединение для Вашего аккаунта, всё работает, Вы можете подключаться к любой базе. А искать ошибки в Вашем коде у нас нет возможности."

Но я же не лыком шит - сам работал в техподдержке. Их надо давить дальше, они обязаны реагировать: "Послушайте, что Вы имеете ввиду под фразой "протестировали соединение"? Вы попробовали вызвать mssql_connect() из PHP? Я понимаю, что вы не в состоянии исправлять ошибки в моих программах, но я попросил проверить всего 1 (одну!) строчку кода! Неужели вы не в состоянии это сделать!"

В результате они извинились и признали, что у них не установлены PHP connectors for MS SQL. Так что ничего не получится. Но если сделать phpinfo(), так вроде как модуль для MS SQL у них есть. Зачем же они его включили, если пользоваться нельзя? "У меня посылка для Вас, только я Вам её не отдам."

Вообще удивительно - вроде у них хостятся миллионы сайтов, а иногда не работают такие простые вещи... и в документации проблема не описана. Может, это она возникает только на Windows-хостинге?


В принципе, полно и других провайдеров, но, как я уже писал, конкуренты либо не предоставляют одновременно требуемые мне PHP, MySQL, ASP.NET и MS SQL, либо берут гораздо больше денег.

вторник, 1 сентября 2009 г.

Пина Колада

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

А оказывается, весь секрет в том, чтобы хорошенько перемешать все эти жидкости в блендере. Удивительно, но факт: сильно меняется не только вкус, но и цвет.

Телепортация кота

В Харькове у меня дома была форточка, которая выходила на крышу сарая, на задний двор. Мурзик очень любил лежать на форточке и смотреть, что там проиходит. Людей там практически не бывало; коты, собаки и птички тоже появлялись нечастно, но всё равно он мог таращился часами. Я никак не мог понять, что он там такое интересное видит.

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

И что вы думаете он сделал после такого путешествия? Бросился жрать? Завалился на диван? Ничего подобного. Он побежал на форточку, прыгнул, и через 10 минут опять вернулся под нашу входную дверь. А потом ещё один раз, чтобы уже наверняка подтвердить: да, "червоточины" существуют! Моя мама вообще не любит котов, но в тот день с уважением посмотрела на Мурзика и сказала: "Да он экспериментатор!"

Не знаю, умеют ли коты разгововаривать. Если да, то, наверное, в кошачьих академических кругах слава Мурзика должна быть сравнима со славой Стивена Хокинга.

Цитата о дисциплине

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

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

И ушел по своим делам. Наш дежурный офицер, до этого державший строгое лицо, усмехнулся и сказал: "Ну что, товарищи рэкетиры? По классам разойдись!"

Triple и double

Ненавижу голосовую почту. Вот типичная ситуация: сидишь, ждешь, целый день никто из рекрутеров не звонит. И вдруг одновременно звонят сразу двое. Я говорю с первым, и, естественно, второй не может дозвониться. Если повезет, он оставит голосовую почту. Обычно в таком стиле: "Привет, меня зовут (неразборчиво) из компании (неразборчиво, обычно что-то вроде "Мега-супер-пупер-трудоустройство"), у меня вот есть такая классная работа (дальше на минуту-две описание лучшей в мире работы), срочно позвони мне по телефону (неразборчиво)".

В 95% случаев Caller ID у рекрутеров отключен, поэтому просто так перезвонить не получается. Я прослушиваю сообщение ещё раз, чтобы разобрать номер, но прослушивать можно только всё целиком (хотя мне-то нужны только последние секунды). А за каждое прослушивание в T-Mobile надо платить, это не входит в контрактные минуты.

К чему это я написал? Просто хочу дать маленький совет соискателям. Англичане любят использовать слова double и triple, когда диктуют номер телефона. Например, "122" они произнесут как "one-double two", а не как "one-two-two". Соответсвенно, "111" будет "triple one". Так вот, у меня уже несколько раз бывало, когда рекрутеры (англичане, не иммигранты!) путали triple и double. Я записываю номер и вижу, что цифр слишком много или слишком мало. Пробую заменить "111" на "11" и успешно дозваниваюсь.

Ratings by outbrain