- Supercontest
- Split the uwsgi ini file into proper sections and moved all configuration there instead of as clargs in docker-compose.
- Process
- docker network create nginx-proxy
- docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro –name nginx-proxy –net nginx-proxy jwilder/nginx-proxy
- Then start the app containers (usually `make build-start-prod`).
- letsencrypt-nginx-proxy-companion has some useful utilities.
- docker exec nginx-letsencrypt /app/force_renew
- docker exec nginx-letsencrypt /app/cert_status
- Created the bmahlstedt.com github repo. Added a tiny app with tiny landing page.
- Created the infra github repo. Moved the command line process above to a docker-compose and added a readme. Now, you simply docker-compose up there (after creating the nginx-proxy network) just once, and then can create as many virtual hosts as you’d like.
- nginx-proxy is pretty dope. It uses a dummy dhparam while a new one is generated in the background (2048 bits can take a while), then it reloads nginx automatically when done.
- Renamed services (like app_prod) to use dashes instead of underscores (to app-prod).
- Confirmed that app-dev still works.
- After a docker system prune, you need to recreate the network. The volumes will stay by default.
- http forwards to https and www forwards to non-www (just southbaysupercontest.com and bmahlstedt.com).
- Got ssl working with letsencrypt-nginx-proxy-companion. The setup is pretty clean now.
- Updated documentation.
- Closed #47. Everything is done now. There are two containers (nginx-proxy and letsencrypt) that control traffic (and certify) all other virtual host containers on that machine. Right now that includes two apps, southbaysupercontest.com and bmahlstedt.com.
- DHPARAM = Diffie Hellman parameters, used for secret key validation.
- Buyback BS.
- I made my election and submitted the transmittal form separately to SpaceX. This is a dumb requirement in the first place, because you’re already making a digital confirmation.
- I played with my election after, knowing that I wasn’t going to change it. I just wanted to observe. I intentionally did not submit the transmittal forms for these.
- Because the transmitted number and my solium number did not match, Solium generated incorrect final documents. SpaceX can fix this, but they need my power of attorney since it’s technically changing a number after the close date. Ridiculous and inconvenient (requires notary).
- Made an appointment for BOA tomorrow.
- Dad is going in for surgery tomorrow, called for good luck.
- Placed Amazon Fresh order for Lightning in a Bottle – $140. Soylent, protein bars, and almost every non-refrigerated fruit & vegetable you can imagine!
- Tutorials
- Express
- Process
- npm init (creates package.json)
- npm install express (adds it to node_modules/ and the deps in package.json)
- app.js with require, app instantiation, route addition, listen on port.
- node app.js
- This is identical to what I’m used to. Remember, node is the javascript runtime outside the browser (python). Express is the web framework (flask).
- Autoreload behavior can be enabled by `sudo npm install nodemon -g` then `nodemon app.js` instead of `node app.js`.
- Pug (and old-school jade) is the template engine for node, just like jinja is for python. You can render these templates and insert variables and other functionality.
- JS, even with its exponential growth, is still not as full-featured of an environment for enterprise app development as something like java/python/c#.
- Typescript goes a little further than JS because it has static typing.
- OvernightJS is a utility lib for apps build with typescript and express. Gives some nice classes and controllers and decorators.
- Updated resume. Cleaned the skill organization at the bottom. Did a little on linked/github as well.