Как стать автором
Обновить
50
-2
Тимофей Казанцев @Levitanus

Пианист-оркестровщик-быдлокодер

Отправить сообщение

Эргономично, дёшево, сердито

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров16K

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

Главным образом, эта статья ‒ про то, как я уменьшил своё рабочее место с 5 м² до 3 м², избавился от мозоли на запястье, боли в спине и шее, трудностей с набором текстов на русском, английском и немецком; и потратил на это 4 дня и ≈150 €! Но также мне хочется выразить мысль, что эргономика ‒ это не идеальный стол, кресло или клавиатура. Это, скорее, организация пространства так, чтобы в нём было комфортно во всех сценариях его использования.

Что он поменял?
Всего голосов 54: ↑53 и ↓1+52
Комментарии45

От крышки рояля до фреймворка на rust: как системное программирование помогает творческой реализации

Время на прочтение16 мин
Количество просмотров5.6K

Здравствуйте, меня зовут Тимофей, и я алкоголик программирую, чтобы писать музыку. Судя по всему, недуг мой прогрессирует:

- Пять лет назад, когда я впервые услышал про LilyPond — язык программирования, на котором можно писать партитуры в текстовом редакторе — я посмеялся над гиком, что это придумал, и прошёл дальше.
- Два года назад я прочитал код партитуры из примеров — удивился, насколько логично и музыкально он выглядит, подивился задротству автора, и пошёл набирать ноты в MuseScore.
- В этом году я пишу экспортёр MIDI из Reaper в исходники LilyPond, а сегодня зарелизил rea-rs: фреймворк для написания расширений для Reaper на rust.

И, несмотря на то, что в этом альфа-релизе >16 300 строк, я всё ещё считаю, что занимаюсь «бытовым программированием». Имею в виду что-то вроде готовки: можно, конечно, сходить в ресторан, когда хочется чего-то эдакого, но в ресторан каждый день не набегаешься. А то, что погреб на даче потихоньку превращается в винодельню — так это побочный эффект. Зато всё своё, домашнее, натуральное.

В последнее время, подобные мысли я проговаривал не как здоровый сарказм, а как симптомы болезни: мол, «это не хумус, видео не передаёт запах»! Но, намедни, моя музыкальная школа подогнала мне мак с Finale и полным комплектом Adobe на борту, чтобы совместно работать над сборником рождественских песен. И… Holly crap, I was damn right! Но расскажу по порядку, как я дошёл до жизни такой.

К рассказу
Всего голосов 42: ↑42 и ↓0+42
Комментарии6

Rust: параметризуем мутабельность через маркеры и ассоциированные типы

Время на прочтение7 мин
Количество просмотров4.8K

КПДВ: borrow checker не даёт стрелять в ногу при работе с FFI


Borrow-checker — отличный секюрити, который очень эффективен, если мы находимся в безопасном Rust. Его поведение отлично описано в RustBook, и, по крайней мере, я почти никогда не сталкиваюсь с придирками, которым я бы не был благодарен.


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


На английском, с примерами — на GitHub pages.


Исходник тестов — на GitHub.

Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии21

Waking up of the sleeping institution: how we taking off training-wheels from Python in REAPER

Время на прочтение7 мин
Количество просмотров1.1K

Image for taking attention


About a week I wonder around the idea of this article, mainly, because of missing the content here and tidiness of the coronavirus-themes. But, when robotic-harvester, hacking zip with bitcoins and other cool articles released — I decided not to publish crude material.


However, unexpectedly today the maintainer of this review hero showed up from the lockdown and, several hours ago reapy v0.6.0 has been published on PyPi. Under the cut — the last change log, which contains (to my pleasure) no line where I have not been involved one way, or another.


Finally: why reapy is needed and how Python works inside REAPER.

Read more →
Всего голосов 2: ↑1 и ↓10
Комментарии0

Пробуждение спящего института: как мы убираем ходунки у Python в REAPER

Время на прочтение6 мин
Количество просмотров3.6K

КПДВ


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


Однако, сегодня нежданно вырвался из локдауна ментейнер героя сегодняшнего обзора, и, буквально несколько часов назад в PyPi ушел reapy v0.6.0: пакет, который позволяет полноценно использовать Python для написания расширений для Reaper DAW.


Итак: зачем нужен reapy, и что происходит с Python в REAPER.

Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии5

Средний класс: почему зарабатывают современные музыканты

Время на прочтение10 мин
Количество просмотров23K


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


  • это не статья, это пост. А более конкретно — реакция на серию статей "Блеск и Нищета"
  • я сознательно не буду брать случаи "Блеска", потому что музыканты-миллионеры, как и многие другие суперзвезды, попадают в несколько другую схему. Тем не менее, в качестве примера раскрутки человека в творческой сфере "с нуля на непаханном поле" я бы хотел привести интервью Покраса Лампаса https://youtu.be/APayqoDDYMA
  • Пару раз сталкивался, в т.ч. на хабре, с достаточно радикальным мнением, что разбор вопроса в метафорах и аналогиях — моветон. Тем не менее мне это не кажется чем-то из ряда вон, и я считаю аналогии применимыми во многих случаях, в т.ч. и в этом.
  • Мне откровенно лениво делать картинки, тем более, что писать я и не планировал. Простите.

Итак, почему какие-то музыканты, которых навалом в VK, YT и на треккерах зарабатывают? Должны ли они зарабатывать вообще, и как выжить в суровом пиратском мире?
Для начала надо понять, кто же это такие, "современные музыканты": чем они отличаются от "музыкантов несовременных", и чем они отличаются от "немузыкантов".

Читать дальше →
Всего голосов 68: ↑62 и ↓6+56
Комментарии37

Несколько подводных камней статической типизации в Python

Время на прочтение5 мин
Количество просмотров38K


Думаю, мы все потихоньку уже привыкаем, что у Python есть аннотации типов: их завезли два релиза назад (3.5) в аннотации функций и методов (PEP 484), и в прошлом релизе (3.6) к переменным (PEP 526).


Так как оба этих PEP были вдохновлены MyPy, расскажу, какие житейские радости и когнитивные диссонансы подстерегали меня при использовании этого статического анализатора, равно как и системы типизации в целом.


Disclamer: я не поднимаю вопрос о необходимости или вредности статической типизациии в Python. Просто рассказываю о подводных камнях, на которые натолкнулся в процессе работы в статически-типизированном контексте.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии13

Не создавайте собственный ЯП (DSL) для расширения функционала приложения

Время на прочтение6 мин
Количество просмотров15K

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


КПДВ

Читать дальше →
Всего голосов 48: ↑41 и ↓7+34
Комментарии56

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность