Марк О’Коннер: как я сменил свой MacBook на iPad+Linode

19-ого сентября я попрощался со своим верным MacBook Pro и начал программировать исключительно на iPad + Linode 512. Я расскажу вам об удивительном месяце, проведенном, работая в технологии облачного программирования.

1

Все началось несколько лет назад, когда я купил свой первый MacBook. Разочарованный непоследовательным использованием клавиш ctrl/alt/option/arrow с целью перехода от одних слов к другим, перелистывания экранов и строк, я находился в поиске новой системы программных средств для разработки ПО. Вместо этого я нашел свободный режимный текстовый редактор Vim и просто-таки влюбился в него. Думаете – это еще один сентиментальный пост и хвалебная ода Vim? Вовсе нет – читайте дальше, будет интересно.

И хотя мне нравится использовать для моих собственных проектов язык программирования Python и платформу GAE, на работе мы пишем увесистый код C++/Qt, работающий на кластерах, таких как суперкомпьютер Ягуар с 200000-ядерным процессором. Таким образом, большую часть своего времени я провожу в работе с ОС Linux, особенно на удаленных системах. В стандартной ситуации я бы сначала разработал код в MacVim локально, а потом запустил бы свои наработки в VMWare Fusion или удаленно.

В один роковой день, из-за VMWare и OS/X моя совместно используемая файловая система была повреждена, что вызвало потерю несохраненного кода, который я делал в течение нескольких дней. Я очень рассердился.

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

Я просто должен был попробовать.

Установка

2

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

1. iPad 2 (16Gb, WiFi)
2. беспроводная клавиатура Apple.
3. чехол Stilgut для iPad соответствующего размера.
4. Текстовая консоль iSSH.
5. Lnode 512 на сервере Ubuntu 11.04.
6. Apple VGA-адаптер.

Расходы: около $800 + $20 в месяц.

Бродил я одинокий как облако…

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

Кстати, я ненавижу пользоваться e-mail при помощи почтового приложения, ведь при архивировании выскакивает глупая и ненужная анимация, что безумно тормозит процесс. К тому же, кнопка архивирования располагается в верхней части экрана, что страшно неудобно. Не так давно вместо этого я стал работать с письмами по IMAP-протоколу со скриптом Python.

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

Но выше мы ведь говорили о разработке кода, поэтому вернемся к Vim.

Vim: мой дом в доме

3

Возможно, единственная причина удачного перехода к программированию на iPad состояла в том, что мой любимый редактор среды IDE почти так же хорошо работает на iSSH-консоли, как и локально на моем Macbook. iSSH поддерживает xterm-256color, что обеспечивает Вас еще более приятными цветовыми схемами, несмотря на работу в терминале. Именно там находятся все мои плагины, завершенный код, а я пользуюсь системой быстрой навигации и так далее.

Короче говоря, это – безболезненный переход с моей MacVim среды. Если бы я разрабатывал приложения OS/X с Xcode, или регулярно пользовался Eclipse или Visual Studio, это изменение, наверное, не далось бы мне так легко.

Часто случается, что работать в терминале на удаленном Linode даже лучше чем локально, благодаря прекрасной программе GNU Screen.

GNU Screen творит чудеса

4

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

Итак, я подключаюсь к текстовой консоли iSSH посредством Linode и возвращаюсь к своей предыдущей сессии. Все мои временные таблицы находятся именно там, где я их оставил. Другие SSH-туннели все еще настроены. Курсор находится в той же позиции. Буфер обмена содержит те же фрагменты. Все сохранено таким же, как и во время предыдущей сессии. В виду того, что я работаю над несколькими проектами, каждый раз у меня наблюдаются разные сессии, с разным набором таблиц и редактированием. Теперь я могу разделять данные по разным проектам.

Если бы Вы знали, насколько трудно выразить словами, как это удобно — каждый день возвращаться к той же сессии; на MacBook я использовал некоторые программы, но они не давали ожидаемого результата – удаленные соединения сбрасывались. И наконец-то я все-таки нашел решение – насколько приятно это осознавать!

VNC: хорошо или плохо?

5

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

Я настроил VNC-соединение, установил графический пользовательский интерфейс в разрешении экрана 1024х768 и 256-ой цветовой палитре. У меня была возможность настроить 24-битовую цветовую схему, но в некотором роде я предпочитаю дополнительную скорость изысканной красоте. Традиционный графический интерфейс пользователя предусматривает взаимодействие с мышкой, но у меня получается работать с «тачпадом», а результаты радуют. Не так уж плохо. Хотя работа без мышки приводит к некоторым ограничениям.

«Хороший способ оценить удобство и простоту использования программы или диалога – попробовать пользоваться мышью только при помощи одного пальца»

.
Джоэл Спольский

Эта цитата заставляет задуматься.

Но ведь VNC-соединение – не так уж плохо работает, ведь так учитываются интересы пользователей с более низким разрешением экрана, большим размером шрифта и другой системой контроля за мышкой, не заточенной бесчисленными годами, проведенными за игрой в Quake и Starcraft. Но все-таки в некоторые дни мне не хватало bluetooth-мышки.

Стиль жизни

6

Сегодня не такой день. Я разворачиваю свой шоколадный круассан, делаю чашку чая, и настраиваюсь на плодотворную работу. Команды «hg pull» и «hg update» запускают процесс рекомпиляции, а комбинация Ctrl-X в редакторе помогает продолжить написание кода, в то время как происходит восстановление. Ctrl-X – «горячая клавиша» на моем экране; на беспроводной клавиатуре она принимает значение Ctrl-A по умолчанию, оставляя в терминале unicode-символы. Предположительно, это связано с тем, что Apple поддерживает привязку некоторых общих клавиш Emacs в iOS. Странно, но работать достаточно удобно.

После нескольких минут работы с кодом, бар в нижней панели экрана уведомляет меня о завершении компиляции; при помощи Ctrl-X я возвращаюсь назад и запускаю санитарную проверку, чтобы узнать о сохранности информации; потом опять продолжаю работать над кодом. На 4-ядерном процессоре Linode работает в два раза быстрее, чем в VMWare на MacBook. Все работает тихо – блаженная тишина. Единственный звук который я слышу подобен падающей капле дождя, — это шум клавиатуры, на которой я работаю. Настоящий праздник, по сравнению с работой на клавиатуре MacBook!

Я обращаюсь к приложению DuckDuckGo, нахожу информацию в Qt API, потом возвращаюсь назад. Может показаться странным, но мне все еще не хватает сочетания клавиш для переключения задач.

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

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

Skype-конференции отлично работают и на iPad, и на iPhone, по крайней мере, связь обеспечивается настолько же хорошо, как и в системе VOIP, приемлемо работающей на Linux только после реконфигурации драйверов аудио. Теперь мне не надо об этом думать.

Во время звонка по Skype время iSSH-сессии истекло; сессия работала около 10 минут, пока я разговаривал. К счастью, я возобновил соединение в одно прикосновение, а благодаря GNU-screen возвратился к тому же месту, откуда начинал.

Часто случается, что пока устраняешь один баг, появляется другой, очевидно не связанный с первым. Я предоставляю быстрый отчет об ошибках – раньше я делал скриншоты на iPad и отправлял их по электронной почте нашей системе отслеживания, чтобы обойти невозможность присоединиться к Safari. Теперь я приспособился захватывать файлы журналов трассировки посредством командной строки приложения непосредственно на Linode. С целью отслеживания багов с последующим их решением мы используем RT-трэкер, благодаря perl-скрипту позволяющий взаимодействовать с ним из командной строки. Процесс происходит быстрее и легче, чем обычная загрузка через браузер; всего лишь одна команда с сообщением номера тикета и присоединением отчета, — и все готово.

Время ланча: облачное программирование всегда со мной

7

Время ланча! Я закрываю свой iPad и иду обедать. Все, над чем я работал, останется в том же виде, когда я вернусь; нет нужды волноваться о нарушении загрузок, ведь я работаю с Linode.

Во время обеда я беру свой iPhone и вновь соединяюсь с Linode – опять ошибка в конструкции на одном из наших офисных компьютеров. Клавиатуру iPhone использовать очень неудобно, но для набора rm -rf /tmp/build-2011-* вполне подходит. Пока жду десерта, я успеваю создать новую конструкцию.

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

Для проведения тестов понадобится около часа; я закрываю текстовую консоль iSSH и просматриваю новые изменения в таблице для предстоящей спецификации, сохраненную моими коллегами в Google Docs.

Google Docs, почему Вы так меня ненавидите?

Наверное, самой неблагодарной частью работы в облаке является использование основанной на облачных вычислениях замены MS Office на Google. В процессе работы часто теряется позиция курсора и большие текстовые блоки. Использование электронных таблиц – хороший вариант, но он все еще не может сравниться с настольной версией. Конечно, какие-либо приложения отсутствуют, а настольные версии просто сообщают об ошибках скрипта. Я даже подумывал о том, чтобы попытаться убедить своих коллег вернуться к работе с OpenOffice.

Наконец-то тесты завершены, готовы результаты. При помощи кабеля VGA я присоединяюсь к большому телеэкрану HD; текстовый редактор VIM на гигантском HD всякий раз заставляет меня улыбнуться.

В журналах вижу некоторые странности; я копирую и отправляю несколько отрывков коллеге, обсуждаю их в чате. Я вполне доволен работой функции «копировать-вставить», хотя наличие 3-х различных наборов буферов обмена (iPad, экран, VIM) и вправду время от времени приводит к беспорядку. Интересно, заметил ли кто-либо из моих коллег, что в течение прошлого месяца я использовал iPad вместо лэптопа?

На часах — 18:00. Пора отдохнуть. Несмотря на интенсивное использование в течение всего дня, у батареи моего iPad наблюдается в запасе возможность работать еще 15% времени. Я никогда не приношу на работу зарядное устройство, ведь мне оно еще ни разу не понадобилось. Вот оно – настоящее наслаждение свободой!

Вечер

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

Я начал этот эксперимент только потому, что многие люди еще не знают о возможностях, которые можно получить благодаря использованию iPad+Linode. Но рано или поздно, как мне кажется, все будут делать разработки только этим способом, и мне хотелось попробовать, можно ли получить желаемый эффект. Ранее я предполагал возможность неработоспособности некоторых функций и компонентов, но дни летели за днями, недели за неделями, и оказалось, что за весь месяц я ни разу не обращался к своему лэптопу.

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

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

Несмотря на это, я оставляю свой MacBook включенным, ведь он выполняет единственную регулярно требующуюся мне от этого устройства функцию – копирование DVD.

Автор: Марк О’Коннер, программист, блоггер.

Источник: yieldthought.com