Skip to content
cassiatorczon edited this page Aug 29, 2024 · 11 revisions

This page details information necessary to build, modify, and redeploy the website.

Dependencies

  • The stack build tool for Haskell
  • bibtex2html package
  • make

Build instructions

Because the site is deployed as static files, building is a 2-step process. First we build the executable (simply called site) and then we run site to build the website from the source files.

The compiler should be able to build with just

stack build

This will install all necessary Haskell libraries typically compiling them from scratch. It will also install a GHC binary. This process should only need to happen once. Be prepared to wait.

When the site is built we can run

stack exec site -- build

to build the site, which outputs the static html in _site/. With

stack exec site -- watch 

we can launch a live preview server at http://localhost:8000. The preview server will watch the source files and recompile on-the-fly.

Sometimes it is necessary to recompile everything from scratch. In this case run

stack exec site -- rebuild

Deploy instructions

After building the site per the instructions above, you can deploy the site with

stack exec site deploy

This presumes that you have access to the plclub account on Eniac (i.e., ssh plclub@eniac should work). This process will

1) Backup the existing website as `html-YYYY-MM-DD.tar`
2) Synchronize your local folder `_site/` with the appropriate remote directory

It is conceivable that the remote file permissions can become incorrect when deploying. In this case, you will need to run the two commands

find ~/html -type f -exec chmod a+r {} +
find ~/html -type d -exec chmod a+rx {} +

on the remote machine (such as by saving them as "fix.sh" and running ssh plclub@eniac ./fix.sh)

Adding information to the site

Adding a new PL Club meeting

Look under meetings

Adding or updating a person

Look under people. Active members should have their name, website if applicable (include full link with URL scheme), tags (e.g. student, postdoc, faculty), email, and a headshot filename. The headshot itself should go in img/people.

Alumni should have their name, degree they received here, year of graduation, where they are now, website if applicable, and the alum tag. Their email and headshot fields should be removed, and their headshot itself should be removed from img/people. If an alumni website is listed, it should ideally be a non-institutional one to avoid broken links.

Recent publications

The recent publications is built by running a Makefile in a temporary directory and then parsing the results with Pandoc. This is hacky but works surprisingly well.

Updating the site

At least once a year, the following should be checked and updated if necessary:

  • list of current members and their information
  • newly graduated alumni and their relevant information.
  • remove any dead links in the alumni section
  • remove any dead links or defunct references under "Keep in Touch" and "Related Groups at Penn"
  • the names of current maintainers in the README and in this wiki
  • the names of PLClub organizers in the PLClub tab

The following should be updated as applicable:

  • Publications
  • Blog
  • PLClub time and location under "PLClub Discussion Group"
  • course numbers and links under "Courses"