D:\sideИнструментарий

Ruby 2.0+ (и Rails 4.0+)

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

Начал изучать в феврале 2014, работаю с ним в качестве основной работы. Ушёл достаточно далеко, чтобы найти некоторые его недостатки. Особенно впечатлён синтаксисом сборки запросов: как самого ActiveRecord, так и Arel.

parents = Parent.arel_table
Parent.where(
  Child.where(
    other_parent_id: nil,
    parent_id: parents[:id]
  ).exists.not
)
Singer.joins(:songs)
      .merge(@album.songs)
      .uniq
var target = instance_nearest(
               mouse_x,
               mouse_y,
               object_A_targetable
             );
with(target) { instance_destroy(); }
float luma = dot(
  col,
  vec4(0.3, 0.59, 0.11, 0.0)
);
col.rgb = vec3(luma);

GameMaker 6.1…Studio

Первый игровой движок, познакомился с ним на версии 6.1. Особенно крепко завис на нём после предложения разработать на нём квест. Это было уже на версии 7.1.

Этот квест был выпущен в марте 2011 под названием "G1Deon: Towards God". И после этого я серьёзно им не занимался. С выходом Studio всё не слишком изменилось. Я работал с GameMaker Studio на нескольких гейм-джемах, где он себя показал очень хорошо, но для серьёзных проектов я нашёл инструменты поинтереснее.

Studio стал площадкой для изучения шейдеров и GLSL. Я написал под него несколько несложных растровых эффектов.

С 2015 года с ним не работаю.

λ Clojure

Современный Lisp с соответствующим количеством скобок. Язык, который отталкивает большую часть разработчиков своим несколько странным синтаксисом, максимально близким к машинному представлению.

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

; 4Clojure, скалярное произведение
(comp (partial reduce +)
      (partial map *))
; 4Clojure, пересечение множеств
(comp set filter)
@:selfCall      // Фрагмент определений
@:overload(    //  HighlandJS под NodeJS
  function(   //   hxHighland
    generator:(Error->T->Void)->
              (Void->Void)->
              Void
  ):Void {}
)
public function new(data:Array<T>):Void;

hx Haxe (и HaxeFlixel)

Крайне занимательный последователь AS3, имеющий уникальный... кхм, компилятором это уже не назовёшь, хотя формально он называется "Haxe compiler": программа, транслирующая исходный код на haxe в код на одном из следующих языков: JavaScript, SWF (байткод, совместимый с Flash-плеером), ActionScript 3, байткод NekoVM, PHP, C++, Java, Python, Lua (неофициально). Впечатляющий список.

На практике язык используется как статически типизированная альтернатива более "динамичным" языкам, вроде PHP, JavaScript и Python; а также для сборки кросс-платформенных игровых движков, собирающихся на каждой платформе в нативный для них код, к примеру: в JavaScript для HTML5, в C++ и Objective-C++ для Android и iOS.

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

Jekyll

"Движок" этого сайта. Точнее, генератор страниц для него. Сайт из себя представляет просто набор статических страниц, серверная его часть занимается всего лишь раздачей файлов, поэтому собранный под него сайт можно захостить где угодно. Цена за это велика -- отсутствие обратной связи. Частично это устраняется сторонними сервисами.

Для комментариев я, к примеру, использую Disqus, а поисковая форма сверху -- нехитрая форма с адресом Google и приклеенным адресом сайта. Так что сайт может выглядеть продвинуто, но ничего сложного в нём нет. Исходный код опубликован, можете убедиться сами.

Среда разработки

Linux Mint XFCE

Это среда, дружелюбная к разработчику, построенная на самом используемом дистрибутиве в мире, но с меньшей тягой к новаторству. Для меня, как разработчика, важно, чтобы система была максимально совместима со моими (в т. ч. будущими) инструментами и была достаточно настраиваемой, чтобы ускорить чаще всего производимые действия.

Atom

Моё основное средство разработки: простой в обращении, гибкий интерфейсом и расширяемый редактор, который можно в произвольный момент превратить в IDE для произвольной технологии. Расширений много, и новые регулярно появляются. Одна беда – прожорлив малость.