То и дело в комментариях возникает вопрос: в какой программе автор генерирует картинки, иллюстрирующие статьи? Я решил поделиться своим подходом к организации рабочего процесса, помогающим мне писать книги, статьи и получать при этом удовольствие.
* * *
Когда я преподавал в школе математику, то своим ученикам я рано или поздно задавал вопрос: зачем вы в школе учите родную речь? Сначала идут стандартные ответы:
- Чтобы писать без ошибок.
- Чтобы знать, как говорить и читать.
- Чтобы не нахватать двоек.
- Чтобы развивать мозги.
Наводящие вопросы (говорить мы и так умеем, а зачем писать без ошибок, если и так всё понятно?) постепенно приводят ребят к более глубокому ответу:
Чтобы быть понятым другими и понимать других.
Этот вопрос не только грамотности, но и точности, выразительности, наконец, привлекательности речи, не важно, письменной или устной. А поскольку мы глубоко социальные существа, вопрос понимания чрезвычайно важен для каждого из нас.
Взаимопонимание тоебуется и в "общении" с неживым миром: реальным физическим, или моделируемым мысленно, либо с помощью ЭВМ. Тут тоже важно, чтобы система нас "слушалась" и правильно понимала, а мы, в свою очередь, понимали что она нам "говорит" или показывает. Так встаёт вопрос о языке общения с миром, как вербальном, так и невербальном.
Во всём, что касается работы с машинами, я предпочитаю явное выражение своих мыслей в виде текста, понятного как мне, так и машине.
Операционная система
Уже 20 лет, как я покинул общепринятый мир MS Windows и обитаю в операционных системах семейства Linux. За это время я перебрал много вариантов. Дольше всего пользовался Arch Linux, а семь лет назад окончательно перебрался на NixOS, как на наиболее подходящую систему для моего образа мысли и работы.
Она привлекла меня, тем, что практически вся конфигурация системы делается с помощью менеджера пакетов Nix, программируемого на чистом декларативном функциональном языке программирования. Это означает, что то какой будет моя система однозначно описывается программой, понятной, как мне, так и машине. Во-первых, благодаря этому на любом компьютере я могу получить точную копию своей рабочей среды. А если я нечаянно налажаю с конфигурацией или неудачно что-нибудь обновлю (что среди линуксоводов случается), всегда могу попасть в то прошлое, в котором система работает как часы. И это не преувеличение: различные поколения моей системы это всего-лишь разные версии конфигурационной программы, так что хранить их на всякий случай не сильно накладно.
Язык nix строго типизированный, компилируемый и декларативный. Поэтому противоречивую нерабочую конфигурацию системы, не пропустит компилятор. За что ему большое спасибо!
Рабочий ноутбук, надо сказать, у меня тоже особый, специально произведённый для Linux, так что всё, что надо внутри него радостно жужжит и летает.
Среда рабочего стола и оконный менеджер
Нечаянно забредшему в мой компьютер человеку, он покажется нерабочим. Пустой рабочий стол с симпатичной картинкой, никаких иконок, никаких меню. Мышка есть, но не нужна.
Тем, что я вижу на экране управляет тайлинговый менеджер Xmonad и шустрый Xfce. Они помогают мне располагать окна, экономя рабочее пространство, а я явно "говорю" им чего хочу, с клавиатуры. При таком подходе, переключение между одновременно открытыми 10-20 окнами приложений в 10 рабочих столах происходит мгновенно и "спинным мозгом".
Редактор и среда разработки
Пробовал VSCode, Atom, vim, но всегда, рано или поздно, я обнаруживал себя с растопыренными пальцами в Emacs.
Языки программирования
Я не зарабатываю программированием. Я педагог, руководитель музея, вулканолог, писатель и популяризатор науки. Для меня, программирование — язык общения с компьютером и с математикой, поэтому мои языки очень математичны: Julia, Haskell, LISP, Wolfram, Maxima, LaTeX.
Кроме Julia, они декларативны, странноваты и все очень мне нравятся уже много-много лет.
Haskell стоит особняком. Я его очень люблю, неплохо знаю и даже написал для репозитория hackage пару библиотек. Он мне нужен, чтобы в чëм-то глубоко разобраться. Наряду с LISP это самый выразительный язык из тех, что я знаю. С его помощью я объясняю новые для меня концепции самому глупому, но чрезвычайно старательному ученику — машине. И если мне это удаётся, то я понимаю, что разобрался с темой достаточно хорошо. А современные подходы к тестированию и верификации программ типа QuickCheck позволяют проверять корректность моих объяснений.
При написании статей для Дзена я пользуюсь самодельной связкой LaTeX+zsh+ghostscript, которая позволяет написав формулу в ТеX через секунду получить её в виде картинки в формате png, нужного размера, пригодного для вставки в Дзен. Анимированные гифки тоже делаются связками между разными программами, не требующими визуального управления.
В общем, всё что можно, делается через явно написанный текст. А мышка нужна только если что-то надо подправить в Inkscape. Так я написал диссертацию, учебник и книгу, а сейчас делюсь с вами тем, что знаю на Дзене и Хабре.