2015-04-27

Про Mac и философию системы

Год назад, в связи со сменой работы, срочно понадобилось мобильное рабочее место. Я долго присматривался к Dell Sputnik - но сами делловцы почему-то похоронили проект. Других вариантов ноутбуков с нормальным железом в доступности не было - пришлось раскошеливаться на прошку. Зря сэкономил на памяти конечно - нужно было брать 16 GB.

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

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

Сейчас совершенно другая крайность: вообще ничего не трогать, если это не мешает работать и работать до тех пор, пока система полностью не деградирует. Еще при переезде на убунту пришло понимание, что можно просто не ковырять стопицот настроек меняющие порядок кнопок в менюшке окна, а работать - IDEA везде одинаковая (с оговорками) ZSH с Midnight Commander тоже, браузеры одни и те же, остальное - мелочи, на которые можно не обращать внимание. Достаточно просто принять философию системы и не пытаться сделать из одной системы другую, более привычную или идеально удобную.

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

Продали мне ноут без рутового пароля, пришлось идти к другу с широким интернетом, чтобы загрузчик выкачал образ и переставил систему. Был жесткий диск, сделал из него тайм-машину, куда раз в неделю по расписанию делаю бекап - за год потратил примерно 700 GB. Один раз восстанавливался после того как что-то очень сильно сломалось. Восстановил почти полностью - остались таки какие-то странные вещи, потом перестал замечать или они пропали. Для сравнения - на винде я образ восстановить так и не смог, на убунте руками восстановил систему до загружаемого состояния потратив день. MacOS восстановилась из бекапа минут за 40.

Очень интересно что еще с переездом на линукс и джаву, полностью сменилась экосистема - куда ни глянь, есть инструкции под линукс, почти такая же для маков и лютые танцы с бубном чтобы запустить это под виндой. По обычному софту не хватает каких-то мелких вещей типа печати выделенного фрагмента, при этом можно докупить того что не хватает за какие-нибудь $19.99. Родной офисный пакет мне сильно напомнил Lotus Symphony - освоить я его так и не смог, пришлось поставить Libre Office по крайней мере он не сильно портит офисные документы. Steam работает как влитой, игори есть, хотя не все. Такого чтобы чего-то не хватало вроде нет.

Итог: великолепное железо, для линуксоидов переезд будет практически незаметным: вместо apt-get будет brew, ну и конфиги будут немного в других местах лежать. В остальном это просто работает и можно говолову вообще не напрягать.

Domain Specific Language

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

Зачем нужен DSL? - ... two main ones: improving productivity for developers and improving communication with domain experts. A well- chosen DSL can make it easier to understand a complicated block of code, thus improving the productivity of those working with it. It can also make it easier to communicate with domain experts, by providing a common text that acts as both executable software and a description that domain experts can read to understand how their ideas are represented in a system. This communication with domain experts is a benefit more difficult to achieve, but the resulting gain is much broader because it helps unclog one of the worst bottlenecks in software development—the communication between programmers and their customers.

Главная идея: разделение на Internal и External DSL, необходимость для DSL Semantic Model, которая строится поверх Domain Model. Картинка которая объясняяет необходимость в DSL: даже скомпилированный код нуждается в движущихся частях, которые и обеспечиваются DSL. Здесь же корень стремлений вынести бизнес-логику в СУБД (результат немного предсказуем).

Идеальный вариант языки вида Ruby/Groovy, которые содержат богатые возможности для написания DSL. В любом случае, DSL очень просто можно реализовать практически где угодно, если архитектура приложения будет достаточно продумана: разделение на статическое API и движущиеся части в виде конфигов.

2015-04-25

Сноубординг сезона 14-15

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

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

2015-04-09

Обратная селекция в университетах

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