--- /dev/null
+bin/
+lib/
+lib64
+pyvenv.cfg
+pip-selfcheck.json
+__pycache__/
+
+output/
\ No newline at end of file
--- /dev/null
+PY?=python3
+PELICAN?=pelican
+PELICANOPTS=
+
+BASEDIR=$(CURDIR)
+INPUTDIR=$(BASEDIR)/content
+OUTPUTDIR=$(BASEDIR)/output
+CONFFILE=$(BASEDIR)/pelicanconf.py
+PUBLISHCONF=$(BASEDIR)/publishconf.py
+
+FTP_HOST=localhost
+FTP_USER=anonymous
+FTP_TARGET_DIR=/
+
+SSH_HOST=localhost
+SSH_PORT=22
+SSH_USER=root
+SSH_TARGET_DIR=/var/www
+
+S3_BUCKET=my_s3_bucket
+
+CLOUDFILES_USERNAME=my_rackspace_username
+CLOUDFILES_API_KEY=my_rackspace_api_key
+CLOUDFILES_CONTAINER=my_cloudfiles_container
+
+DROPBOX_DIR=~/Dropbox/Public/
+
+GITHUB_PAGES_BRANCH=gh-pages
+
+DEBUG ?= 0
+ifeq ($(DEBUG), 1)
+ PELICANOPTS += -D
+endif
+
+RELATIVE ?= 0
+ifeq ($(RELATIVE), 1)
+ PELICANOPTS += --relative-urls
+endif
+
+help:
+ @echo 'Makefile for a pelican Web site '
+ @echo ' '
+ @echo 'Usage: '
+ @echo ' make html (re)generate the web site '
+ @echo ' make clean remove the generated files '
+ @echo ' make regenerate regenerate files upon modification '
+ @echo ' make publish generate using production settings '
+ @echo ' make serve [PORT=8000] serve site at http://localhost:8000'
+ @echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
+ @echo ' make devserver [PORT=8000] start/restart develop_server.sh '
+ @echo ' make stopserver stop local server '
+ @echo ' make ssh_upload upload the web site via SSH '
+ @echo ' make rsync_upload upload the web site via rsync+ssh '
+ @echo ' make dropbox_upload upload the web site via Dropbox '
+ @echo ' make ftp_upload upload the web site via FTP '
+ @echo ' make s3_upload upload the web site via S3 '
+ @echo ' make cf_upload upload the web site via Cloud Files'
+ @echo ' make github upload the web site via gh-pages '
+ @echo ' '
+ @echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
+ @echo 'Set the RELATIVE variable to 1 to enable relative urls '
+ @echo ' '
+
+html:
+ $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
+
+clean:
+ [ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
+
+regenerate:
+ $(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
+
+serve:
+ifdef PORT
+ cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT)
+else
+ cd $(OUTPUTDIR) && $(PY) -m pelican.server
+endif
+
+serve-global:
+ifdef SERVER
+ cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 $(SERVER)
+else
+ cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 0.0.0.0
+endif
+
+
+devserver:
+ifdef PORT
+ $(BASEDIR)/develop_server.sh restart $(PORT)
+else
+ $(BASEDIR)/develop_server.sh restart
+endif
+
+stopserver:
+ $(BASEDIR)/develop_server.sh stop
+ @echo 'Stopped Pelican and SimpleHTTPServer processes running in background.'
+
+publish:
+ $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
+
+ssh_upload: publish
+ scp -P $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
+
+rsync_upload: publish
+ rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude
+
+dropbox_upload: publish
+ cp -r $(OUTPUTDIR)/* $(DROPBOX_DIR)
+
+ftp_upload: publish
+ lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
+
+s3_upload: publish
+ s3cmd sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl-public --delete-removed --guess-mime-type
+
+cf_upload: publish
+ cd $(OUTPUTDIR) && swift -v -A https://auth.api.rackspacecloud.com/v1.0 -U $(CLOUDFILES_USERNAME) -K $(CLOUDFILES_API_KEY) upload -c $(CLOUDFILES_CONTAINER) .
+
+github: publish
+ ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR)
+ git push origin $(GITHUB_PAGES_BRANCH)
+
+.PHONY: html help clean regenerate serve serve-global devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github
--- /dev/null
+Title: Blanchard's Dangerous Idea and the Engines of Delusion
+Date: 2016-09-04 5:00
+Category: trans
+
+Ray Blanchard proposed that there are two distinct etiologies for MtF transsexualism: the primary type are males who behave extremely effeminately from early childhood in a way that is obvious to everyone, grow up to be attracted to men, and transition in their late teens because they find it easier to fit into society as women than as super-femme gay men. The second type, more common in Western countries, were fairly typical as boys but after puberty somehow develop autogynephilia, a kind of misdirected ordinary heterosexuality in which in addition to wanting to get the girl, they want to, ah, be the girl.
\ No newline at end of file
--- /dev/null
+#!/usr/bin/env bash
+##
+# This section should match your Makefile
+##
+PY=${PY:-python3}
+PELICAN=${PELICAN:-pelican}
+PELICANOPTS=
+
+BASEDIR=$(pwd)
+INPUTDIR=$BASEDIR/content
+OUTPUTDIR=$BASEDIR/output
+CONFFILE=$BASEDIR/pelicanconf.py
+
+###
+# Don't change stuff below here unless you are sure
+###
+
+SRV_PID=$BASEDIR/srv.pid
+PELICAN_PID=$BASEDIR/pelican.pid
+
+function usage(){
+ echo "usage: $0 (stop) (start) (restart) [port]"
+ echo "This starts Pelican in debug and reload mode and then launches"
+ echo "an HTTP server to help site development. It doesn't read"
+ echo "your Pelican settings, so if you edit any paths in your Makefile"
+ echo "you will need to edit your settings as well."
+ exit 3
+}
+
+function alive() {
+ kill -0 $1 >/dev/null 2>&1
+}
+
+function shut_down(){
+ PID=$(cat $SRV_PID)
+ if [[ $? -eq 0 ]]; then
+ if alive $PID; then
+ echo "Stopping HTTP server"
+ kill $PID
+ else
+ echo "Stale PID, deleting"
+ fi
+ rm $SRV_PID
+ else
+ echo "HTTP server PIDFile not found"
+ fi
+
+ PID=$(cat $PELICAN_PID)
+ if [[ $? -eq 0 ]]; then
+ if alive $PID; then
+ echo "Killing Pelican"
+ kill $PID
+ else
+ echo "Stale PID, deleting"
+ fi
+ rm $PELICAN_PID
+ else
+ echo "Pelican PIDFile not found"
+ fi
+}
+
+function start_up(){
+ local port=$1
+ echo "Starting up Pelican and HTTP server"
+ shift
+ $PELICAN --debug --autoreload -r $INPUTDIR -o $OUTPUTDIR -s $CONFFILE $PELICANOPTS &
+ pelican_pid=$!
+ echo $pelican_pid > $PELICAN_PID
+ cd $OUTPUTDIR
+ $PY -m pelican.server $port &
+ srv_pid=$!
+ echo $srv_pid > $SRV_PID
+ cd $BASEDIR
+ sleep 1
+ if ! alive $pelican_pid ; then
+ echo "Pelican didn't start. Is the Pelican package installed?"
+ return 1
+ elif ! alive $srv_pid ; then
+ echo "The HTTP server didn't start. Is there another service using port" $port "?"
+ return 1
+ fi
+ echo 'Pelican and HTTP server processes now running in background.'
+}
+
+###
+# MAIN
+###
+[[ ($# -eq 0) || ($# -gt 2) ]] && usage
+port=''
+[[ $# -eq 2 ]] && port=$2
+
+if [[ $1 == "stop" ]]; then
+ shut_down
+elif [[ $1 == "restart" ]]; then
+ shut_down
+ start_up $port
+elif [[ $1 == "start" ]]; then
+ if ! start_up $port; then
+ shut_down
+ fi
+else
+ usage
+fi
--- /dev/null
+from fabric.api import *
+import fabric.contrib.project as project
+import os
+import shutil
+import sys
+import SocketServer
+
+from pelican.server import ComplexHTTPRequestHandler
+
+# Local path configuration (can be absolute or relative to fabfile)
+env.deploy_path = 'output'
+DEPLOY_PATH = env.deploy_path
+
+# Remote server configuration
+production = 'root@localhost:22'
+dest_path = '/var/www'
+
+# Rackspace Cloud Files configuration settings
+env.cloudfiles_username = 'my_rackspace_username'
+env.cloudfiles_api_key = 'my_rackspace_api_key'
+env.cloudfiles_container = 'my_cloudfiles_container'
+
+# Github Pages configuration
+env.github_pages_branch = "gh-pages"
+
+# Port for `serve`
+PORT = 8000
+
+def clean():
+ """Remove generated files"""
+ if os.path.isdir(DEPLOY_PATH):
+ shutil.rmtree(DEPLOY_PATH)
+ os.makedirs(DEPLOY_PATH)
+
+def build():
+ """Build local version of site"""
+ local('pelican -s pelicanconf.py')
+
+def rebuild():
+ """`clean` then `build`"""
+ clean()
+ build()
+
+def regenerate():
+ """Automatically regenerate site upon file modification"""
+ local('pelican -r -s pelicanconf.py')
+
+def serve():
+ """Serve site at http://localhost:8000/"""
+ os.chdir(env.deploy_path)
+
+ class AddressReuseTCPServer(SocketServer.TCPServer):
+ allow_reuse_address = True
+
+ server = AddressReuseTCPServer(('', PORT), ComplexHTTPRequestHandler)
+
+ sys.stderr.write('Serving on port {0} ...\n'.format(PORT))
+ server.serve_forever()
+
+def reserve():
+ """`build`, then `serve`"""
+ build()
+ serve()
+
+def preview():
+ """Build production version of site"""
+ local('pelican -s publishconf.py')
+
+def cf_upload():
+ """Publish to Rackspace Cloud Files"""
+ rebuild()
+ with lcd(DEPLOY_PATH):
+ local('swift -v -A https://auth.api.rackspacecloud.com/v1.0 '
+ '-U {cloudfiles_username} '
+ '-K {cloudfiles_api_key} '
+ 'upload -c {cloudfiles_container} .'.format(**env))
+
+@hosts(production)
+def publish():
+ """Publish to production via rsync"""
+ local('pelican -s publishconf.py')
+ project.rsync_project(
+ remote_dir=dest_path,
+ exclude=".DS_Store",
+ local_dir=DEPLOY_PATH.rstrip('/') + '/',
+ delete=True,
+ extra_opts='-c',
+ )
+
+def gh_pages():
+ """Publish to GitHub Pages"""
+ rebuild()
+ local("ghp-import -b {github_pages_branch} {deploy_path}".format(**env))
+ local("git push origin {github_pages_branch}".format(**env))
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*- #
+from __future__ import unicode_literals
+
+AUTHOR = 'M. Taylor Saotome-Westlake'
+SITENAME = 'The Scintillating But Ultimately Untrue Thought'
+SITEURL = ''
+
+PATH = 'content'
+
+TIMEZONE = 'America/New_York'
+
+DEFAULT_LANG = 'en'
+
+# Feed generation is usually not desired when developing
+FEED_ALL_ATOM = None
+CATEGORY_FEED_ATOM = None
+TRANSLATION_FEED_ATOM = None
+AUTHOR_FEED_ATOM = None
+AUTHOR_FEED_RSS = None
+
+# Blogroll
+LINKS = (
+ ('On the Science of Changing Sex', "https://sillyolme.wordpress.com/"),
+ ('Third Way Trans', "https://thirdwaytrans.com/"),
+)
+
+DEFAULT_PAGINATION = 12
+
+ARTICLE_URL = '{date:%Y}/{date:%b}/{slug}/'
+ARTICLE_SAVE_AS = '{date:%Y}/{date:%b}/{slug}/index.html'
+
+THEME = 'theme'
+
+# Uncomment following line if you want document-relative URLs when developing
+#RELATIVE_URLS = True
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*- #
+from __future__ import unicode_literals
+
+# This file is only used if you use `make publish` or
+# explicitly specify it as your config file.
+
+import os
+import sys
+sys.path.append(os.curdir)
+from pelicanconf import *
+
+SITEURL = 'ultimatelyuntruethought.space'
+RELATIVE_URLS = False
+
+FEED_ALL_ATOM = 'feeds/all.atom.xml'
+CATEGORY_FEED_ATOM = 'feeds/%s.atom.xml'
+
+DELETE_OUTPUT_DIRECTORY = True
+
+# Following items are often useful when publishing
+
+#DISQUS_SITENAME = ""
+#GOOGLE_ANALYTICS = ""
--- /dev/null
+/*
+Colors :
+- #40403F
+- #4D4D4C
+- #7F7F7E
+- #E5E5E3
+- #F0F0F0
+*/
+
+/* Imports */
+
+@import url("pygment.css");
+
+
+/* Latout */
+
+article,
+figcaption,
+figure,
+footer,
+header,
+nav,
+section,
+time {
+ display: block;
+}
+
+html {
+ font-size: 100%;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+}
+body {
+ font-family: 'Source Sans Pro', sans-serif;
+ font-size: 16px;
+ line-height: 150%;
+ text-align: left;
+ color: #4D4D4C;
+ padding: 0;
+ min-width: 740px;
+}
+
+header {
+ background-color: #40403F;
+ height: 50px;
+ line-height: 50px;
+ padding: 0 1em;
+}
+
+.wrapper {
+ display: table;
+ width: 100%;
+}
+
+.content {
+ display: table-cell;
+ border-left: 1px solid #d6d6d6;
+ border-right: 1px dotted #D6D6D6;
+ padding: 0 20px 1em 20px;
+}
+
+.sidebar {
+ display: table-cell;
+ width: 25%;
+ border-right: 1px solid #d6d6d6;
+ padding: 0 20px 1em 20px;
+}
+
+footer {
+ border-top: 1px dotted #D6D6D6;
+ line-height: 30px;
+ padding: 0 1em;
+ font-size: 0.8em;
+}
+
+
+/* Header */
+
+header a {
+ color: #E5E5E3;
+ border-bottom: none;
+}
+
+header a.title {
+ font-size: 1.25em;
+}
+
+header .feeds {
+ float: right;
+ text-align: right;
+ width: 25%;
+ height: 41px;
+ padding-top: 9px;
+}
+
+header .feeds a {
+ display: block;
+ float: right;
+ padding-right: 5px;
+ width: 40px;
+}
+
+header .feeds a:hover,
+header .feeds a:active {
+ border-bottom: none;
+}
+
+header .pages {
+ float: right;
+}
+
+header .pages a {
+ font-size: 1.1em;
+}
+
+
+/* Sidebar */
+
+
+/* Titles */
+
+h1, h2, h3, h4, h5, h6 {
+ font-family: "Source Sans Pro",sans-serif;
+ font-weight: 400;
+ text-shadow: 0.1em 0.1em 0.1em #EFEFEF;
+ line-height: 125%;
+}
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+ padding: 0.7em 0 0.3em;
+}
+
+h1 a {
+ color: inherit;
+ border-bottom: none;
+}
+
+
+/* Texts */
+
+p {
+ margin: 0.8em 0 0.5em;
+}
+
+a {
+ text-decoration: none;
+ border-bottom: 1px dotted #4D4D4C;
+ color: #4D4D4C;
+}
+
+a:hover, a:active {
+ text-decoration: none;
+ border-bottom: 1px dotted #4271AE;
+ color: #4271AE;
+}
+
+.literal {
+ font-size: 0.9em;
+ border: 1px solid #F0F0F0;
+ padding: 0px 5px;
+}
+
+pre {
+ font-family: 'Source Code Pro',monospace;
+ background: none repeat scroll 0 0 #F0F0F0;
+ border-radius: 2px;
+ font-size: 0.9em;
+ font-style: normal;
+ letter-spacing: 0.015em;
+ line-height: 130%;
+ padding: 0.7em;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+hr {
+ margin: 40px 5% 60px 5%;
+ color: #d6d6d6;
+ box-shadow: 0.1em 0.1em 0.1em #EFEFEF;
+ border-radius: 5px;
+}
+
+
+/* Article */
+
+article.summary {
+ margin-bottom: 40px;
+ clear: both;
+}
+
+article.summary > div {
+ margin-left: 28%;
+}
+
+article.full .metadata,
+article.summary .metadata {
+ padding: 1%;
+ border: 1px dotted #EFEFEF;
+ box-shadow: 0.1em 0.1em 0.1em #EFEFEF;
+ font-style: italic;
+}
+
+article.full .metadata {
+ width: 25%;
+ float: right;
+ margin: 0 0 2% 1%;
+}
+
+article.summary .metadata {
+ width: 23%;
+ float: left;
+ margin: 0 1% 2% 0 ;
+}
+
+.metadata p {
+ margin: 0;
+}
+
+/* Listings */
+
+ol.archive li {
+ margin: 8px 0;
+}
+
+ol.archive li time,
+ol.archive li .tags
+ {
+ line-height: 140%;
+ font-size: 0.8em;
+ margin: 0;
+}
+
+
+/* Social */
+
+.social {
+ list-style-type: none;
+ padding-left: 20px;
+}
+
+.social li {
+ clear: both;
+}
+
+.social a {}
+
+.social i {
+ float: left;
+ margin-right: 3px;
+ padding-top: 4px;
+}
+.social a[href*='twitter.com'] + i:before {content: url('../images/icons/twitter-18px.png'); }
+.social a[href*='linkedin.com'] + i:before {content: url('../images/icons/linkedin-18px.png'); }
+.social a[href*='github.com'] + i:before {content: url('../images/icons/github-18px.png'); }
+.social a[href*='google.com'] + i:before {content: url('../images/icons/google-18px.png'); }
+.social a[href*='delicious.com']:before {content: url('../images/icons/delicious-18px.png'); }
+.social a[href*='digg.com']:before {content: url('../images/icons/digg-18px.png'); }
+.social a[href*='facebook.com']:before {content: url('../images/icons/facebook-18px.png'); }
+.social a[href*='stackoverflow.com']:before {content: url('../images/icons/stackoverfow-18px.png'); }
+.social a[href*='rss.xml']:before {content: url('../images/icons/feed-18px.png'); }
+.social a[href*='atom.xml']:before {content: url('../images/icons/feed-18px.png'); }
+
+
+/* Tag cloud */
+
+ul.tagcloud {
+ list-style: none;
+ padding: 0;
+ width: 50%;
+ margin: 0 auto;
+ line-height: 200%;
+}
+
+ul.tagcloud li {
+ display: inline-block;
+}
+
+li.tag-1 { font-size: 175%; margin: 0 1em; }
+li.tag-2 { font-size: 150%; margin: 0 1em; }
+li.tag-3 { font-size: 125%; margin: 0 1em; }
+li.tag-4 { font-size: 110%; margin: 0 1em; }
+
+/* Pagination */
+
+.pagination {
+ width: 100px;
+ margin: 1em auto;
+}
+
+/* Responsive */
+
+@media (min-width: 1280px) {
+ body {
+ margin: 0 16%;
+ }
+}
+
+@media (max-width: 1280px) {
+ body {
+ margin: 0 12%;
+ }
+}
+
+@media (max-width: 979px) {
+ body {
+ margin: 0 4%;
+ }
+}
+
--- /dev/null
+.hll {
+background-color:#FFFFCC;
+}
+.c {
+color:#408090;
+font-style:italic;
+}
+.err {
+border:1px solid #FF0000;
+}
+.k {
+color:#007020;
+font-weight:bold;
+}
+.o {
+color:#666666;
+}
+.cm {
+color:#408090;
+font-style:italic;
+}
+.cp {
+color:#007020;
+}
+.c1 {
+color:#408090;
+font-style:italic;
+}
+.cs {
+background-color:#FFF0F0;
+color:#408090;
+}
+.gd {
+color:#A00000;
+}
+.ge {
+font-style:italic;
+}
+.gr {
+color:#FF0000;
+}
+.gh {
+color:#000080;
+font-weight:bold;
+}
+.gi {
+color:#00A000;
+}
+.go {
+color:#303030;
+}
+.gp {
+color:#C65D09;
+font-weight:bold;
+}
+.gs {
+font-weight:bold;
+}
+.gu {
+color:#800080;
+font-weight:bold;
+}
+.gt {
+color:#0040D0;
+}
+.kc {
+color:#007020;
+font-weight:bold;
+}
+.kd {
+color:#007020;
+font-weight:bold;
+}
+.kn {
+color:#007020;
+font-weight:bold;
+}
+.kp {
+color:#007020;
+}
+.kr {
+color:#007020;
+font-weight:bold;
+}
+.kt {
+color:#902000;
+}
+.m {
+color:#208050;
+}
+.s {
+color:#4070A0;
+}
+.na {
+color:#4070A0;
+}
+.nb {
+color:#007020;
+}
+.nc {
+color:#0E84B5;
+font-weight:bold;
+}
+.no {
+color:#60ADD5;
+}
+.nd {
+color:#555555;
+font-weight:bold;
+}
+.ni {
+color:#D55537;
+font-weight:bold;
+}
+.ne {
+color:#007020;
+}
+.nf {
+color:#06287E;
+}
+.nl {
+color:#002070;
+font-weight:bold;
+}
+.nn {
+color:#0E84B5;
+font-weight:bold;
+}
+.nt {
+color:#062873;
+font-weight:bold;
+}
+.nv {
+color:#BB60D5;
+}
+.ow {
+color:#007020;
+font-weight:bold;
+}
+.w {
+color:#BBBBBB;
+}
+.mf {
+color:#208050;
+}
+.mh {
+color:#208050;
+}
+.mi {
+color:#208050;
+}
+.mo {
+color:#208050;
+}
+.sb {
+color:#4070A0;
+}
+.sc {
+color:#4070A0;
+}
+.sd {
+color:#4070A0;
+font-style:italic;
+}
+.s2 {
+color:#4070A0;
+}
+.se {
+color:#4070A0;
+font-weight:bold;
+}
+.sh {
+color:#4070A0;
+}
+.si {
+color:#70A0D0;
+font-style:italic;
+}
+.sx {
+color:#C65D09;
+}
+.sr {
+color:#235388;
+}
+.s1 {
+color:#4070A0;
+}
+.ss {
+color:#517918;
+}
+.bp {
+color:#007020;
+}
+.vc {
+color:#BB60D5;
+}
+.vg {
+color:#BB60D5;
+}
+.vi {
+color:#BB60D5;
+}
+.il {
+color:#208050;
+}
--- /dev/null
+{% extends "base.html" %}
+{% block title %}{{ article.title }} - {{ SITENAME }}{% endblock %}
+
+{% block extra_meta %}
+
+ <meta name="description" content="{{ article.summary|striptags }}">
+
+{% if PELICAN_SIMPLEGREY_TWITTER_CARD_ACCOUNT %}
+ <meta name="twitter:card" content="summary">
+ <meta name="twitter:creator" content="@{{ PELICAN_SIMPLEGREY_TWITTER_CARD_ACCOUNT }}">
+ <meta name="twitter:title" content="{{ article.title }}">
+ <meta name="twitter:description" content="{{ article.summary|striptags }}">
+ <meta name="twitter:url" content="{{ SITEURL }}/{{ article.url }}">
+{% endif %}
+{% endblock %}
+
+
+{% block content %}
+ <article class="full">
+
+ <h1>{{ article.title }}</h1>
+
+ {% include 'metadata.inc.html' %}
+
+ {{ article.content }}
+
+ </article>
+
+ <p>
+ <a href="https://twitter.com/share" class="twitter-share-button" data-via="{{ TWITTER_USERNAME }}" data-lang="en" data-size="large" data-related="{{ TWITTER_USERNAME }}">Tweet</a>
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
+ </p>
+
+ {% if DISQUS_SITENAME %}
+ <div class="comments">
+ <h2>Comments !</h2>
+ <div id="disqus_thread"></div>
+ <script type="text/javascript">
+ var disqus_identifier = "{{ article.url }}";
+ (function() {
+ var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+ dsq.src = 'http://{{ DISQUS_SITENAME }}.disqus.com/embed.js';
+ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+ })();
+ </script>
+ </div>
+ {% endif %}
+
+{% endblock %}
\ No newline at end of file
--- /dev/null
+<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title}}">{{ article.title }}</a>
+ <time datetime="{{ article.date.isoformat() }}" pubdate>{{ article.locale_date }}</time>
+ {% if article.tags %}<p class="tags">tags: {% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>{% endfor %}</p>{% endif %}
+</a>
--- /dev/null
+<article class="summary">
+ {% include 'metadata.inc.html' %}
+ <div>
+ <h2>
+ <a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title}}">{{ article.title }}</a>
+ </h2>
+ <p>{{ article.summary }}</p>
+ </div>
+</article>
--- /dev/null
+{% extends "base.html" %}
+{% block title %}{{ author }} - {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>Posts published by: {{ author }}</h1>
+
+{% for article in articles_page.object_list %}
+ {% include 'article_summary.inc.html' %}
+{% endfor %}
+
+{% include 'pagination.inc.html' %}
+
+{% endblock %}
--- /dev/null
+<!doctype html>
+<html lang="{{ HTML_LANG }}">
+<head>
+ <meta charset="utf-8"/>
+ <title>{% block title %}{{ SITENAME }}{%endblock%}</title>
+ <meta name="author" content="{{ AUTHOR }}">
+
+ {% block extra_meta %}
+ {% endblock %}
+
+ <link rel="top" href="#" /><link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,300italic,400italic,600italic|Source+Code+Pro' rel='stylesheet' type='text/css'></link>
+ <link rel="stylesheet" href="{{ SITEURL }}/theme/css/{{ CSS_FILE }}" type="text/css" />
+
+ {% block scripts %}
+ {% endblock %}
+
+ {% if FEED_ALL_ATOM %}
+ <link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
+ {% endif %}
+ {% if FEED_ALL_RSS %}
+ <link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
+ {% endif %}
+</head>
+
+<body>
+{{ FEED_ATOM }}
+ <div class="container">
+
+ <header role="banner">
+ <div class="feeds">
+ {% if FEED_ALL_ATOM %}
+ <a href="{{ SITEURL }}/{{ FEED_ALL_ATOM }}" rel="alternate"><img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/icons/feed-32px.png" alt="atom feed"/></a>
+ {% endif %}
+ {% if FEED_ALL_RSS %}
+ <a href="{{ SITEURL }}/{{ FEED_ALL_RSS }}" rel="alternate"><img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/icons/feed-32px.png" alt="rss feed"/></a>
+ {% endif %}
+ </div>
+ {% if PAGES %}
+ <nav class="pages">
+ {% for p in PAGES %}
+ <a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a>
+ {% if not loop.last %}-{% endif %}
+ {% endfor %}
+ </nav>
+ {% endif %}
+ <a href="{{ SITEURL }}" class="title">{{ SITENAME }}</a>
+ </header>
+
+ <div class="wrapper">
+
+ <div role="main" class="content">
+ {% block content %}{% endblock %}
+ </div>
+
+ <div class="sidebar">
+
+ <nav>
+ <h2>Categories</h2>
+ <ul>
+ {% for cat, null in categories %}
+ <li {% if cat == category %}class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
+ {% endfor %}
+ </ul>
+ </nav>
+
+ {% if SOCIAL %}
+ <aside>
+ <h2>Social</h2>
+ <ul class="social">
+ {% for name, link in SOCIAL %}
+ <li><a href="{{ link }}">{{ name }}</a><i></i></li>
+ {% endfor %}
+ </ul>
+ </aside>
+ {% endif %}
+
+ {% if LINKS %}
+ <aside>
+ <h2>Blogroll</h2>
+ <ul>
+ {% for name, link in LINKS %}
+ <li><a href="{{ link }}">{{ name }}</a></li>
+ {% endfor %}
+ </ul>
+ </aside>
+ {% endif %}
+
+ </div>
+
+ </div>
+
+ <footer>
+ <p role="contentinfo">
+ ©2016 {{ AUTHOR }} • Proudly powered by <a href="http://alexis.notmyidea.org/pelican/">pelican</a>. Theme modified from <a href="https://github.com/fle/pelican-simplegrey">pelican-simplegrey</a>.
+ </p>
+
+ </footer>
+
+ </div>
+
+ {% if GOOGLE_ANALYTICS %}
+ <script>
+ var _gaq=[['_setAccount','{{ GOOGLE_ANALYTICS }}'],['_trackPageview']];
+ (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
+ g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
+ s.parentNode.insertBefore(g,s)}(document,'script'));
+ </script>
+ {% endif %}
+
+</body>
+</html>
--- /dev/null
+{% extends "base.html" %}
+{% block title %}{{ category }} - {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>Posts categorized under: {{ category }}</h1>
+
+{% for article in articles_page.object_list %}
+ {% include 'article_summary.inc.html' %}
+{% endfor %}
+
+{% include 'pagination.inc.html' %}
+
+{% endblock %}
--- /dev/null
+{% extends "base.html" %}
+{% block content_title %}{% endblock %}
+
+{% block content %}
+
+{% for article in articles %}
+
+ {% if loop.index == 1 %}
+
+ <article>
+ <h1><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></h1>
+ {{ article.content }}
+ </article>
+
+ <hr />
+
+ {% if loop.length > 1 %}
+ <div>
+ <h3>Last posts</h3>
+ <ol class="archive">
+ {% endif %}
+
+ {% elif loop.index < 7 %}
+ <li>
+ {% include 'article_link.inc.html' %}
+ </li>
+ {% endif %}
+
+{% endfor %}
+
+{% if articles|length > 1 %}
+ </ol>
+ </div>
+{% endif %}
+
+{% endblock content %}
--- /dev/null
+<div class="metadata">
+ <time datetime="{{ article.date.isoformat() }}" pubdate>{{ article.locale_date }}</time>
+ {% if article.author %}
+ <address class="vcard author">
+ by <a class="url fn" href="{{ SITEURL }}/{{ article.author.url }}">{{ article.author }}</a>
+ </address>
+ {% endif %}
+ in <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>
+ {% if article.tags %}<p class="tags">tagged {% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>{% if not loop.last%}, {% endif %}{% endfor %}</p>{% endif %}
+ {% if PDF_PROCESSOR %}<p><a href="{{ SITEURL }}/pdf/{{ article.slug }}.pdf">Download the .pdf</a></p>{% endif %}
+</div>
--- /dev/null
+{% extends "base.html" %}
+{% block title %}{{ page.title }}- {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>{{ page.title }}</h1>
+{{ page.content }}
+
+{% endblock %}
\ No newline at end of file
--- /dev/null
+{% if DEFAULT_PAGINATION %}
+<div class="pagination">
+ {% if articles_page.has_previous() %}
+ {% if articles_page.previous_page_number() == 1 %}
+ <a href="{{ SITEURL }}/{{ page_name }}.html">«</a>
+ {% else %}
+ <a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.previous_page_number() }}.html">«</a>
+ {% endif %}
+ {% endif %}
+ Page {{ articles_page.number }} / {{ articles_paginator.num_pages }}
+ {% if articles_page.has_next() %}
+ <a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.next_page_number() }}.html">»</a>
+ {% endif %}
+</div>
+{% endif %}
--- /dev/null
+{% extends "base.html" %}
+{% block title %}{{ tag }} - {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>Post tagged: {{ tag }}</h1>
+
+{% for article in articles_page.object_list %}
+ {% include 'article_summary.inc.html' %}
+{% endfor %}
+
+{% include 'pagination.inc.html' %}
+
+{% endblock %}
\ No newline at end of file
--- /dev/null
+{% extends "base.html" %}
+{% block title %}{{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>Tags</h1>
+
+<ul class="tagcloud">
+ {% for tag in tag_cloud %}
+ <li class="tag-{{ tag.1 }}"><a href="{{ SITEURL }}/{{ tag.0.url }}">{{ tag.0 }}</a></li>
+ {% endfor %}
+</ul>
+
+{% endblock %}