Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

This is the source repository for the webpages.

You can see the Netlify previews here Netlify preview

Working with the repo to generate new content

The webpages are generated using the static site generator nikola ( To create a new post, first create a virtualenv with make venv_nikola/bin/nikola, then ./venv_nikola/bin/nikola new_post.

!! The content of public (with all helper directories, like js, css, ...) is not written by hand, please do not modify - it will be overwritten !!

After you make changes, you can do make build to regenerate the pages in public/ for local viewing, but do not commit these, they will be rebuilt and commited via a CI deploy step. You can also do make auto to start a server that will serve the pages, and rebuild them when any changes are made to the sources.

PRs previews will be generated with Netlify. After pushing a PR, a CI run will have a "Deploy preview ready!" run, clicking on the "details" link will show the newly-rendered site preview.


Comments to blog posts are generated via the utterances javascript plugin. The comments appear as issues in the repo. When viewing the site, a query is made to fetch the comments to the issue with that name. To comment, users must authorize the utterances app to post on their behalf using the GitHub OAuth flow. Alternatively, users can comment on the GitHub issue directly.

Historic posts (before the transition to github in March 2021) were imported with their comments, additional commenting is disabled.


Any changes to the main branch (including merging PRs) regenerates and pushes to the gh-pages branch, which is a copy of the public directory.

For historical reasons, and in order to allow us to change webpage hosting easily, the gh-pages branch is pulled into by a cron job on a psf-hosted instance, see

The people with access to the instance are the ones in with pypy-web access.