solovyov.net

Знаєте думку, що кожен програміст повинен написати свій власний блог-двіжок? В мене, як у сертифікованого CNO (Chief NIH Officer), це спрацювало просто perfect 5/7.

Byteflow

Років 15 тому, коли я почав у вільний від роботи та універу час колупати Джангу, я раптово усвідомив, що треба терміново замінити свій вордпрес із його гнусним пхп на щось із божественним пайтоном всередині! Виявилося, що рушіїв на пайтоні, а ще на джанзі — яка тоді була прям екстра-свіжа, ще року з моменту релізу не виповнилося — особливо й нема.

Ну там же ж нічо складного нема, тому я швиденько сів, придумав рушію назву Byteflow, і швиденько сів його писати. Воно спочатку ледве живе було, а потім я влаштувався працювати джанго-програмістом і байтфлоу дуже добре слугував як місце для експериментів та навчання, які потім можна було в робочий проєкт переносити. :) Навколо нього навіть зібралася невеличка тусовка (у джаббер-конфі), і це напевно було перше, що дало мені якусь впізнаваність у пайтон-ком’юніті. Було дуже приємно кілька разів на конфах почути, що люди розбиралися у джанзі, читаючи код Byteflow. 😊

Сорси не зберіг, нажаль. :(

Cyrax

За пару років воно мені набридло, а особливо — набирати пости в адмінці джанги. 😁 Плюс я надивився на Jekyll пана Моджомбо, і вирішив, що писати пости у редакторі, а потім їх один раз відрендерити — це супер, але у джекіла все якось цвяхами жоско прибито і це не тру взагалі. Тому я написав убер-екстенсібл генератор на пайтоні під назвою Cyrax (бо це мій улюблений персонаж у морталі, всіх поб’є, авжеж) — 2009 рік на дворі, щоби перспективу навести — і користувався ним кілька років.

І він до недавнього моменту був двіжком для Open Source Game Clones, доки мені не захотілося там зовсім хитро все розвернути і я просто написав кастомний скрипт на пайтоні.

Gostatic

Але у сайракса була трабла — це ж пайтон, а на дворі ще диски крутяться. Тобто в ноуті мене крутяться, авжеж, все одно — ноут із SSD я собі ще не купив на цей момент. Тобто ця пайтон запускається стільки, скільки у мене нема терпіння — а ще потім там якась логіка, об’єкти бігають (все ж серйозно), час витрачають. Тож за 3 роки по тому я всівся писати двіжок на Go, щоби воно швидко все робило. Я прям серйозно до питання швидкодії, навчив його ре-рендерити тільки ті файли, які змінилися, плюс залежні від них.

Вочевидь розширяємості прямо кодом, як із пайтоном, зробити неможливо, але й прибивати цвяхами “оце блог-пости, а оце — окремі файли” (як джекіл та більшість інших) мені теж не хотілося. Тому я придумав make-подібний синтаксис: матчиш файли, кажеш від чого вони залежать, і правилами описуєш, що з тими файлами може відбуватися. Вийшло норм, а зі стеженням за файлами і гарячою перезагрузкою відчуття взагалі майже як live preview. :-)

Мож якби трохи займався маркетингом — зробив би сайт з нормальними доками і дизайном, трохи двіжував — воно було б популярніше, бо Hugo з’явився мало не на рік пізніше. Там правда в авторах більш відомі чуваки, тому хз, і взагалі історія не любить оцих “а може”. 😁

А ще по результатам пари рефакторингів я написав пост про свою любов до Go. З однієї сторони — трошки дивно, що я досі сапорчу апку, написану на мові, яка мені не дуже подобається. З іншого - вона добре для мене працює і вже написана, і тому якось мотивації знайти часу для переписування щось не виходить. Worse is better, класіка. :)

Якщо вам стало цікаво: github.com/piranha/gostatic.

(@ tg)