The repository for my website
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Austin Gill b550275e5e Add player statistics from tournament 1 month ago Document things that does 1 month ago Add static page to redirect to GitHub blog. 1 year ago Add player statistics from tournament 1 month ago
nginx Add player statistics from tournament 1 month ago Fix broken research site. 5 months ago
shared_content Update VPN docs 1 month ago
.gitignore ignore backup files 6 months ago
LICENSE Initial commit 1 year ago Add TODOs for this summer 2 months ago Add Nginx configs for other subdomains. 1 year ago
requirements.txt update requirements 1 month ago Add script to generate Django secret 1 year ago Add django project for minecraft subdomain 1 year ago


Repository for and all subdomains, as well as any shared content and Nginx configuration.

Repository Layout

  • - Django project for
  • - Django project for
  • shared_content/ - Static content and configuration shared across all Django projects. Things like CSS, headers, footers, etc. The script generates the necessary symlinks for each project to find this chared content.
  • nginx/ - Nginx and uWSGI configurations for each subdomain.
  • - Script to create symlinks for shared static content and Nginx configurations as above.
  • - Deploys Nginx and uWSGI configurations to where they need to go.


  • Consider switching to Flask before doing renovation?
    • Django is too big for what I need. I don’t need the kitchen, much less the kitchen sink.
    • Should definitely be done before renovation…
  • What about large binary assets like PDFs, video, music, etc?
  • Find a better way to serve assets. Maybe even a Nginx server?
    • I’m frustrated with the current URLs
    • I’m frustrated by running ./ collectstatic and how it works.
  • Maybe make detect if a config is already there and make a backup?
  • Put sockets in /run/. Will require googling?
  • Add uWSGI master process to Emperor?
  • Add development Nginx configs that don’t require SSL. Other option: Use ./ runserver
  • Collect scripts into one.
  • Figure out how to easily set up a development environment
  • Use bootstrap instead of home-grown CSS
  • Use markdown or html for pages?
  • Move content from wiki to website.
    • Find the right site layout for this.
    • Move to notes repository instead?
  • Redirect to and make sure every link works.
    • Add pagination…
    • Add MathJax…
    • Remove Google Analytics in favor of writing a script to parse server logs. Could be an interesting data analytics project.
  • Update ubuntu configuration again
    • Change layout to be a documented form of my bashrc et al?
    • Two part documentation?
    • How to install and configure
    • The contents of my dotfiles

Site Structure

  • - about page with links to everything in the nav bar.
  • - ubuntu configuration docs, anything worth saving from wiki
  • - reproduce every post from without using Jekyll.
  • - The same kind of stuff. Need to restructure to make each project get its own page.

Deploying with Nginx and uWSGI

  1. Run sudo ./ to create a Django secret to /etc/django/secret.txt. Only needs to be ran once.
  2. Run ./
  3. In each subdomain, run ./ collectstatic.
  4. Then deploy the Nginx and uWSGI configurations by running the script.

    sudo ./ --clean
    sudo ./ --enable --startup
    sudo systemctl daemon-reload
    sudo service nginx restart
    sudo service emperor start
    less /tmp/emperor.log
    less /var/log/nginx/error.log

Deploying with Django using Development settings

Use the Django to run a test server with the SSL and other settings disabled.

git checkout master
git pull --rebase
git checkout -b dev/<name>
git apply shared_content/Add-development-settings.patch
git commit -am "NOMERGE: Add development settings."

Then run

# Write the /etc/django/secret.txt file.
sudo ./
# Set up the necessary symlinks between shared content and each site.
# Run the site being worked on.
cd <site name>
./ runserver

and make the desired changes. Once development is done, interactively rebase onto master, dropping the NOMERGE commit.

git rebase --interactive master
# Drop the NOMERGE commit
git checkout master
git merge dev/<name>


  • django-pygmentify
  • django
  • uwsgi