Влияние психологии на архитектуру программ
Поиск причин превращения хорошей архитектуры в плохую: эмерджентность, технические противоречия, сложность, компенсация энтропии. Когнитивные искажения в принятии решений. Влияние возрастной, дифференциальной психологии, различных психических явлений - ощущений, восприятия, внимания, представления, воображения, мышления, памяти разработчика. Психологические и социальные эффекты в группах.
Первое знакомство с ESP32
Интерес к электронике, проблемы её сочетания с другими IT-навыками, выбор электронных платформ по уровням абстракций. Охранная сигнализация на ESP32: концепт, требования, датчики. HAZOP-анализ отказов блока питания и датчиков. ETA-анализ рисков в работе ESP-платы. Сложности выбора IoT-платы для будущих экспериментов.
Увлекательная геоинформатика с GeoTools
Post image
Java библиотека GeoTools, использование с JavaFX. Модель пространственного объекта, его свойства, координаты. Векторная координатная сетка, Open Street Map карты, поддержка разных форматов. Гео-поиск статей с Википедии, маркеры на карте, расчёт расстояний и площади, интеграция Groovy для ECQL-фильтра. 3D глобус.
Эксперимент с GStreamer и GtkD
Post image
Библиотека GStreamer, риски использования, проект аудиоплеера, поиск концепта по принципу Парето, SIPOC. Взаимодействие интерфейса и музыки, упрощение дизайна готовой темой Dracula, конкуренция режимов файлового менеджера и плейлиста. Плагины визуализации, спектрограмм, уровней громкости, эквалайзера. Получение информации о тэгах, поддержка MPRIS, воспроизведение видео.
Текстовый редактор на основе GtkSourceView
Post image
Библиотека GtkSourceView и её возможности, GtkD-биндинги. Выбор конкурентов, обоснование системного языка и оценка рисков проекта по FURPS, нефункциональные и функциональные требования. Место редактора в конкурентной нише, общий концепт программы и вывод функционала по вариантам использования, список возможностей по приоритету MoSCoW, некоторые нюансы реализации.
Эксперимент с Dart №2, но вместо Flutter - GTK
Post image
GTK как замена Flutter в десктопном Linux-приложении, недостатки и преимущества решения. Библиотеки ffi для создания биндингов, минимум необходимого api, проблематика обработки событий и интеграции GTK в event-loop Dart-а, D-Bus для отслеживания сети.
Маркетинговый анализ JavaFX проекта
SWOT-анализ JavaFX тулкита, сильные и слабые стороны в контексте FURPS: функционал, юзабилити, надежность, производительность, поддержка. Комбинирование с PEST-анализом для оценки внешних возможностей и угроз. Более полезный Анализ пяти сил Портера, разбор различных конкурентов и конкурентных стратегий.
Интеграция десктопного Flutter в CLI-приложение
Примеры кода
Post image
Сложности выбора стека для мобильной разработки, эксперимент с Flutter и парсером картинок для Reddit под Linux. Архитектурные поправки для Dart: асинхронность, исключения, null safety. Особенности Flutter: рефлексия, десктоп, производительность, DSL-вью и аналогия с Groovy SwingBuilder. Обмен событиями между cli-контроллером и Flutter через два канала, нюансы интеграции в иерархию классов.
DSL на русском языке в Groovy
Примеры кода
Post image
Выбор Groovy и библиотек для Domain specific language (DSL) на русском. Особенности Closure, стратегии делегирования, command chain, иерархия делегатов с аннотацией @Delegate. Русскоязычная альтернатива def через Binding, AST-трансформации и метки. Разница между методами и свойствами, включение скриптов друг в друга, поиск аналога assert. Локализация через метапрограммирование.
RSS-агрегатор и эксперименты с gtkd
Post image
Выбор тулкита для пет-проекта десктопного RSS-агрегатора, особенности gtkd, запуск под Windows и Wine. Архитектура приложения, поправки на возможные изменения. Особенности D, влияющие на архитектуру. Библиотеки и полезности для работы с RSS-лентами. Проблемы gtkd и gtk-трея.