Technology Stack

Dec 4, 2022

Today I would like to briefly discuss technologies powering the Awesome Goat server.

My Guiding Principles

There are plenty of design decisions one has to make building stuff from scratch. I found that I intuitively adhere to this single one: The Longevity. I understand that many side projects die before the dream of the founders materializes. And therefore Survival and longevity should be the most important consideration for all the decisions made. One example is architecture. It is just a really simple LAMP-like stack running on a single virtual machine hosted in a public cloud. It is a proven solution, and at least 30 years old design.

The second principle is to have The most Fun. That’s why I have chosen Ruby on Rails as my stack. Any day I can tinker with ruby in my emacs is the day worth living. And this fun I may ultimately help the project survive longer.

Minimalism is the last principle I shall discuss. I no longer operate on the premise that I need to address all the eventualities up front. No, it is good enough to resolve one issue at the time. This also leads to having only a single javascript library in the stack. Minimalism also helps performance and simplifies the user interface a lot.

Components & Credits

From the bottom of my heart I would like to thank the following projects.

Operating System Arch Linux
HTTP/S Server nginx
Database postgresql
Programming Language ruby-lang
Application Server Rail
CSS Framework Bulma CSS
JavaScript Framework Stimulus
Blog content management Jekyll
Backend Queue GoodJob
Frontend pipeline none / Rails Assets
In memory cache none
Configuration management none / bunch of reproducible home grown scripts
Deployment management none / a script

My dream is to support development of these opensource projects financially, when Awesome Goat turns profitable. In the meantime, I have over 10.000 commits in various open source projects.