├── blog ├── content │ ├── extras │ │ └── favicon.ico │ ├── pages │ │ ├── hosts.md │ │ ├── hosts │ │ │ ├── uwescience.md │ │ │ └── bids.md │ │ ├── about.md │ │ ├── hosting.md │ │ ├── participate.md │ │ └── resources.md │ ├── images │ │ └── logo.svg │ └── why_a_docathon.rst ├── themes │ └── theme │ │ ├── static │ │ └── css │ │ │ ├── print.css │ │ │ ├── custom.css │ │ │ ├── pygments.css │ │ │ └── screen.css │ │ └── templates │ │ ├── tags.html │ │ ├── translations.html │ │ ├── author.html │ │ ├── tag.html │ │ ├── page.html │ │ ├── category.html │ │ ├── article.html │ │ ├── analytics.html │ │ ├── index.html │ │ ├── disqus.html │ │ ├── archives.html │ │ ├── docathon.html │ │ ├── article_stub.html │ │ ├── pagination.html │ │ └── base.html ├── publishconf.py ├── pelicanconf.py ├── develop_server.sh ├── fabfile.py └── Makefile ├── .gitmodules ├── .travis.yml ├── src ├── data │ ├── Schedule - Sheet1.csv │ └── bids.md └── generate_table.ipynb ├── .gitignore ├── README.md └── github_deploy_key.enc /blog/content/extras/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jakevdp/docathon/master/blog/content/extras/favicon.ico -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "blog/theme/flex"] 2 | path = blog/theme/flex 3 | url = https://github.com/alexandrevicenzi/Flex.git 4 | -------------------------------------------------------------------------------- /blog/themes/theme/static/css/print.css: -------------------------------------------------------------------------------- 1 | * { background: #fff; } 2 | body { font-family: georgia, times, serif; color: black; } 3 | blockquote { font-style: italic; color: black; } 4 | a:link, a:visited { border-bottom-width: 1px; border-bottom-style: solid; } 5 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/tags.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block content %} 3 | 8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/translations.html: -------------------------------------------------------------------------------- 1 | {% if article.translations %} 2 | Translations: 3 | {% for translation in article.translations %} 4 | {{ translation.lang }} 5 | {% endfor %} 6 | {% endif %} -------------------------------------------------------------------------------- /blog/themes/theme/templates/author.html: -------------------------------------------------------------------------------- 1 | {% extends "index.html" %} 2 | 3 | {% block title %}{{ SITENAME }} | Articles by {{ author }}{% endblock %} 4 | {% block ephemeral_nav %} 5 | 6 | {{ ephemeral_nav_link(author, output_file, True) }} 7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/tag.html: -------------------------------------------------------------------------------- 1 | {% extends "index.html" %} 2 | {% block title %}{{ SITENAME }} | articles tagged "{{ tag }}"{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %} 3 | {% block ephemeral_nav %} 4 | {{ ephemeral_nav_link(tag, output_file, True) }} 5 | {% endblock %} 6 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/page.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %}{{ SITENAME }} | {{ page.title }}{% endblock %} 4 | 5 | {% block content %} 6 | 7 |
8 |

{{ page.title }}

9 | {{ page.content }} 10 |
11 | {% endblock %} 12 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/category.html: -------------------------------------------------------------------------------- 1 | {% extends "index.html" %} 2 | {% block title %}{{ SITENAME }} | articles in the "{{ category }}" category{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %} 3 | {% block ephemeral_nav %} 4 | 5 | {{ ephemeral_nav_link(category, output_file, True) }} 6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/article.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block head %} 4 | {{ super() }} 5 | {% if article.tags %} 6 | 7 | {% endif %} 8 | {% if article.description %} 9 | 10 | {% endif %} 11 | {% endblock %} 12 | 13 | {% block title %}{{ SITENAME }} | {{ article.title }}{% endblock %} 14 | 15 | {% block content %} 16 | {% include "article_stub.html" %} 17 | {% endblock %} 18 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/analytics.html: -------------------------------------------------------------------------------- 1 | {% if GOOGLE_ANALYTICS %} 2 | 6 | 11 | {% endif %} -------------------------------------------------------------------------------- /blog/themes/theme/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %}{{ SITENAME }}{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %} 4 | 5 | {% block content %} 6 | {% set date = None %} 7 | {% for article in articles_page.object_list %} 8 | {% if date != article.date.date() %} 9 | {% set first_article_of_day = True %} 10 | {% else %} 11 | {% set first_article_of_day = False %} 12 | {% endif %} 13 | {% set date = article.date.date() %} 14 | {% include "article_stub.html" %} 15 | {% endfor %} 16 | 17 | {% include "pagination.html" %} 18 | {% endblock %} 19 | -------------------------------------------------------------------------------- /blog/publishconf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- # 3 | from __future__ import unicode_literals 4 | 5 | # This file is only used if you use `make publish` or 6 | # explicitly specify it as your config file. 7 | 8 | import os 9 | import sys 10 | sys.path.append(os.curdir) 11 | from pelicanconf import * 12 | 13 | SITEURL = 'https://bids.github.io/docathon' 14 | RELATIVE_URLS = False 15 | 16 | FEED_ALL_ATOM = 'feeds/all.atom.xml' 17 | CATEGORY_FEED_ATOM = 'feeds/%s.atom.xml' 18 | 19 | DELETE_OUTPUT_DIRECTORY = True 20 | 21 | # Following items are often useful when publishing 22 | 23 | #DISQUS_SITENAME = "" 24 | #GOOGLE_ANALYTICS = "" 25 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/disqus.html: -------------------------------------------------------------------------------- 1 | {% if DISQUS_SITENAME %} 2 |
3 | 11 | 12 | {% endif %} 13 | -------------------------------------------------------------------------------- /blog/themes/theme/static/css/custom.css: -------------------------------------------------------------------------------- 1 | div.offset-container { 2 | margin-top: 40px; 3 | } 4 | 5 | h1.sitetitle { 6 | font-size: 2em; 7 | margin-top: -25px; 8 | } 9 | 10 | div.header_box img { 11 | box-shadow: none; 12 | margin-right: 20px; 13 | float:left; 14 | margin-top: -35px; 15 | margin-left: 10px; 16 | } 17 | 18 | div.front_button { 19 | color: white; 20 | background-color: #15A9DB; 21 | border-radius: 8px; 22 | font-size: 16px; 23 | border: none; 24 | padding: 15px 32px; 25 | text-align: center; 26 | text-decoration: none; 27 | display: inline-block; 28 | width: 25%; 29 | } 30 | 31 | div.page h3 { 32 | font-size: 1em; 33 | margin-top: 5%; 34 | } 35 | -------------------------------------------------------------------------------- /blog/content/pages/hosts.md: -------------------------------------------------------------------------------- 1 | Title: Hosts 2 | Date: 2016-11-10 10:20 3 | Modified: 2016-11-10 18:40 4 | Tags: organization, docathon 5 | Category: info 6 | Slug: hosts 7 | Authors: Chris Holdgraf, Nelle Varoquaux 8 | Summary: Information about how to help with the docathon. 9 | 10 | Here is a list of organizations / groups that are holding docathon parties during the week. 11 | 12 | If you'd like to host your own remote docathon, [click here](hosting.html). 13 | 14 | - [BIDS, UC Berkeley, CA](hosts/bids.html) 15 | - [eScience Institute, UW Seattle, WA](hosts/uwescience.html) 16 | 17 | We have a [slack channel](https://docathon.slack.com) for communicating before and during the week. You can [request an invite](https://docathon.herokuapp.com/) here, or go directly to [https://docathon.slack.com](https://docathon.slack.com) if you already have a login. 18 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/archives.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %}{{ SITENAME }} | Archives{% endblock %} 4 | {% block content %} 5 | 6 |

Archives

7 | 8 | {# based on http://stackoverflow.com/questions/12764291/jinja2-group-by-month-year #} 9 | 10 | {% for year, year_group in dates|groupby('date.year')|reverse %} 11 | {% for month, month_group in year_group|groupby('date.month')|reverse %} 12 |

{{ (month_group|first).date|strftime('%b %Y') }}

13 |
14 | 19 |
20 | {% endfor %} 21 | {% endfor %} 22 | {% endblock %} 23 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3.5 3 | install: 4 | - pip install 'pelican<3.7' markdown 5 | - pip install doctr 6 | script: 7 | - cd blog 8 | - make html 9 | - cd .. 10 | - doctr deploy --deploy-repo BIDS/docathon --built-docs blog/output --gh-pages-docs='.' 11 | env: 12 | global: 13 | - secure: "hmqJYS2bMf/xpL8hc+xGqWUVLsIG80ZxE4/z7CzZEwcGSVLdZAdeIMhkRWCw4DRYSFzCuU9/wfFbRLzSFFqgqe4ML47VQAPUfqBewenoXKOM9CWDhBIUpH/ZRWsadOZqzA2DybUaWD0j+f4yNd4lqkrocWTfDNnuqU6Vajmy9sd4sUDju/u+Q6n01DDrqElk1Rczg2a5b+nQxJkOwrn8DTiV2/afFX06Q4aKfBusFIhvyGPbUsjtixN9Uh+Wfs1yTbBbxkLJJlJnOjU8DvjbPxTv6ineNSV3x1+2Ka9gm4/h9gyrpr/ZkSiW0uZb26Waux16HWBDoii/rkFK9cY1u9yBnmVyPW9zaN/0/UkZ/BK6X9CDoMq0IhLLlWC6vGEj8OimySEDKceoeEbyeZFS6wjNw98fWDrD1XLufWUhWuV7736G6MxtKPH1+MELpJAcLHLR2ABfw30aS7L/o5X1q/YSGKt/2v9M71M8N0e8LJFRA/Y4ylC6NYthYV5nxQps656qOggG1SWG7WkYCftlzgcLjdkg4jrKXjni6wobxVI+WCm59ywFZ2z/M9A+XfgNPDV5uevZOgBCsQLr/P4diB2NQ06z++NVeo+Tm3WXI/dUGud4hMU7NEa0rV+tPYXiMefkQ7zM7E93bcrCA1x370HTDwqQJv+9Dt6S4NmsVxc=" 14 | -------------------------------------------------------------------------------- /src/data/Schedule - Sheet1.csv: -------------------------------------------------------------------------------- 1 | ,"Monday, 3/6","Tuesday, 3/7","Wednesday, 3/8","Thursday, 3/9","Friday, 3/10" 2 | Time,,,,, 3 | 10:00,Welcome / Intro / Coffee,,,, 4 | 10:20,Documentation 101,,,, 5 | 10:40,||,,,, 6 | 11:00,Markdown and numpydoc,,,, 7 | 11:20,Coffee Break,,,, 8 | 11:40,sphinx gallery,,,, 9 | 12:00,RMarkdown / Bookdown,,,, 10 | 12:20,Travis and auto-building,,,, 11 | 12:40,Lunch,,,, 12 | 13:00,Project demos / pitches,Docathon Updates,Docathon Updates,Docathon Updates,Docathon Updates 13 | 13:20,Pairing people w/ projects,working,working,working,working 14 | 13:40,working,||,||,||,|| 15 | 14:00,||,||,||,||,|| 16 | 14:20,||,||,||,||,|| 17 | 14:40,||,||,||,||,|| 18 | 15:00,||,||,||,||,|| 19 | 15:20,||,||,||,||,|| 20 | 15:40,||,||,||,||,|| 21 | 16:00,||,||,||,||,|| 22 | 16:20,||,||,||,||,|| 23 | 16:40,||,||,||,||,|| 24 | 17:00,||,||,||,||,Party / Wrapup 25 | 17:20,||,||,||,||,|| 26 | 17:40,Docathon Recap,Docathon Recap,Docathon Recap,Docathon Recap,|| 27 | 18:00,||,||,||,||,|| 28 | 19:00,,Hacker Within,,, 29 | 20:00,,||,,, 30 | 21:00,,||,,, -------------------------------------------------------------------------------- /blog/content/images/logo.svg: -------------------------------------------------------------------------------- 1 | logo-05 -------------------------------------------------------------------------------- /blog/content/pages/hosts/uwescience.md: -------------------------------------------------------------------------------- 1 | Title: The University of Washington eScience Institute 2 | Date: 2017-02-8 9:30 3 | Tags: organization, docathon 4 | Category: info 5 | Slug: hosts/uwescience 6 | Authors: Ariel Rokem 7 | Summary: We're hosting a docathon at eScience 8 | Status: hidden 9 | 10 | 11 | # The University of Washington eScience Institute 12 | 13 | The docathon will take place at the Data Science Studio, every day from 9 AM 14 | until noon. On the first day, we will live-stream the tutorials held at the 15 | [BIDS](https://bids.github.io/docathon/pages/hosts/bids.html). In following 16 | days we will work together on a variety of projects. Feel free to add 17 | projects to the list below. 18 | 19 | ## How to get to the Data Science Studio? 20 | 21 | You'd like to join us, but you are not familiar with UW's campus? No worries. 22 | 23 | You can find instructions on how to find us here: 24 | 25 | http://escience.washington.edu/about-us/visit-us/directions/ 26 | 27 | ## Projects tackled at UW? 28 | 29 | Here are some projects that we plan on working on during the Docathon: 30 | 31 | - Documentation and auto-builds for [AFQ-browser](https://yeatmanlab.github.io/AFQ-Browser/) 32 | 33 | - ??? 34 | -------------------------------------------------------------------------------- /blog/content/pages/about.md: -------------------------------------------------------------------------------- 1 | Title: About 2 | Date: 2016-11-10 10:20 3 | Modified: 2016-11-10 18:40 4 | Tags: about 5 | Category: info 6 | Slug: about 7 | Authors: Chris Holdgraf 8 | Summary: The docathon team info. 9 | 10 | The Docathon team believes that coding is inherently part human, part machine. We spend a lot of time trying to perfect the machine half of that equation, often at the detriment of the human half. The Docathon is a place where we remember that ultimately, the tools we write will be used by other people, and it's crucial that those people are able to understand and utilize these tools effectively. 11 | 12 | Currently, the Docathon organizing team is composed of several members at the [Berkeley Institute for Data Science](https://bids.berkeley.edu/). In particular, below is our core organizing team: 13 | 14 | * [Chris Holdgraf](https://bids.berkeley.edu/people/chris-holdgraf) 15 | * [Nelle Varoquaux](https://bids.berkeley.edu/people/nelle-varoquaux) 16 | * [Stefan van der Walt](https://bids.berkeley.edu/people/st%C3%A9fan-van-der-walt) 17 | * [Ali Ferguson](https://bids.berkeley.edu/people/ali-ferguson) 18 | * [Dmitriy Morozov](https://bids.berkeley.edu/people/dmitriy-morozov) 19 | * [Matthias Bussonnier](https://bids.berkeley.edu/people/matthias-bussonnier) 20 | * [Teon Brooks](http://teonbrooks.github.io) 21 | 22 | 23 | If you'd like to get involved in organizing, shoot us an email or open an issue on our repository. 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # specific to this project: 2 | blog/*.pid 3 | blog/output/ 4 | # Byte-compiled / optimized / DLL files 5 | __pycache__/ 6 | *.py[cod] 7 | *$py.class 8 | 9 | # C extensions 10 | *.so 11 | 12 | # Distribution / packaging 13 | .Python 14 | env/ 15 | build/ 16 | develop-eggs/ 17 | dist/ 18 | downloads/ 19 | eggs/ 20 | .eggs/ 21 | lib/ 22 | lib64/ 23 | parts/ 24 | sdist/ 25 | var/ 26 | wheels/ 27 | *.egg-info/ 28 | .installed.cfg 29 | *.egg 30 | 31 | # PyInstaller 32 | # Usually these files are written by a python script from a template 33 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 34 | *.manifest 35 | *.spec 36 | 37 | # Installer logs 38 | pip-log.txt 39 | pip-delete-this-directory.txt 40 | 41 | # Unit test / coverage reports 42 | htmlcov/ 43 | .tox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *,cover 50 | .hypothesis/ 51 | 52 | # Translations 53 | *.mo 54 | *.pot 55 | 56 | # Django stuff: 57 | *.log 58 | local_settings.py 59 | 60 | # Flask stuff: 61 | instance/ 62 | .webassets-cache 63 | 64 | # Scrapy stuff: 65 | .scrapy 66 | 67 | # Sphinx documentation 68 | docs/_build/ 69 | 70 | # PyBuilder 71 | target/ 72 | 73 | # Jupyter Notebook 74 | .ipynb_checkpoints 75 | 76 | # pyenv 77 | .python-version 78 | 79 | # celery beat schedule file 80 | celerybeat-schedule 81 | 82 | # dotenv 83 | .env 84 | 85 | # virtualenv 86 | .venv/ 87 | venv/ 88 | ENV/ 89 | 90 | # Spyder project settings 91 | .spyderproject 92 | 93 | # Rope project settings 94 | .ropeproject 95 | -------------------------------------------------------------------------------- /src/data/bids.md: -------------------------------------------------------------------------------- 1 | Title: BIDS 2 | Date: 2016-11-10 10:20 3 | Modified: 2016-11-10 18:40 4 | Tags: organization, docathon 5 | Category: info 6 | Slug: hosts/bids 7 | Authors: Nelle Varoquaux, Chris Holdgraf 8 | Summary: BIDS is hosting a Docathon! 9 | Status: hidden 10 | 11 | 12 | # Berkeley Institute for Data Science 13 | 14 | The Berkeley Institute for Data Science will be hosting a Docathon. The first 15 | day will be focused on tutorials and getting people started. We then will have 16 | daily meetings, and a last warp up event! 17 | 18 | ## Schedule for the week 19 | See a rough schedule for the week below. On the first day we'll have tutorials and talks about documentation in the morning. Each day, we'll take a few hours in the afternoon to hack together at BIDS, room 190B. 20 | 21 | ###SCHEDULE### 22 | 23 | ## Wrap up event 24 | 25 | We will finally wrap up this week of Docathon with a small get together where we can 26 | share the progress made on your favorite project's documentation! 27 | BIDS will provide food and drinks. 28 | 29 | ## How to get to BIDS? 30 | 31 | You'd like to join us, but you are not familiar with Berkeley's campus? No worries. 32 | You can find instructions on how to find us here: 33 | https://bids.berkeley.edu/about/directions-and-travel 34 | 35 | ## Projects tackled at BIDS? 36 | 37 | Here are the projects that we plan on working on during the Docathon: 38 | - party parrot etherpad integration 39 | 40 | If you'd like to propose a project, please register here and create a pull request 41 | to add the project to the list here. 42 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/docathon.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |

What's a docathon?

6 |

7 | It's kind of like a hackathon, but focused on developing material and 8 | tools for documentation. Hackers of all skill-levels are welcome. 9 | The docathon will be held the week of March 6th, 2017. 10 | We'll have a kickoff event on the 6th, and then a week of hacking and 11 | documenting. We hope you'll join us in person or online! 12 |

13 |
14 |
15 |

Why a docathon?

16 | Everybody knows how important documentation is. 17 | However, as important as it is, we often don't give documentation enough 18 | attention. Docstrings are incomplete or missing argument explanations, 19 | examples don't compile or reveal outdated APIs, tutorials are often 20 | idiosynchratic (or not even there). The docathon is about changing that. 21 |
22 |
23 |

How do I join?

24 | We welcome both individuals and projects looking to participate, either locall or remotely. If you want to host your own remote Docathon party, click here. If you want to sign up for the event, click one of the buttons below and answer a couple questions.
25 |
Participant
26 |
Project
27 |
28 |
29 |
30 |
31 | -------------------------------------------------------------------------------- /blog/content/pages/hosting.md: -------------------------------------------------------------------------------- 1 | Title: Hosting 2 | Date: 2016-01-31 10:20 3 | Modified: 2016-01-31 18:40 4 | Tags: organization, docathon 5 | Category: info 6 | Slug: hosting 7 | Authors: Nelle Varoquaux 8 | Summary: Information about hosting a Docathon. 9 | Status: hidden 10 | 11 | Want to host a Docathon remotely? It is very easy! We welcome anybody to join in from around the world. We will coordinately loosely before / during the event, but feel free to do things the way that you'd like to. 12 | 13 | Here's what to do: 14 | 15 | * create a pull request on our [Github 16 | repo](http://github.com/BIDS/docathon). In this PR, there should be: 17 | * A new file in `blog/content/pages/hosts/XX.md` where `XX` is the name of your institute. [here's a link to the folder](https://github.com/BIDS/docathon/tree/master/blog/content/pages/hosts). 18 | * This file should contain the following information: 19 | - When are you meeting? 20 | - How to get to the host place? 21 | - Are you organizing anything special during this week? 22 | * Add your institute to the file `hosts.md` 23 | * Make the PR on the master branch. 24 | 25 | To see an example, look at the list of hosts presented [here](hosts/bids). 26 | 27 | If some of that is confusing to you, then don't hesitate to open an issue on our repo [here](https://github.com/BIDS/docathon/issues) 28 | 29 | [Here's a list](hosts.html) of the groups that are participating so far! 30 | 31 | You can also [request and invite](https://docathon.herokuapp.com/), to our slack 32 | channel or directly head to 33 | [https://docathon.slack.com](https://docathon.slack.com) if you already have a 34 | login. 35 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/article_stub.html: -------------------------------------------------------------------------------- 1 | {% if not articles_page or first_article_of_day %} 2 |

{{ article.date.strftime("%b %d, %Y") }}

3 | {% endif %} 4 | 5 |
6 | {% if article.title %} 7 |

8 | {{ article.title }} 9 |

10 | {% endif %} 11 | 12 | {% if not articles_page %} 13 | {% include "translations.html" %} 14 | {% endif %} 15 | 16 | 17 | {{ article.content }} 18 |
19 | 20 |
21 | posted at {{ article.date.strftime("%H:%M") }} 22 | {% if article.category.name != "misc" %} 23 |  ·  24 | {% endif %} 25 | {% if article.tags %} 26 |  · 27 | {% for t in article.tags %} 28 |  {{ t }} 29 | {% endfor %} 30 | {% endif %} 31 |
32 | {% if articles_page %} 33 | Click to read and post comments 34 | {% else %} 35 | {% include "disqus.html" %} 36 | {% endif %} 37 |
38 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/pagination.html: -------------------------------------------------------------------------------- 1 | {# Use PAGINATION_PATTERNS or pagination may break #} 2 | {% if DEFAULT_PAGINATION and (articles_page.has_previous() or articles_page.has_next()) %} 3 | 4 |
5 |
6 | {% if PAGINATION_PATTERNS %} 7 | {%- if articles_page.has_previous() %} 8 | {% if articles_page.previous_page_number() == 1 %} 9 | 10 | ← Previous 11 | {%- else %} 12 | 13 | ← Previous 14 | {%- endif %} 15 | {%- endif %} 16 | {%- if articles_page.has_next() %} 17 | 18 | Next → 19 | {%- endif %} 20 | {% else %} 21 | {%- if articles_page.has_previous() %} 22 | {% if articles_page.previous_page_number() == 1 %} 23 | 24 | ← Previous 25 | {%- else %} 26 | 27 | ← Previous 28 | {%- endif %} 29 | {%- endif %} 30 | {%- if articles_page.has_next() %} 31 | 32 | Next → 33 | {%- endif %} 34 | {% endif %} 35 | 36 | Page {{ articles_page.number }} of {{ articles_paginator.num_pages }} 37 |
38 | {% endif %} 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # The docathon 2 | Everybody knows how important documentation is. It lets new users learn the contents of a package quickly, it lets current users quickly answer questions they have about a package, it also often gives examples of the "best" or "proper" ways to use a package. 3 | 4 | However, as important as it is, we often don't give documentation enough attention. Docstrings are incomplete or missing argument explanations, examples don't compile or reveal outdated APIs, tutorials are often idiosynchratic (or not even there). 5 | 6 | We think documentation is great, so we're devoting a week to improving the documentation in the open-source ecosystem. We're going to call it "the docathon". 7 | 8 | ## For more information about the docathon, check out the website [here](https://bids.github.io/docathon/) 9 | 10 | ## What is a docathon 11 | It's kind of like a hackathon, but focused on developing material and tools for documentation. This is the first of hopefully many docathons to come! 12 | 13 | ## When is the docathon? 14 | The first docathon will be tentatively held in early 2017, more details to come! 15 | 16 | ## Where is the docathon? 17 | We'll have one meeting at the beginning of the week to discuss potential projects and pair interested helpers with packages / projects that need work. We'll have a physical presence at the Berkeley Institute for Data Science, but all are welcome to participate in person or remotely. 18 | 19 | ## What are you planning to do? 20 | As a group, we'll spend the week working on various projects that aim to improve the documentation in our open-source ecosystem. This might be improving the docstrings of a function, or upgrading examples to using a new docs technology, or even building infrastructure and tools for improving documentation. 21 | 22 | ## How can I get involved? 23 | Check back here soon for a form that we'll use to field ideas for projects and organize people to work on them! 24 | 25 | 26 | 27 | 28 | 29 | ## Projects that may be interested 30 | 31 | - matplotlib (see with NelleV) 32 | - scikit-learn 33 | - mne 34 | -------------------------------------------------------------------------------- /blog/pelicanconf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- # 3 | from __future__ import unicode_literals 4 | 5 | AUTHOR = 'Docathon community' 6 | SITENAME = 'Docathon' 7 | SITEURL = 'https://bids.github.io/docathon' 8 | 9 | PATH = 'content' 10 | 11 | TIMEZONE = 'America/Los_Angeles' 12 | 13 | DEFAULT_LANG = 'en' 14 | 15 | # Feed generation is usually not desired when developing 16 | FEED_ALL_ATOM = 'feeds/all.atom.xml' 17 | CATEGORY_FEED_ATOM = None 18 | TRANSLATION_FEED_ATOM = None 19 | AUTHOR_FEED_ATOM = None 20 | AUTHOR_FEED_RSS = None 21 | 22 | # Social widget 23 | SOCIAL = (('Twitter', 'https://twitter.com/Docathon'), 24 | ('GitHub', 'https://github.com/docathon'),) 25 | 26 | DEFAULT_PAGINATION = 3 27 | 28 | # Uncomment following line if you want document-relative URLs when developing 29 | RELATIVE_URLS = True 30 | 31 | THEME = "themes/theme" 32 | DISPLAY_HEADER = True 33 | DISPLAY_FOOTER = True 34 | DISPLAY_HOME = True 35 | DISPLAY_MENU = True 36 | 37 | 38 | # provided as examples, they make ‘clean’ urls. used by MENU_INTERNAL_PAGES. 39 | TAGS_URL = 'tags' 40 | TAGS_SAVE_AS = 'tags/index.html' 41 | AUTHORS_URL = 'authors' 42 | AUTHORS_SAVE_AS = 'authors/index.html' 43 | CATEGORIES_URL = 'categories' 44 | CATEGORIES_SAVE_AS = 'categories/index.html' 45 | ARCHIVES_URL = 'archives' 46 | ARCHIVES_SAVE_AS = 'archives/index.html' 47 | 48 | 49 | # provided as examples, they make ‘clean’ urls. used by MENU_INTERNAL_PAGES. 50 | TAGS_URL = 'tags' 51 | TAGS_SAVE_AS = 'tags/index.html' 52 | AUTHORS_URL = 'authors' 53 | AUTHORS_SAVE_AS = 'authors/index.html' 54 | CATEGORIES_URL = 'categories' 55 | CATEGORIES_SAVE_AS = 'categories/index.html' 56 | ARCHIVES_URL = 'archives' 57 | ARCHIVES_SAVE_AS = 'archives/index.html' 58 | 59 | # use those if you want pelican standard pages to appear in your menu 60 | MENU_INTERNAL_PAGES = ( 61 | # ('Tags', TAGS_URL, TAGS_SAVE_AS), 62 | # ('Authors', AUTHORS_URL, AUTHORS_SAVE_AS), 63 | # ('Categories', CATEGORIES_URL, CATEGORIES_SAVE_AS), 64 | # ('Archives', ARCHIVES_URL, ARCHIVES_SAVE_AS), 65 | ) 66 | # additional menu items 67 | MENUITEMS = ( 68 | # ('GitHub', 'https://github.com/'), 69 | # ('Linux Kernel', 'https://www.kernel.org/'), 70 | ) 71 | 72 | STATIC_PATHS = ['images', 'extras/favicon.ico'] 73 | HEADER_IMAGE = "logo.svg" 74 | 75 | EXTRA_PATH_METADATA = { 76 | 'extras/favicon.ico': {'path': 'favicon.ico'} 77 | } 78 | -------------------------------------------------------------------------------- /blog/content/pages/participate.md: -------------------------------------------------------------------------------- 1 | Title: Participate 2 | Date: 2016-11-10 10:20 3 | Modified: 2016-11-10 18:40 4 | Tags: organization, docathon 5 | Category: info 6 | Slug: participate 7 | Authors: Chris Holdgraf 8 | Summary: Information about how to help with the docathon. 9 | 10 | # What can I do at the docathon? 11 | 12 | There are two main ways to get involved with the docathon. 13 | 14 | ## Offer a project that could use some documentation love 15 | 16 | First, you can offer a project that could use some documentation love. This 17 | might be an open-source package that is lacking in examples, that needs 18 | docstring improvements, or that simply needs somebody other than the author to 19 | make decisions about how to describe things. It could also be a tool or codebase 20 | that is designed to help with documentation or make it more effective. 21 | 22 | Interested? Click here! 23 | 24 | 25 | ## Participate and help other open-source projects 26 | 27 | Second, you can offer your own time during the Docathon to work on the projects 28 | that are officially on-board. Alternatively, you can work on your own personal 29 | projects (so long as you're working on documentation!). 30 | 31 | Here are some Projects that have already signed in : 32 | 33 | - [PmagPy](https://github.com/pmagpy/pmagpy) 34 | - [pycortex](https://github.com/gallantlab/pycortex) 35 | - [cottoncandy](https://github.com/gallantlab/cottoncand) 36 | - [Data Science Education Infrastructure](https://github.com/data-8/connector-instructors) 37 | - [Matplotlib](https://github.com/matplotlib/matplotlib) 38 | - [IPython](https://github.com/ipython/ipython/) 39 | - [Jupyter](https://github.com/jupyter/notebook/) 40 | - [Scikit-image](https://github.com/scikit-image/scikit-image) 41 | 42 | Search for a 43 | [`Docathon`](https://github.com/search?q=label%3A%22Docathon%22&type=Issues) 44 | label, or asked for one to be added/created 45 | 46 | We'll have a list of projects with (mostly) clearly-defined projects that could 47 | be tackled over the course of the week. This will be the main watering hole for 48 | both listing and finding projects to work on. Interested? Click the button 49 | below! 50 | 51 | 52 | Interested? Click here! 53 | 54 | ## Host your own docathon! 55 | 56 | While we'll have a physical presence here at BIDS, we'd love for other folks to 57 | host their own docathons as well. We're flexible in what exactly this means, but 58 | we'd love to know if you'll be working on documentation stuff at the same time 59 | that we are. 60 | 61 | Interested? Click here! 62 | -------------------------------------------------------------------------------- /blog/develop_server.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## 3 | # This section should match your Makefile 4 | ## 5 | PY=${PY:-python3} 6 | PELICAN=${PELICAN:-pelican} 7 | PELICANOPTS= 8 | 9 | BASEDIR=$(pwd) 10 | INPUTDIR=$BASEDIR/content 11 | OUTPUTDIR=$BASEDIR/output 12 | CONFFILE=$BASEDIR/pelicanconf.py 13 | 14 | ### 15 | # Don't change stuff below here unless you are sure 16 | ### 17 | 18 | SRV_PID=$BASEDIR/srv.pid 19 | PELICAN_PID=$BASEDIR/pelican.pid 20 | 21 | function usage(){ 22 | echo "usage: $0 (stop) (start) (restart) [port]" 23 | echo "This starts Pelican in debug and reload mode and then launches" 24 | echo "an HTTP server to help site development. It doesn't read" 25 | echo "your Pelican settings, so if you edit any paths in your Makefile" 26 | echo "you will need to edit your settings as well." 27 | exit 3 28 | } 29 | 30 | function alive() { 31 | kill -0 $1 >/dev/null 2>&1 32 | } 33 | 34 | function shut_down(){ 35 | PID=$(cat $SRV_PID) 36 | if [[ $? -eq 0 ]]; then 37 | if alive $PID; then 38 | echo "Stopping HTTP server" 39 | kill $PID 40 | else 41 | echo "Stale PID, deleting" 42 | fi 43 | rm $SRV_PID 44 | else 45 | echo "HTTP server PIDFile not found" 46 | fi 47 | 48 | PID=$(cat $PELICAN_PID) 49 | if [[ $? -eq 0 ]]; then 50 | if alive $PID; then 51 | echo "Killing Pelican" 52 | kill $PID 53 | else 54 | echo "Stale PID, deleting" 55 | fi 56 | rm $PELICAN_PID 57 | else 58 | echo "Pelican PIDFile not found" 59 | fi 60 | } 61 | 62 | function start_up(){ 63 | local port=$1 64 | echo "Starting up Pelican and HTTP server" 65 | shift 66 | $PELICAN --debug --autoreload -r $INPUTDIR -o $OUTPUTDIR -s $CONFFILE $PELICANOPTS & 67 | pelican_pid=$! 68 | echo $pelican_pid > $PELICAN_PID 69 | cd $OUTPUTDIR 70 | $PY -m pelican.server $port & 71 | srv_pid=$! 72 | echo $srv_pid > $SRV_PID 73 | cd $BASEDIR 74 | sleep 1 75 | if ! alive $pelican_pid ; then 76 | echo "Pelican didn't start. Is the Pelican package installed?" 77 | return 1 78 | elif ! alive $srv_pid ; then 79 | echo "The HTTP server didn't start. Is there another service using port" $port "?" 80 | return 1 81 | fi 82 | echo 'Pelican and HTTP server processes now running in background.' 83 | } 84 | 85 | ### 86 | # MAIN 87 | ### 88 | [[ ($# -eq 0) || ($# -gt 2) ]] && usage 89 | port='' 90 | [[ $# -eq 2 ]] && port=$2 91 | 92 | if [[ $1 == "stop" ]]; then 93 | shut_down 94 | elif [[ $1 == "restart" ]]; then 95 | shut_down 96 | start_up $port 97 | elif [[ $1 == "start" ]]; then 98 | if ! start_up $port; then 99 | shut_down 100 | fi 101 | else 102 | usage 103 | fi 104 | -------------------------------------------------------------------------------- /blog/content/why_a_docathon.rst: -------------------------------------------------------------------------------- 1 | Why host a docathon? 2 | #################### 3 | 4 | :date: 2016-11-10 10:20 5 | :modified: 2016-11-10 18:40 6 | :tags: communication, coding 7 | :category: info 8 | :slug: why-host-a-docathon 9 | :authors: Chris Holdgraf 10 | :summary: A quick background on why documentation is important and why a docathon can help fix it. 11 | 12 | Learning how to code, how to analyze data, how to do your work openly, and how to collaborate with others requires an incredible amount of self determination. While classes and our colleagues can teach us quite a lot about best practices in programming and the potential that exists in our respective computer languages, we must often rely on ourselves to learn about the tools at our disposal. 13 | 14 | For this purpose, the first point-of-contact many of us have with a package is its documentation. This can serve as simple "how-to" guide for how a package works and the API that is reveals to the user. It can also serve as a "best-practices" exemplar for how others "should" use a package. Sometimes it can even be an introduction to an entire field. 15 | 16 | Documentation is important because it's one of the first connections between the human world and the machine world. It helps us effectively translate our concepts and ideas into the languages that we use to control machines. Or, it can be a confusing mess, and hurt more than it helps. 17 | 18 | We believe that we can do better with documentation. While there are a few shining jewels of well-documented projects, the vast majority deserve to be improved. However, improving documentation is very different from writing better code. It requires the developer to intuitively describe their package and the ways that one might use it, a difficult feat for someone who is mired in the details of their package. 19 | 20 | This is where the docathon comes in - we hope to be a source of community and inspiration for writing better, human-centric documentation. We exist both as a place learn how to connect our computer code with our users, as well as a place to push one another to improve documentation across the open-source ecosystem. 21 | 22 | The first docathon will be held in early 2017, as a week long hacking session focused around improving our docs and creating tools to make documenation more effective. It will be focused at UC Berkeley, but we invite individuals from all over the world to join in for this week of intensive improvements to documentation. Whether it be offering a package that could use some help from the community, or simply taking a few hours to work on your own package's tutorials and docstrings, we welcome any and all contributions. 23 | 24 | Stay tuned in the coming weeks for more information about the first docathon, and how you can help out. We look forward to documenting with you all soon! -------------------------------------------------------------------------------- /blog/fabfile.py: -------------------------------------------------------------------------------- 1 | from fabric.api import * 2 | import fabric.contrib.project as project 3 | import os 4 | import shutil 5 | import sys 6 | import SocketServer 7 | 8 | from pelican.server import ComplexHTTPRequestHandler 9 | 10 | # Local path configuration (can be absolute or relative to fabfile) 11 | env.deploy_path = 'output' 12 | DEPLOY_PATH = env.deploy_path 13 | 14 | # Remote server configuration 15 | production = 'root@localhost:22' 16 | dest_path = '/var/www' 17 | 18 | # Rackspace Cloud Files configuration settings 19 | env.cloudfiles_username = 'my_rackspace_username' 20 | env.cloudfiles_api_key = 'my_rackspace_api_key' 21 | env.cloudfiles_container = 'my_cloudfiles_container' 22 | 23 | # Github Pages configuration 24 | env.github_pages_branch = "gh-pages" 25 | 26 | # Port for `serve` 27 | PORT = 8000 28 | 29 | def clean(): 30 | """Remove generated files""" 31 | if os.path.isdir(DEPLOY_PATH): 32 | shutil.rmtree(DEPLOY_PATH) 33 | os.makedirs(DEPLOY_PATH) 34 | 35 | def build(): 36 | """Build local version of site""" 37 | local('pelican -s pelicanconf.py') 38 | 39 | def rebuild(): 40 | """`clean` then `build`""" 41 | clean() 42 | build() 43 | 44 | def regenerate(): 45 | """Automatically regenerate site upon file modification""" 46 | local('pelican -r -s pelicanconf.py') 47 | 48 | def serve(): 49 | """Serve site at http://localhost:8000/""" 50 | os.chdir(env.deploy_path) 51 | 52 | class AddressReuseTCPServer(SocketServer.TCPServer): 53 | allow_reuse_address = True 54 | 55 | server = AddressReuseTCPServer(('', PORT), ComplexHTTPRequestHandler) 56 | 57 | sys.stderr.write('Serving on port {0} ...\n'.format(PORT)) 58 | server.serve_forever() 59 | 60 | def reserve(): 61 | """`build`, then `serve`""" 62 | build() 63 | serve() 64 | 65 | def preview(): 66 | """Build production version of site""" 67 | local('pelican -s publishconf.py') 68 | 69 | def cf_upload(): 70 | """Publish to Rackspace Cloud Files""" 71 | rebuild() 72 | with lcd(DEPLOY_PATH): 73 | local('swift -v -A https://auth.api.rackspacecloud.com/v1.0 ' 74 | '-U {cloudfiles_username} ' 75 | '-K {cloudfiles_api_key} ' 76 | 'upload -c {cloudfiles_container} .'.format(**env)) 77 | 78 | @hosts(production) 79 | def publish(): 80 | """Publish to production via rsync""" 81 | local('pelican -s publishconf.py') 82 | project.rsync_project( 83 | remote_dir=dest_path, 84 | exclude=".DS_Store", 85 | local_dir=DEPLOY_PATH.rstrip('/') + '/', 86 | delete=True, 87 | extra_opts='-c', 88 | ) 89 | 90 | def gh_pages(): 91 | """Publish to GitHub Pages""" 92 | rebuild() 93 | local("ghp-import -b {github_pages_branch} {deploy_path}".format(**env)) 94 | local("git push origin {github_pages_branch}".format(**env)) 95 | -------------------------------------------------------------------------------- /github_deploy_key.enc: -------------------------------------------------------------------------------- 1 | gAAAAABYSgUsp1MIbYHulH75cO98Au3MuMBcxYuHB9rbU9x3InEAAv6ZC3DQ123MTpBkjvzpiZSi2OObsks-v1-kweMohFyjBTg0h59X1Cd4VKIWaeWJQNIPB1F2jcwKyLaaodGuYQFZH_sVMPuuq7a0doprxXpeLZfqNqDWUtlXk1CYXqzBfna8bwqHlm7oc1BNATSVu9sB-eKfCoHAUfiR2l5llk5gJ8HWrrVGxLBs8-6H5NWfDmn0Pp9xwB0uwnd5KosXaWt4gbl2elgaWjwBz1cRmLzrjs76yuQoLJo_M8nFzB6hZt94ZezjXrXV2DfRH-vtD1d0gduizx2WNQ331YqdESrZTKFkyrFQoJzKHLdt3HoquEYA0ePgurPx1sNTgWlnFvDwoJeswYqW0-kg1jkDMP9SuTsXXhDDNZzBM4rLfMkJYGwKwwV1R1YOPBtXbx23yH5zfZwZ8Bp9PEKBtHVazywnaV03ZC5UnoGA9e03VyiNBYUOSbgDL9c69GwidSKnWItL6nAYMId9v1pDiYfUl0Zm1SmvMJmFNk3K8ED5emO-xjiwn9YNLZcI7_plFXMBorbq4WMD4bk0_QBWkrkqOEVSMI4m-9_PpNMR_DVbhBt8EmUHhJumVGzLXmCluhDupoJ63DIB4iZMT3mhUHeiLhGahHnqc14_kHQKrxKBvGGCWqrogIHNZD0b-Y_A7edy9KxEBNlEKNAyM-7hU4f1Czs009h_KhLfRvZ8MLnzdFeXWGlbtWNcl1t_vRTJY8at4Y9zWEhgMup5I3kR-NG7FoWv0gj35adGu0nOUmSOL6dcTAM2WXNlbBRFzLHUKx96fjY1DAgZEPzVIrgSnzjRjRjNe-5r78rlumx3eCi8yHigbIhpsaJ-QuDFmaotkm2l4SLJkdXzG_wUiY-umjXYB-D_VXrtPN76EtDjynaBPRiiATSHd4sYCE2sFGXpheX0HQlJHu_wBk6SOw5zUONLsEXYvUsZ03shWQ_me8RExqZcLJ8d_vf8e1j4Yz2WhXPXA5Mubh8AamkTkpIvBgc6KywH2hVcvVwXWstJL8eM_3aAVPMkufySrpGFt7Q1AziMEyRD5mUZOUTwHrZuD5srYzyRC7EqrsJ3TAKtn3kpGR0jhQXIOjJelcV7AGtubuJlRVxkL3IDzXkjMIsB-w9kyBgFjMq5npH9-dF3T1Nt9PFRs36pQLpiX_GG6fyQQe_xe2FrnJNjzDcb1APGDcW8uQl-fkA1wniUJ3ZgMxEsC7SZEVyQrAsaGmTRXSjTXmTeU9LSenTNCGUonYiMTbaSamk2tXgJfdipBaMRR4zdEOUGpM_67aahdTAuXWexty74pQqKchu8klmeCCoOJNxi5g1A9BpInaPx0LaU9_hKpo6lMthIsN-z6TAsYqhBtUwfAVf83WDyDi8NJ2YBGG2csYtgswpF9pyU1Ql58LaCfxpZZCLDS_uayq9z4s0327kkqgXyd8FnYU0KE6D1Tyujb-QpMgMzwnn4gvds0gyi1K3nq5jWqSS7zvmsyHrhoUpOi2pLvtu8Ruym2YWX60uTsrbxW56v4MYG7oIvU-zAKQtZrT8isHHEpa5sEoxEGK6-X60FL4NiNHksbyvF4ySlRj2Kr7CyOrDXRX2fp-RykYm5UyIEw3__7zAdf4IFSwKBkcPWuD35-rQy_LWf5NUo0KNna1BHX0gitiZPG8uZ8M3sa27-ZMSnutcH-eDDXM1SiNF3xBF7AVknNHqqDZh8VWej7hRoePs02m0Uh_fxDGDRlEiZYEVu3UJwXSWGUTenaCR3sh6Jrh88j4T1xSg_H0SJw5AcWq94rIwh3JKqYGc7iA2lG_Qyds2sQO4LdElor5r8VJkNHW-b4i1_Tf98OX4F_FnqtAYDxUpgxP-kkYVLUP4tX1VQQfvoQTIr__W4tCURhj2A9B963gbhlPMnnZ8Ke-ppKAKLNrPZJdp-qAe9eB_ius-pXAjWphY9DZRU2cy5n7RDEYBxJrPoQ4O_goC-aGjMI8yp7RRmDimU8YsrA2e8ZSYu8EOsQDAoFbLQlbODzTyrJq3JOzDfaVLd91yxTswuNq-g-r_3F-TDr7_RYPQZYE2wwbU_uA4xg3uNkXkS92_hVWeMfhflzznGXREQ-w7SGgdWMOqffz0VfIe01gwFnv3UJayYLxjNEayjo3oLtKN6oogYNLCOC9DwOv12x9nzaxLI7h2m77XRULxqNhyAE-SlY4wQQAxor3qdnQ1wip-oCPr1tBo18MHU7_efBvNJ8DFvcgoi6lZeHniAZZzEcJS46FNHEa2XA4ySD2U1dQxVEq6ZnjKE_CPSXFX8fSx1DvRLrYdujvs2nhuViRr40of3fBcGDGau2dl6V-0TpzZynsRb1iINi-r75zv-V2Gt3e93A1mQTIZr6k8N_pZ-sCUk17yhZXNQRHbvrzgUIkoUoABj9I2kpq04v0ud3Y76GMS5jUyOSzlbDJC_ecQbLDx-Zl6XizJv0UXtok-b4rg4xQOHtjXDOBjKXW-7uiF8YEeHGjMGsvo0sfITF7rCQkDMVa8Ea0X0cfqiU5fCJ8hSIT6I5IsDJzAN3F2md7gvr2x26sYfepNCwYh4fRyZDXkxVqNptziN2JA8ozcHeXa3miw56Hbs_URBLnbLMo0uE1FxI2DkQjmA8O6mNMSHVCC59OMYgPZwAJJurQGBxufPzBDUIuqx9QUevSmA3tNvAzBz3QKt75dB9f0P1M_J58rhnze8WiLClHKxxkEwDy-LtDfJP8h-dKp9C_0N6sLTZRhVF8qeN35tflwuthLWZW6CpqOw-9MyKDc1PDfu_bl02JjTPYU8xK9eWSLS73XQoMbcuRcGz31bsBq5AifOiAmFUjMWCX5MPYCCIg5PWLVxIQMwFArm1PdPiA-TphiyIHAQfoE6LyWr9_Y8twXbD7Bl6PqQ5fIL5QqHmEQKh9g1eh72GPLgW5jPGk5k-Pj4a2oVo_ambSyaKofd5lS-iYAshYXI1AighKILYHLqwqvcpGLNxT-dZULSDccLd12RwIfM-vdvyjfHZmCRvRGSbR2xpjVNeVPNI_kS7YVWiPFjubPRhcq5MRFleaNQj_c7AW1ON2OwqORMBxaDzzkKXPoKNKluRDLm-fAzSV0HpWG5TAuVlLCXoSoM67WmciTnfMD77rX8t1UagOhQWeZ_MEUiWLjAr6fgZ8mvaxju82bOdsOeCVlhbUeKT4obyU2cM5_sJ7-dRtKxPz7ZlfvuHaWZP2R83QAnEtw01OvabCasEx07EKqRIgHTeatx_FakIlj9XxFpQDat9AWcpE0uBaykTXEVKelxoe-kItBh5-qvFRPwLD_oUDB7Iwfeo3o-aO25ZMQCdgEdFfy_owMy0FyVr2Gp0yHhV1EfJITdJmsCZ17t3wQ7YKrkIe5BvF63exG4HLqUQMLHLaQ2wbPGBx2i64V6HcokHuK1RuF35E_0A1cOIbJmV6edeuhvLIzYrXFgoBQsBBj0n5kq-C59xM-CD_XD4qg95ToJaXK--kewuXkihw-UTztDZEAomXc9cfTIkGkj78krv_pP5PcEqSGu7uDnXgmCelOWVsBjtIIZnRd1cCFiWJaldRF3ruwE7hknKZ16JmGkdqiQXobHFInzOXy0owlMe7ZhwM-dPHQoAcGyMdDpRkCidkb2iXh3oo6sJkPOalKq_bq_wXGVZGeg5TK5Ozg2aDd41yynyiQySac4gpFwbsYNllpN5gkxDRWsHE9ZDcxBaZyzTwQzahdTIBhi1SVCGB5Kwah6gm86Wfggf5KZ87hgZYO9_DasmNDqaa2bCprlnjuGyk2HzzrCi8FcorZol6zmagUD-jyee0sWrFwrmbOGxhpbC4puzjOhqZsaapS2j7wqYHLwkdFjflWUbrw25525kjx0RPxMt3ga-67u02F85-qB044X7YR6jqWBb6iQrsr1mwCIp-Fm-YoRZOWkLPEfGIx0EubMtCl78ijAYs6d1ObqBh9M35bLWxO3dHhXrYyJHVLIvpoI571VKpgR0hh2o-CtZQr52oPFD3yX6t4csOl3Ijw-owRhrFgplnuxK_BPtAJGFFHZsHKmM7CLCoKo69heZSUdeXUdr9pk7AmnOrxQFjcoUW0L0ftpP0IQRCQgAq21nIn_rvwssI6917CZMupNOWQb4BDzV-HM5TfyDQ_AJMkjmsItjoDp3U4NlSwbmyQMI9fpAWAD1SpMhd4Ai17bo6rb6gpNIdWlzopckdvarRnVsxyUjFRJlsCGCQKgdTi4b671YaIK0NmQRDam_yOUSCcTuK73T8fcbJAWwAvdt2BfLTGluAGYWEgjaYxK-6KbtgCcC_pgW-Ci9XqOlwZhGzL7Vm5blh0ziFC0I9cXdLokakXAu6DCRsFYZ7mWigc= -------------------------------------------------------------------------------- /blog/themes/theme/static/css/pygments.css: -------------------------------------------------------------------------------- 1 | /* Solarized Dark 2 | 3 | For use with Jekyll and Pygments 4 | 5 | http://ethanschoonover.com/solarized 6 | 7 | SOLARIZED HEX ROLE 8 | --------- -------- ------------------------------------------ 9 | base03 #002b36 background 10 | base01 #586e75 comments / secondary content 11 | base1 #93a1a1 body text / default code / primary content 12 | orange #cb4b16 constants 13 | red #dc322f regex, special keywords 14 | blue #268bd2 reserved keywords 15 | cyan #2aa198 strings, numbers 16 | green #859900 operators, other keywords 17 | */ 18 | 19 | .highlight { background-color: #002b36; color: #93a1a1 } 20 | .highlight .c { color: #586e75 } /* Comment */ 21 | .highlight .err { color: #93a1a1 } /* Error */ 22 | .highlight .g { color: #93a1a1 } /* Generic */ 23 | .highlight .k { color: #859900 } /* Keyword */ 24 | .highlight .l { color: #93a1a1 } /* Literal */ 25 | .highlight .n { color: #93a1a1 } /* Name */ 26 | .highlight .o { color: #859900 } /* Operator */ 27 | .highlight .x { color: #cb4b16 } /* Other */ 28 | .highlight .p { color: #93a1a1 } /* Punctuation */ 29 | .highlight .cm { color: #586e75 } /* Comment.Multiline */ 30 | .highlight .cp { color: #859900 } /* Comment.Preproc */ 31 | .highlight .c1 { color: #586e75 } /* Comment.Single */ 32 | .highlight .cs { color: #859900 } /* Comment.Special */ 33 | .highlight .gd { color: #2aa198 } /* Generic.Deleted */ 34 | .highlight .ge { color: #93a1a1; font-style: italic } /* Generic.Emph */ 35 | .highlight .gr { color: #dc322f } /* Generic.Error */ 36 | .highlight .gh { color: #cb4b16 } /* Generic.Heading */ 37 | .highlight .gi { color: #859900 } /* Generic.Inserted */ 38 | .highlight .go { color: #93a1a1 } /* Generic.Output */ 39 | .highlight .gp { color: #93a1a1 } /* Generic.Prompt */ 40 | .highlight .gs { color: #93a1a1; font-weight: bold } /* Generic.Strong */ 41 | .highlight .gu { color: #cb4b16 } /* Generic.Subheading */ 42 | .highlight .gt { color: #93a1a1 } /* Generic.Traceback */ 43 | .highlight .kc { color: #cb4b16 } /* Keyword.Constant */ 44 | .highlight .kd { color: #268bd2 } /* Keyword.Declaration */ 45 | .highlight .kn { color: #859900 } /* Keyword.Namespace */ 46 | .highlight .kp { color: #859900 } /* Keyword.Pseudo */ 47 | .highlight .kr { color: #268bd2 } /* Keyword.Reserved */ 48 | .highlight .kt { color: #dc322f } /* Keyword.Type */ 49 | .highlight .ld { color: #93a1a1 } /* Literal.Date */ 50 | .highlight .m { color: #2aa198 } /* Literal.Number */ 51 | .highlight .s { color: #2aa198 } /* Literal.String */ 52 | .highlight .na { color: #93a1a1 } /* Name.Attribute */ 53 | .highlight .nb { color: #B58900 } /* Name.Builtin */ 54 | .highlight .nc { color: #268bd2 } /* Name.Class */ 55 | .highlight .no { color: #cb4b16 } /* Name.Constant */ 56 | .highlight .nd { color: #268bd2 } /* Name.Decorator */ 57 | .highlight .ni { color: #cb4b16 } /* Name.Entity */ 58 | .highlight .ne { color: #cb4b16 } /* Name.Exception */ 59 | .highlight .nf { color: #268bd2 } /* Name.Function */ 60 | .highlight .nl { color: #93a1a1 } /* Name.Label */ 61 | .highlight .nn { color: #93a1a1 } /* Name.Namespace */ 62 | .highlight .nx { color: #93a1a1 } /* Name.Other */ 63 | .highlight .py { color: #93a1a1 } /* Name.Property */ 64 | .highlight .nt { color: #268bd2 } /* Name.Tag */ 65 | .highlight .nv { color: #268bd2 } /* Name.Variable */ 66 | .highlight .ow { color: #859900 } /* Operator.Word */ 67 | .highlight .w { color: #93a1a1 } /* Text.Whitespace */ 68 | .highlight .mf { color: #2aa198 } /* Literal.Number.Float */ 69 | .highlight .mh { color: #2aa198 } /* Literal.Number.Hex */ 70 | .highlight .mi { color: #2aa198 } /* Literal.Number.Integer */ 71 | .highlight .mo { color: #2aa198 } /* Literal.Number.Oct */ 72 | .highlight .sb { color: #586e75 } /* Literal.String.Backtick */ 73 | .highlight .sc { color: #2aa198 } /* Literal.String.Char */ 74 | .highlight .sd { color: #93a1a1 } /* Literal.String.Doc */ 75 | .highlight .s2 { color: #2aa198 } /* Literal.String.Double */ 76 | .highlight .se { color: #cb4b16 } /* Literal.String.Escape */ 77 | .highlight .sh { color: #93a1a1 } /* Literal.String.Heredoc */ 78 | .highlight .si { color: #2aa198 } /* Literal.String.Interpol */ 79 | .highlight .sx { color: #2aa198 } /* Literal.String.Other */ 80 | .highlight .sr { color: #dc322f } /* Literal.String.Regex */ 81 | .highlight .s1 { color: #2aa198 } /* Literal.String.Single */ 82 | .highlight .ss { color: #2aa198 } /* Literal.String.Symbol */ 83 | .highlight .bp { color: #268bd2 } /* Name.Builtin.Pseudo */ 84 | .highlight .vc { color: #268bd2 } /* Name.Variable.Class */ 85 | .highlight .vg { color: #268bd2 } /* Name.Variable.Global */ 86 | .highlight .vi { color: #268bd2 } /* Name.Variable.Instance */ 87 | .highlight .il { color: #2aa198 } /* Literal.Number.Integer.Long */ -------------------------------------------------------------------------------- /src/generate_table.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 35, 6 | "metadata": { 7 | "collapsed": true, 8 | "deletable": true, 9 | "editable": true 10 | }, 11 | "outputs": [], 12 | "source": [ 13 | "import pandas as pd\n", 14 | "from tabulate import tabulate\n", 15 | "import shutil as sh\n", 16 | "import numpy as np\n", 17 | "from IPython.display import HTML\n" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 36, 23 | "metadata": { 24 | "collapsed": true, 25 | "deletable": true, 26 | "editable": true 27 | }, 28 | "outputs": [], 29 | "source": [ 30 | "def make_bold(a):\n", 31 | " return '**{}**'.format(a)" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": 37, 37 | "metadata": { 38 | "collapsed": true, 39 | "deletable": true, 40 | "editable": true 41 | }, 42 | "outputs": [], 43 | "source": [ 44 | "pd.set_option('display.max_colwidth', 100)" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": 38, 50 | "metadata": { 51 | "collapsed": false, 52 | "deletable": true, 53 | "editable": true 54 | }, 55 | "outputs": [], 56 | "source": [ 57 | "data = pd.read_csv('./data/Schedule - Sheet1.csv', index_col=0, skiprows=[1])\n", 58 | "data.index.name = 'time'\n", 59 | "data = data.replace(np.nan, '--')\n", 60 | "# data.columns = data.columns.map(make_bold)\n", 61 | "# data.index = data.index.map(make_bold)" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": 39, 67 | "metadata": { 68 | "collapsed": false, 69 | "deletable": true, 70 | "editable": true 71 | }, 72 | "outputs": [], 73 | "source": [ 74 | "# table = tabulate(data, tablefmt='pipe', headers=data.columns,\n", 75 | "# numalign='center', stralign='center')\n", 76 | "def make_center(a):\n", 77 | " return 'text-align: center'\n", 78 | "style = data.style.applymap(make_center)\n", 79 | "\n", 80 | "\n", 81 | "def hover(hover_color=\"#ffff99\"):\n", 82 | " return dict(selector=\"tr:hover\",\n", 83 | " props=[(\"background-color\", \"%s\" % hover_color)])\n", 84 | "\n", 85 | "styles = [\n", 86 | " hover(),\n", 87 | " dict(selector=\"th\", props=[(\"font-size\", \"120%\"),\n", 88 | " (\"text-align\", \"center\"),\n", 89 | " ('font-weight', \"bold\")]),\n", 90 | " dict(selector=\"td\", props=[(\"width\", \"200px\")])\n", 91 | "]\n", 92 | "style = style.set_table_styles(styles)" 93 | ] 94 | }, 95 | { 96 | "cell_type": "code", 97 | "execution_count": 40, 98 | "metadata": { 99 | "collapsed": true, 100 | "deletable": true, 101 | "editable": true 102 | }, 103 | "outputs": [], 104 | "source": [ 105 | "table = style.render()\n", 106 | "table = '\\n'.join(ii.strip() for ii in table.split('\\n'))" 107 | ] 108 | }, 109 | { 110 | "cell_type": "code", 111 | "execution_count": 41, 112 | "metadata": { 113 | "collapsed": false, 114 | "deletable": true, 115 | "editable": true 116 | }, 117 | "outputs": [ 118 | { 119 | "name": "stdout", 120 | "output_type": "stream", 121 | "text": [ 122 | "###SCHEDULE###\n", 123 | "\n" 124 | ] 125 | } 126 | ], 127 | "source": [ 128 | "with open('./data/bids.md', 'r') as ff:\n", 129 | " lines = ff.readlines()\n", 130 | "\n", 131 | "for ii, line in enumerate(lines):\n", 132 | " if '###SCHEDULE###' in line:\n", 133 | " print(line)\n", 134 | " lines[ii] = table\n", 135 | " lines.insert(ii+1, '\\n')\n", 136 | "\n", 137 | "with open('../blog/content/pages/hosts/bids.md', 'w') as ff:\n", 138 | " ff.writelines(lines)" 139 | ] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": null, 144 | "metadata": { 145 | "collapsed": true, 146 | "deletable": true, 147 | "editable": true 148 | }, 149 | "outputs": [], 150 | "source": [] 151 | } 152 | ], 153 | "metadata": { 154 | "kernelspec": { 155 | "display_name": "Python 3", 156 | "language": "python", 157 | "name": "python3" 158 | }, 159 | "language_info": { 160 | "codemirror_mode": { 161 | "name": "ipython", 162 | "version": 3 163 | }, 164 | "file_extension": ".py", 165 | "mimetype": "text/x-python", 166 | "name": "python", 167 | "nbconvert_exporter": "python", 168 | "pygments_lexer": "ipython3", 169 | "version": "3.5.2" 170 | } 171 | }, 172 | "nbformat": 4, 173 | "nbformat_minor": 2 174 | } 175 | -------------------------------------------------------------------------------- /blog/Makefile: -------------------------------------------------------------------------------- 1 | PY?=python 2 | PELICAN?=pelican 3 | PELICANOPTS= 4 | 5 | BASEDIR=$(CURDIR) 6 | INPUTDIR=$(BASEDIR)/content 7 | OUTPUTDIR=$(BASEDIR)/output 8 | CONFFILE=$(BASEDIR)/pelicanconf.py 9 | PUBLISHCONF=$(BASEDIR)/publishconf.py 10 | 11 | FTP_HOST=localhost 12 | FTP_USER=anonymous 13 | FTP_TARGET_DIR=/ 14 | 15 | SSH_HOST=localhost 16 | SSH_PORT=22 17 | SSH_USER=root 18 | SSH_TARGET_DIR=/var/www 19 | 20 | S3_BUCKET=my_s3_bucket 21 | 22 | CLOUDFILES_USERNAME=my_rackspace_username 23 | CLOUDFILES_API_KEY=my_rackspace_api_key 24 | CLOUDFILES_CONTAINER=my_cloudfiles_container 25 | 26 | DROPBOX_DIR=~/Dropbox/Public/ 27 | 28 | GITHUB_PAGES_BRANCH=gh-pages 29 | 30 | DEBUG ?= 0 31 | ifeq ($(DEBUG), 1) 32 | PELICANOPTS += -D 33 | endif 34 | 35 | RELATIVE ?= 0 36 | ifeq ($(RELATIVE), 1) 37 | PELICANOPTS += --relative-urls 38 | endif 39 | 40 | all: html 41 | 42 | help: 43 | @echo 'Makefile for a pelican Web site ' 44 | @echo ' ' 45 | @echo 'Usage: ' 46 | @echo ' make html (re)generate the web site ' 47 | @echo ' make clean remove the generated files ' 48 | @echo ' make regenerate regenerate files upon modification ' 49 | @echo ' make publish generate using production settings ' 50 | @echo ' make serve [PORT=8000] serve site at http://localhost:8000' 51 | @echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 ' 52 | @echo ' make devserver [PORT=8000] start/restart develop_server.sh ' 53 | @echo ' make stopserver stop local server ' 54 | @echo ' make ssh_upload upload the web site via SSH ' 55 | @echo ' make rsync_upload upload the web site via rsync+ssh ' 56 | @echo ' make dropbox_upload upload the web site via Dropbox ' 57 | @echo ' make ftp_upload upload the web site via FTP ' 58 | @echo ' make s3_upload upload the web site via S3 ' 59 | @echo ' make cf_upload upload the web site via Cloud Files' 60 | @echo ' make github upload the web site via gh-pages ' 61 | @echo ' ' 62 | @echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html ' 63 | @echo 'Set the RELATIVE variable to 1 to enable relative urls ' 64 | @echo ' ' 65 | 66 | html: 67 | $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) 68 | 69 | clean: 70 | [ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR) 71 | 72 | regenerate: 73 | $(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) 74 | 75 | serve: 76 | ifdef PORT 77 | cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT) 78 | else 79 | cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 | endif 81 | 82 | serve-global: 83 | ifdef SERVER 84 | cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 $(SERVER) 85 | else 86 | cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 0.0.0.0 87 | endif 88 | 89 | 90 | devserver: 91 | ifdef PORT 92 | $(BASEDIR)/develop_server.sh restart $(PORT) 93 | else 94 | $(BASEDIR)/develop_server.sh restart 95 | endif 96 | 97 | stopserver: 98 | $(BASEDIR)/develop_server.sh stop 99 | @echo 'Stopped Pelican and SimpleHTTPServer processes running in background.' 100 | 101 | publish: 102 | $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS) 103 | 104 | ssh_upload: publish 105 | scp -P $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) 106 | 107 | rsync_upload: publish 108 | rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude 109 | 110 | dropbox_upload: publish 111 | cp -r $(OUTPUTDIR)/* $(DROPBOX_DIR) 112 | 113 | ftp_upload: publish 114 | lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit" 115 | 116 | s3_upload: publish 117 | s3cmd sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl-public --delete-removed --guess-mime-type 118 | 119 | cf_upload: publish 120 | cd $(OUTPUTDIR) && swift -v -A https://auth.api.rackspacecloud.com/v1.0 -U $(CLOUDFILES_USERNAME) -K $(CLOUDFILES_API_KEY) upload -c $(CLOUDFILES_CONTAINER) . 121 | 122 | github: publish 123 | ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR) 124 | git push origin $(GITHUB_PAGES_BRANCH) 125 | 126 | .PHONY: html help clean regenerate serve serve-global devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github 127 | -------------------------------------------------------------------------------- /blog/themes/theme/templates/base.html: -------------------------------------------------------------------------------- 1 | {% macro ephemeral_nav_link(what, where, selected=False) -%} 2 |
  • {{what}}
  • 3 | {%- endmacro -%} 4 | 5 | 6 | 7 | 8 | {% block head %} 9 | 10 | 11 | {% block title %}{{ SITENAME }}{% endblock title %} 12 | {# favicon #} 13 | 14 | 15 | {% if FEED_ALL_ATOM %} 16 | 17 | {% endif %} 18 | {% if FEED_ALL_RSS %} 19 | 20 | {% endif %} 21 | {% if FEED_ATOM %} 22 | 23 | {% endif %} 24 | {% if FEED_RSS %} 25 | 26 | {% endif %} 27 | {% if CATEGORY_FEED_ATOM and category %} 28 | 29 | {% endif %} 30 | {% if CATEGORY_FEED_RSS and category %} 31 | 32 | {% endif %} 33 | {% if TAG_FEED_ATOM and tag %} 34 | 35 | {% endif %} 36 | {% if TAG_FEED_RSS and tag %} 37 | 38 | {% endif %} 39 | 40 | 41 | 42 | 43 | 44 | {% endblock head %} 45 | 46 | 47 | {% if DISPLAY_HEADER or DISPLAY_HEADER is not defined %} 48 |
    49 | {% if DISPLAY_MENU or DISPLAY_MENU is not defined %} 50 | 69 | {% endif %} 70 |
    71 | 72 |

    {{ SITENAME }}

    73 | {% if SITESUBTITLE %} 74 |

    {{ SITESUBTITLE }}

    75 | {% endif %} 76 |
    77 |
    78 | {% endif %} 79 | 80 | {% include "docathon.html" %} 81 |
    82 | 83 |
    84 | {%- block content -%}{%- endblock %} 85 | 86 | {% if DISPLAY_FOOTER or DISPLAY_FOOTER is not defined %} 87 |
    88 |
    89 |

    90 | Blue Penguin Theme 91 | · 92 | Powered by Pelican 93 | {% if FEED_ALL_ATOM %} 94 | · 95 | Atom Feed 96 | {% endif %} 97 | {% if FEED_ALL_RSS %} 98 | · 99 | Rss Feed 100 | {% endif %} 101 |

    102 | {% endif %} 103 |
    104 |
    105 |
    106 | {% include 'analytics.html' %} 107 | 108 | 109 | -------------------------------------------------------------------------------- /blog/content/pages/resources.md: -------------------------------------------------------------------------------- 1 | Title: Resources 2 | Date: 2016-11-10 10:20 3 | Modified: 2016-11-10 18:40 4 | Tags: resources, documentation 5 | Category: info 6 | Slug: resources 7 | Authors: Chris Holdgraf 8 | Summary: A collection of resources that we've found useful in improving our documentation 9 | 10 | Below we'll keep a semi-updated list of resources that we've found useful in writing and improving our own documentation. If you've got a suggestion for something else to add, please add it as a comment on our github issue on this [here](https://github.com/BIDS/docathon/issues/5). 11 | 12 | # Documentation tools 13 | --- 14 | These cover tools and software that are useful in documentation. If you have a suggestion for a new tool, add a comment [here](https://github.com/BIDS/docathon/issues/4). 15 | 16 | ## Python 17 | 18 | ### numpydoc 19 | 20 | [numpydoc](https://pypi.python.org/pypi/numpydoc) is a set of extension for 21 | sphinx initially used by the numpy project and now more widely used in the 22 | scientific ecosystem. Among other features, it provides extra sphinx directives, and 23 | understands the numpy docstring syntax. This allows you to quickly build websites for your project. 24 | 25 | ### Napoleon 26 | 27 | [Sphinxcontrib-napoleon](https://pypi.python.org/pypi/sphinxcontrib-napoleon) 28 | is a set of extensions for Sphinx which understand both NumPy and Google style 29 | docstrings. 30 | 31 | ### Doctr 32 | 33 | [Doctr](https://github.com/drdoctr/doctr) is meant to simplify the deployment 34 | of documentation from Travis-CI to GitHub pages, by providing a single tool to 35 | setup, build and deploy documentation builds. 36 | 37 | It is an alternative to readthedocs, which is sometimes difficult in getting dependencies installed. 38 | 39 | Doctr is still young and could have many features contributed, maybe by you! 40 | 41 | ### Sphinx Gallery 42 | 43 | [Sphinx Gallery](https://github.com/sphinx-gallery/sphinx-gallery) is a Sphinx 44 | extension that will automatically generate a gallery from a repository of 45 | examples that generate matplotlib plots. It also auto-generates a jupyter notebook that can be downloaded from the html page in the docs. 46 | 47 | Sphinx Gallery automatically makes all identifiers present in every code block 48 | link to their definition. In conjunction with [intersphinx] this is allows 49 | seamless navigation between related projects. 50 | 51 | ### custom_inherit 52 | 53 | [custom_inherit](https://github.com/meowklaski/custom_inherit) is a Python package that provides convenient, light-weight tools for inheriting/merging docstrings in customizeable ways. This helps facilitate thorough and consistent documentation - documentation need not be duplicated manually when docstring sections are being inherited. 54 | 55 | It provides both a decorator and a metaclass for facilitating docstring inheritance/merging. Numpy, Google, & reST docstring styles are supported out of the box. 56 | 57 | ### Documentation portals 58 | 59 | 60 | The following tools fall under the category of "Documentation portals" they attempt 61 | to gather documentation from several sources in a coherent, uniform and 62 | searchable portal. 63 | 64 | [Devdocs](http://devdocs.io/) started as a portal to gather documentation for 65 | javascript projects. Now it has expanded to many projects and languages. It's browser-based but stores content locally so available online projects can opt-in and write a 66 | "Scrapper" to parse already existing HTML docs. 67 | 68 | It does _not_ have a concept of "next/previous" pages so is not meant for read-through 69 | tutorials. 70 | 71 | [Dash](https://kapeli.com/dash) is a similar project. It is (for now) 72 | available for MacOS only, as native application. You can use it to get online 73 | resources, but is mostly meant to work off-line. 74 | 75 | [PyDoc](https://pydoc.io) fills again a similar niche. PyDoc first version 76 | were made public at end of 2016. Unlike the two above, PyDoc is meant to be 77 | Python only, and has no intent to be available off-line. Its tight integration 78 | with Python should allows it to automatically build _api only_ docs for all 79 | Python project on PyPI and Warehouse. 80 | 81 | 82 | ### Miscellaneous documentation tools 83 | 84 | 85 | [Docrepr](https://pypi.python.org/pypi/docrepr) extend the concept of 86 | MimeBundle that can be found in IPython and Jupyter to extend it to python's 87 | docstring. Using docrepr, the Jupyter Notebook and Spyder can show docstring of 88 | interactive object using rich html. 89 | 90 | 91 | [thebe test](https://github.com/michaelpacer/thebe-test) is a prototype to make 92 | example written using sphinx interactive and backed by an actual running 93 | kernel. Either running on a temporary server in the cloud (like SymPy 94 | documentation console), or even cnnecting to a locally running jupyter notebook 95 | server. 96 | 97 | 98 | 99 | ## C++ 100 | - [Doxygen](http://www.stack.nl/~dimitri/doxygen/) 101 | - [BoostBook](http://www.boost.org/doc/libs/1_62_0/doc/html/boostbook.html) and [QuickBook](http://www.boost.org/doc/libs/1_62_0/doc/html/quickbook.html) 102 | - [Breathe](https://breathe.readthedocs.io/en/latest/) for connecting Sphinx and Doxygen 103 | - [cldoc](https://jessevdk.github.io/cldoc/) — clang-based documentation generator 104 | 105 | 106 | # Guides and articles on technical communication 107 | --- 108 | 109 | These are resources for communicating clearly, particularly about technical matters. If you have a suggestion for a new resource, add a comment [here](https://github.com/BIDS/docathon/issues/5) 110 | 111 | ## Articles 112 | * Modern Physics' Guide to Writing Well - 113 | 114 | ## Web posts 115 | * 116 | * 117 | * 118 | * 119 | 120 | ## Videos 121 | * 122 | 123 | 124 | # Events / resources for holding events 125 | --- 126 | 127 | There are also many events that follow the same principles as the Docathon. We've compiled a list of them below. If you have a new event to suggest, post a comment [here](https://github.com/BIDS/docathon/issues/19) 128 | 129 | ## Hackathon Events / Orgs 130 | * [Hacktoberfest](https://hacktoberfest.digitalocean.com/) 131 | * [24PullRequests](https://24pullrequests.com/) 132 | * [Code Curiosity](https://codecuriosity.org/) 133 | * [National Novel Writing Month](http://nanowrimo.org/) 134 | * [Julython](http://www.julython.org/) 135 | 136 | ## Documentation Events / Orgs 137 | * [Write the Docs](http://www.writethedocs.org/) (they also have a "writing day" event, [here](http://www.writethedocs.org/conf/na/2015/writing-day/#projects) is a link to their projects page) 138 | * [The Open News Code Convening for docs on OSS](https://source.opennews.org/en-US/articles/building-guide-open-sourcing-newsroom-code/) 139 | * Open Stack doc day [here](https://www.openstack.org/blog/2011/04/dedicated-doc-day/) and [here](https://wiki.openstack.org/wiki/Documentation/DocDay) 140 | * [Atlassian documentation day](http://blogs.atlassian.com/2010/03/the_atlassian_doc_sprint_was_awesome/) 141 | 142 | ## Guides / How-To 143 | * [How to plan a doc sprint](https://ffeathers.wordpress.com/2012/09/07/how-to-plan-a-doc-sprint/) 144 | * [Learning from a doc sprint](https://ffeathers.wordpress.com/2016/01/17/learnings-from-a-doc-sprint/) 145 | * [Doc bug fixits](https://ffeathers.wordpress.com/2016/07/08/doc-bug-fixits-a-doc-sprint-to-fix-issues/) 146 | * [A twitter thread about docs/sprints](https://twitter.com/ericholscher/status/821429334879584256) 147 | -------------------------------------------------------------------------------- /blog/themes/theme/static/css/screen.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v2.0 | 20110126 3 | License: none (public domain) 4 | */ 5 | /* Mockingbird Theme by Nevan Scott nevanscott.com */ 6 | /* Modified by Jody Frankowski */ 7 | /* Modified by ix5 */ 8 | 9 | html, body, div, span, applet, object, iframe, 10 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 11 | a, abbr, acronym, address, big, cite, code, 12 | del, dfn, em, img, ins, kbd, q, s, samp, 13 | small, strike, strong, sub, sup, tt, var, 14 | b, u, i, center, 15 | dl, dt, dd, li, 16 | fieldset, form, label, legend, 17 | table, caption, tbody, tfoot, thead, tr, th, td, 18 | article, aside, canvas, details, embed, 19 | figure, figcaption, footer, header, hgroup, 20 | menu, nav, output, ruby, section, summary, 21 | time, mark, audio, video { 22 | margin: 0; 23 | padding: 0; 24 | border: 0; 25 | font-size: 100%; 26 | font: inherit; 27 | vertical-align: baseline; 28 | } 29 | em { 30 | font-style: italic; 31 | } 32 | strong { 33 | font-weight: bold; 34 | } 35 | /* HTML5 display-role reset for older browsers */ 36 | article, aside, details, figcaption, figure, 37 | footer, header, hgroup, menu, nav, section { 38 | display: block; 39 | } 40 | body { 41 | line-height: 1; 42 | } 43 | ol, ul { 44 | list-style: none; 45 | } 46 | blockquote, q { 47 | quotes: none; 48 | } 49 | blockquote:before, blockquote:after, 50 | q:before, q:after { 51 | content: ''; 52 | content: none; 53 | } 54 | table { 55 | border-collapse: collapse; 56 | border-spacing: 0; 57 | } 58 | 59 | body { 60 | font-family: Georgia, serif; 61 | font-size: 16px; 62 | line-height: 1.5em; 63 | color: #444; 64 | } 65 | 66 | header, #wrapper { 67 | padding: 0 10px; 68 | min-width: 700px; 69 | max-width: 1110px; 70 | margin: auto; 71 | } 72 | 73 | .offset-container { 74 | margin: 0; 75 | background-color: #f1f1f1; 76 | } 77 | 78 | 79 | .container { 80 | padding: 0 10px; 81 | min-width: 700px; 82 | max-width: 1110px; 83 | margin: auto; 84 | } 85 | 86 | .row { 87 | display: inline-block; 88 | } 89 | 90 | .span-3 { 91 | float: left; 92 | margin-left: 10px; 93 | min-height: 1px; 94 | width: 30%; 95 | } 96 | 97 | a { 98 | text-decoration: none; 99 | color: #15A9DB; 100 | } 101 | 102 | ul { 103 | list-style: outside disc; 104 | } 105 | 106 | ol { 107 | list-style: outside decimal; 108 | } 109 | 110 | h1, h2, h3, h4, h5, h6 { 111 | font-family: sans-serif; 112 | font-weight: bold; 113 | } 114 | h1, h2, h3 { 115 | font-size: 1.5em; 116 | line-height: 1em; 117 | margin: 1em 0; 118 | } 119 | 120 | img, p, .post > .highlight, .highlighttable, h4, h5, h6 { 121 | margin-top: 1.2em; 122 | } 123 | 124 | blockquote { 125 | margin: 1.5em 1.5em 1.5em .75em; 126 | padding-left: .75em; 127 | border-left: 1px solid #EEE; 128 | } 129 | 130 | .date { 131 | color: #CCC; 132 | float: left; 133 | clear: both; 134 | width: 130px; 135 | font-size: 1.5em; 136 | line-height: 1em; 137 | margin: 0 20px 1em 0; 138 | } 139 | 140 | .info { 141 | margin-top: 1.3em; 142 | font-family: sans-serif; 143 | text-align: right; 144 | color: #BBB; 145 | } 146 | .info a { 147 | color: inherit; 148 | } 149 | .info a.tags { 150 | background: #CCC; 151 | color: #FFF; 152 | display: inline-block; 153 | padding: 0 .3em; 154 | border: 1px transparent solid; 155 | border-radius: 5px; 156 | margin: 0 0 0.3em 0; 157 | } 158 | .info a.tags:hover { 159 | background: inherit; 160 | color: inherit; 161 | } 162 | .info a.tags.selected { 163 | border: 1px #999 solid; 164 | } 165 | 166 | .post { 167 | margin: 0 0 4.5em 150px; 168 | } 169 | .post.archives { 170 | margin-bottom: 1.5em; 171 | margin-left: 160px; 172 | } 173 | .post p { 174 | text-align: justify; 175 | } 176 | 177 | .page { 178 | margin: 0 90px; 179 | } 180 | 181 | .highlight { 182 | border-radius: 3px; 183 | } 184 | .code > .highlight { 185 | border-radius: 0px 3px 3px 0px; 186 | } 187 | .linenos { 188 | border-radius: 3px 0px 0px 3px; 189 | background-color: #073642; 190 | border-right: 1px solid #00232C; 191 | color: #586E75; 192 | text-shadow: 0px -1px #021014; 193 | } 194 | td.code { 195 | width: 100%; 196 | max-width: 100px; 197 | } 198 | .linenos a { 199 | color: #586E75; 200 | } 201 | 202 | img { 203 | box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.15); 204 | border-radius: 0.3em; 205 | max-width: 100%; 206 | display: block; 207 | margin-left: auto; 208 | margin-right: auto; 209 | } 210 | 211 | /*sub and sup stolen from Twitter bootstrap.*/ 212 | sub, sup { 213 | position: relative; 214 | font-size: 75%; 215 | line-height: 0; 216 | vertical-align: baseline; 217 | } 218 | 219 | sup { 220 | top: -0.5em; 221 | } 222 | 223 | sub { 224 | bottom: -0.25em; 225 | } 226 | 227 | .post pre, .page pre { 228 | padding: .8em; 229 | font-size: 12px; 230 | font-family: Monospace; 231 | line-height: 1.1em; 232 | overflow: auto; 233 | } 234 | 235 | form.inline_edit { 236 | clear: both; 237 | margin: 4.5em 0; 238 | background-color: #DDD; 239 | color: #000; 240 | padding: 20px; 241 | border-radius: 5px; 242 | } 243 | .inline_edit .sub { 244 | color: #888; 245 | white-space: nowrap; 246 | } 247 | .inline_edit label { 248 | float: left; 249 | clear: both; 250 | width: 140px; 251 | margin-right: 20px; 252 | } 253 | .inline_edit .buttons { 254 | display: block; 255 | text-align: right; 256 | } 257 | 258 | nav ul { 259 | float: right; 260 | list-style: none; 261 | margin: 0 0 0 3em; 262 | padding: 0; 263 | } 264 | nav li { 265 | float: left; 266 | } 267 | nav a { 268 | display: block; 269 | padding: 4.5em 10px 10px 10px; 270 | } 271 | nav a:hover { 272 | background-color: #d3d3d3; 273 | color: #FFF; 274 | } 275 | nav li.selected a { 276 | background-color: #15A9DB; 277 | color: #FFF; 278 | } 279 | 280 | header .header_box { 281 | padding-top: 4.5em; 282 | } 283 | header h1 { 284 | font-size: 1.5em; 285 | line-height: 1em; 286 | margin: 0; 287 | } 288 | header h2 { 289 | font-size: 1em; 290 | margin: .3em 0; 291 | color: #DDD; 292 | } 293 | 294 | #content { 295 | margin-top: 3em; 296 | } 297 | 298 | .pages { 299 | font-family: sans-serif; 300 | line-height: 2.5em; 301 | margin: 4.5em 0 3em; 302 | background-color: #F9F9F9; 303 | color: #444; 304 | border-radius: 5px; 305 | } 306 | .pages a.next_page { 307 | float: right; 308 | width: 140px; 309 | text-align: center; 310 | border-top-right-radius: 5px; 311 | border-bottom-right-radius: 5px; 312 | background-color: #EEE; 313 | } 314 | .pages a.prev_page { 315 | float: left; 316 | width: 140px; 317 | text-align: center; 318 | border-top-left-radius: 5px; 319 | border-bottom-left-radius: 5px; 320 | background-color: #EEE; 321 | } 322 | .pages a { 323 | color: inherit; 324 | border: none; 325 | } 326 | .pages a:hover { 327 | background-color: #DDD; 328 | } 329 | .pages span { 330 | display: block; 331 | margin: 0 160px; 332 | text-align: center; 333 | } 334 | 335 | code { 336 | background-color: #F9F2F4; 337 | border-bottom-left-radius: 4px; 338 | border-bottom-right-radius: 4px; 339 | border-top-left-radius: 4px; 340 | border-top-right-radius: 4px; 341 | box-sizing: border-box; 342 | color: #C7254E; 343 | font-family: Monaco,Menlo,Consolas,"Courier New",monospace; 344 | font-size: 12.6px; 345 | line-height: 18px; 346 | padding-bottom: 2px; 347 | padding-left: 4px; 348 | padding-right: 4px; 349 | padding-top: 2px; 350 | white-space: nowrap; 351 | } 352 | 353 | footer { 354 | font-family: sans-serif; 355 | line-height: 2.5em; 356 | text-align: center; 357 | color: #BBB; 358 | margin: 3em 0; 359 | border: 1px solid #EEE; 360 | border-radius: 5px; 361 | } 362 | footer p { margin: 0; } 363 | 364 | .right { float: right; } 365 | 366 | .clear { clear: both; } 367 | -------------------------------------------------------------------------------- /blog/content/pages/hosts/bids.md: -------------------------------------------------------------------------------- 1 | Title: BIDS 2 | Date: 2016-11-10 10:20 3 | Modified: 2016-11-10 18:40 4 | Tags: organization, docathon 5 | Category: info 6 | Slug: hosts/bids 7 | Authors: Nelle Varoquaux, Chris Holdgraf 8 | Summary: BIDS is hosting a Docathon! 9 | Status: hidden 10 | 11 | 12 | # Berkeley Institute for Data Science 13 | 14 | The Berkeley Institute for Data Science will be hosting a Docathon. The first 15 | day will be focused on tutorials and getting people started. We then will have 16 | daily meetings, and a last warp up event! 17 | 18 | ## Schedule for the week 19 | See a rough schedule for the week below. On the first day we'll have tutorials and talks about documentation in the morning. Each day, we'll take a few hours in the afternoon to hack together at BIDS, room 190B. 20 | 21 | 22 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 927 | 928 | 929 | 930 | 931 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 1004 | 1005 | 1006 | 1007 | 1008 | 1044 | 1045 | 1046 | 1047 | 1048 | 1084 | 1085 | 1086 | 1087 | 1088 | 1124 | 1125 | 1126 | 1127 | 1128 | 1164 | 1165 | 1166 | 1167 | 1168 | 1204 | 1205 | 1206 | 1207 | 1208 | 1244 | 1245 | 1246 | 1247 | 1248 | 1284 | 1285 | 1286 | 1287 | 1288 | 1324 | 1325 | 1326 | 1327 | 1328 | 1364 | 1365 | 1366 | 1367 | 1368 | 1404 | 1405 | 1406 | 1407 | 1408 | 1444 | 1445 | 1446 | 1447 | 1448 | 1484 | 1485 | 1486 | 1487 | 1488 | 1524 | 1525 | 1526 | 1527 | 1528 | 1564 | 1565 | 1566 | 1567 | 1568 | 1604 | 1605 | 1606 | 1607 | 1608 | 1644 | 1645 | 1646 | 1647 | 1648 | 1684 | 1685 | 1686 | 1687 | 1688 | 1724 | 1725 | 1726 | 1727 | 1728 | 1764 | 1765 | 1766 | 1767 | 1768 | 1804 | 1805 | 1806 | 1807 | 1808 | 1844 | 1845 | 1846 | 1847 | 1848 | 1884 | 1885 | 1886 | 1887 | 1888 | 1924 | 1925 | 1926 | 1927 | 1928 | 1964 | 1965 | 1966 | 1967 | 1968 | 2004 | 2005 | 2006 | 2007 | 2008 | 2044 | 2045 | 2046 | 2047 | 2048 | 2084 | 2085 | 2086 |
    898 | 899 | 900 | 901 | 902 | 903 | Monday, 3/6 904 | 905 | 906 | 907 | 908 | Tuesday, 3/7 909 | 910 | 911 | 912 | 913 | Wednesday, 3/8 914 | 915 | 916 | 917 | 918 | Thursday, 3/9 919 | 920 | 921 | 922 | 923 | Friday, 3/10 924 | 925 | 926 |
    932 | time 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 |
    970 | 10:00 971 | 972 | 973 | 974 | 976 | Welcome / Intro / Coffee 977 | 978 | 979 | 980 | 982 | -- 983 | 984 | 985 | 986 | 988 | -- 989 | 990 | 991 | 992 | 994 | -- 995 | 996 | 997 | 998 | 1000 | -- 1001 | 1002 | 1003 |
    1010 | 10:20 1011 | 1012 | 1013 | 1014 | 1016 | Documentation 101 1017 | 1018 | 1019 | 1020 | 1022 | -- 1023 | 1024 | 1025 | 1026 | 1028 | -- 1029 | 1030 | 1031 | 1032 | 1034 | -- 1035 | 1036 | 1037 | 1038 | 1040 | -- 1041 | 1042 | 1043 |
    1050 | 10:40 1051 | 1052 | 1053 | 1054 | 1056 | || 1057 | 1058 | 1059 | 1060 | 1062 | -- 1063 | 1064 | 1065 | 1066 | 1068 | -- 1069 | 1070 | 1071 | 1072 | 1074 | -- 1075 | 1076 | 1077 | 1078 | 1080 | -- 1081 | 1082 | 1083 |
    1090 | 11:00 1091 | 1092 | 1093 | 1094 | 1096 | Markdown and numpydoc 1097 | 1098 | 1099 | 1100 | 1102 | -- 1103 | 1104 | 1105 | 1106 | 1108 | -- 1109 | 1110 | 1111 | 1112 | 1114 | -- 1115 | 1116 | 1117 | 1118 | 1120 | -- 1121 | 1122 | 1123 |
    1130 | 11:20 1131 | 1132 | 1133 | 1134 | 1136 | Coffee Break 1137 | 1138 | 1139 | 1140 | 1142 | -- 1143 | 1144 | 1145 | 1146 | 1148 | -- 1149 | 1150 | 1151 | 1152 | 1154 | -- 1155 | 1156 | 1157 | 1158 | 1160 | -- 1161 | 1162 | 1163 |
    1170 | 11:40 1171 | 1172 | 1173 | 1174 | 1176 | sphinx gallery 1177 | 1178 | 1179 | 1180 | 1182 | -- 1183 | 1184 | 1185 | 1186 | 1188 | -- 1189 | 1190 | 1191 | 1192 | 1194 | -- 1195 | 1196 | 1197 | 1198 | 1200 | -- 1201 | 1202 | 1203 |
    1210 | 12:00 1211 | 1212 | 1213 | 1214 | 1216 | RMarkdown / Bookdown 1217 | 1218 | 1219 | 1220 | 1222 | -- 1223 | 1224 | 1225 | 1226 | 1228 | -- 1229 | 1230 | 1231 | 1232 | 1234 | -- 1235 | 1236 | 1237 | 1238 | 1240 | -- 1241 | 1242 | 1243 |
    1250 | 12:20 1251 | 1252 | 1253 | 1254 | 1256 | Travis and auto-building 1257 | 1258 | 1259 | 1260 | 1262 | -- 1263 | 1264 | 1265 | 1266 | 1268 | -- 1269 | 1270 | 1271 | 1272 | 1274 | -- 1275 | 1276 | 1277 | 1278 | 1280 | -- 1281 | 1282 | 1283 |
    1290 | 12:40 1291 | 1292 | 1293 | 1294 | 1296 | Lunch 1297 | 1298 | 1299 | 1300 | 1302 | -- 1303 | 1304 | 1305 | 1306 | 1308 | -- 1309 | 1310 | 1311 | 1312 | 1314 | -- 1315 | 1316 | 1317 | 1318 | 1320 | -- 1321 | 1322 | 1323 |
    1330 | 13:00 1331 | 1332 | 1333 | 1334 | 1336 | Organizing Projects 1337 | 1338 | 1339 | 1340 | 1342 | Docathon Updates 1343 | 1344 | 1345 | 1346 | 1348 | Docathon Updates 1349 | 1350 | 1351 | 1352 | 1354 | Docathon Updates 1355 | 1356 | 1357 | 1358 | 1360 | Docathon Updates 1361 | 1362 | 1363 |
    1370 | 13:20 1371 | 1372 | 1373 | 1374 | 1376 | || 1377 | 1378 | 1379 | 1380 | 1382 | Hacking time! 1383 | 1384 | 1385 | 1386 | 1388 | Hacking time! 1389 | 1390 | 1391 | 1392 | 1394 | Hacking time! 1395 | 1396 | 1397 | 1398 | 1400 | working 1401 | 1402 | 1403 |
    1410 | 13:40 1411 | 1412 | 1413 | 1414 | 1416 | Hacking time! 1417 | 1418 | 1419 | 1420 | 1422 | || 1423 | 1424 | 1425 | 1426 | 1428 | || 1429 | 1430 | 1431 | 1432 | 1434 | || 1435 | 1436 | 1437 | 1438 | 1440 | || 1441 | 1442 | 1443 |
    1450 | 14:00 1451 | 1452 | 1453 | 1454 | 1456 | || 1457 | 1458 | 1459 | 1460 | 1462 | || 1463 | 1464 | 1465 | 1466 | 1468 | || 1469 | 1470 | 1471 | 1472 | 1474 | || 1475 | 1476 | 1477 | 1478 | 1480 | || 1481 | 1482 | 1483 |
    1490 | 14:20 1491 | 1492 | 1493 | 1494 | 1496 | || 1497 | 1498 | 1499 | 1500 | 1502 | || 1503 | 1504 | 1505 | 1506 | 1508 | || 1509 | 1510 | 1511 | 1512 | 1514 | || 1515 | 1516 | 1517 | 1518 | 1520 | || 1521 | 1522 | 1523 |
    1530 | 14:40 1531 | 1532 | 1533 | 1534 | 1536 | || 1537 | 1538 | 1539 | 1540 | 1542 | || 1543 | 1544 | 1545 | 1546 | 1548 | || 1549 | 1550 | 1551 | 1552 | 1554 | || 1555 | 1556 | 1557 | 1558 | 1560 | || 1561 | 1562 | 1563 |
    1570 | 15:00 1571 | 1572 | 1573 | 1574 | 1576 | Coffee Break 1577 | 1578 | 1579 | 1580 | 1582 | Coffee Break 1583 | 1584 | 1585 | 1586 | 1588 | Coffee Break 1589 | 1590 | 1591 | 1592 | 1594 | Coffee Break 1595 | 1596 | 1597 | 1598 | 1600 | || 1601 | 1602 | 1603 |
    1610 | 15:20 1611 | 1612 | 1613 | 1614 | 1616 | || 1617 | 1618 | 1619 | 1620 | 1622 | || 1623 | 1624 | 1625 | 1626 | 1628 | || 1629 | 1630 | 1631 | 1632 | 1634 | || 1635 | 1636 | 1637 | 1638 | 1640 | || 1641 | 1642 | 1643 |
    1650 | 15:40 1651 | 1652 | 1653 | 1654 | 1656 | || 1657 | 1658 | 1659 | 1660 | 1662 | || 1663 | 1664 | 1665 | 1666 | 1668 | || 1669 | 1670 | 1671 | 1672 | 1674 | || 1675 | 1676 | 1677 | 1678 | 1680 | || 1681 | 1682 | 1683 |
    1690 | 16:00 1691 | 1692 | 1693 | 1694 | 1696 | || 1697 | 1698 | 1699 | 1700 | 1702 | || 1703 | 1704 | 1705 | 1706 | 1708 | || 1709 | 1710 | 1711 | 1712 | 1714 | || 1715 | 1716 | 1717 | 1718 | 1720 | || 1721 | 1722 | 1723 |
    1730 | 16:20 1731 | 1732 | 1733 | 1734 | 1736 | || 1737 | 1738 | 1739 | 1740 | 1742 | || 1743 | 1744 | 1745 | 1746 | 1748 | || 1749 | 1750 | 1751 | 1752 | 1754 | || 1755 | 1756 | 1757 | 1758 | 1760 | || 1761 | 1762 | 1763 |
    1770 | 16:40 1771 | 1772 | 1773 | 1774 | 1776 | || 1777 | 1778 | 1779 | 1780 | 1782 | || 1783 | 1784 | 1785 | 1786 | 1788 | || 1789 | 1790 | 1791 | 1792 | 1794 | || 1795 | 1796 | 1797 | 1798 | 1800 | || 1801 | 1802 | 1803 |
    1810 | 17:00 1811 | 1812 | 1813 | 1814 | 1816 | || 1817 | 1818 | 1819 | 1820 | 1822 | || 1823 | 1824 | 1825 | 1826 | 1828 | || 1829 | 1830 | 1831 | 1832 | 1834 | || 1835 | 1836 | 1837 | 1838 | 1840 | Party time! 1841 | 1842 | 1843 |
    1850 | 17:20 1851 | 1852 | 1853 | 1854 | 1856 | || 1857 | 1858 | 1859 | 1860 | 1862 | || 1863 | 1864 | 1865 | 1866 | 1868 | || 1869 | 1870 | 1871 | 1872 | 1874 | || 1875 | 1876 | 1877 | 1878 | 1880 | || 1881 | 1882 | 1883 |
    1890 | 17:40 1891 | 1892 | 1893 | 1894 | 1896 | Wrapup / Recap 1897 | 1898 | 1899 | 1900 | 1902 | Wrapup / Recap 1903 | 1904 | 1905 | 1906 | 1908 | Wrapup / Recap 1909 | 1910 | 1911 | 1912 | 1914 | Wrapup / Recap 1915 | 1916 | 1917 | 1918 | 1920 | || 1921 | 1922 | 1923 |
    1930 | 18:00 1931 | 1932 | 1933 | 1934 | 1936 | || 1937 | 1938 | 1939 | 1940 | 1942 | || 1943 | 1944 | 1945 | 1946 | 1948 | || 1949 | 1950 | 1951 | 1952 | 1954 | || 1955 | 1956 | 1957 | 1958 | 1960 | || 1961 | 1962 | 1963 |
    1970 | 19:00 1971 | 1972 | 1973 | 1974 | 1976 | -- 1977 | 1978 | 1979 | 1980 | 1982 | Hacker Within 1983 | 1984 | 1985 | 1986 | 1988 | -- 1989 | 1990 | 1991 | 1992 | 1994 | -- 1995 | 1996 | 1997 | 1998 | 2000 | -- 2001 | 2002 | 2003 |
    2010 | 20:00 2011 | 2012 | 2013 | 2014 | 2016 | -- 2017 | 2018 | 2019 | 2020 | 2022 | || 2023 | 2024 | 2025 | 2026 | 2028 | -- 2029 | 2030 | 2031 | 2032 | 2034 | -- 2035 | 2036 | 2037 | 2038 | 2040 | -- 2041 | 2042 | 2043 |
    2050 | 21:00 2051 | 2052 | 2053 | 2054 | 2056 | -- 2057 | 2058 | 2059 | 2060 | 2062 | || 2063 | 2064 | 2065 | 2066 | 2068 | -- 2069 | 2070 | 2071 | 2072 | 2074 | -- 2075 | 2076 | 2077 | 2078 | 2080 | -- 2081 | 2082 | 2083 |
    2087 | 2088 | 2089 | ## Wrap up event 2090 | 2091 | We will finally wrap up this week of Docathon with a small get together where we can 2092 | share the progress made on your favorite project's documentation! 2093 | BIDS will provide food and drinks. 2094 | 2095 | ## How to get to BIDS? 2096 | 2097 | You'd like to join us, but you are not familiar with Berkeley's campus? No worries. 2098 | You can find instructions on how to find us here: 2099 | https://bids.berkeley.edu/about/directions-and-travel 2100 | 2101 | ## Projects tackled at BIDS? 2102 | 2103 | Here are the projects that we plan on working on during the Docathon: 2104 | - party parrot etherpad integration 2105 | 2106 | If you'd like to propose a project, please register here and create a pull request 2107 | to add the project to the list here. 2108 | --------------------------------------------------------------------------------