Сегодня у нас в гостях Дмитрий Честных с очень обширным рассказом о том как он работает. Дмитрий — основатель небольшой компании, которая производит чертовски полезные программы для Mac и Windows. Фактически, такие люди как он называются „шароварщиками“ и если вы принадлежите этой профессии или хотите заняться, то в рассказ станет для вас справочником по методам работы, программам и всему что нужно.

Дмитрий Честных

Также, нас часто упрекают, что наши гости почти все Mac-пользователи. Дима — тоже, но у него с Макинтошами очень сложные отношения, которые порадуют ненавистников Mac и застяавят задуматься фанатов о том, что „маки уже не те“. Прошелся Дима и по GTD, ни добавить ни отнять :)

Приятного прочтения!

Чем вы занимаетесь в своей работе?

Я придумываю и пишу программы, рисую графику, делаю сайт, веду блог, занимаюсь маркетингом, отвечаю на письма в поддержку в Coding Robots. Еще я веду блог на русском языке Sellme.ru.

Как выглядит ваше рабочее место?

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

Какое железо используете?

Два года назад я написал заметку “Почему у меня три мака”. Кратко: потому что один из них всегда в ремонте. Сейчас у меня четыре мака, и три из них сломаны, а один уже не годится (он на PowerPC).

workplace.jpg

Не буду использовать трибуну Lifehacker, чтобы жаловаться на качество Apple, но вкратце расскажу. Сейчас у меня новый беленький пластиковый unibody MacBook (2.26 GHz Core 2 Duo, 4 GB DDR3, 250 GB HDD). После трех месяцев использования он ждет замены материнской платы и дисплея. Он еще не совсем умер, поэтому я на нем сейчас и работаю. В шкафу лежит MacBook Air, который с декабря ждет замены петлей экрана — они уже второй раз развалились, и это уже второй Air. Еще есть старенький 17” MacBook Pro, у которого под дисплеем какой-то мусор завелся. Собственно, дисплей там изначально был не предназначен для чего-либо кроме EGA графики. Древний iBook уже не годится, потому что Mac OS X 10.6 для PowerPC нет.

Так что, когда настанет год Линукса на десктопе, когда я перестану программировать под Мак, и когда этот MacBook снова сломается, я перейду на другую технику.

Дома у меня два Wi-Fi роутера: один — D-Link для ADSL-провайдера (7 мегабит), другой — Asus для Ethernet-провайдера (15 мегабит). Еще есть AirPort Express, но он не поддерживает VPN, поэтому не используется.

Телефон — iPhone 3G. Предыдущим был iPhone первого поколения, но он сломался, когда упал об кафельный пол (нижняя часть экрана перестала чувствовать прикосновения, что очень забавно — представьте меня, пытающегося разблокировать телефон и не понимающего в чем дело: включать-выключать получалось, потому что штучка, которую для этого нужно тянуть находится сверху, а вот разблокировать — никак). iPhone выбрал, потому что не было ничего лучше, и хотел под него программировать. После действий Apple по отношению к разработчикам программировать под него перехотелось.

Есть еще клавиатура Apple (прозрачная, не алюминиевая) и Mighty Mouse. Что первое, что второе — ужас. Лежат без дела, только мышку иногда использую, когда надо что-то нарисовать, что трэкпадом не получается (дешевый планшет так же имеется, но к нему так и не привык).

Какое ПО используете?

Три основные программы: текстовый редактор, браузер и Xcode.

С текстовым редактором я до сих пор не определился: я использую то TextMate, то Emacs, то MacVim, то vim в консоли, то gedit. Очень удобно, что в Cocoa текстовые поля принимают некоторые имаксовские клавиши (например, C-a, C-e для перехода в начало и в конец строки). :wq

Браузером у меня с недавних пор служит Chrome, а до этого я пользовался Safari. Есть еще Firefox, который иногда использую ради Firebug, YSlow и Page Speed, но в Chrome/Safari Web Inspector стал уже достаточно крутым, чтобы их заменить.

В Chrome пользуюсь расширениями FlashBlock, Docs PDF/PowerPoint Viewer, Send using Gmail (no button) и модифицированным Keyboard navigation for Chrome. Последний очень люблю — вместо нацеливания трекпадом по ссылкам, я жму “/”, вводу пару букв из ссылки, на которую смотрю и жму “Return”. Недостаток оригинального расширения в том, что он ищет по всем ссылкам на странице и скроллит экран, хотя очевидно, что пользователь хочет “кликнуть” ссылку, которую видит, поэтому я его немножко изменил — моя версия ищет только по видимым на экране ссылкам. Я выложил исходники, но не опубликовал в галерее расширений… Собственно, специально для читателей Lifehacker только что опубликовал его :-) Там же есть видео о том, как это работает.

Xcode. Хорошая IDE для Cocoa-программирования. Я использую цветовую схему “Low Key” и гугловский плагин, который убирает лишние пробелы при сохранении файлов.

xcode.png

С древних времен я пользуюсь Gmail, но только недавно перешел с Mail на его веб-интерфейс. Треды — это очень удобно.

В Gmail Labs у меня включены: Advanced IMAP Controls (когда я пользовался Mail, было очень полезно), Create a Document, Custom Date Formats, Flickr previews, Google Docs previews, Google Voice player, Navbar drag and drop, Picasa previews, Quote select text, Signature tweaks, SMS in Chat, Title Tweaks (переносит “Gmail” в конец заголовка “Gmail — Inbox (10) — email@gmail.com” ).

При обработке почте я следую принципу Inbox-почти-Zero. То, на что надо ответить сразу, отвечаю и архивирую. Где надо немножко подумать, оставляю лежать во входящих. Где надо долго думать или ждать чего-то, ставлю метку “Later” и архивирую. Иногда “немножно подумать” затягивается надолго и во входящих скапливается 10-15 писем. Их я обрабатываю примерно раз в неделю (отвечаю или забываю).

По Gmail перемещаюсь в основном с помощью клавиатуры (нажмите “?” если не знаете как). Вообще, гугловцы молодцы, что делают такие вещи: я пользуюсь клавиатурой и в Google Reader, и в самом поиске Google (для этого нужно включить эксперимент Keyboard shortcuts). Без последнего совсем не представляю поиска: как можно тыкать мышкой в ссылки, если быстрее перемещаться по результатам поиска с помощью j/k и открывать нужный по Return?

Уже год для поддержки пользователей Mémoires и Cathodique я использую FogBugz (бесплатный аккаунт для студентов и стартапов, хехе), но никому не советую этого делать, и скоро собираюсь избавиться от него и перейти на Gmail. Мой коллега для поддержки пользователей BlogJet и ScreenSketcher использует Gmail и доволен.
Почта у нас устроена так: codingrobots.com работает на Google Apps. Для каждой программы у нас есть отдельный адрес поддержки. Почта BlogJet и ScreenSketcher идет в аккаунт коллеги, почта Mémoires и Cathodique форвардится в мой FogBugz, остальные несколько адресов форвардятся в мой Gmail. На support@ стоят фильтры: если в сообщении есть слова BlogJet или ScreenSketcher, то письмо форвардится коллеге, остальные уходят мне. Иногда бывают косяки (например, в поддержку BlogJet пишут по поводу Mémoires) и мы друг другу пересылаем письма, но это случается редко. Все равно лучше чем FogBugz.

Баг-трекера у меня почти нет. Если кто-то находит ошибку в программе, я стараюсь сразу ее исправлять. Crash reports складываю в отдельную метку в Gmail и просматриваю ее: если одинаковых падений становится больше двух, значит это какой-то глюк программы, который надо исправлять. Если кто-то требует фичу, я это никуда не записываю, а просто запоминаю. Потому что если эту фичу будут просить часто, я ее не забуду и сделаю. А если редко — значит она не нужна. Сначала я волновался по этому поводу и пробовал всякие багтрекилки, но потому узнал, что 37signals что делают так же и успокоился. У каждой нашей программы один разработчик, поэтому главная функция багтрекилок — переназначение ответственности за баги (“ты написал эту фигню, ты и исправишь” — “нет, виноват твой код”) — нам не нужна.

Перейдем к художествам. Для рисования всяких мелких вещей (кнопочки, маленькие иконки, графика для сайта) я использую Acorn и иногда Gimp, когда в Acorn’е не хватает функциональности.

acorn.jpg

Векторную графику (иконки для программ, логотипы, макбуки) рисую в Inkscape. Я, конечно, не художник, но Inkscape мне очень нравится, несмотря на недостаток: что он, что Gimp работают в X11 и не выглядят нативными на Маке.

inkscape.jpg

Много времени провожу в терминале. Там у меня обычный bash с немножко измененным конфигом: зеленый $, показ текущей директории в строке и, если директория является git-репозиторием, показ текущего бранча. Плюс алиасы на ls: “la” для показа скрытых файлов и “ll” для подробного списка.

terminal.jpg

Для облегчения перехода по директориям использую autojump. Удобная штука: она запоминает куда я часто хожу и потом вместо cd ~/Projects/cathodique можно набрать только часть названия директории: j cat, чтобы в нее перейти.

Для установки разных пакетов я раньше пользовался MacPorts, но он всегда устанавливал свои библиотеки (чтобы поставить какую-нибудь мелочь, качает кучу разных версии perl и т.п.), поэтому перешел на homebrew — он использует библиотеки, которые уже есть в Mac OS X.

Иногда вместо rm, использую trash — он не удаляет файлы, а помещает их в корзину. На всякий случай.

Git — моя любимая система контроля версий. Я начал с CVS, потом перешел на Subversion (все отстой), потом на Git, потом на Mercurial, потом на Fossil и снова вернулся в Git. И где-то между ними пробовал Bazaar. Mercurial и Fossil мне понравились, но Git все-таки больше. К тому же, GitHub просто рулит. В дополнение к консольному интерфейсу я иногда использую GitX для удобного просмотра истории.

Свои программы я тоже использую :-) В Cathodique ищу и смотрю видео, а в Mémoires храню небольшие заметки. Последним мешает пользоваться на полную катушку то, что он у меня всегда находится в режиме отладки, и как-то не получается сфокусироваться на написании чего-то, всегда хочется что-нибудь поковырять в самой программе.

Заметки в блоги я пишу в программе MarsEdit (зто хорошая замена BlogJet на Маке, особенно с третьей версии, которая недавно вышла :-).

В твиттере у меня четыре аккаунта, поэтому пользоваться веб-интерфейсом невозможно. Я использую Tweetie (бесплатную версию с рекламой).

В VirtualBox у меня 6 виртуальных машин: Windows XP, Ubuntu 9.10, Ubuntu 10.04, PC-BSD, Mint Linux, Arch Linux. Винда нужна для тестирования наших Windows-программ и запуска контрольной панели реселлера, а Линуксы и BSD — для экспериментов. VirtualBox — нормальная программа, правда, с каждым обновлением то тут, то там появляется баг. Зато бесплатная (правда, Oracle уже, наверное, строит планы по взыманию денег с пользователей). Раньше пользовался Parallels, но бросил, как только он стал слишком сильно тормозить на MacBook Pro. Не знаю почему, у всех остальных нормально работает.

Для закачки файлов пользуюсь двумя программами: Cyberduck и Interarchy. Пользовался бы только Interarchy, но он не поддерживает Rackspace Cloud Files, на котором у нас хостятся дистрибутивы программ.

В вебе кроме Gmail использую Google Reader, Docs, Calendar, GitHub, Flickr и Picasa Web.

Календарь я использую в основном для записи прошедших событий, о которых нужно будет вспомнить потом, чтобы посчитать сколько времени прошло, а так же для того, чтобы посмотреть, когда следующая гонка Формулы 1. Каких-то событий и дел, которые нужно назначать на определенное время у меня почти нет. Списками to do я не пользуюсь: я работаю в режиме ненадежности по умолчанию. Надо купить батарейки? Забыл, ну и ладно, куплю в следующий раз. Надо ответить на письмо? Если забуду, пнут. Конечно, я не так часто что-то забываю, и я не совсем пофигист. Но фишка “Getting Things Done” — записать на бумагу и выкинуть и головы, потом периодически просматривать и вспоминать — со мной не работает, потому что, когда я практикую GTD, я думаю только о GTD. Уже штук 5 программ для создания списков дел написал-недописал. Хватит :)

Еще Google Analytics использую почти каждый день: слежу за трафиком и делаю пометки.

IM не пользуюсь, потому что не люблю отвлекаться. Стоит Skype, который иногда пригождается, плюс, если кто-то просит что-то быстро обсудить, включаю Google Talk в Gmail.

В Mac OS X док у меня находится справа и с недавних пор я стал его прятать. Для перемещения по программам и окнам пользуюсь комбинациями клавиш. Для запуска программ — Spotlight (раньше пользовался Quicksilver и Google Quick Launch Box).

Рабочий стол использую для временных файлов, которые куда-то потом перетаскиваю или удаляю. Картинку на рабочем столе иногда меняю по настроению, но обычно это просто серый цвет (#2D2D2D). Не от плохого настроения, а для эстетики.

desktop.jpg

Spaces не использую — меня разражает перемещение туда-сюда. Гораздо проще спрятать программу (Cmd+H) или все программы кроме текущей (Cmd+Opt+H).

Есть ли место бумаге в вашей работе?

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

Существует ли конфигурация мечты?

Я хочу, чтобы мой нынешний компьютер проработал хотя бы лет 10. Все устраивает, разве что можно через пару лет поменять обычный жесткий диск на SSD и выкинуть DVD-привод.

Очень хочу хорошую операционную систему, потому что ни Mac OS X, ни Linux, ни уж тем более Windows меня не устраивают. Чувствую, что можно работать гораздо эффективнее, но вот как именно — не знаю :-)