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. Every 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 | |
HTTP/S Server | |
Database | |
Programming Language | |
Application Server | |
CSS Framework | |
JavaScript Framework | |
Blog content management | |
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.