About

Purpose

This website designed as an open science showcase for recent work from the Bedford Lab. We have a blog for news and smaller analyses, but also project pages that mirror ongoing research developments that take place on GitHub. This structure is meant to make sharing of results as frictionless as possible, with the idea of having a GitHub repo that contains everything of key importance to a project. Within this GitHub repo, README.md files or other Markdown files describe methods and results and such files get copied over to projects/, where we’ve attempted to streamline navigation. So, reading the basics of a project can be done from the site, but if someone wants to really dive in, all the source code, data files, etc… are available from GitHub.

Source code

All source code that’s necessary to construct the site is freely available on GitHub. All code is placed under the MIT license. You’re welcome to borrow / repurpose code to build your own site, but I would very much appreciate attribution and a link back to bedford.io from your about page.

Forks

Forks of the site have started appearing. It’s very gratifying to see this. Here’s the list that I know about:

Web stack

In migrating to Jekyll, I’ve tried to bring the site up to speed with current web standards. I thought I’d describe the web stack I arrived at.

Build

The site is built with Jekyll. This allows the site to be versioned on GitHub and, importantly, allows anyone with commit access to the GitHub repository to easily contribute. This makes it possible to have a shared lab blog that multiple people can manage.

Content is stored as simple Markdown files with a bit of YAML at the top. This keeps content mostly semantic and can be easily processed. An example post can be seen here. In addition to including blog posts, simple Markdown files are included for papers and people, in which case the YAML metadata is bit broader, indicating things like paper PDFs or Twitter handles.

I had wanted to make it possible to point the site at GitHub repos and display their contents in a nicely formatted way. These are projects, and in their case, there is no data on them in the site, except for a list of repo names. Project data is pulled in automatically by cloning the project repo and project metadata is gathered using Octokit to access the GitHub API via a preprocessing script. This allows project pages to display things like a list of contributors and recent commits.

Design

Site layout and design is built on top of Bootstrap. This gives a responsive grid to work with as well as a number of useful CSS components like code blocks and nav bars. On top of this I have included:

Deploy

Deployment is done to an Amazon S3 bucket, using s3-website. I’ve written a script to update and deploy the site to S3. I then have an Amazon CloudFront distribution set up to mirror the S3 files across Amazon’s network to improve download speeds. This solution appears faster and cheaper than using other hosting providers and is ideal for serving a static site.