that site (https://aol.ton618.org)

root

Alameda Online

Basic web app to do some useful things for Alameda denizens.

Notes

  • To load, ensure SBCL and Quicklisp are installed.
  • start rlwrap sbcl
  • (load "alameda-online.asd")
  • (ql:quickload "alameda-online")
  • (in-package :alameda-online)
  • (start-server)

To build, run sbcl --non-interactive --load build.lisp.

Great read: https://atomized.org/blog/2020/07/06/common-lisp-in-practice/ https://ashok-khanna.medium.com/an-introduction-to-lisp-packages-7a9ee352006e https://stevelosh.com/blog/2018/07/fun-with-macros-if-let/ https://learnxbyexample.com/lisp/signals/

Deployment

  1. Push changes up to Darcshub.
  2. On Obsd.am, setup cron job to check Darcshub every 10 minutes for updates. Make sure to publish the binary alongside the code.
  3. Hit an endpoint on the existing app to notify users of a service disruption in the next 10 minutes.
  4. Setup caddy. Ensure I can live reload the configuration. Bring the new code up alongside the old code, but don't route traffic to it yet.
  5. Add a write-lock to the old code.
  6. Remove the write-lock on the new code.
  7. Check health of new binary with write-lock disabled. If successful, update Caddy to switch the old code routing to the new code.
  8. Since the new code doesn't have the user downtime notice, no need to remove it manually.