Hello World
Welcome to my blog. I'll be writing about some tech ideas here, and messing around with simple web design.
I'm using vanilla HTML + CSS + Javascript for the site, but I'm hoping to dive into a frontend framework and see how they feel (hoping to try T3 Stack and InertiaJS).
The backend is a Flask app running on Google AppEngine, which uses a markdown extension to render posts to HTML.
Since the site is so simple, I thought it might be cool to build a cloud-agnostic deploy script. Something like the black magic Jart Actually Portable Executable, but with a website instead of an .exe, and cross-cloud instead of cross-platform. It could do DNS, HTTPS, everything to run a site on the platform of your choice, all with the click of a button.
In an ideal world there would be some open protocol for managing cloud resources, and this would all be a lot simpler. But sadly things like OCCI never took off, and AFAIK every cloud does things a little differently.
There are tools like Terraform that do a good job bridging this gap and providing an abstraction layer at the infrastructure level. Terraform provides a single uniform language in which you can define your infrastructure on any cloud provider, but you still usually end up with separate Terraform setups for every provider, and there's a lot of complexity in the Terraform abstraction layer itself.
Another simpler option is to run a service that hosts apps on a subdomain. Hashicorp's Waypoint looks like it does something similar, and so does fly.io which I hear good things about. I'll be try to check those out at some point to see what feels right.
For now though, I'm sticking with AppEngine. The workflow is mercifully simple:
Run locally:
source ./venv/bin/activate
pip3 install -r requirements.txt
export FLASK_APP=main.py
export FLASK_DEBUG=1
flask run
Deploy to prod:
source ./venv/bin/activate
gcloud app
As cool as a magic deployer script sounds, right now I just want shit to work.