Monday, February 20, 2012

If brother has green ladder arrest brother

Blogspot тормозит желание делать новые посты.

Поковыряв marcus (блог Ивана Сагалаева http://softwaremaniacs.org/about/  (сколько же усилий надо потратить, чтобы не перепутать местами "г" и "л" в этой фамили) и насмотревшись на различные другие самодельные движки на Django мне тоже захотелось придумать свой велосипед, таким образом это, наверное, последняя запись в этом блоге. Всё более-менее адекватное я перенёс на http://cramur.me , сам код я держу на гитхабе https://github.com/cra/cramurme
Что-то мне захотелось совсем удариться в минимализм, поэтому пока это скорее совсем web-1.0. Наверное, это посттравматический синдром после прочтения "Вы не гаджет" даёт о себе знать :)

Хочу развернуть там open-id сервер, и вообще перенести туда всё, что я держу в различных текстовых файлах на разных серверах. Может, эти странные коллекции будет удобней держать.

Sunday, September 4, 2011

Yaourt: оболочка к pacman с доступом к AUR

AUR - Archlinux User Repository


У Arch Linux есть репозиторий с пакетами, которые поставляют сами пользователи, http://aur.archlinux.org, там часто можно найти всякие штучки, которые по тем или иным причинам не попадают в основной репозиторий дистрибутива (например, та же самая клавиатурная раскладка дворака для программистов или самый-самый-самый свежий firefox). Про сам репозиторий есть большая страница на wiki .

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



1 # Author: Julien MISCHKOWITZ <wain@archlinux.fr>
2 # Author: tuxce <tuxce.net@gmail.com>
3
4 pkgname=yaourt
5 pkgver=0.10.1
6 pkgrel=2
7 pkgdesc="A pacman wrapper with extended features and AUR support"
8 arch=('any')
9 url="http://www.archlinux.fr/yaourt-en/"
10 license=(GPL)
11 depends=('diffutils' 'pacman>=3.5' 'package-query>=0.7' 'gettext')
12 optdepends=('aurvote: vote for favorite packages from AUR for inclusion in [community]'
13 'customizepkg: automatically modify PKGBUILD during install/upgrade'
14 'rsync: retrieve PKGBUILD from official repositories'
15 'pacman-color: fully colorized output')
16 backup=('etc/yaourtrc')
17 source=(http://mir.archlinux.fr/~tuxce/releases/$pkgname/$pkgname-$pkgver.tar.gz)
18
19 build() {
20 cd $srcdir/$pkgname-$pkgver/
21 make PREFIX=/usr sysconfdir=/etc localstatedir=/var
22 }
23
24 package() {
25 cd $srcdir/$pkgname-$pkgver/
26 make PREFIX=/usr sysconfdir=/etc localstatedir=/var DESTDIR=$pkgdir install
27 }
28
29 # vim:set ts=2 sw=2 et:
30
31
32 md5sums=('b7c471bc0e763e587a965616540b1a7d')


В целом, если внимательно посмотреть, никакой чёрной магии там нет. Пример взят из утилиты yaourt (). На странице утилиты в AUR описано, какие файлы входят в tarball с PKGBUILDом, ну и можно поругаться со всеми желающими в комментариях (сначала надо зарегестрироваться).
Чтобы установить пакет из пользовательского дистрибутива, надо скачать tarball, при желании посмотреть/поправить содержимое PKGBUILD и сделать пакет:


$ tar xzvf yaourt.tar.gz
yaourt/
yaourt/PKGBUILD
$ cd ./yaourt
$ makepkg


Далее можно лицезреть всяческие радостные сообщения из серии "я скачал пакет оттуда-то, проверил чексумму, вроде совпадает, проверил зависимости, всё на месте, зажигай!". Если зависимости не будут удовлетворены, следует найти нужный пакет в AUR и поставить сначала его (список пакетов-зависимостей можно посмотреть на странице пакета или в самом PKGBUILD). После решения всех этих квестов, на выходе появится фраза в стиле "Finished making: yaourt 0.10.1-2....". После этого в папке появится пакет, который уже можно устанавливать через pacman:

$ ls
pkg PKGBUILD src yaourt-0.10.1-2-any.pkg.tar.xz yaourt-0.10.1.tar.gz
$ pacman -U yaourt-0.10.1-2-any.pkg.tar.xz


YAOURT как панацея от рутины


Понятно, что пять-шесть раз выполнив такую процедуру, слегка устаёшь скачивать пакетики и их распаковывать. Посему на помощь приходят всякие утилиты-автоматизаторы этих манипуляций, одна из наиболее популярных - yaourt. Его надо будет установить именно так, "муторно", скачав все зависимости (если они ещё не удовлетворены) и вручную запустив makepkg и прочее. Зато потом это окупается и остальные пакеты можно ставить прямо из командной строки. Преимущество yaourt в том, что он работает ну совсем как pacman, даже многие ключи те же (поиск -Ss, апгрейд всех пакетов -Syu, к тому же позволяющий выбрать, какие пакеты ставить в массовой закачке, а какие нет). Ну и, конечно, есть всякие плюшечки типа раскраски вывода и интерактивного поиска. Типичный вывод yaourt:

$ yaourt -Ss notion
community/notion 20110823-1 [1.10 M] [installed]
Tabbed tiling, window manager. Fork of Ion3
aur/libtu-git 20101217-1 (2)
Utility library for notion
aur/notion-styles-thinviolet 0.1-1 (0)
modified Notion style without window border
aur/notion-xft 20110827-1 (0)
Tabbed tiling, window manager. Fork of Ion3, with XFT patch


Сначала выводятся "оффициальные репозитории", на которые настроен pacman, а потом уже aur. При установке будут сначала показаны последние комментарии, а потом будет предложено отредактировать PKGBUILD и, если есть, правила установки. Зависимости будут ставиться автоматически (если они есть только в AUR, дадут возможность поправить PKGBUILD и им). Помимо этого, к нему есть куча приятных штучек, например, тулза aurvote, позволяющая проголосовать за включение пакета в основной репозиторий "не отходя от кассы".

Конфигурационный файл yaourt находится в /etc/yaourtrc, и представляет из себя типичный формат "все значения по умолчанию прописаны как есть, но закомментированы". Вот его стандартное содержание:


1 # yaourtrc - Configuration for yaourt
2 #
3 # See yaourtrc(5) for more information
4 #
5 #
6
7 # ABS_REPO list repositories available on archlinux rsync server
8 ABS_REPO=(testing core extra community-testing community gnome-unstable kde-unstable)
9
10 # General
11 #AUTOSAVEBACKUPFILE=0
12 #DEVELBUILDDIR="/var/abs/local/yaourtbuild"
13 #DEVEL=0
14 #EDITOR="$EDITOR"
15 #FORCEENGLISH=0
16 #FORCE=0
17 #TMPDIR="/tmp"
18 #SUDONOVERIF=0 # Avoid multiple sudo checks when timestamp_timeout=0
19
20 # AUR
21 #AURCOMMENT=5
22 #AURDEVELONLY=0
23 #AURSEARCH=1
24 #AURUPGRADE=0
25 #AURVOTE=1
26
27 # Build
28 #EXPORT=0 # Export to 1: EXPORTDIR or PKGDEST
29 # 2: pacman cache (as root)
30 #EXPORTSRC=0 # Need EXPORT>0 to be used
31 #EXPORTDIR="" # If empty, use makepkg's connfiguration (see makepkg.conf)
32
33 # Prompt
34 #NOCONFIRM=0
35 #UP_NOCONFIRM=0 # No prompt while build upgrades (including -Sbu)
36 #BUILD_NOCONFIRM=0 # Only prompt for editing files
37 #EDITFILES=1
38 #NOENTER=1
39
40 # Output
41 #USECOLOR=1
42 #DETAILUPGRADE=1
43 #SHOWORPHANS=1
44 #TERMINALTITLE=1
45
46 # Command
47 #PACMAN="pacman"
48 #DIFFEDITCMD="vimdiff"


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

Подводя итоги, yaourt очень сильно облегчает использование AUR (кстати, название так и расшифровывается: Yet AnOther User Repository Tool), при этом сохраняя общий дух простоты использования KISS и позволяющий плавно использовать его вместо pacman.

Wednesday, August 3, 2011

bash history: args

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

[igor@nastya 10:38:50 ~]
$ gqview /tmp/screenshot-2011-08-03-10\:06.png
[igor@nastya 10:49:13 ~]
$ ^gqview^mv Dropbox/Public/music.png
mv Dropbox/Public/music.png /tmp/screenshot-2011-08-03-10\:06.png
mv: cannot stat `Dropbox/Public/music.png': No such file or directory
[igor@nastya 11:19:44 ~]
$ mv !!:2 !!:1
mv /tmp/screenshot-2011-08-03-10\:06.png Dropbox/Public/music.png

(кстати, да - полчаса это я столько искал и читал гайд по башу %)

Во-первых, баш, как нормальная (читать "не-awk") утилита, нумерует аргументы с нуля. !! - предыдущая команда (sudo !! является, пожалуй, наиболее частым моим применением этой функции. !abracadabra - последняя команда, в которой был текст abracadabra.

Пользуясь случаем, йцукенг - редкостное говно, а dvorak-r почти так же охрененен, как programmer's dvorak

Saturday, February 13, 2010

dubuzzing


fuck yeah!

И на всякий случай unfollow и block, unfollow и block, unfollow и block.. (блиа, нельзя было сделать прямо в том окошке множественный выбор? И вообще зачем сразу добавлять всех-то?).

Ну и спрятать этот феерический ёбнутый логотип можно drag-n-drop'ом его в "More", чтобы не портил картинку.

btw, mutt rulez:

1 set sendmail="/usr/bin/msmtp -a cra"
2 set use_from=yes
3 set realname="Spaceship Monkey"
4 set from="mailmonkey-of-spaceship-monkey@mail.ru"
5 set envelope_from=yes
6
7 mailboxes ='[Gmail]/Label1' ='[Gmail]/Label2'
8
9 set imap_user="ACC@gmail.com"
10 set imap_pass="PASS"
11 unset imap_passive
12 set imap_keepalive=300
13
14 set smtp_url="smtps://ACC:PASS@smtp.gmail.com:465/"
15 set from="ACC@gmail.com"
16
17 set folder="imaps://ACC@imap.gmail.com:993"
18 set spoolfile="+INBOX"
19 set postponed="+[Gmail]/Drafts"
20 set message_cachedir=~/.mutt/cache/bodies
21 set certificate_file=~/.mutt/cache/certificates
21
22 set sort='threads'
23 set sort_aux='last-date-received'
24 set imap_check_subscribed
25
26 color indicator yellow default
27 color message white default
28 color normal white default
29 color quoted brightblue default
30 color signature green default
31 color underline green blue
32 color status white blue
33 color header yellow default "^from"
34 color header green default "^from:"
35 color header green default "^to:"
36 color header green default "^cc:"
37 color header green default "^date:"
38 color header yellow default "^newsgroups:"
39 color header yellow default "^reply-to:"
40 color header brightcyan default "^subject:"
41 color header red default "^x-spam-rule:"
42 color header yellow default "^x-mailer:"
43 color header yellow default "^message-id:"
44 color header yellow default "^Organization:"
45 color header yellow default "^Organisation:"
46 color header yellow default "^User-Agent:"
47 color header yellow default "^message-id: .*pine"
48 color header yellow default "^X-Fnord:"
49 color header red default "^X-WebTV-Stationery:"
50 color header yellow default "^X-Message-Flag:"
51 color header yellow default "^X-Spam-Status:"
52 color header yellow default "^X-SpamProbe:"
53 color header red default "^X-SpamProbe: SPAM"
54 color tree green default
55

Tuesday, February 9, 2010

Вся правда об интервью (перевод)

Это мой любительский перевод статьи Стива Йегги об интервьюировании с закосом на художественность. Хотя он не только об интервью, имхо. Многие вещи тут можно отнести к другим областям налаживания контакта, обучению, работе.

Внимание: заголовок этой заметки очень неточен. По правде говоря, заметку стоило бы озаглавить так: "Частичная (В Лучшем Случае) и В Любом Случае Чрезвычайно Предвзятая Так Называемая 'Правда' О Некоторых Ограниченных Видах Технических Собеседований от Полностью Фанатичного Сноба-Задрота, Который Даже Не Знает, О Чём Он Говорит Потому Что ПэХаПЭ рУЛиТ И Вам Не Надо Знать Ничего Больше!!!"

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

Лана..

Какой-то анонимный трус оставил коментарий в одном из моих блогов:

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

<сатира>

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

И как только это произойдёт, - да я всегда был на его стороне! Нет, правда!

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

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

Но вообще, эти управляющие госпиталями и аэропортами... Это не все снобы, которые могут попасться на пути такого парня, как я, судя по моему же опыту. Знаете, я могу довольно неплохо жонглировать пятью шарами (у меня даже где-то есть видео, где я это делаю), и всё равно, каждый раз, когда я подаю заявку на вакансию жонглёра в Cirque de Soleil, мне даже не присылают ответа! Снобы! Ни строчки в ответ не пишут! Что не так с моим жонгрированием? Да ничего! Они просто хотят маленьких милых клонов Виктора Ки. Однозначно, они собираются платить этим жонглёром много денег за хорошую работу, но я думаю, они поступают довольно узколобо из-за того, что не рассматривают меня как кандидата.

Тогда я написал кипу писем в Голливудские киностудии, позиционируя себя как дрессировщика животных, так как дома у меня живёт Ши-тцу по имени Чино, и иногда могу заставить его сидеть. В смысле, это заняло столько работы! Эта мелкая шавка почти совсем меня не слушает. Так что я довольно неплохо подхожу на вакансию дрессировщика. Конечно, я никогда не работал напрямую с медведем или тигром, но не может же это сильно отличаться. Надо просто кричать СИДЕТЬ! и потом скормить им печеньку, когда они наконец сделают это, так? Типа, специальную печеньку для тигра или специальную печеньку для медведя вместо собачей косточки. Но в целом-то, всё то же самое, уж я-то знаю. Но эти эгоисты-дрессировщиками пинками выталкали меня за дверь.

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

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

Так что да, господин Комментатор. В яблочко просто! Кругом одни снобы!

</сатира>

Небольшое(но популярное) недоразумение.

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

Так что мы не хотим кучу маленьких клонов, которые будут работать на нас. Мы хотим, чтобы они работали с нами </вот-теперь-правда-конец-сатиры>

Грубая Реальность.

Если вы хотите работать в комании типа Microsoft, Yahoo!, Apple или Amazon.com, у них будут высокие стандарты. То, что Вы "знаете, как программировать", в общем-то, неважно. Вот краткий перечень Ваших умений, которые они будут проверять: сложность алгоритмов, хитрые структуры данных, проектирование алгоритмов, поиск, сортировка, проблемы локализации, сетевые протоколы, механизмы манипулирования памятью на уровне операционной системы, семантический анализ строк, рекурсия, математическая индукция, теория графов, комбинаторика, теория реализации языков программирования, машинные архитектуры, дискретная математика и логика, графические и оконные системы, шрифты и типография, визуализация данных, базы данных и языки запросов, файловые системы и хранение данных, встраиваемые системы, протоколы сотовой и беспроводной связи и интернет-стандарты и технологии.

Если повезёт, это всё.

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

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

Создать сайт на Ruby on Rails довольно просто. Научиться программировать тоже довольно просто. Многие люди пытаются и сдаются, не достигнув хотя бы этого. Но это жонглирование трёмя или пятью шарами. Этого недостаточно, чтобы попасть в Cirque du Soleils и в частные госпитали компьютерной индустрии. Я уверен, вы хотите быть гонщиком, инструктором по дельтапланеризму, корпоративным юристом, звукорежиссёром кинофильмов или инженером-аэромехаником. Но Вы знаете, что у вас недостаточно навыков или опыта. Почему же Вы считаете, что поверхностное знание (да, в общем-то, даже не только поверхностное) программирования автоматически квалифицирует Вас как потенциального рекрута в Microsoft?

ИТ-компании обладают невероятно высокими стандартными, как и в любой другой професси. Кто убил, тот и съел. Если тебя убили и съели - сам виноват.

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

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

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

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

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

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

Подсказка таким компаниям: вы все делаете это одинаково. Хватить, чёрт побери, хранить это за семью печатями.

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

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

С одной стороны, люди хотят работать, и любой намёк на то, что кто-то где-то может спросить вопросы, на которые они не знают ответа, заставляет их плеваться слюной от ярости. Странно, но они не учитывают при этом, что они не могут получить работу нейрохирурга или дрессировщика в цирке. Но при этом они думают, что небольшое представление о программировании означает, что они могут подавать резюме в любую технически ориентированную компанию на планете и любой, кто спросит их о чём-то, что они не знают, просто большой жестокий дрочер! (Я случайно обнаружил эту милую сентиментальность после моей недавней заметки в O'Relly Ruby Blog, так что наш Анонимный Трус не одинок в своём мнении.)

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

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

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

Ну же, просыпайтесь, злые люди! Существует сотни компаний, проводящих технические интервью. Они делают это для разных родов деятельности, включая администраторов баз данных, сисадминов, веб-разработчиков, программистов unix, программистов windows, программистов на java, программистов для мобильных телефонов и многие другие. Какую бы область не взять, все делают это одинаковым способом. Так что это не только я такой. Вообще, все эти люди, берущие интервью - ВЫ, как только Вы получаете эту работу.

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

В поисках работы получше.

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

Если Вы просто хотите делать деньги, можно с большой вероятностью найти работу, которая требует гораздо меньше технических навыков (или требует других технических навыков), чем работа в компаниях типа Microsoft. Приведу один пример из этих тысяч тысячей возможностей: можно набраться немного знаний по PHP и MySQL для разработки сайтов, и пойти найти какую-нибудь больниццу или страховую компанию или школу, которой нужно присутствие в сети, и они без сомнений будут платить Вам так же хорошо, как Microsoft.

Если деньги это не всё, то Вам точно не нужно университетское образование в области информатики. Наша индустрия отчаянно нуждается в программистах, которые могут писать код на C#, Java, PHP, Perl, C++ и других популярных языках. Если Вы выучите один или два таких языка, Вы скорее всего сможете получить работу в довольно большом числе компаний.

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

Такова реальность - поставлять хороший софт всё сложнее и сложнее, так как ожидания заказчика постоянно растут. Вот почему компаниям приходится быть такими разборчивыми в процессе собеседования. Большие компании сталкиваются с серьёзными задачами, которые не встречаются в небольших конторах, включая комбинаторные взрывы связей и зависимостей, необходимость поддержки большой кодовой базы, социально-культурные проблемы, возникающие по мере роста компании, и необходимость искать абсолютно новые вложения в результате давления с Wall Street.

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

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

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

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

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

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

Если компания собирается спрашивать Вас вопросы, которые, по Вашему мнению, не особо важны - не работайте в этой компании! Если Вы правы, они выйдут из бизнеса, рано или поздно. Ну или как минимум, Вы можете податься в компанию, в которой, по Вашему мнению, приоритеты совпадают с Вашими собственными. Не любишь - не целуй!

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

А я всё равно попридираюсь!

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

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

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

И пожалуйста: если Вы чего-то не знаете, не надо огрызаться на нас. Просто почитайте об этом на Википедии. Это не так сложно, как кажется!

Sunday, February 7, 2010

Urxvt links parsing

Когда меня наконец-то задолбало постоянно кликать третьей кнопкой мыши в тонкой адресной строке моего браузера, перед этим тщательно выделяя ссылки в mcabber, снабжённые вялыми описаниями моих друзей "ZOMG! INVISIBLE SANDWICH!", я решил посмотреть, что же можно с этим сделать. Оказалось практически как с метрономами и тюнерами фирмы KORG: батарейки входят в комплект, но с неожиданной стороны коробки.
Добавляем следующие строчки в наш .Xresources:
1 URxvt*perl-ext-common: default,matcher
2 URxvt*keysym.C-g: perl:matcher
3 URxvt*urlLauncher: firefox
4 URxvt*colorUL: #86a2be

И по нажатию ctrl-g у нас будет открываться в firefox последний url-match.
Можно ещё мышкой кликать (по умолчанию - средняя кнопка, но можно настроить через URxvt*matcher.button). И вообще, в man 3 urxvtperl много чего любопытного написано, оказывается.

Thursday, February 4, 2010

Проблема российской музыки

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

И сравнить примерно того же время выхода клип katty perry - i kissed a girl и unplugged-версию этой же песни (у нас в эстраде свинговать-то даже на записи боятся.) тут

Копнём полуандеграунд и без вокала? Пожалуйста. Battles, например. Пример
У нас есть что-то подобное? Everything is made in china? Один из их крайних треков
Я слышал их на разогреве 65daysofstatic. Пятьдесят минут, пятнадцать примочек и ни одной запоминающейся мелодии.
В прочем, разогревы это вообще ужас.
На разогрев Riverside вышла какая-то сумашедшая команда dark heaven. Барабанщик постоянно сбивался, когда переходил на кардан, а вокалистка мазала мимо нот. Все в масках, кроме вокалистки. Тут я даже пожалел, что я отлично вижу с такого расстояния - лучше бы и она была в маске.

В тоже время в музыкальном колледже я постоянно слышу и вижу отличных вокалисток, владение голосом которых заставляет меня чуть ли не яростно онанировать прямо там, гитаристов, которые понимают, что лучшее соло Джона Петруччи - это то, что он сыграл в Hollow Years на бутлеге Budokan, причём шред там совершенно был лишним и басистов, которые умеют слушать барабанщика и не пытаются в каждую паузу напихать побольше кривого слэпа.
Куда они все деваются, блин?