From 578bcd4824fbb42d185b6a4c5a7dd4c0c7b1cdc3 Mon Sep 17 00:00:00 2001
From: Russell Ballestrini
Date: Sat, 11 Oct 2025 16:46:16 +0000
Subject: [PATCH] Move table of contents to bottom in 12 blog posts and add
append script
---
append_toc.py | 78 +++++++++++++++++++
...rymores-stole-my-heart-then-crushed-it.rst | 2 +
...1-four2go-a-new-spin-on-an-old-classic.rst | 2 +
...-a-homegrown-python-bread-crumb-module.rst | 2 +
...id-stack-overflow-get-initial-traction.rst | 2 +
...rhouse-wacom-bamboo-ubuntu-and-mypaint.rst | 2 +
...-purchase-chinese-food-takeout-for-two.rst | 2 +
...o-l-theanine-a-4000-year-old-mind-hack.rst | 2 +
...-backup-utility-for-kvm-xen-virtualbox.rst | 4 +-
...haostheory-wordpress-theme-to-pylowiki.rst | 2 +
...011-04-03-voice-over-ip-with-teamspeak.rst | 2 +
...4-16-dropbox-encryption-with-truecrypt.rst | 2 +
...led-affliate-marketing-with-amazon-com.rst | 2 +
...oadband-led-flashes-red-intermittently.rst | 2 +
...-attempts-to-crawl-shortest-urls-first.rst | 2 +
...a-pyramid-project-using-4-simple-steps.rst | 2 +
...ficiency-when-creating-github-projects.rst | 2 +
content/2011-08-07-the-great-gist-heist.rst | 2 +
...2011-08-08-programming-is-like-alchemy.rst | 2 +
...08-10-virt-back-restoring-from-backups.rst | 2 +
...t-that-attack-vector-will-never-happen.rst | 2 +
...2011-08-22-python-image-grabber-pig-py.rst | 2 +
...iberating-the-viewers-vs-doers-concept.rst | 2 +
...intaining-multiple-python-environments.rst | 4 +-
...e-oil-lamp-crafted-from-home-materials.rst | 2 +
content/2011-09-27-new-baby-homecoming.rst | 2 +
...-01-how-do-i-calculate-the-m-in-my-mvp.rst | 2 +
...eb-address-thumbnail-api-alpha-release.rst | 2 +
...not-rendering-properly-on-all-browsers.rst | 2 +
...a-better-way-to-show-website-backlinks.rst | 2 +
...ncelled-my-xbox-live-automatic-renewal.rst | 2 +
...-ubuntu-11-10-upgrade-kernel-linux-3-0.rst | 2 +
...ketched-skull-and-wind-mill-photograph.rst | 2 +
...line-image-support-to-a-gmail-messages.rst | 2 +
...0-21-occupy-wall-street-stack-vs-queue.rst | 2 +
...out-pylon-session-files-flooded-inodes.rst | 2 +
...rified-of-launching-my-web-application.rst | 2 +
...opment-is-a-game-of-chutes-and-ladders.rst | 2 +
...configuration-in-a-pyramid-application.rst | 2 +
...linkpeek-com-number-one-on-hacker-news.rst | 2 +
...12-flash-mob-office-meeting-definition.rst | 2 +
...-com-webpage-to-image-was-a-by-product.rst | 2 +
.../2012-01-18-today-i-lost-a-customer.rst | 2 +
...tities-might-want-secure-communication.rst | 2 +
...-confidentiality-and-message-integrity.rst | 2 +
...-02-13-attributes-of-an-8-block-cipher.rst | 2 +
...c-cipher-and-inverse-written-in-python.rst | 6 +-
...ic-encryption-vs-public-key-encryption.rst | 2 +
...ge-integrity-then-an-internet-checksum.rst | 2 +
content/2012-02-14-block-cipher-lab.rst | 2 +
...-16-my-4-month-olds-15-minutes-of-fame.rst | 2 +
content/2012-02-18-jake.rst | 2 +
...sing-client-certificate-authentication.rst | 2 +
...e-https-ssl-tls-packets-with-wireshark.rst | 2 +
...-on-groceries-without-clipping-coupons.rst | 2 +
...hat-do-you-name-your-python-virtualenv.rst | 2 +
...he-deaf-dog-as-he-walked-off-the-cliff.rst | 2 +
...earch-cname-is-a-bad-idea-and-solution.rst | 2 +
...g-filesystem-on-kvm-guest-after-reboot.rst | 2 +
...-all-i-got-was-this-lousy-image-filter.rst | 2 +
...ration-field-how-did-you-hear-about-us.rst | 2 +
...-a-failed-citrix-netscaler-app-gateway.rst | 2 +
...-from-ubuntu-10-04-to-ubuntu-12-04-lts.rst | 2 +
...ways-attempt-to-scale-vertically-first.rst | 2 +
...n-program-from-running-to-long-in-bash.rst | 2 +
...oper-creating-a-new-product-or-service.rst | 2 +
...miniuri-parser-and-ago-human-timedelta.rst | 2 +
...-importance-of-test-driven-development.rst | 2 +
...012-10-02-explaining-cache-with-python.rst | 2 +
...phone-battery-without-needing-passcode.rst | 2 +
...ips-for-getting-pull-requests-approved.rst | 5 +-
...-human-readable-timedelta0-0-4-release.rst | 2 +
...ction-arguments-in-python-using-lambda.rst | 2 +
...er-class-returns-doms-from-libvirt-api.rst | 2 +
...pped-tornado-python-tulip-and-pep-3156.rst | 2 +
...4-09-automatic-event-hangout-with-cron.rst | 2 +
content/2013-04-26-survey-baby-monkey.rst | 2 +
...5-26-honey-i-just-deleted-linkpeek-com.rst | 2 +
...ftbukkit-compared-to-vanilla-minecraft.rst | 2 +
...files-using-pillar-and-jinja-templates.rst | 2 +
...vers-with-digital-ocean-and-salt-cloud.rst | 2 +
...g-salt-stack-user-and-group-management.rst | 2 +
...uration-management-vs-remote-execution.rst | 2 +
...collection-in-configuration-management.rst | 2 +
.../2013-10-17-postfix-salt-state-formula.rst | 2 +
...ify-deployments-with-upstart-and-uwsgi.rst | 2 +
...-smartos-hypervisor-with-smart-back-sh.rst | 2 +
...13-12-13-hackathon-2013-virtualization.rst | 2 +
content/2013-12-17-sensu-salt.rst | 2 +
content/2013-12-20-heka-world.rst | 2 +
...-test-game-engine-with-python-and-sfml.rst | 2 +
...two-seagate-240g-ssds-as-smartos-l2arc.rst | 2 +
...r-and-password-settings-with-ipmitools.rst | 2 +
...three-deployment-management-strategies.rst | 2 +
content/2014-02-07-automatic-backups.rst | 2 +
content/2014-02-07-mysql-back.rst | 2 +
content/2014-02-07-tar-back.rst | 2 +
...ration-management-and-the-golden-image.rst | 2 +
...ios-scheduler-and-nrpe-with-salt-stack.rst | 2 +
...3-filter-salt-stack-return-data-output.rst | 2 +
...ned-remote-executions-using-salt-stack.rst | 2 +
...tbleed-openssl-defect-libssl-on-ubuntu.rst | 2 +
...tent-errors-with-upstream-wsgi-servers.rst | 2 +
.../2014-05-15-you-can-hack-on-freenas-9.rst | 2 +
...lpile-salt-states-for-ubuntu-or-debian.rst | 2 +
content/2014-08-23-heka-world2.rst | 2 +
content/2014-09-18-rabbits.rst | 2 +
content/2014-09-18-reality-shattered.rst | 2 +
...grating-mongodb-from-ubuntu-to-smartos.rst | 2 +
...ot-password-smartos-percona-mysql-zone.rst | 2 +
...urn-python-dict-into-a-keyvalue-string.rst | 2 +
...1-13-dealing-with-pagination-in-python.rst | 2 +
...build-release-pipelines-on-s3-with-s3p.rst | 2 +
...rundeck-hipchat-notification-templates.rst | 2 +
...1-autofs-net-automount-stopped-working.rst | 2 +
.../2015-01-10-risk-process-and-balance.rst | 2 +
...er-password-on-postgresql-smartos-zone.rst | 2 +
...jenkins-build-artifacts-on-salt-master.rst | 2 +
...tting-region-programmatically-in-boto3.rst | 2 +
...libvirt-kvm-guest-to-smartos-kvm-guest.rst | 2 +
...ch-searches-for-available-interpreters.rst | 2 +
...guest-apt-get-not-working-because-ipv6.rst | 2 +
...ay-on-all-smartos-zones-and-kvm-guests.rst | 2 +
content/2015-06-21-my-mentor.rst | 2 +
...07-01-working-with-botocores-awsconfig.rst | 2 +
...-02-filtering-aws-resources-with-boto3.rst | 2 +
...-all-installed-package-names-in-python.rst | 2 +
.../2015-10-16-boto3-get-main-route-table.rst | 2 +
...15-migrating-from-wordpress-to-pelican.rst | 5 +-
content/2015-11-29-bind9-on-joyent-triton.rst | 2 +
.../2015-12-16-set-dns-resolver-options.rst | 2 +
...ance-identifiers-of-an-aws-vpc-to-json.rst | 2 +
...-swallow-lots-of-air-will-i-be-lighter.rst | 2 +
...atic-hostname-for-rhel-centos-7-on-aws.rst | 2 +
...st-systemd-service-script-and-override.rst | 2 +
...a-pyramid-cookie-with-flask-or-tornado.rst | 2 +
...powers-with-pyramid-add-request-method.rst | 2 +
...kages-for-nodejs-using-jenkins-and-fpm.rst | 2 +
...16-12-18-capability-driven-resentation.rst | 5 +-
...-503-maintenance-json-for-all-requests.rst | 2 +
content/2017-03-21-minikube.rst | 4 +-
...2017-03-23-selenium-grid-on-kubernetes.rst | 4 +-
...fect-alternative-hosted-comment-system.rst | 2 +
.../2017-10-22-so-you-are-planning-a-beta.rst | 2 +
...ocker-in-as-many-languages-as-possible.rst | 4 +-
...from-home-the-road-to-remote-chapter-1.rst | 2 +
...3-16-fulfilling-childhood-dreams-solar.rst | 4 +-
...ckstart-to-dkim-sign-email-with-python.rst | 2 +
...onsole-script-with-transaction-manager.rst | 2 +
...-local-service-container-on-circleci-2.rst | 2 +
...3-all-local-heros-need-a-gig-side-kick.rst | 2 +
...-get-and-post-for-digital-ocean-spaces.rst | 2 +
.../2019-09-25-installing-unity-on-linux.rst | 2 +
...lder-freenas-version-on-update-failure.rst | 2 +
...because-of-invalid-ca-certificate-path.rst | 2 +
...limited-home-computer-storage-capacity.rst | 2 +
...9-15-weechat-on-boot-in-a-tmux-session.rst | 2 +
...o-install-gitlab-on-truenas-and-failed.rst | 2 +
...r-operator-notes-quickstart-cheatsheet.rst | 4 +-
...-and-make-post-sell-into-public-domain.rst | 2 +
...gitlab-server-for-as-cheap-as-possible.rst | 2 +
...th-note-asking-u-to-cl0ne-ubuntu22-kvm.rst | 2 +
...-ubuntu-22-04-letsencrypt-docker-hints.rst | 2 +
...y-and-park-from-source-on-fedora-linux.rst | 2 +
.../2024-02-04-installing-yacy-on-ubuntu.rst | 2 +
...agement-for-plausible-docker-on-ubuntu.rst | 2 +
...ause-functionality-in-luckey-park-game.rst | 2 +
...ating-openai-with-dry-sample-chat-game.rst | 2 +
...-python-performance-with-openai-client.rst | 2 +
...phoenix-performance-with-openai-client.rst | 2 +
...-exploring-battleship-board-generation.rst | 2 +
...21-free-hermes-ai-unturf-com-uncloseai.rst | 2 +
...buted-model-inference-client-uncloseai.rst | 2 +
content/2025-03-21-introducing-slop.rst | 4 +-
...and-modding-multimower-with-dry-engine.rst | 7 +-
...engine-codebase-millions-lines-of-code.rst | 4 +-
176 files changed, 429 insertions(+), 35 deletions(-)
create mode 100644 append_toc.py
diff --git a/append_toc.py b/append_toc.py
new file mode 100644
index 0000000..6e63009
--- /dev/null
+++ b/append_toc.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+"""
+Append table of contents directive to RST files that don't have one.
+
+This script:
+1. Finds all .rst files in content/ directory
+2. Checks if they already have .. contents::
+3. Appends proper whitespace and .. contents:: to files without it
+4. Reports which files were modified
+"""
+
+import os
+import sys
+from pathlib import Path
+
+
+def has_toc(content):
+ """Check if file already has a table of contents directive."""
+ return '.. contents::' in content
+
+
+def append_toc(filepath):
+ """Append TOC directive to file with proper whitespace."""
+ with open(filepath, 'r', encoding='utf-8') as f:
+ content = f.read()
+
+ # Check if already has TOC
+ if has_toc(content):
+ return False
+
+ # Ensure file ends with newline
+ if not content.endswith('\n'):
+ content += '\n'
+
+ # Add blank line and TOC directive
+ content += '\n.. contents::\n'
+
+ # Write back to file
+ with open(filepath, 'w', encoding='utf-8') as f:
+ f.write(content)
+
+ return True
+
+
+def main():
+ content_dir = Path('content')
+
+ if not content_dir.exists():
+ print("Error: content/ directory not found")
+ sys.exit(1)
+
+ # Find all RST files
+ rst_files = sorted(content_dir.glob('*.rst'))
+
+ modified_files = []
+ skipped_files = []
+
+ for filepath in rst_files:
+ if append_toc(filepath):
+ modified_files.append(filepath.name)
+ print(f"✓ Added TOC to: {filepath.name}")
+ else:
+ skipped_files.append(filepath.name)
+
+ # Summary
+ print(f"\n{'='*60}")
+ print(f"Modified: {len(modified_files)} files")
+ print(f"Skipped (already has TOC): {len(skipped_files)} files")
+ print(f"{'='*60}")
+
+ if modified_files:
+ print("\nModified files:")
+ for filename in modified_files:
+ print(f" - {filename}")
+
+
+if __name__ == '__main__':
+ main()
diff --git a/content/2010-11-30-the-barrymores-stole-my-heart-then-crushed-it.rst b/content/2010-11-30-the-barrymores-stole-my-heart-then-crushed-it.rst
index d613968..c7174b4 100644
--- a/content/2010-11-30-the-barrymores-stole-my-heart-then-crushed-it.rst
+++ b/content/2010-11-30-the-barrymores-stole-my-heart-then-crushed-it.rst
@@ -53,3 +53,5 @@ still seems active and continues to hosts a few of the bands tracks.
Sorry about the bummer, but you should still give the music a listen.
+
+.. contents::
diff --git a/content/2010-12-31-four2go-a-new-spin-on-an-old-classic.rst b/content/2010-12-31-four2go-a-new-spin-on-an-old-classic.rst
index a6f8e08..ef434fa 100644
--- a/content/2010-12-31-four2go-a-new-spin-on-an-old-classic.rst
+++ b/content/2010-12-31-four2go-a-new-spin-on-an-old-classic.rst
@@ -99,3 +99,5 @@ yourself!
.. |four2go! logo| image:: /uploads/2010/12/four2go.png
.. |gumyum logo| image:: /uploads/2010/12/gumyumgameslogo.png
+
+.. contents::
diff --git a/content/2011-01-02-a-homegrown-python-bread-crumb-module.rst b/content/2011-01-02-a-homegrown-python-bread-crumb-module.rst
index c1fb63b..10ce6df 100644
--- a/content/2011-01-02-a-homegrown-python-bread-crumb-module.rst
+++ b/content/2011-01-02-a-homegrown-python-bread-crumb-module.rst
@@ -22,3 +22,5 @@ steps `
You should follow me on twitter `here `_
+
+.. contents::
diff --git a/content/2011-01-05-how-did-stack-overflow-get-initial-traction.rst b/content/2011-01-05-how-did-stack-overflow-get-initial-traction.rst
index ccddcec..ee7112b 100644
--- a/content/2011-01-05-how-did-stack-overflow-get-initial-traction.rst
+++ b/content/2011-01-05-how-did-stack-overflow-get-initial-traction.rst
@@ -36,3 +36,5 @@ Did I miss any reasons? Feel free to comment below.
You should follow me on twitter `here `__
+
+.. contents::
diff --git a/content/2011-01-09-graphic-design-powerhouse-wacom-bamboo-ubuntu-and-mypaint.rst b/content/2011-01-09-graphic-design-powerhouse-wacom-bamboo-ubuntu-and-mypaint.rst
index d54b959..c6ed0df 100644
--- a/content/2011-01-09-graphic-design-powerhouse-wacom-bamboo-ubuntu-and-mypaint.rst
+++ b/content/2011-01-09-graphic-design-powerhouse-wacom-bamboo-ubuntu-and-mypaint.rst
@@ -55,3 +55,5 @@ software!
:target: /uploads/2011/01/treeman1.png
:class: wordwrap-right
:width: 300
+
+.. contents::
diff --git a/content/2011-01-10-i-just-used-google-to-purchase-chinese-food-takeout-for-two.rst b/content/2011-01-10-i-just-used-google-to-purchase-chinese-food-takeout-for-two.rst
index be66a81..4fe17e2 100644
--- a/content/2011-01-10-i-just-used-google-to-purchase-chinese-food-takeout-for-two.rst
+++ b/content/2011-01-10-i-just-used-google-to-purchase-chinese-food-takeout-for-two.rst
@@ -44,3 +44,5 @@ You should follow me on twitter
`here `__.
.. |china-food| image:: /uploads/2011/01/food1.jpg
+
+.. contents::
diff --git a/content/2011-01-11-response-to-l-theanine-a-4000-year-old-mind-hack.rst b/content/2011-01-11-response-to-l-theanine-a-4000-year-old-mind-hack.rst
index 12b3739..3afeda8 100644
--- a/content/2011-01-11-response-to-l-theanine-a-4000-year-old-mind-hack.rst
+++ b/content/2011-01-11-response-to-l-theanine-a-4000-year-old-mind-hack.rst
@@ -41,3 +41,5 @@ You should follow me on twitter `here `__.
.. |dream-solving| image:: /uploads/2011/01/dream.jpg
:target: /uploads/2011/01/dream.jpg
:class: wordwrap-left
+
+.. contents::
diff --git a/content/2011-03-20-virt-back-a-python-libvirt-backup-utility-for-kvm-xen-virtualbox.rst b/content/2011-03-20-virt-back-a-python-libvirt-backup-utility-for-kvm-xen-virtualbox.rst
index 8d332ab..695f3ea 100644
--- a/content/2011-03-20-virt-back-a-python-libvirt-backup-utility-for-kvm-xen-virtualbox.rst
+++ b/content/2011-03-20-virt-back-a-python-libvirt-backup-utility-for-kvm-xen-virtualbox.rst
@@ -10,8 +10,6 @@ virt-back: a python libvirt backup utility for kvm xen virtualbox
|image0|
-.. contents::
-
**Over the weekend I wrote virt-back, a backup utility for QEMU, KVM,
XEN, or Virtualbox guests.**
@@ -108,4 +106,4 @@ Restoring
.. |image0| image:: /uploads/2011/03/virt-back.png
-
+.. contents::
diff --git a/content/2011-03-26-porting-the-chaostheory-wordpress-theme-to-pylowiki.rst b/content/2011-03-26-porting-the-chaostheory-wordpress-theme-to-pylowiki.rst
index 8109d32..587c6a4 100644
--- a/content/2011-03-26-porting-the-chaostheory-wordpress-theme-to-pylowiki.rst
+++ b/content/2011-03-26-porting-the-chaostheory-wordpress-theme-to-pylowiki.rst
@@ -23,3 +23,5 @@ porting ChaosTheory. You can view the finished product at
You should also give Pylowiki a try. Pylowiki has futuristic, live
preview, same page, section edit functionality.
+
+.. contents::
diff --git a/content/2011-04-03-voice-over-ip-with-teamspeak.rst b/content/2011-04-03-voice-over-ip-with-teamspeak.rst
index e73275f..6a0afcf 100644
--- a/content/2011-04-03-voice-over-ip-with-teamspeak.rst
+++ b/content/2011-04-03-voice-over-ip-with-teamspeak.rst
@@ -101,3 +101,5 @@ Place the following into teamspeak's crontab:
::
@reboot /opt/teamspeak/ts3server_startscript.sh start
+
+.. contents::
diff --git a/content/2011-04-16-dropbox-encryption-with-truecrypt.rst b/content/2011-04-16-dropbox-encryption-with-truecrypt.rst
index a9cee2b..e838d07 100644
--- a/content/2011-04-16-dropbox-encryption-with-truecrypt.rst
+++ b/content/2011-04-16-dropbox-encryption-with-truecrypt.rst
@@ -57,3 +57,5 @@ You should follow me on twitter
`here `_
.. |onion| image:: /uploads/2011/04/onion.png
+
+.. contents::
diff --git a/content/2011-06-11-connecticut-killed-affliate-marketing-with-amazon-com.rst b/content/2011-06-11-connecticut-killed-affliate-marketing-with-amazon-com.rst
index 2b9ef0a..e33592f 100644
--- a/content/2011-06-11-connecticut-killed-affliate-marketing-with-amazon-com.rst
+++ b/content/2011-06-11-connecticut-killed-affliate-marketing-with-amazon-com.rst
@@ -81,3 +81,5 @@ When I checked my email, I had this letter from Amazon.com:
- This smells like double taxation.
- One more reason to move out of Connecticut when looking for Tech or
IT jobs.
+
+.. contents::
diff --git a/content/2011-06-18-att-uverse-residential-gateway-broadband-led-flashes-red-intermittently.rst b/content/2011-06-18-att-uverse-residential-gateway-broadband-led-flashes-red-intermittently.rst
index f034ef7..5ebee53 100644
--- a/content/2011-06-18-att-uverse-residential-gateway-broadband-led-flashes-red-intermittently.rst
+++ b/content/2011-06-18-att-uverse-residential-gateway-broadband-led-flashes-red-intermittently.rst
@@ -64,3 +64,5 @@ the faulty splitter.
.. |uverse link errors| image:: /uploads/2011/06/uverse-dsl-link-errors.jpg
.. |old uverse splitter| image:: /uploads/2011/06/old-splitter.jpg
.. |new uverse splitter| image:: /uploads/2011/06/new-splitter.jpg
+
+.. contents::
diff --git a/content/2011-06-25-google-bot-attempts-to-crawl-shortest-urls-first.rst b/content/2011-06-25-google-bot-attempts-to-crawl-shortest-urls-first.rst
index 8aaa0e1..f2df81b 100644
--- a/content/2011-06-25-google-bot-attempts-to-crawl-shortest-urls-first.rst
+++ b/content/2011-06-25-google-bot-attempts-to-crawl-shortest-urls-first.rst
@@ -46,3 +46,5 @@ means?**
.. |school.yohdah.com.graph| image:: /uploads/2011/06/school.yohdah.com_.graph_.png
:target: /uploads/2011/06/school.yohdah.com_.graph_.png
+
+.. contents::
diff --git a/content/2011-07-02-add-a-breadcrumb-subscriber-to-a-pyramid-project-using-4-simple-steps.rst b/content/2011-07-02-add-a-breadcrumb-subscriber-to-a-pyramid-project-using-4-simple-steps.rst
index 2adce76..919884b 100644
--- a/content/2011-07-02-add-a-breadcrumb-subscriber-to-a-pyramid-project-using-4-simple-steps.rst
+++ b/content/2011-07-02-add-a-breadcrumb-subscriber-to-a-pyramid-project-using-4-simple-steps.rst
@@ -54,3 +54,5 @@ snippet:
% for link in request.bread.links:
${ link | n } /
% endfor
+
+.. contents::
diff --git a/content/2011-07-11-a-hack-to-gain-80-percent-efficiency-when-creating-github-projects.rst b/content/2011-07-11-a-hack-to-gain-80-percent-efficiency-when-creating-github-projects.rst
index 55b329b..81220f3 100644
--- a/content/2011-07-11-a-hack-to-gain-80-percent-efficiency-when-creating-github-projects.rst
+++ b/content/2011-07-11-a-hack-to-gain-80-percent-efficiency-when-creating-github-projects.rst
@@ -48,3 +48,5 @@ only my name was shorter... LOL
You should follow me on twitter `here `_
.. |image0| image:: /uploads/2011/07/80-percent-github-hack.png
+
+.. contents::
diff --git a/content/2011-08-07-the-great-gist-heist.rst b/content/2011-08-07-the-great-gist-heist.rst
index 83ad742..a634def 100644
--- a/content/2011-08-07-the-great-gist-heist.rst
+++ b/content/2011-08-07-the-great-gist-heist.rst
@@ -43,3 +43,5 @@ torrent.
At the peak of the scrape I had 14 threads running of the script, using
approximately 580Kbps (I used iftop).
+
+.. contents::
diff --git a/content/2011-08-08-programming-is-like-alchemy.rst b/content/2011-08-08-programming-is-like-alchemy.rst
index cae8f9d..3491151 100644
--- a/content/2011-08-08-programming-is-like-alchemy.rst
+++ b/content/2011-08-08-programming-is-like-alchemy.rst
@@ -54,3 +54,5 @@ Thanks for reading, you should follow me on twitter `here `_
.. |Viewers vs Doers Lecture| image:: /uploads/2011/09/lecture-viewers-vs-doers.jpg
+
+.. contents::
diff --git a/content/2011-09-08-a-system-administrators-guide-to-installing-and-maintaining-multiple-python-environments.rst b/content/2011-09-08-a-system-administrators-guide-to-installing-and-maintaining-multiple-python-environments.rst
index de556ad..e8b2fcc 100644
--- a/content/2011-09-08-a-system-administrators-guide-to-installing-and-maintaining-multiple-python-environments.rst
+++ b/content/2011-09-08-a-system-administrators-guide-to-installing-and-maintaining-multiple-python-environments.rst
@@ -7,8 +7,6 @@ A system administrators guide to installing and maintaining multiple python envi
:slug: a-system-administrators-guide-to-installing-and-maintaining-multiple-python-environments
:status: published
-.. contents::
-
Some operating systems depend on a specific version of python to
function properly. For example, Yum on Redhat Enterprise Linux 5 (RHEL5)
depends on python 2.4.3. This version of python lacks support from many
@@ -113,3 +111,5 @@ python site-packages directory.
Now you can run easy_install to install packages into virtpy/lib/python2.7/site-packages.
**Thanks for reading, that's all for now.**
+
+.. contents::
diff --git a/content/2011-09-09-hacker-olive-oil-lamp-crafted-from-home-materials.rst b/content/2011-09-09-hacker-olive-oil-lamp-crafted-from-home-materials.rst
index da4229d..35ed35c 100644
--- a/content/2011-09-09-hacker-olive-oil-lamp-crafted-from-home-materials.rst
+++ b/content/2011-09-09-hacker-olive-oil-lamp-crafted-from-home-materials.rst
@@ -54,3 +54,5 @@ In loom of the recent and persisting hurricane season I present a
[gallery link="file"]
.. |image0| image:: /uploads/2011/09/hacker-olive-oil-lamp.jpg
+
+.. contents::
diff --git a/content/2011-09-27-new-baby-homecoming.rst b/content/2011-09-27-new-baby-homecoming.rst
index 6313ad8..b5ef18b 100644
--- a/content/2011-09-27-new-baby-homecoming.rst
+++ b/content/2011-09-27-new-baby-homecoming.rst
@@ -10,3 +10,5 @@ New Baby Homecoming
|image0|
.. |image0| image:: /uploads/2011/09/RJ-and-Carter.jpg
+
+.. contents::
diff --git a/content/2011-10-01-how-do-i-calculate-the-m-in-my-mvp.rst b/content/2011-10-01-how-do-i-calculate-the-m-in-my-mvp.rst
index 4304aa1..ac83cfc 100644
--- a/content/2011-10-01-how-do-i-calculate-the-m-in-my-mvp.rst
+++ b/content/2011-10-01-how-do-i-calculate-the-m-in-my-mvp.rst
@@ -42,3 +42,5 @@ create live web page thumbnails. We provide the API free of charge,
think of LinkPeek as Gravatar for web addresses.
Have I missed any other market segments?
+
+.. contents::
diff --git a/content/2011-10-05-linkpeek-com-web-address-thumbnail-api-alpha-release.rst b/content/2011-10-05-linkpeek-com-web-address-thumbnail-api-alpha-release.rst
index a8bc32f..75b093f 100644
--- a/content/2011-10-05-linkpeek-com-web-address-thumbnail-api-alpha-release.rst
+++ b/content/2011-10-05-linkpeek-com-web-address-thumbnail-api-alpha-release.rst
@@ -18,3 +18,5 @@ The `LinkPeek `__ API had an alpha release!
LinkPeek is a website screenshot service. Convert any webpage to an
image. No software, no downloading and absolutely no waiting! Unlimited
free 140 pixel thumbnails!
+
+.. contents::
diff --git a/content/2011-10-11-css-frameworks-not-rendering-properly-on-all-browsers.rst b/content/2011-10-11-css-frameworks-not-rendering-properly-on-all-browsers.rst
index afcf23b..bea3a6c 100644
--- a/content/2011-10-11-css-frameworks-not-rendering-properly-on-all-browsers.rst
+++ b/content/2011-10-11-css-frameworks-not-rendering-properly-on-all-browsers.rst
@@ -26,3 +26,5 @@ document type:
This doctype tag forces the broswer into standards mode which allows the pages to render properly.
Thanks!
+
+.. contents::
diff --git a/content/2011-10-12-a-better-way-to-show-website-backlinks.rst b/content/2011-10-12-a-better-way-to-show-website-backlinks.rst
index 31a5c33..3603f08 100644
--- a/content/2011-10-12-a-better-way-to-show-website-backlinks.rst
+++ b/content/2011-10-12-a-better-way-to-show-website-backlinks.rst
@@ -19,3 +19,5 @@ to gather an improved representation of backlinks.
`Click here to try
now! `__
+
+.. contents::
diff --git a/content/2011-10-15-i-cancelled-my-xbox-live-automatic-renewal.rst b/content/2011-10-15-i-cancelled-my-xbox-live-automatic-renewal.rst
index 387ace5..5bafa3f 100644
--- a/content/2011-10-15-i-cancelled-my-xbox-live-automatic-renewal.rst
+++ b/content/2011-10-15-i-cancelled-my-xbox-live-automatic-renewal.rst
@@ -51,3 +51,5 @@ Call us directly by dialing:
6 am to 10 pm Pacific Time
.. |image0| image:: /uploads/2011/10/microsoft-resells-free-internet-services.png
+
+.. contents::
diff --git a/content/2011-10-15-r8168-driver-issues-after-ubuntu-11-10-upgrade-kernel-linux-3-0.rst b/content/2011-10-15-r8168-driver-issues-after-ubuntu-11-10-upgrade-kernel-linux-3-0.rst
index 7a3e281..c981a14 100644
--- a/content/2011-10-15-r8168-driver-issues-after-ubuntu-11-10-upgrade-kernel-linux-3-0.rst
+++ b/content/2011-10-15-r8168-driver-issues-after-ubuntu-11-10-upgrade-kernel-linux-3-0.rst
@@ -21,3 +21,5 @@ Edit *src/Makefile*:
KEXT := $(shell echo $(KVER) | sed -ne 's/^[23]\.[1-9]\..*/k/p')o-
**Now you should follow the rest of the guide.**
+
+.. contents::
diff --git a/content/2011-10-16-cell-shading-practice-a-sketched-skull-and-wind-mill-photograph.rst b/content/2011-10-16-cell-shading-practice-a-sketched-skull-and-wind-mill-photograph.rst
index f611d8a..5f248b1 100644
--- a/content/2011-10-16-cell-shading-practice-a-sketched-skull-and-wind-mill-photograph.rst
+++ b/content/2011-10-16-cell-shading-practice-a-sketched-skull-and-wind-mill-photograph.rst
@@ -37,3 +37,5 @@ forever. The foliage emits a euphoric glow under the sun saturated rays.
.. |image0| image:: /uploads/2011/10/smile-guy.jpg
.. |image1| image:: /uploads/2011/10/skull.jpg
.. |image2| image:: /uploads/2011/10/wind.jpg
+
+.. contents::
diff --git a/content/2011-10-20-adding-inline-image-support-to-a-gmail-messages.rst b/content/2011-10-20-adding-inline-image-support-to-a-gmail-messages.rst
index 78353ea..1c7b88d 100644
--- a/content/2011-10-20-adding-inline-image-support-to-a-gmail-messages.rst
+++ b/content/2011-10-20-adding-inline-image-support-to-a-gmail-messages.rst
@@ -16,3 +16,5 @@ will not work if you have offline enabled.
#. *Enable* "Inserting images - by Kent T"
**Welcome!**
+
+.. contents::
diff --git a/content/2011-10-21-occupy-wall-street-stack-vs-queue.rst b/content/2011-10-21-occupy-wall-street-stack-vs-queue.rst
index fc38d6e..5174323 100644
--- a/content/2011-10-21-occupy-wall-street-stack-vs-queue.rst
+++ b/content/2011-10-21-occupy-wall-street-stack-vs-queue.rst
@@ -29,3 +29,5 @@ line.
| |image0|
.. |image0| image:: /uploads/2011/10/stack-vs-queue.png
+
+.. contents::
diff --git a/content/2011-10-29-webmaster-tools-alerted-issue-turned-out-pylon-session-files-flooded-inodes.rst b/content/2011-10-29-webmaster-tools-alerted-issue-turned-out-pylon-session-files-flooded-inodes.rst
index 76c9e7a..6886baf 100644
--- a/content/2011-10-29-webmaster-tools-alerted-issue-turned-out-pylon-session-files-flooded-inodes.rst
+++ b/content/2011-10-29-webmaster-tools-alerted-issue-turned-out-pylon-session-files-flooded-inodes.rst
@@ -48,3 +48,5 @@ boot.
.. |image0| image:: /uploads/2011/10/df_inode-year.png
.. |image1| image:: /uploads/2011/10/df_inode-day.png
+
+.. contents::
diff --git a/content/2011-11-03-im-petrified-of-launching-my-web-application.rst b/content/2011-11-03-im-petrified-of-launching-my-web-application.rst
index 51f7561..76a79cc 100644
--- a/content/2011-11-03-im-petrified-of-launching-my-web-application.rst
+++ b/content/2011-11-03-im-petrified-of-launching-my-web-application.rst
@@ -20,3 +20,5 @@ But most of all I'm scared that nobody will like me. I'm scared of
failure.
**Now that I got that out of my system please check out https://linkpeek.com**
+
+.. contents::
diff --git a/content/2011-11-29-career-development-is-a-game-of-chutes-and-ladders.rst b/content/2011-11-29-career-development-is-a-game-of-chutes-and-ladders.rst
index 13b24fc..ac6dba6 100644
--- a/content/2011-11-29-career-development-is-a-game-of-chutes-and-ladders.rst
+++ b/content/2011-11-29-career-development-is-a-game-of-chutes-and-ladders.rst
@@ -48,3 +48,5 @@ Get out there and meet people with similar interests!
**Did you like this post?**
You should checkout the first chapter of my e-book, *How-to Work From Home* titled `The Road to Remote `_
+
+.. contents::
diff --git a/content/2011-11-30-how-to-incorporate-custom-configuration-in-a-pyramid-application.rst b/content/2011-11-30-how-to-incorporate-custom-configuration-in-a-pyramid-application.rst
index af3fdd0..114dd39 100644
--- a/content/2011-11-30-how-to-incorporate-custom-configuration-in-a-pyramid-application.rst
+++ b/content/2011-11-30-how-to-incorporate-custom-configuration-in-a-pyramid-application.rst
@@ -94,3 +94,5 @@ subscribers::
Now you can use ``${google_analytics_key}`` anywhere in your template.
**Thank you for reading, and feel free to leave comments**
+
+.. contents::
diff --git a/content/2011-12-05-linkpeek-com-number-one-on-hacker-news.rst b/content/2011-12-05-linkpeek-com-number-one-on-hacker-news.rst
index 1d31685..b6572d0 100644
--- a/content/2011-12-05-linkpeek-com-number-one-on-hacker-news.rst
+++ b/content/2011-12-05-linkpeek-com-number-one-on-hacker-news.rst
@@ -13,3 +13,5 @@ LinkPeek.com Number One on Hacker News
| |image0|
.. |image0| image:: /uploads/2011/12/linkpeek-number-1-on-hacker-news.png
+
+.. contents::
diff --git a/content/2011-12-12-flash-mob-office-meeting-definition.rst b/content/2011-12-12-flash-mob-office-meeting-definition.rst
index 19268d6..a4c6973 100644
--- a/content/2011-12-12-flash-mob-office-meeting-definition.rst
+++ b/content/2011-12-12-flash-mob-office-meeting-definition.rst
@@ -14,3 +14,5 @@ conception as you sit bewildered at your desk.
**Other names:** *Flash Meeting*, *Flash Mob Meeting*, *Flash Office
Meeting*
+
+.. contents::
diff --git a/content/2011-12-19-linkpeek-com-webpage-to-image-was-a-by-product.rst b/content/2011-12-19-linkpeek-com-webpage-to-image-was-a-by-product.rst
index ebda6c7..f0ce7d9 100644
--- a/content/2011-12-19-linkpeek-com-webpage-to-image-was-a-by-product.rst
+++ b/content/2011-12-19-linkpeek-com-webpage-to-image-was-a-by-product.rst
@@ -42,3 +42,5 @@ About a week later on a whim I posted the generator to hacker news with an hones
**Remember, when faced with pivoting or killing a project, take a good
look at all possible by-products. Don't miss the hidden gem in a
project's slag!**
+
+.. contents::
diff --git a/content/2012-01-18-today-i-lost-a-customer.rst b/content/2012-01-18-today-i-lost-a-customer.rst
index 2e25ee5..928948f 100644
--- a/content/2012-01-18-today-i-lost-a-customer.rst
+++ b/content/2012-01-18-today-i-lost-a-customer.rst
@@ -35,3 +35,5 @@ charged.
Always make sure to extensively test payment and sign up code. Try all
the edge cases. Try to make your software break. Don't inflict friction
on your potential customers.
+
+.. contents::
diff --git a/content/2012-02-08-reasons-why-some-internet-entities-might-want-secure-communication.rst b/content/2012-02-08-reasons-why-some-internet-entities-might-want-secure-communication.rst
index 7320e17..2596d2e 100644
--- a/content/2012-02-08-reasons-why-some-internet-entities-might-want-secure-communication.rst
+++ b/content/2012-02-08-reasons-why-some-internet-entities-might-want-secure-communication.rst
@@ -26,3 +26,5 @@ Internet entities often desire to communicate securely, some reasons include:
Since then we have new DNSSEC extensions which allow for origin authentication of DNS data,
authenticated denial of existence, and data integrity.
DNSSEC does not attempt to solve availability and confidentiality.
+
+.. contents::
diff --git a/content/2012-02-08-what-are-the-differences-between-message-confidentiality-and-message-integrity.rst b/content/2012-02-08-what-are-the-differences-between-message-confidentiality-and-message-integrity.rst
index 99fd0d0..00ec9ab 100644
--- a/content/2012-02-08-what-are-the-differences-between-message-confidentiality-and-message-integrity.rst
+++ b/content/2012-02-08-what-are-the-differences-between-message-confidentiality-and-message-integrity.rst
@@ -33,3 +33,5 @@ could be compromised during the transmission of a message.
Yes, you can have integrity of a message without confidentiality. One
can take a hash or sum of the message on both sides to compare. Often we
share downloadable files and provide data integrity using md5 hash sums.
+
+.. contents::
diff --git a/content/2012-02-13-attributes-of-an-8-block-cipher.rst b/content/2012-02-13-attributes-of-an-8-block-cipher.rst
index cfdf234..0b0def4 100644
--- a/content/2012-02-13-attributes-of-an-8-block-cipher.rst
+++ b/content/2012-02-13-attributes-of-an-8-block-cipher.rst
@@ -20,3 +20,5 @@ To find the number of possible mappings we take the 256 input blocks and
find it's factorial. There are 256! possible mappings.
We can view each of these mappings as a key, so this cipher has 256! keys.
+
+.. contents::
diff --git a/content/2012-02-13-monoalphabetic-cipher-and-inverse-written-in-python.rst b/content/2012-02-13-monoalphabetic-cipher-and-inverse-written-in-python.rst
index f86be31..0a65310 100644
--- a/content/2012-02-13-monoalphabetic-cipher-and-inverse-written-in-python.rst
+++ b/content/2012-02-13-monoalphabetic-cipher-and-inverse-written-in-python.rst
@@ -6,8 +6,6 @@ Monoalphabetic Cipher and Inverse Written in Python
:slug: monoalphabetic-cipher-and-inverse-written-in-python
:status: published
-.. contents::
-
introduction and background
===============================
@@ -150,6 +148,8 @@ Here I show how to use the library:
>>> mc.encrypt_with_monoalpha('Hello all you hackers out there!', cipher)
'sXGGt SGG Nt0 HSrLXFC t0U UHXFX!'
- >>> # decrypt a message with the cipher.
+ >>> # decrypt a message with the cipher.
>>> mc.decrypt_with_monoalpha('sXGGt SGG Nt0 HSrLXFC t0U UHXFX!', cipher)
'Hello all you hackers out there!'
+
+.. contents::
diff --git a/content/2012-02-13-symmetric-encryption-vs-public-key-encryption.rst b/content/2012-02-13-symmetric-encryption-vs-public-key-encryption.rst
index 576c996..67cd87f 100644
--- a/content/2012-02-13-symmetric-encryption-vs-public-key-encryption.rst
+++ b/content/2012-02-13-symmetric-encryption-vs-public-key-encryption.rst
@@ -64,3 +64,5 @@ Public/Private Keys.
If group N had 50 members, it would need to generate and maintain 100
Public/Private Keys.
+
+.. contents::
diff --git a/content/2012-02-13-why-does-a-hash-provide-better-message-integrity-then-an-internet-checksum.rst b/content/2012-02-13-why-does-a-hash-provide-better-message-integrity-then-an-internet-checksum.rst
index 7a0c16a..e7d6c12 100644
--- a/content/2012-02-13-why-does-a-hash-provide-better-message-integrity-then-an-internet-checksum.rst
+++ b/content/2012-02-13-why-does-a-hash-provide-better-message-integrity-then-an-internet-checksum.rst
@@ -137,3 +137,5 @@ The above code would have produced the following invalid hash:
**You should follow me on twitter:** `@russellbal `__
+
+.. contents::
diff --git a/content/2012-02-14-block-cipher-lab.rst b/content/2012-02-14-block-cipher-lab.rst
index 25fa187..9e6af55 100644
--- a/content/2012-02-14-block-cipher-lab.rst
+++ b/content/2012-02-14-block-cipher-lab.rst
@@ -71,3 +71,5 @@ Block cipher lab
input = "1010000010100000101000001010000010100000101000001010000010100001"
print cipher2( input )
# output: 1010000110100000101000001010000010100000101000001010000010100000
+
+.. contents::
diff --git a/content/2012-02-16-my-4-month-olds-15-minutes-of-fame.rst b/content/2012-02-16-my-4-month-olds-15-minutes-of-fame.rst
index fe9158d..7c3ae58 100644
--- a/content/2012-02-16-my-4-month-olds-15-minutes-of-fame.rst
+++ b/content/2012-02-16-my-4-month-olds-15-minutes-of-fame.rst
@@ -23,3 +23,5 @@ The official `@RedSox `__ re-tweeted the image to
:target: https://russell.ballestrini.net/my-4-month-olds-15-minutes-of-fame/cutest-redsox-fan-ever/
.. |image1| image:: /uploads/2012/02/Screenshot-at-2012-02-16-172630.png
:target: https://russell.ballestrini.net/my-4-month-olds-15-minutes-of-fame/screenshot-at-2012-02-16-172630/
+
+.. contents::
diff --git a/content/2012-02-18-jake.rst b/content/2012-02-18-jake.rst
index 8f89ab6..a47ffed 100644
--- a/content/2012-02-18-jake.rst
+++ b/content/2012-02-18-jake.rst
@@ -50,3 +50,5 @@ I'm getting faster, this was completed in 20 minutes
:alt: I drew lumpy princess from Adventure Time
.. |image5| image:: /uploads/2012/02/sad-jake.png
:alt: I drew sad Jake from Adventure Time
+
+.. contents::
diff --git a/content/2012-02-26-zenoss-or-nagios-monitoring-of-https-using-client-certificate-authentication.rst b/content/2012-02-26-zenoss-or-nagios-monitoring-of-https-using-client-certificate-authentication.rst
index ca3440a..25c187b 100644
--- a/content/2012-02-26-zenoss-or-nagios-monitoring-of-https-using-client-certificate-authentication.rst
+++ b/content/2012-02-26-zenoss-or-nagios-monitoring-of-https-using-client-certificate-authentication.rst
@@ -60,3 +60,5 @@ This is the python plugin I came up with:
print "HTTP Critical:", r.status, r.reason
exit( 2 )
+
+.. contents::
diff --git a/content/2012-02-29-how-to-capture-https-ssl-tls-packets-with-wireshark.rst b/content/2012-02-29-how-to-capture-https-ssl-tls-packets-with-wireshark.rst
index e187200..f0700e1 100644
--- a/content/2012-02-29-how-to-capture-https-ssl-tls-packets-with-wireshark.rst
+++ b/content/2012-02-29-how-to-capture-https-ssl-tls-packets-with-wireshark.rst
@@ -139,3 +139,5 @@ has length of one byte. List all three fields and their lengths.
.. |image3| image:: /uploads/2012/02/wireshark-packets.png
.. |image4| image:: /uploads/2012/02/wireshark-stop-capture.png
.. |image5| image:: /uploads/2012/02/wireshark-filter.png
+
+.. contents::
diff --git a/content/2012-03-03-how-to-save-hundreds-of-dollars-on-groceries-without-clipping-coupons.rst b/content/2012-03-03-how-to-save-hundreds-of-dollars-on-groceries-without-clipping-coupons.rst
index e95d6cb..b864af3 100644
--- a/content/2012-03-03-how-to-save-hundreds-of-dollars-on-groceries-without-clipping-coupons.rst
+++ b/content/2012-03-03-how-to-save-hundreds-of-dollars-on-groceries-without-clipping-coupons.rst
@@ -108,3 +108,5 @@ list!**
:target: https://russell.ballestrini.net/how-to-save-hundreds-of-dollars-on-groceries-without-clipping-coupons/6876069657_5a2f4ae487_o/
.. |image3| image:: /uploads/2012/03/6876068965_db8a5d12b2_o.jpg
:target: https://russell.ballestrini.net/how-to-save-hundreds-of-dollars-on-groceries-without-clipping-coupons/6876068965_db8a5d12b2_o/
+
+.. contents::
diff --git a/content/2012-03-07-what-do-you-name-your-python-virtualenv.rst b/content/2012-03-07-what-do-you-name-your-python-virtualenv.rst
index 9a2d0b2..c0b12de 100644
--- a/content/2012-03-07-what-do-you-name-your-python-virtualenv.rst
+++ b/content/2012-03-07-what-do-you-name-your-python-virtualenv.rst
@@ -14,3 +14,5 @@ there?
Maybe we can come to a consensus as a standard name? Please feel free to
post your virtualenv names here as a sort of poll.
+
+.. contents::
diff --git a/content/2012-03-23-i-see-said-the-blind-man-to-the-deaf-dog-as-he-walked-off-the-cliff.rst b/content/2012-03-23-i-see-said-the-blind-man-to-the-deaf-dog-as-he-walked-off-the-cliff.rst
index 43a8617..c4988e2 100644
--- a/content/2012-03-23-i-see-said-the-blind-man-to-the-deaf-dog-as-he-walked-off-the-cliff.rst
+++ b/content/2012-03-23-i-see-said-the-blind-man-to-the-deaf-dog-as-he-walked-off-the-cliff.rst
@@ -17,3 +17,5 @@ As far as I can tell, I am the originator of this version of this quote.
**EDIT:** changed "originator of the quote" to "originator of this
version of this quote".
+
+.. contents::
diff --git a/content/2012-03-26-nosslsearch-cname-is-a-bad-idea-and-solution.rst b/content/2012-03-26-nosslsearch-cname-is-a-bad-idea-and-solution.rst
index 543fcd0..999f47e 100644
--- a/content/2012-03-26-nosslsearch-cname-is-a-bad-idea-and-solution.rst
+++ b/content/2012-03-26-nosslsearch-cname-is-a-bad-idea-and-solution.rst
@@ -32,3 +32,5 @@ nosslsearch cname is a bad idea and solution
|
| Reference:
https://support.google.com/websearch/bin/answer.py?hl=en&answer=186669
+
+.. contents::
diff --git a/content/2012-03-27-trouble-mounting-filesystem-on-kvm-guest-after-reboot.rst b/content/2012-03-27-trouble-mounting-filesystem-on-kvm-guest-after-reboot.rst
index 80c315f..f3b6b8c 100644
--- a/content/2012-03-27-trouble-mounting-filesystem-on-kvm-guest-after-reboot.rst
+++ b/content/2012-03-27-trouble-mounting-filesystem-on-kvm-guest-after-reboot.rst
@@ -23,3 +23,5 @@ attach disk images to guests without restarting.
| ``virsh attach-disk`` is to ``mount`` as
| ``virsh edit`` is to ``vim /etc/fstab``
+
+.. contents::
diff --git a/content/2012-04-09-i-just-purchased-instagram-for-1b-and-all-i-got-was-this-lousy-image-filter.rst b/content/2012-04-09-i-just-purchased-instagram-for-1b-and-all-i-got-was-this-lousy-image-filter.rst
index af3d85c..d4acda9 100644
--- a/content/2012-04-09-i-just-purchased-instagram-for-1b-and-all-i-got-was-this-lousy-image-filter.rst
+++ b/content/2012-04-09-i-just-purchased-instagram-for-1b-and-all-i-got-was-this-lousy-image-filter.rst
@@ -38,3 +38,5 @@ Mark Zuckerburg, I just thought up the perfect T-Shirt for you:
**I just purchased Instagram for 1B and all I got was this lousy
image filter.**
+
+.. contents::
diff --git a/content/2012-04-26-the-most-valuable-registration-field-how-did-you-hear-about-us.rst b/content/2012-04-26-the-most-valuable-registration-field-how-did-you-hear-about-us.rst
index 20ce5fc..09c5f01 100644
--- a/content/2012-04-26-the-most-valuable-registration-field-how-did-you-hear-about-us.rst
+++ b/content/2012-04-26-the-most-valuable-registration-field-how-did-you-hear-about-us.rst
@@ -68,3 +68,5 @@ learning more about my target market and customer needs.
**If you liked this post, you should follow me on twitter
`here `__.**
+
+.. contents::
diff --git a/content/2012-05-11-how-to-rescue-logs-and-config-from-a-failed-citrix-netscaler-app-gateway.rst b/content/2012-05-11-how-to-rescue-logs-and-config-from-a-failed-citrix-netscaler-app-gateway.rst
index 8edea9c..cb637ce 100644
--- a/content/2012-05-11-how-to-rescue-logs-and-config-from-a-failed-citrix-netscaler-app-gateway.rst
+++ b/content/2012-05-11-how-to-rescue-logs-and-config-from-a-failed-citrix-netscaler-app-gateway.rst
@@ -25,3 +25,5 @@ Once mounted I was able to SCP interesting files to a safe location.
Warning, this procedure might void your warranty. If in doubt, call
support first.
+
+.. contents::
diff --git a/content/2012-05-19-high-load-on-web-server-after-updating-from-ubuntu-10-04-to-ubuntu-12-04-lts.rst b/content/2012-05-19-high-load-on-web-server-after-updating-from-ubuntu-10-04-to-ubuntu-12-04-lts.rst
index decaa38..79a2b12 100644
--- a/content/2012-05-19-high-load-on-web-server-after-updating-from-ubuntu-10-04-to-ubuntu-12-04-lts.rst
+++ b/content/2012-05-19-high-load-on-web-server-after-updating-from-ubuntu-10-04-to-ubuntu-12-04-lts.rst
@@ -36,3 +36,5 @@ have on load averages `__
I hope you enjoy them.
+
+.. contents::
diff --git a/content/2012-09-22-the-pyramid-community-taught-me-the-importance-of-test-driven-development.rst b/content/2012-09-22-the-pyramid-community-taught-me-the-importance-of-test-driven-development.rst
index edefceb..f9d4d09 100644
--- a/content/2012-09-22-the-pyramid-community-taught-me-the-importance-of-test-driven-development.rst
+++ b/content/2012-09-22-the-pyramid-community-taught-me-the-importance-of-test-driven-development.rst
@@ -39,3 +39,5 @@ coverage and now I understand why. Tests not only help produce better
bug-free software but also act as a powerful tool when proving the
validity of a patch. I plan to devote the next couple weeks to making
test-driven-development a habit.
+
+.. contents::
diff --git a/content/2012-10-02-explaining-cache-with-python.rst b/content/2012-10-02-explaining-cache-with-python.rst
index 6263e6f..ebdd9ad 100644
--- a/content/2012-10-02-explaining-cache-with-python.rst
+++ b/content/2012-10-02-explaining-cache-with-python.rst
@@ -122,3 +122,5 @@ should be cached. I hope this helps clear things up.
|2013-03-03-explaining-cache-scaled|
.. |2013-03-03-explaining-cache-scaled| image:: /uploads/2013/03/2013-03-03-explaining-cache-scaled.png
+
+.. contents::
diff --git a/content/2012-11-03-how-to-drain-an-iphone-battery-without-needing-passcode.rst b/content/2012-11-03-how-to-drain-an-iphone-battery-without-needing-passcode.rst
index 5f4f544..b8f8410 100644
--- a/content/2012-11-03-how-to-drain-an-iphone-battery-without-needing-passcode.rst
+++ b/content/2012-11-03-how-to-drain-an-iphone-battery-without-needing-passcode.rst
@@ -15,3 +15,5 @@ how to drain an iPhone battery without needing passcode
Extra points if you set the camera to record (just don't record yourself
or sounds) which will fill up the iPhone capacity.
+
+.. contents::
diff --git a/content/2012-12-12-tips-for-getting-pull-requests-approved.rst b/content/2012-12-12-tips-for-getting-pull-requests-approved.rst
index 953db0e..1cb31be 100644
--- a/content/2012-12-12-tips-for-getting-pull-requests-approved.rst
+++ b/content/2012-12-12-tips-for-getting-pull-requests-approved.rst
@@ -6,9 +6,6 @@ Tips for getting pull requests approved
:slug: tips-for-getting-pull-requests-approved
:status: published
-.. contents::
-
-
Pull rejection sucks!
================================================
@@ -133,3 +130,5 @@ everybody wins!
:target: /uploads/2012/12/ideas-blog-get-heard.xcf_.png
.. |pull-request-stay-focused.xcf| image:: /uploads/2012/12/pull-request-stay-focused.xcf_.png
:target: /uploads/2012/12/pull-request-stay-focused.xcf_.png
+
+.. contents::
diff --git a/content/2013-01-09-ago-py-human-readable-timedelta0-0-4-release.rst b/content/2013-01-09-ago-py-human-readable-timedelta0-0-4-release.rst
index 8d9f2dd..0de1a57 100644
--- a/content/2013-01-09-ago-py-human-readable-timedelta0-0-4-release.rst
+++ b/content/2013-01-09-ago-py-human-readable-timedelta0-0-4-release.rst
@@ -28,3 +28,5 @@ Change log:
We were just shy of 800 downloads on pypi for ago-0.0.3, I hope
ago-0.0.4 will perform even better!
+
+.. contents::
diff --git a/content/2013-01-12-how-to-overload-default-function-arguments-in-python-using-lambda.rst b/content/2013-01-12-how-to-overload-default-function-arguments-in-python-using-lambda.rst
index a9d3432..77b34e7 100644
--- a/content/2013-01-12-how-to-overload-default-function-arguments-in-python-using-lambda.rst
+++ b/content/2013-01-12-how-to-overload-default-function-arguments-in-python-using-lambda.rst
@@ -88,3 +88,5 @@ Here is a working example to show the new lambda function h in action:
'in 12 days, 22 hours, 12 minutes from now!'
'this happened 14 days, 1 hour, 53 minutes ago!'
+
+.. contents::
diff --git a/content/2013-03-02-virt-backs-domfetcher-class-returns-doms-from-libvirt-api.rst b/content/2013-03-02-virt-backs-domfetcher-class-returns-doms-from-libvirt-api.rst
index 87eda9d..28457f3 100644
--- a/content/2013-03-02-virt-backs-domfetcher-class-returns-doms-from-libvirt-api.rst
+++ b/content/2013-03-02-virt-backs-domfetcher-class-returns-doms-from-libvirt-api.rst
@@ -65,3 +65,5 @@ As always thanks for reading!
.. |2013-03-02-scale-virt-back-domfetcher-scaled| image:: /uploads/2013/03/2013-03-02-scale-virt-back-domfetcher-scaled.png
:target: /uploads/2013/03/2013-03-02-scale-virt-back-domfetcher-scaled.png
+
+.. contents::
diff --git a/content/2013-03-22-guido-name-dropped-tornado-python-tulip-and-pep-3156.rst b/content/2013-03-22-guido-name-dropped-tornado-python-tulip-and-pep-3156.rst
index a301aeb..2d7468f 100644
--- a/content/2013-03-22-guido-name-dropped-tornado-python-tulip-and-pep-3156.rst
+++ b/content/2013-03-22-guido-name-dropped-tornado-python-tulip-and-pep-3156.rst
@@ -34,3 +34,5 @@ multi-player browser-based-game.
.. |2013-03-22-tornado-callback-long-polling-event-loop-scaled| image:: /uploads/2013/03/2013-03-22-tornado-callback-long-polling-event-loop-scaled.png
:target: /uploads/2013/03/2013-03-22-tornado-callback-long-polling-event-loop-scaled.png
+
+.. contents::
diff --git a/content/2013-04-09-automatic-event-hangout-with-cron.rst b/content/2013-04-09-automatic-event-hangout-with-cron.rst
index 2b032de..7c97a50 100644
--- a/content/2013-04-09-automatic-event-hangout-with-cron.rst
+++ b/content/2013-04-09-automatic-event-hangout-with-cron.rst
@@ -38,3 +38,5 @@ Chromium-browser cron example:
.. raw:: html
+
+.. contents::
diff --git a/content/2013-04-26-survey-baby-monkey.rst b/content/2013-04-26-survey-baby-monkey.rst
index 2976432..71d0d87 100644
--- a/content/2013-04-26-survey-baby-monkey.rst
+++ b/content/2013-04-26-survey-baby-monkey.rst
@@ -11,3 +11,5 @@ Survey Baby Monkey
|baby-monkey-fxhp|
.. |baby-monkey-fxhp| image:: /uploads/2013/04/baby-monkey-fxhp.jpg
+
+.. contents::
diff --git a/content/2013-05-26-honey-i-just-deleted-linkpeek-com.rst b/content/2013-05-26-honey-i-just-deleted-linkpeek-com.rst
index 966f050..8ef054d 100644
--- a/content/2013-05-26-honey-i-just-deleted-linkpeek-com.rst
+++ b/content/2013-05-26-honey-i-just-deleted-linkpeek-com.rst
@@ -51,3 +51,5 @@ This system will allow me to:
#. test disaster recovery procedures before needing them
#. provision development and production environments without effort
#. have a reproducible blueprint of "how to build a LinkPeek server"
+
+.. contents::
diff --git a/content/2013-06-20-high-load-and-cpu-usage-craftbukkit-compared-to-vanilla-minecraft.rst b/content/2013-06-20-high-load-and-cpu-usage-craftbukkit-compared-to-vanilla-minecraft.rst
index 8157e73..2dd6b4c 100644
--- a/content/2013-06-20-high-load-and-cpu-usage-craftbukkit-compared-to-vanilla-minecraft.rst
+++ b/content/2013-06-20-high-load-and-cpu-usage-craftbukkit-compared-to-vanilla-minecraft.rst
@@ -23,3 +23,5 @@ minecraft server and started the craftbukkit minecraft server:
.. |minecraft-vs-craftbukkit| image:: /uploads/2013/06/minecraft-vs-craftbukkit.png
:target: /uploads/2013/06/minecraft-vs-craftbukkit.png
+
+.. contents::
diff --git a/content/2013-07-01-add-a-custom-header-to-all-salt-managed-files-using-pillar-and-jinja-templates.rst b/content/2013-07-01-add-a-custom-header-to-all-salt-managed-files-using-pillar-and-jinja-templates.rst
index b38948d..aef23b1 100644
--- a/content/2013-07-01-add-a-custom-header-to-all-salt-managed-files-using-pillar-and-jinja-templates.rst
+++ b/content/2013-07-01-add-a-custom-header-to-all-salt-managed-files-using-pillar-and-jinja-templates.rst
@@ -67,3 +67,5 @@ substitution, for example hosts/hosts:
I use this same technique to declare most configuration options as
parameters, like hostnames, IP addresses, ports, and more.
+
+.. contents::
diff --git a/content/2013-07-02-create-your-own-fleet-of-servers-with-digital-ocean-and-salt-cloud.rst b/content/2013-07-02-create-your-own-fleet-of-servers-with-digital-ocean-and-salt-cloud.rst
index 1c44546..e2c8c12 100644
--- a/content/2013-07-02-create-your-own-fleet-of-servers-with-digital-ocean-and-salt-cloud.rst
+++ b/content/2013-07-02-create-your-own-fleet-of-servers-with-digital-ocean-and-salt-cloud.rst
@@ -111,3 +111,5 @@ gain access to the following commands::
If all goes well you should have a newly provisioned server bootstrapped with salt-minion.
The new minion's keys are already added to the salt-master.
Now you just need to run highstate!
+
+.. contents::
diff --git a/content/2013-07-08-understanding-salt-stack-user-and-group-management.rst b/content/2013-07-08-understanding-salt-stack-user-and-group-management.rst
index 5720fec..000abe5 100644
--- a/content/2013-07-08-understanding-salt-stack-user-and-group-management.rst
+++ b/content/2013-07-08-understanding-salt-stack-user-and-group-management.rst
@@ -98,3 +98,5 @@ parameterize arguments:
{% endfor %}
+
+.. contents::
diff --git a/content/2013-07-11-configuration-management-vs-remote-execution.rst b/content/2013-07-11-configuration-management-vs-remote-execution.rst
index 23b2231..b930db9 100644
--- a/content/2013-07-11-configuration-management-vs-remote-execution.rst
+++ b/content/2013-07-11-configuration-management-vs-remote-execution.rst
@@ -72,3 +72,5 @@ changes either state or data it should be placed into the configuration
management for the reasons mentioned above.
.. |config-mangement-vs-remote-execution| image:: /uploads/2013/07/config-mangement-vs-remote-execution.png
+
+.. contents::
diff --git a/content/2013-10-14-control-a-mongodb-collection-in-configuration-management.rst b/content/2013-10-14-control-a-mongodb-collection-in-configuration-management.rst
index 061a8f7..34dc113 100644
--- a/content/2013-10-14-control-a-mongodb-collection-in-configuration-management.rst
+++ b/content/2013-10-14-control-a-mongodb-collection-in-configuration-management.rst
@@ -78,3 +78,5 @@ drop the collection before re-importing thus removing stale records.
We now have a version controlled JSON file in configuration management
and the power of MongoDB Document Objects in our application code!
+
+.. contents::
diff --git a/content/2013-10-17-postfix-salt-state-formula.rst b/content/2013-10-17-postfix-salt-state-formula.rst
index af0f91f..6119869 100644
--- a/content/2013-10-17-postfix-salt-state-formula.rst
+++ b/content/2013-10-17-postfix-salt-state-formula.rst
@@ -178,3 +178,5 @@ update a managed Postfix lookup table.
{% endif %}
.. |postfix-config-management| image:: /uploads/2013/10/mysza.gif
+
+.. contents::
diff --git a/content/2013-10-19-simplify-deployments-with-upstart-and-uwsgi.rst b/content/2013-10-19-simplify-deployments-with-upstart-and-uwsgi.rst
index 535fc18..5f05e50 100644
--- a/content/2013-10-19-simplify-deployments-with-upstart-and-uwsgi.rst
+++ b/content/2013-10-19-simplify-deployments-with-upstart-and-uwsgi.rst
@@ -75,3 +75,5 @@ embedded below:
The web application is now daemonized and listening on port 5200 with 4
workers. I leave implementing the Nginx front end to the reader.
+
+.. contents::
diff --git a/content/2013-10-27-backup-all-virtual-machines-on-a-smartos-hypervisor-with-smart-back-sh.rst b/content/2013-10-27-backup-all-virtual-machines-on-a-smartos-hypervisor-with-smart-back-sh.rst
index 1058128..8c85ac8 100644
--- a/content/2013-10-27-backup-all-virtual-machines-on-a-smartos-hypervisor-with-smart-back-sh.rst
+++ b/content/2013-10-27-backup-all-virtual-machines-on-a-smartos-hypervisor-with-smart-back-sh.rst
@@ -90,3 +90,5 @@ Just make sure the VM doesn't currently exist on the hypervisor.
This strategy is great for complete backups of machines which could be
used during a manual migration, or if corruption happened to the VM and
we wanted to restore to a previous version.
+
+.. contents::
diff --git a/content/2013-12-13-hackathon-2013-virtualization.rst b/content/2013-12-13-hackathon-2013-virtualization.rst
index 36f72ea..0e9f4b5 100644
--- a/content/2013-12-13-hackathon-2013-virtualization.rst
+++ b/content/2013-12-13-hackathon-2013-virtualization.rst
@@ -488,3 +488,5 @@ I would have liked to test out physical to virtual migrations
+
+.. contents::
diff --git a/content/2013-12-17-sensu-salt.rst b/content/2013-12-17-sensu-salt.rst
index 4b749b9..27d4690 100644
--- a/content/2013-12-17-sensu-salt.rst
+++ b/content/2013-12-17-sensu-salt.rst
@@ -86,3 +86,5 @@ Later when I was done messing with writing checks, I used the following
salt-cloud --destroy sensu-server
salt-cloud --destroy sensu-client1 sensu-client2 sensu-client3 sensu-client4
+
+.. contents::
diff --git a/content/2013-12-20-heka-world.rst b/content/2013-12-20-heka-world.rst
index dacd015..375989f 100644
--- a/content/2013-12-20-heka-world.rst
+++ b/content/2013-12-20-heka-world.rst
@@ -80,3 +80,5 @@ Like magic the data appended to ``input.log`` will appear in
Heka also has great docs and a number of input and output plugins, but
don't take my word for it, try it yourself!
+
+.. contents::
diff --git a/content/2014-01-02-test-game-engine-with-python-and-sfml.rst b/content/2014-01-02-test-game-engine-with-python-and-sfml.rst
index 6b3b8e0..f69bce6 100644
--- a/content/2014-01-02-test-game-engine-with-python-and-sfml.rst
+++ b/content/2014-01-02-test-game-engine-with-python-and-sfml.rst
@@ -28,3 +28,5 @@ and SFML. I plan to use this post to track my progress.
push `__
- `Power ups and grow and
shrink `__
+
+.. contents::
diff --git a/content/2014-01-05-how-i-added-two-seagate-240g-ssds-as-smartos-l2arc.rst b/content/2014-01-05-how-i-added-two-seagate-240g-ssds-as-smartos-l2arc.rst
index b231b42..1df11b2 100644
--- a/content/2014-01-05-how-i-added-two-seagate-240g-ssds-as-smartos-l2arc.rst
+++ b/content/2014-01-05-how-i-added-two-seagate-240g-ssds-as-smartos-l2arc.rst
@@ -96,3 +96,5 @@ This machine is a test hypervisor and after reviewing the output from
``zpool iostat -v`` over the last couple days, I'm pretty sure adding
L2ARC to this box was not needed, but it was a great learning
experience.
+
+.. contents::
diff --git a/content/2014-01-25-how-to-reset-hp-ilo-lights-out-user-and-password-settings-with-ipmitools.rst b/content/2014-01-25-how-to-reset-hp-ilo-lights-out-user-and-password-settings-with-ipmitools.rst
index a4cd43f..354c014 100644
--- a/content/2014-01-25-how-to-reset-hp-ilo-lights-out-user-and-password-settings-with-ipmitools.rst
+++ b/content/2014-01-25-how-to-reset-hp-ilo-lights-out-user-and-password-settings-with-ipmitools.rst
@@ -152,3 +152,5 @@ with chassis power for more extreme measures.
I run FreeNAS on an HP DL180 G6 and just replaced my p410 controller with an LSI SAS9220-8i (IBM M1015) flashed to IT mode. The stock cables are long enough. I did not have issues with fans running at high RPM.
(I did the same replacement on an `HP DL160 G6 running SmartOS `_ and it didn't have a high fan RPM issues either)
+
+.. contents::
diff --git a/content/2014-02-03-the-three-deployment-management-strategies.rst b/content/2014-02-03-the-three-deployment-management-strategies.rst
index 44b159d..fd28ec7 100644
--- a/content/2014-02-03-the-three-deployment-management-strategies.rst
+++ b/content/2014-02-03-the-three-deployment-management-strategies.rst
@@ -34,3 +34,5 @@ document.
Development Difficulty: HIGH - state aware - must know how to both
get and set values and make desicions based on what it finds.
+
+.. contents::
diff --git a/content/2014-02-07-automatic-backups.rst b/content/2014-02-07-automatic-backups.rst
index 151d95c..501a916 100644
--- a/content/2014-02-07-automatic-backups.rst
+++ b/content/2014-02-07-automatic-backups.rst
@@ -37,3 +37,5 @@ This page will act as a hub to each of those solutions.
SmartOS hypervisor.
+
+.. contents::
diff --git a/content/2014-02-07-mysql-back.rst b/content/2014-02-07-mysql-back.rst
index 147872f..319a2e3 100644
--- a/content/2014-02-07-mysql-back.rst
+++ b/content/2014-02-07-mysql-back.rst
@@ -61,3 +61,5 @@ following command:
.. raw:: html
+
+.. contents::
diff --git a/content/2014-02-07-tar-back.rst b/content/2014-02-07-tar-back.rst
index d244f85..3bd02ee 100644
--- a/content/2014-02-07-tar-back.rst
+++ b/content/2014-02-07-tar-back.rst
@@ -120,3 +120,5 @@ every host.
.. raw:: html
+
+.. contents::
diff --git a/content/2014-02-21-configuration-management-and-the-golden-image.rst b/content/2014-02-21-configuration-management-and-the-golden-image.rst
index bf67fd7..40c27e8 100644
--- a/content/2014-02-21-configuration-management-and-the-golden-image.rst
+++ b/content/2014-02-21-configuration-management-and-the-golden-image.rst
@@ -64,3 +64,5 @@ management?
like Gentoo and configuration management.
| (Joyant SmartOS zone datasets, Docker container images, Vagrant box
files, AWS AMI, Digital Ocean Snapshots, etc)
+
+.. contents::
diff --git a/content/2014-03-08-replace-the-nagios-scheduler-and-nrpe-with-salt-stack.rst b/content/2014-03-08-replace-the-nagios-scheduler-and-nrpe-with-salt-stack.rst
index 0da4e54..8abfdef 100644
--- a/content/2014-03-08-replace-the-nagios-scheduler-and-nrpe-with-salt-stack.rst
+++ b/content/2014-03-08-replace-the-nagios-scheduler-and-nrpe-with-salt-stack.rst
@@ -265,3 +265,5 @@ us schedule different checks with different frequencies. For example, I
might want my load checks and metrics to be collected every 10 secs, but
my disk capacity usage checked every 2 minutes. This fine-grain control
is super powerful!
+
+.. contents::
diff --git a/content/2014-03-13-filter-salt-stack-return-data-output.rst b/content/2014-03-13-filter-salt-stack-return-data-output.rst
index 90764ac..90c8128 100644
--- a/content/2014-03-13-filter-salt-stack-return-data-output.rst
+++ b/content/2014-03-13-filter-salt-stack-return-data-output.rst
@@ -99,3 +99,5 @@ Example output:
.. raw:: html
+
+.. contents::
diff --git a/content/2014-03-15-irc-bot-foxbot-runs-canned-remote-executions-using-salt-stack.rst b/content/2014-03-15-irc-bot-foxbot-runs-canned-remote-executions-using-salt-stack.rst
index 9d0565e..9da2b3d 100644
--- a/content/2014-03-15-irc-bot-foxbot-runs-canned-remote-executions-using-salt-stack.rst
+++ b/content/2014-03-15-irc-bot-foxbot-runs-canned-remote-executions-using-salt-stack.rst
@@ -28,3 +28,5 @@ Example usage:
16:29:17 foxbot | minion2.foxhop.net: PROCS WARNING: 165 processes
16:29:17 foxbot | minion5.foxhop.net: PROCS CRITICAL: 309 processes
+
+.. contents::
diff --git a/content/2014-04-08-how-to-patch-heartbleed-openssl-defect-libssl-on-ubuntu.rst b/content/2014-04-08-how-to-patch-heartbleed-openssl-defect-libssl-on-ubuntu.rst
index eb24d3e..31940f2 100644
--- a/content/2014-04-08-how-to-patch-heartbleed-openssl-defect-libssl-on-ubuntu.rst
+++ b/content/2014-04-08-how-to-patch-heartbleed-openssl-defect-libssl-on-ubuntu.rst
@@ -72,3 +72,5 @@ nginx on all of my 14 hosts:
.. |image0| image:: https://imgs.xkcd.com/comics/heartbleed.png
+
+.. contents::
diff --git a/content/2014-05-08-nginx-with-ssl-and-mixed-content-errors-with-upstream-wsgi-servers.rst b/content/2014-05-08-nginx-with-ssl-and-mixed-content-errors-with-upstream-wsgi-servers.rst
index 6783d4c..635ede6 100644
--- a/content/2014-05-08-nginx-with-ssl-and-mixed-content-errors-with-upstream-wsgi-servers.rst
+++ b/content/2014-05-08-nginx-with-ssl-and-mixed-content-errors-with-upstream-wsgi-servers.rst
@@ -44,3 +44,5 @@ configuration file:
.. raw:: html
+
+.. contents::
diff --git a/content/2014-05-15-you-can-hack-on-freenas-9.rst b/content/2014-05-15-you-can-hack-on-freenas-9.rst
index 71ae4f2..2b83e64 100644
--- a/content/2014-05-15-you-can-hack-on-freenas-9.rst
+++ b/content/2014-05-15-you-can-hack-on-freenas-9.rst
@@ -51,3 +51,5 @@ Want to hack on the OS?
https://github.com/freenas/freenas/tree/master/nanobsd
This directory seems like a customized and completely version controlled nanoBSD install!
+
+.. contents::
diff --git a/content/2014-08-15-mailpile-salt-states-for-ubuntu-or-debian.rst b/content/2014-08-15-mailpile-salt-states-for-ubuntu-or-debian.rst
index a2ec702..dc6a409 100644
--- a/content/2014-08-15-mailpile-salt-states-for-ubuntu-or-debian.rst
+++ b/content/2014-08-15-mailpile-salt-states-for-ubuntu-or-debian.rst
@@ -79,3 +79,5 @@ command and follow the prompts to setup the server/client/app.
.. raw:: html
+
+.. contents::
diff --git a/content/2014-08-23-heka-world2.rst b/content/2014-08-23-heka-world2.rst
index 849ce92..f3c46e3 100644
--- a/content/2014-08-23-heka-world2.rst
+++ b/content/2014-08-23-heka-world2.rst
@@ -106,3 +106,5 @@ uncomment to reproduce.
Read this for `more fun with
netcat `__.
+
+.. contents::
diff --git a/content/2014-09-18-rabbits.rst b/content/2014-09-18-rabbits.rst
index 960d6e4..bffc7aa 100644
--- a/content/2014-09-18-rabbits.rst
+++ b/content/2014-09-18-rabbits.rst
@@ -10,3 +10,5 @@ rabbits
.. image:: /uploads/2014/09/2014-09-18-rabbits.png
:alt: original rabbits
+
+.. contents::
diff --git a/content/2014-09-18-reality-shattered.rst b/content/2014-09-18-reality-shattered.rst
index 09c4675..54c40c3 100644
--- a/content/2014-09-18-reality-shattered.rst
+++ b/content/2014-09-18-reality-shattered.rst
@@ -11,3 +11,5 @@ reality shattered
|image0|
.. |image0| image:: /uploads/2014/09/2014-09-17-reality-shattered.png
+
+.. contents::
diff --git a/content/2014-10-11-migrating-mongodb-from-ubuntu-to-smartos.rst b/content/2014-10-11-migrating-mongodb-from-ubuntu-to-smartos.rst
index 2da593c..987ade3 100644
--- a/content/2014-10-11-migrating-mongodb-from-ubuntu-to-smartos.rst
+++ b/content/2014-10-11-migrating-mongodb-from-ubuntu-to-smartos.rst
@@ -66,3 +66,5 @@ variable before running the restore:
::
export LC_ALL=C
+
+.. contents::
diff --git a/content/2014-10-11-set-root-password-smartos-percona-mysql-zone.rst b/content/2014-10-11-set-root-password-smartos-percona-mysql-zone.rst
index 7ed4a40..387a546 100644
--- a/content/2014-10-11-set-root-password-smartos-percona-mysql-zone.rst
+++ b/content/2014-10-11-set-root-password-smartos-percona-mysql-zone.rst
@@ -52,3 +52,5 @@ metadata:
Turns out the GUI is placing the ``"mysql_pw"`` parameter into
``"customer_metadata"`` instead of ``"internal_metadata"`` which is
invalid.
+
+.. contents::
diff --git a/content/2014-11-09-turn-python-dict-into-a-keyvalue-string.rst b/content/2014-11-09-turn-python-dict-into-a-keyvalue-string.rst
index 3b5769d..86a3c86 100644
--- a/content/2014-11-09-turn-python-dict-into-a-keyvalue-string.rst
+++ b/content/2014-11-09-turn-python-dict-into-a-keyvalue-string.rst
@@ -87,3 +87,5 @@ And of course a test to prove it works how we expect:
.. raw:: html
+
+.. contents::
diff --git a/content/2014-11-13-dealing-with-pagination-in-python.rst b/content/2014-11-13-dealing-with-pagination-in-python.rst
index 852cef8..e851a77 100644
--- a/content/2014-11-13-dealing-with-pagination-in-python.rst
+++ b/content/2014-11-13-dealing-with-pagination-in-python.rst
@@ -165,3 +165,5 @@ With this test, the steps of the algorithm looks like this:
[9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
ok
+
+.. contents::
diff --git a/content/2014-11-24-build-release-pipelines-on-s3-with-s3p.rst b/content/2014-11-24-build-release-pipelines-on-s3-with-s3p.rst
index a1c1e7d..f930cc8 100644
--- a/content/2014-11-24-build-release-pipelines-on-s3-with-s3p.rst
+++ b/content/2014-11-24-build-release-pipelines-on-s3-with-s3p.rst
@@ -23,3 +23,5 @@ and
I plan to incorporate s3p into Teamcity build jobs. At work I would like
to use s3p to replace bash+s3cmd in pipeline management. Once s3p has a
bit more production use, I will likely sprint on it again.
+
+.. contents::
diff --git a/content/2014-12-03-custom-rundeck-hipchat-notification-templates.rst b/content/2014-12-03-custom-rundeck-hipchat-notification-templates.rst
index ce70905..a315b68 100644
--- a/content/2014-12-03-custom-rundeck-hipchat-notification-templates.rst
+++ b/content/2014-12-03-custom-rundeck-hipchat-notification-templates.rst
@@ -53,3 +53,5 @@ Guide and Default Template)
.. raw:: html
+
+.. contents::
diff --git a/content/2014-12-21-autofs-net-automount-stopped-working.rst b/content/2014-12-21-autofs-net-automount-stopped-working.rst
index 411d889..13b4918 100644
--- a/content/2014-12-21-autofs-net-automount-stopped-working.rst
+++ b/content/2014-12-21-autofs-net-automount-stopped-working.rst
@@ -42,3 +42,5 @@ to this
and then restart autofs (sudo service autofs restart).
+
+.. contents::
diff --git a/content/2015-01-10-risk-process-and-balance.rst b/content/2015-01-10-risk-process-and-balance.rst
index a108afb..615e661 100644
--- a/content/2015-01-10-risk-process-and-balance.rst
+++ b/content/2015-01-10-risk-process-and-balance.rst
@@ -73,3 +73,5 @@ workflows can not function properly if transplanted into a company who
does not have the desire to find the optimal balance. Put simply, a
company cannot buy Agile or DevOps, that culture needs to grow from with
in.
+
+.. contents::
diff --git a/content/2015-01-21-set-postgres-user-password-on-postgresql-smartos-zone.rst b/content/2015-01-21-set-postgres-user-password-on-postgresql-smartos-zone.rst
index bbffa24..8d45dfb 100644
--- a/content/2015-01-21-set-postgres-user-password-on-postgresql-smartos-zone.rst
+++ b/content/2015-01-21-set-postgres-user-password-on-postgresql-smartos-zone.rst
@@ -29,3 +29,5 @@ system. So I did the following as the postgres user::
postgres=# CREATE USER zab UNENCRYPTED PASSWORD 'zabby'
postgres=# CREATE DATABASE zab OWNER zab;
+
+.. contents::
diff --git a/content/2015-02-22-securely-publish-jenkins-build-artifacts-on-salt-master.rst b/content/2015-02-22-securely-publish-jenkins-build-artifacts-on-salt-master.rst
index 8fd3c10..e2b10ee 100644
--- a/content/2015-02-22-securely-publish-jenkins-build-artifacts-on-salt-master.rst
+++ b/content/2015-02-22-securely-publish-jenkins-build-artifacts-on-salt-master.rst
@@ -123,3 +123,5 @@ the other work for me!
**Update**
Special thanks to an `anonymous commentor `_ regarding how to increase security. I have updated the scripts accordingly.
+
+.. contents::
diff --git a/content/2015-04-24-setting-region-programmatically-in-boto3.rst b/content/2015-04-24-setting-region-programmatically-in-boto3.rst
index 2610387..9d1981f 100644
--- a/content/2015-04-24-setting-region-programmatically-in-boto3.rst
+++ b/content/2015-04-24-setting-region-programmatically-in-boto3.rst
@@ -82,3 +82,5 @@ You should read my other Boto related posts for tricks to impress your friends.
* `Filtering AWS resources with Boto3 `_
* `Working with botocores AWS config `_
+
+.. contents::
diff --git a/content/2015-04-28-migrating-libvirt-kvm-guest-to-smartos-kvm-guest.rst b/content/2015-04-28-migrating-libvirt-kvm-guest-to-smartos-kvm-guest.rst
index b622ee2..bead7c1 100644
--- a/content/2015-04-28-migrating-libvirt-kvm-guest-to-smartos-kvm-guest.rst
+++ b/content/2015-04-28-migrating-libvirt-kvm-guest-to-smartos-kvm-guest.rst
@@ -144,3 +144,5 @@ Lastly start the new guest up, and check it out:
::
vmadm start aa0f603c-9572-4cb0-b96f-4c79eb431223
+
+.. contents::
diff --git a/content/2015-05-08-a-python-script-which-searches-for-available-interpreters.rst b/content/2015-05-08-a-python-script-which-searches-for-available-interpreters.rst
index 73e14fd..0146202 100644
--- a/content/2015-05-08-a-python-script-which-searches-for-available-interpreters.rst
+++ b/content/2015-05-08-a-python-script-which-searches-for-available-interpreters.rst
@@ -47,3 +47,5 @@ environment to create an hvpc (Husky VPC) object for exploration.
If you want a pure python version that doesn't use a bash/python
polygot, checkout this code I wrote:
https://github.com/russellballestrini/botoform/blob/master/botoform/plugins/repl.py
+
+.. contents::
diff --git a/content/2015-05-09-smartos-ubuntu-guest-apt-get-not-working-because-ipv6.rst b/content/2015-05-09-smartos-ubuntu-guest-apt-get-not-working-because-ipv6.rst
index 9d04401..db6b30c 100644
--- a/content/2015-05-09-smartos-ubuntu-guest-apt-get-not-working-because-ipv6.rst
+++ b/content/2015-05-09-smartos-ubuntu-guest-apt-get-not-working-because-ipv6.rst
@@ -29,3 +29,5 @@ This was a hacky work around mostly because although I desire to have
IPv6 working, I desire to get this VM running more...
Thanks for reading, leave comments please.
+
+.. contents::
diff --git a/content/2015-06-01-change-default-gateway-on-all-smartos-zones-and-kvm-guests.rst b/content/2015-06-01-change-default-gateway-on-all-smartos-zones-and-kvm-guests.rst
index 114fc0b..30ef6ac 100644
--- a/content/2015-06-01-change-default-gateway-on-all-smartos-zones-and-kvm-guests.rst
+++ b/content/2015-06-01-change-default-gateway-on-all-smartos-zones-and-kvm-guests.rst
@@ -70,3 +70,5 @@ Also to change the global zone (head node) default gateway, edit
add net default: gateway 192.168.1.1
[root@hypervisor /]# netstat -r
+
+.. contents::
diff --git a/content/2015-06-21-my-mentor.rst b/content/2015-06-21-my-mentor.rst
index 2218671..e893738 100644
--- a/content/2015-06-21-my-mentor.rst
+++ b/content/2015-06-21-my-mentor.rst
@@ -40,3 +40,5 @@ to or manipulates the people around him. Although we have had our
differences, I think about you each day.
I love you. Thank you and happy father's day, dad.
+
+.. contents::
diff --git a/content/2015-07-01-working-with-botocores-awsconfig.rst b/content/2015-07-01-working-with-botocores-awsconfig.rst
index 2172873..32de10e 100644
--- a/content/2015-07-01-working-with-botocores-awsconfig.rst
+++ b/content/2015-07-01-working-with-botocores-awsconfig.rst
@@ -76,3 +76,5 @@ You should read my other Boto related posts for tricks to impress your friends.
* `Setting region programmatically in Boto3 `_
* `Filtering AWS resources with Boto3 `_
+
+.. contents::
diff --git a/content/2015-07-02-filtering-aws-resources-with-boto3.rst b/content/2015-07-02-filtering-aws-resources-with-boto3.rst
index ea71154..a5ba5bc 100644
--- a/content/2015-07-02-filtering-aws-resources-with-boto3.rst
+++ b/content/2015-07-02-filtering-aws-resources-with-boto3.rst
@@ -61,3 +61,5 @@ You should read my other Boto related posts for tricks to impress your friends.
* `Working with botocores AWS config `_
+
+.. contents::
diff --git a/content/2015-07-04-list-all-installed-package-names-in-python.rst b/content/2015-07-04-list-all-installed-package-names-in-python.rst
index 7783152..ca22df9 100644
--- a/content/2015-07-04-list-all-installed-package-names-in-python.rst
+++ b/content/2015-07-04-list-all-installed-package-names-in-python.rst
@@ -33,3 +33,5 @@ Last we show how to use invoke these functions:
>>> pkg_versions()
['ansible==1.7', 'pycrypto==2.6.1', '...truncated...', 'virt-back==0.1.0', 'xmltodict==0.9.2']
+
+.. contents::
diff --git a/content/2015-10-16-boto3-get-main-route-table.rst b/content/2015-10-16-boto3-get-main-route-table.rst
index 7ac8f8f..7ffe4ff 100644
--- a/content/2015-10-16-boto3-get-main-route-table.rst
+++ b/content/2015-10-16-boto3-get-main-route-table.rst
@@ -33,3 +33,5 @@ You should read my other Boto related posts for tricks to impress your friends.
* `Setting region programmatically in Boto3 `_
* `Filtering AWS resources with Boto3 `_
+
+.. contents::
diff --git a/content/2015-11-15-migrating-from-wordpress-to-pelican.rst b/content/2015-11-15-migrating-from-wordpress-to-pelican.rst
index 6e87d0e..cc09aba 100644
--- a/content/2015-11-15-migrating-from-wordpress-to-pelican.rst
+++ b/content/2015-11-15-migrating-from-wordpress-to-pelican.rst
@@ -14,9 +14,6 @@ This task has persisted on my TODO list for over two years.
During the process of the move, I'm going to use this post to dump hints:
-.. contents:: Hints:
-
-
WordPress XML to JSON
====================================
@@ -65,3 +62,5 @@ fix paths to images / uploads to remove wp-content:
sed -i'' -e 's/\/wp-content//g' *.rst
+.. contents::
+
diff --git a/content/2015-11-29-bind9-on-joyent-triton.rst b/content/2015-11-29-bind9-on-joyent-triton.rst
index 3af695b..983864e 100644
--- a/content/2015-11-29-bind9-on-joyent-triton.rst
+++ b/content/2015-11-29-bind9-on-joyent-triton.rst
@@ -57,3 +57,5 @@ Then restart the `bind9` service and verify using `sudo rndc status` and `free -
sudo rndc status
free -m
+
+.. contents::
diff --git a/content/2015-12-16-set-dns-resolver-options.rst b/content/2015-12-16-set-dns-resolver-options.rst
index 0948837..20b1ac0 100644
--- a/content/2015-12-16-set-dns-resolver-options.rst
+++ b/content/2015-12-16-set-dns-resolver-options.rst
@@ -39,3 +39,5 @@ For Redhat, Centos or Fedora, add the following to `/etc/sysconfig/network`:
RES_OPTIONS="rotate timeout:1 attempts:1"
Then restart the host, or at least networking.
+
+.. contents::
diff --git a/content/2016-06-21-output-all-instance-identifiers-of-an-aws-vpc-to-json.rst b/content/2016-06-21-output-all-instance-identifiers-of-an-aws-vpc-to-json.rst
index 471a249..1cb4848 100644
--- a/content/2016-06-21-output-all-instance-identifiers-of-an-aws-vpc-to-json.rst
+++ b/content/2016-06-21-output-all-instance-identifiers-of-an-aws-vpc-to-json.rst
@@ -24,3 +24,5 @@ For example:
Checkout the `Botoform Quickstart `_
for installation instructions.
+
+.. contents::
diff --git a/content/2016-06-22-if-i-swallow-lots-of-air-will-i-be-lighter.rst b/content/2016-06-22-if-i-swallow-lots-of-air-will-i-be-lighter.rst
index c3883ea..f4b164b 100644
--- a/content/2016-06-22-if-i-swallow-lots-of-air-will-i-be-lighter.rst
+++ b/content/2016-06-22-if-i-swallow-lots-of-air-will-i-be-lighter.rst
@@ -19,3 +19,5 @@ Whaaaaaat???!!?!1!
: )
+
+.. contents::
diff --git a/content/2016-09-06-set-static-hostname-for-rhel-centos-7-on-aws.rst b/content/2016-09-06-set-static-hostname-for-rhel-centos-7-on-aws.rst
index 5139e7c..0556666 100644
--- a/content/2016-09-06-set-static-hostname-for-rhel-centos-7-on-aws.rst
+++ b/content/2016-09-06-set-static-hostname-for-rhel-centos-7-on-aws.rst
@@ -21,3 +21,5 @@ This took me about 2 hours to figure out, hopefully it saves you time.
preserve_hostname: true
+
+.. contents::
diff --git a/content/2016-10-28-my-first-systemd-service-script-and-override.rst b/content/2016-10-28-my-first-systemd-service-script-and-override.rst
index 5134296..30e3fe9 100644
--- a/content/2016-10-28-my-first-systemd-service-script-and-override.rst
+++ b/content/2016-10-28-my-first-systemd-service-script-and-override.rst
@@ -83,3 +83,5 @@ You can test, like this:
Thank you!
+
+.. contents::
diff --git a/content/2016-11-21-sharing-a-pyramid-cookie-with-flask-or-tornado.rst b/content/2016-11-21-sharing-a-pyramid-cookie-with-flask-or-tornado.rst
index 0602025..9740e89 100644
--- a/content/2016-11-21-sharing-a-pyramid-cookie-with-flask-or-tornado.rst
+++ b/content/2016-11-21-sharing-a-pyramid-cookie-with-flask-or-tornado.rst
@@ -164,3 +164,5 @@ In my testing, I saw my cookie and it looked like this:
Hello, world
Thats all for now, let me know what you think in the comments!
+
+.. contents::
diff --git a/content/2016-11-24-register-super-powers-with-pyramid-add-request-method.rst b/content/2016-11-24-register-super-powers-with-pyramid-add-request-method.rst
index d7f717a..72a0e4f 100644
--- a/content/2016-11-24-register-super-powers-with-pyramid-add-request-method.rst
+++ b/content/2016-11-24-register-super-powers-with-pyramid-add-request-method.rst
@@ -53,3 +53,5 @@ This strategy has a number of uses. For example, I use it to:
What super powers do you register to your request? You should let the world know in the comments.
Another Pyramid related post: `Sharing a Pyramid cookie with Flask or Tornado `_
+
+.. contents::
diff --git a/content/2016-12-01-rpm-deb-packages-for-nodejs-using-jenkins-and-fpm.rst b/content/2016-12-01-rpm-deb-packages-for-nodejs-using-jenkins-and-fpm.rst
index 477dd41..4da4058 100644
--- a/content/2016-12-01-rpm-deb-packages-for-nodejs-using-jenkins-and-fpm.rst
+++ b/content/2016-12-01-rpm-deb-packages-for-nodejs-using-jenkins-and-fpm.rst
@@ -62,3 +62,5 @@ Then in the Jenkins job, I have the following `execute shell` tasks:
I then simply upload the rpm to an S3 repo which is accessible to my API hosts.
The same basic strategy may be used for other languages with subtle differences to the build script.
+
+.. contents::
diff --git a/content/2016-12-18-capability-driven-resentation.rst b/content/2016-12-18-capability-driven-resentation.rst
index 4663973..ccbd927 100644
--- a/content/2016-12-18-capability-driven-resentation.rst
+++ b/content/2016-12-18-capability-driven-resentation.rst
@@ -28,9 +28,6 @@ For more background and history please read this free online book: https://resil
Techniques
========================
-.. contents::
- :local:
-
The js-only class
------------------------
@@ -89,3 +86,5 @@ This small change has a huge impact on the overall user experience.
We no longer present a broken button to the user, and I think that is worth the effort.
+.. contents::
+
diff --git a/content/2016-12-21-nginx-throw-503-maintenance-json-for-all-requests.rst b/content/2016-12-21-nginx-throw-503-maintenance-json-for-all-requests.rst
index bdd9a6e..c5d94ab 100644
--- a/content/2016-12-21-nginx-throw-503-maintenance-json-for-all-requests.rst
+++ b/content/2016-12-21-nginx-throw-503-maintenance-json-for-all-requests.rst
@@ -86,3 +86,5 @@ Need to make sure you always set a custom header? Don't forget the ``always`` di
add_header Retry-After 30 always;
Leave a comment if this helps you!
+
+.. contents::
diff --git a/content/2017-03-21-minikube.rst b/content/2017-03-21-minikube.rst
index a745454..cccf921 100644
--- a/content/2017-03-21-minikube.rst
+++ b/content/2017-03-21-minikube.rst
@@ -10,8 +10,6 @@ Minikube
Minikube allows you to run a self contained, single node, Kubernetes cluster on your workstation.
Once installed and configured, you may use ``kubectl`` to interact with it, just like a production Kubernetes cluster.
-.. contents::
-
Reference: https://kubernetes.io/docs/getting-started-guides/minikube/
install
@@ -179,3 +177,5 @@ trash this demo (delete the ``deployment``, ``replicaset``, ``pods``, and ``serv
.. code-block:: bash
kubectl delete deployment hello-minikube
+
+.. contents::
diff --git a/content/2017-03-23-selenium-grid-on-kubernetes.rst b/content/2017-03-23-selenium-grid-on-kubernetes.rst
index 0e2a285..be0977b 100644
--- a/content/2017-03-23-selenium-grid-on-kubernetes.rst
+++ b/content/2017-03-23-selenium-grid-on-kubernetes.rst
@@ -14,8 +14,6 @@ If you do not already have a Kubernetes cluster, you should read that first.
Selenium Grid allows you to build a cluster of Selenium nodes.
Today we will create a Selenium cluster with 1 hub and 4 nodes on Kubernetes.
-.. contents::
-
Selenium Hub
===============
@@ -197,3 +195,5 @@ Finally, if you refresh the hub browser window, you should see 4 connected Chrom
If you liked this post, leave me a message in the comments!
+.. contents::
+
diff --git a/content/2017-10-08-my-search-for-the-perfect-alternative-hosted-comment-system.rst b/content/2017-10-08-my-search-for-the-perfect-alternative-hosted-comment-system.rst
index 9504763..3d81e08 100644
--- a/content/2017-10-08-my-search-for-the-perfect-alternative-hosted-comment-system.rst
+++ b/content/2017-10-08-my-search-for-the-perfect-alternative-hosted-comment-system.rst
@@ -37,3 +37,5 @@ I'm in the process of hand selecting group of users to help me test. Would you b
:alt: Remarkbox Logo
|
+
+.. contents::
diff --git a/content/2017-10-22-so-you-are-planning-a-beta.rst b/content/2017-10-22-so-you-are-planning-a-beta.rst
index 1732a96..97586ad 100644
--- a/content/2017-10-22-so-you-are-planning-a-beta.rst
+++ b/content/2017-10-22-so-you-are-planning-a-beta.rst
@@ -22,3 +22,5 @@ I know, I know ... nobody likes to fill out surveys, so power-up their motivatio
Come up with a few questions. Keep most of the questions open ended to allow them guide the dialog. Later, use the responses to break the ice when you send one-on-one emails. Each lead will present a unique situation, so take advantage of this and keep your on boarding emails personal!
**tl;dr** - Gather interest for the Beta as soon as possible and ask questions up front as part of the sign up.
+
+.. contents::
diff --git a/content/2017-10-24-webwords-is-a-minimal-viable-web-app-with-docker-in-as-many-languages-as-possible.rst b/content/2017-10-24-webwords-is-a-minimal-viable-web-app-with-docker-in-as-many-languages-as-possible.rst
index cdbb63c..e3b56c7 100644
--- a/content/2017-10-24-webwords-is-a-minimal-viable-web-app-with-docker-in-as-many-languages-as-possible.rst
+++ b/content/2017-10-24-webwords-is-a-minimal-viable-web-app-with-docker-in-as-many-languages-as-possible.rst
@@ -12,8 +12,6 @@ webwords: a minimal viable web app with docker in as many languages as possible
This project shows how to code the same minimal web app called ``webwords`` in as many different programming languages as possible.
It also provides guides for building and running ``webwords`` as a docker image.
-.. contents::
-
what is webwords
================
@@ -153,3 +151,5 @@ You can delete old attempts by running:
docker rm
+.. contents::
+
diff --git a/content/2017-11-09-how-to-work-from-home-the-road-to-remote-chapter-1.rst b/content/2017-11-09-how-to-work-from-home-the-road-to-remote-chapter-1.rst
index 21d1667..6575738 100644
--- a/content/2017-11-09-how-to-work-from-home-the-road-to-remote-chapter-1.rst
+++ b/content/2017-11-09-how-to-work-from-home-the-road-to-remote-chapter-1.rst
@@ -57,3 +57,5 @@ I was networking, even though I didn't know what it was called at the time. I ta
This victory would be the first of 4 remote positions I have held since finally taking the leap to "work from home".
Tune in to the next chapter where I describe how I positioned myself to win the interview.
+
+.. contents::
diff --git a/content/2018-03-16-fulfilling-childhood-dreams-solar.rst b/content/2018-03-16-fulfilling-childhood-dreams-solar.rst
index 1aebfde..7e7f615 100644
--- a/content/2018-03-16-fulfilling-childhood-dreams-solar.rst
+++ b/content/2018-03-16-fulfilling-childhood-dreams-solar.rst
@@ -13,8 +13,6 @@ Ever since I was an 8 year old boy I have wanted solar. I remember reading about
This post will act as an overview of the stuff I learned about solar, I hope you learn something too!
-.. contents::
-
*Disclosure: This post contains affiliate links.* See `full disclosure page here `_.
.. image:: /uploads/2018/panasonic-325watt-panels-front.jpg
@@ -121,3 +119,5 @@ Contact me
=========================
As always, please feel free to leave comments below. I live in New England so you may also `contact me `_ to setup a time to tour my setup and ask questions. I look forward to meeting you!
+
+.. contents::
diff --git a/content/2018-06-04-quickstart-to-dkim-sign-email-with-python.rst b/content/2018-06-04-quickstart-to-dkim-sign-email-with-python.rst
index 5133df0..0786128 100644
--- a/content/2018-06-04-quickstart-to-dkim-sign-email-with-python.rst
+++ b/content/2018-06-04-quickstart-to-dkim-sign-email-with-python.rst
@@ -176,3 +176,5 @@ The Missing dkimpy Quickstart Guide
**As always, leave a comment or contact me for questions or help.**
+
+.. contents::
diff --git a/content/2018-06-15-pyramid-sqlalchemy-bootstrap-console-script-with-transaction-manager.rst b/content/2018-06-15-pyramid-sqlalchemy-bootstrap-console-script-with-transaction-manager.rst
index f2c41de..9b0b337 100644
--- a/content/2018-06-15-pyramid-sqlalchemy-bootstrap-console-script-with-transaction-manager.rst
+++ b/content/2018-06-15-pyramid-sqlalchemy-bootstrap-console-script-with-transaction-manager.rst
@@ -47,3 +47,5 @@ This pattern should help you solve this error:
.. code-block:: python
NoTransaction error when using bootstrap in script
+
+.. contents::
diff --git a/content/2018-07-18-running-dynamodb-local-service-container-on-circleci-2.rst b/content/2018-07-18-running-dynamodb-local-service-container-on-circleci-2.rst
index ec9d14f..4ddfc92 100644
--- a/content/2018-07-18-running-dynamodb-local-service-container-on-circleci-2.rst
+++ b/content/2018-07-18-running-dynamodb-local-service-container-on-circleci-2.rst
@@ -82,3 +82,5 @@ References:
* https://circleci.com/blog/how-to-handle-java-oom-errors/
* https://circleci.com/docs/2.0/postgres-config/
+
+.. contents::
diff --git a/content/2018-08-03-all-local-heros-need-a-gig-side-kick.rst b/content/2018-08-03-all-local-heros-need-a-gig-side-kick.rst
index 18a8a18..2caefe6 100644
--- a/content/2018-08-03-all-local-heros-need-a-gig-side-kick.rst
+++ b/content/2018-08-03-all-local-heros-need-a-gig-side-kick.rst
@@ -52,3 +52,5 @@ Another often untapped unfair advantage is the sale or trade of our by-products.
I plan to document my journy of building this vision, I hope you join me.
Like always, please feel free to leave comments below, I always respond.
+
+.. contents::
diff --git a/content/2019-07-12-pre-signed-get-and-post-for-digital-ocean-spaces.rst b/content/2019-07-12-pre-signed-get-and-post-for-digital-ocean-spaces.rst
index c27be12..74e90b0 100644
--- a/content/2019-07-12-pre-signed-get-and-post-for-digital-ocean-spaces.rst
+++ b/content/2019-07-12-pre-signed-get-and-post-for-digital-ocean-spaces.rst
@@ -119,3 +119,5 @@ The file never hits your server and is uploaded directly to the private Space.
print("curl " + " ".join(params) + ' --form "file=@my-object2.zip;filename=my-object2.zip" ' + signed_post["url"])
+
+.. contents::
diff --git a/content/2019-09-25-installing-unity-on-linux.rst b/content/2019-09-25-installing-unity-on-linux.rst
index 9586db6..bfabd54 100644
--- a/content/2019-09-25-installing-unity-on-linux.rst
+++ b/content/2019-09-25-installing-unity-on-linux.rst
@@ -48,3 +48,5 @@ Thats all for now, please check back for more posts about gumyum!
:alt: Unity Hub interface
.. |gumyum logo| image:: /uploads/2010/12/gumyumgameslogo.png
+
+.. contents::
diff --git a/content/2019-10-31-how-to-fallback-to-an-older-freenas-version-on-update-failure.rst b/content/2019-10-31-how-to-fallback-to-an-older-freenas-version-on-update-failure.rst
index 5ca80e6..3dd6b08 100644
--- a/content/2019-10-31-how-to-fallback-to-an-older-freenas-version-on-update-failure.rst
+++ b/content/2019-10-31-how-to-fallback-to-an-older-freenas-version-on-update-failure.rst
@@ -20,3 +20,5 @@ I followed this process and then got my FreeNAS server to boot again.
From the GUI I was able to create myself a config backup.
I then burned a new FreeNAS CD and used that to install a fresh new install on my USB drive and then once that booted I used the GUI to restore my config.
+
+.. contents::
diff --git a/content/2019-11-08-unity-collab-not-working-on-fedora-because-of-invalid-ca-certificate-path.rst b/content/2019-11-08-unity-collab-not-working-on-fedora-because-of-invalid-ca-certificate-path.rst
index 106e5e7..48ca44d 100644
--- a/content/2019-11-08-unity-collab-not-working-on-fedora-because-of-invalid-ca-certificate-path.rst
+++ b/content/2019-11-08-unity-collab-not-working-on-fedora-because-of-invalid-ca-certificate-path.rst
@@ -34,3 +34,5 @@ The work around is simple, create a soft link between the paths::
Please come back again soon to learn more about the games we are building over here at `gumyum`!
+
+.. contents::
diff --git a/content/2019-12-15-ideas-for-unlimited-home-computer-storage-capacity.rst b/content/2019-12-15-ideas-for-unlimited-home-computer-storage-capacity.rst
index b78ce3d..d4a4ad9 100644
--- a/content/2019-12-15-ideas-for-unlimited-home-computer-storage-capacity.rst
+++ b/content/2019-12-15-ideas-for-unlimited-home-computer-storage-capacity.rst
@@ -113,3 +113,5 @@ Besides that, all we need is some software to host the videos, edit, and index t
+
+.. contents::
diff --git a/content/2020-09-15-weechat-on-boot-in-a-tmux-session.rst b/content/2020-09-15-weechat-on-boot-in-a-tmux-session.rst
index de31ad1..de2b80b 100644
--- a/content/2020-09-15-weechat-on-boot-in-a-tmux-session.rst
+++ b/content/2020-09-15-weechat-on-boot-in-a-tmux-session.rst
@@ -68,3 +68,5 @@ Thanks for joining me on this escape into the world of computers.
This website is hosted on Ryu (``ryu.foxhop.net``) another Ubuntu guest running on M. Bison, humming away downstairs on that T430 with a cracked screen, but thats a story for another time.
Please feel free to comment below if you have suggestions for this post.
+
+.. contents::
diff --git a/content/2020-10-25-i-tried-to-install-gitlab-on-truenas-and-failed.rst b/content/2020-10-25-i-tried-to-install-gitlab-on-truenas-and-failed.rst
index 4fef107..a96aadc 100644
--- a/content/2020-10-25-i-tried-to-install-gitlab-on-truenas-and-failed.rst
+++ b/content/2020-10-25-i-tried-to-install-gitlab-on-truenas-and-failed.rst
@@ -93,3 +93,5 @@ Anyways I'm out of luck, I can't use the plugin which uses jails due to a strang
I was able to flash the included Dell H710 Mini RAID card into IT mode for ZFS support using the awesome guides and tools found here: https://fohdeesha.com/docs/perc/
I now have GitLab running on a ``byhve`` instance and also a dedicated runner instance. It's working great and really fun to have this extremely powerful gear in my home lab!
+
+.. contents::
diff --git a/content/2021-12-03-gnunet-gns-nameserver-operator-notes-quickstart-cheatsheet.rst b/content/2021-12-03-gnunet-gns-nameserver-operator-notes-quickstart-cheatsheet.rst
index 526035f..b0198d5 100644
--- a/content/2021-12-03-gnunet-gns-nameserver-operator-notes-quickstart-cheatsheet.rst
+++ b/content/2021-12-03-gnunet-gns-nameserver-operator-notes-quickstart-cheatsheet.rst
@@ -7,8 +7,6 @@ GNUnet GNS Nameserver Operator Notes, Quickstart, & Cheatsheet
:tags: Code, DevOps
:status: published
-.. contents::
-
We GROW with Truth, Freedom, Love.
| "You have an ally".
@@ -177,3 +175,5 @@ Ok but where are these enigmatic config files?
This is a living document we will continue the story toward a resolution and simple quickstart guide!
Leave comments below!
+
+.. contents::
diff --git a/content/2021-12-23-russell-open-sources-remarkbox-and-make-post-sell-into-public-domain.rst b/content/2021-12-23-russell-open-sources-remarkbox-and-make-post-sell-into-public-domain.rst
index 8858a13..0b251f5 100644
--- a/content/2021-12-23-russell-open-sources-remarkbox-and-make-post-sell-into-public-domain.rst
+++ b/content/2021-12-23-russell-open-sources-remarkbox-and-make-post-sell-into-public-domain.rst
@@ -131,3 +131,5 @@ I love you, have a great day reader!
.. image:: /uploads/2018/pixel-art-santa-hat.png
:alt: pixel art style santa hat
+
+.. contents::
diff --git a/content/2022-01-05-vertically-scaling-gitlab-server-for-as-cheap-as-possible.rst b/content/2022-01-05-vertically-scaling-gitlab-server-for-as-cheap-as-possible.rst
index 383721d..1eb6da2 100644
--- a/content/2022-01-05-vertically-scaling-gitlab-server-for-as-cheap-as-possible.rst
+++ b/content/2022-01-05-vertically-scaling-gitlab-server-for-as-cheap-as-possible.rst
@@ -126,3 +126,5 @@ GitLab CI is a game changer.
GitLab CI is extendable to any workflow
but you should keep it simple, learn to use the tool as intended,
and rethink legacy workflows rather than port.
+
+.. contents::
diff --git a/content/2022-05-09-uncle-drops-off-server-with-note-asking-u-to-cl0ne-ubuntu22-kvm.rst b/content/2022-05-09-uncle-drops-off-server-with-note-asking-u-to-cl0ne-ubuntu22-kvm.rst
index 2a83649..5259dee 100644
--- a/content/2022-05-09-uncle-drops-off-server-with-note-asking-u-to-cl0ne-ubuntu22-kvm.rst
+++ b/content/2022-05-09-uncle-drops-off-server-with-note-asking-u-to-cl0ne-ubuntu22-kvm.rst
@@ -213,3 +213,5 @@ on ubuntu desktop network manager hijacks /etc/netplan but also makes it impossi
sudo nmcli con mod 'Wired connection 1' ipv4.dns-search "foxhop.net"
your only hope is this setting persists across reboots.
+
+.. contents::
diff --git a/content/2022-05-20-ubuntu-22-04-letsencrypt-docker-hints.rst b/content/2022-05-20-ubuntu-22-04-letsencrypt-docker-hints.rst
index 7501c55..6911b24 100644
--- a/content/2022-05-20-ubuntu-22-04-letsencrypt-docker-hints.rst
+++ b/content/2022-05-20-ubuntu-22-04-letsencrypt-docker-hints.rst
@@ -84,3 +84,5 @@ because the directory doesn't exist, gets deleted on each reboot so it isn't pre
.. code-block:: bash
cgroup /sys/fs/cgroup/systemd cgroup defaults
+
+.. contents::
diff --git a/content/2024-02-03-building-dry-and-park-from-source-on-fedora-linux.rst b/content/2024-02-03-building-dry-and-park-from-source-on-fedora-linux.rst
index e33ee8b..d035778 100644
--- a/content/2024-02-03-building-dry-and-park-from-source-on-fedora-linux.rst
+++ b/content/2024-02-03-building-dry-and-park-from-source-on-fedora-linux.rst
@@ -132,3 +132,5 @@ This will show you the call stack at the time of the crash, which can help pinpo
Happy building and debugging!
+
+.. contents::
diff --git a/content/2024-02-04-installing-yacy-on-ubuntu.rst b/content/2024-02-04-installing-yacy-on-ubuntu.rst
index ebc970a..1388264 100644
--- a/content/2024-02-04-installing-yacy-on-ubuntu.rst
+++ b/content/2024-02-04-installing-yacy-on-ubuntu.rst
@@ -106,3 +106,5 @@ With SSL/TLS enabled, it's time to start a local crawl and consider sharing the
Sharing your crawl index with the network allows for a distributed scraping effort, meaning that the data you collect can benefit all users of YaCy, not just your local instance. This is the essence of the Distributed Hash Table (DHT) that underpins YaCy's decentralized architecture.
Continue to explore the capabilities of your YaCy server, and remember to update your documentation to assist others in their journey toward a more open and collaborative internet.`
+
+.. contents::
diff --git a/content/2024-02-05-optimizing-memory-management-for-plausible-docker-on-ubuntu.rst b/content/2024-02-05-optimizing-memory-management-for-plausible-docker-on-ubuntu.rst
index 5602363..d94f58f 100644
--- a/content/2024-02-05-optimizing-memory-management-for-plausible-docker-on-ubuntu.rst
+++ b/content/2024-02-05-optimizing-memory-management-for-plausible-docker-on-ubuntu.rst
@@ -102,3 +102,5 @@ By adding swap space and tuning kernel parameters, you've bolstered your server'
Stay proactive in managing your server's resources to ensure uninterrupted service for your Dockerized applications. Happy hosting!
+
+.. contents::
diff --git a/content/2024-02-05-understanding-pause-functionality-in-luckey-park-game.rst b/content/2024-02-05-understanding-pause-functionality-in-luckey-park-game.rst
index ba9d341..8cf5bec 100644
--- a/content/2024-02-05-understanding-pause-functionality-in-luckey-park-game.rst
+++ b/content/2024-02-05-understanding-pause-functionality-in-luckey-park-game.rst
@@ -93,3 +93,5 @@ This exploration has provided a clear understanding of how the pause functionali
Stay tuned for more deep dives into game development.
+
+.. contents::
diff --git a/content/2024-02-17-integrating-openai-with-dry-sample-chat-game.rst b/content/2024-02-17-integrating-openai-with-dry-sample-chat-game.rst
index 5566637..43784ed 100644
--- a/content/2024-02-17-integrating-openai-with-dry-sample-chat-game.rst
+++ b/content/2024-02-17-integrating-openai-with-dry-sample-chat-game.rst
@@ -218,3 +218,5 @@ I think personally I will try to get the client communicating with vllm likely r
Happy coding, and enjoy bringing LLM capabilities to your Dry games!
+
+.. contents::
diff --git a/content/2024-05-28-comparing-nodejs-and-python-performance-with-openai-client.rst b/content/2024-05-28-comparing-nodejs-and-python-performance-with-openai-client.rst
index 7ff5e65..5190e18 100644
--- a/content/2024-05-28-comparing-nodejs-and-python-performance-with-openai-client.rst
+++ b/content/2024-05-28-comparing-nodejs-and-python-performance-with-openai-client.rst
@@ -179,3 +179,5 @@ It's worth noting that the OpenAI client uses `httpx` for Python and `node-fetch
For now, if performance is a critical factor in your project, especially for handling numerous concurrent API requests, Node.js is the way to go. But keep an eye on Python's developments, as it continues to evolve and improve.
This post was written with the help of gpt-4 using https://github.com/russellballestrini/flask-socketio-llm-completions
+
+.. contents::
diff --git a/content/2024-08-30-comparing-elixir-and-phoenix-performance-with-openai-client.rst b/content/2024-08-30-comparing-elixir-and-phoenix-performance-with-openai-client.rst
index c2434d8..58d13e0 100644
--- a/content/2024-08-30-comparing-elixir-and-phoenix-performance-with-openai-client.rst
+++ b/content/2024-08-30-comparing-elixir-and-phoenix-performance-with-openai-client.rst
@@ -187,3 +187,5 @@ It's worth noting that the OpenAI client used in this experiment is community-dr
This post was written with the help of GPT-4 using the Elixir `ex_openai `_ library.
+
+.. contents::
diff --git a/content/2024-09-14-exploring-battleship-board-generation.rst b/content/2024-09-14-exploring-battleship-board-generation.rst
index 28a6928..1bcdca3 100644
--- a/content/2024-09-14-exploring-battleship-board-generation.rst
+++ b/content/2024-09-14-exploring-battleship-board-generation.rst
@@ -216,3 +216,5 @@ Full conversation here:
See `flask-socketio-llm-completions `_ for more AI tooling!
+
+.. contents::
diff --git a/content/2024-10-21-free-hermes-ai-unturf-com-uncloseai.rst b/content/2024-10-21-free-hermes-ai-unturf-com-uncloseai.rst
index a3a9048..94d31a3 100644
--- a/content/2024-10-21-free-hermes-ai-unturf-com-uncloseai.rst
+++ b/content/2024-10-21-free-hermes-ai-unturf-com-uncloseai.rst
@@ -41,3 +41,5 @@ That's it! This single line provides a floating AI assistant button with page-aw
I invite you to explore the service for yourself. Consider using it as is or building your own app/client. Let's make AI more accessible and create a world where everyone can benefit from its power.
Before you go, if you want to try it out live on this static site, `click here <#uncloseai-example>`_ and and ask a question about the post. it knows how to code. : )
+
+.. contents::
diff --git a/content/2025-02-19-free-llm-endpoints-dynamic-distributed-model-inference-client-uncloseai.rst b/content/2025-02-19-free-llm-endpoints-dynamic-distributed-model-inference-client-uncloseai.rst
index 507b525..b8a9c2d 100644
--- a/content/2025-02-19-free-llm-endpoints-dynamic-distributed-model-inference-client-uncloseai.rst
+++ b/content/2025-02-19-free-llm-endpoints-dynamic-distributed-model-inference-client-uncloseai.rst
@@ -81,3 +81,5 @@ Dive in and explore our service—use it as-is or build your own custom client.
We’ve also open-sourced `Matrix & Discord Bots `_ to showcase dynamic model loading in action.
Join our `Discord server `_ to collaborate with us on building agents, environments, and much more!
+
+.. contents::
diff --git a/content/2025-03-21-introducing-slop.rst b/content/2025-03-21-introducing-slop.rst
index 2a93c73..9900086 100644
--- a/content/2025-03-21-introducing-slop.rst
+++ b/content/2025-03-21-introducing-slop.rst
@@ -10,8 +10,6 @@ Introducing SLOP
**Introducing SLOP: A Simple Language Open Protocol for AI Interaction**
-.. contents:: post agenda
-
This post introduces the SLOP project, a community-driven effort to standardize AI API interactions. I'm Russell (fxhp), and I'm excited to share how this project came together and how you can get involved!
A Community Effort Kicked Off by Nathan
@@ -128,3 +126,5 @@ Stateless HTTP for the win. ; )
Our biggest open source competitor is MCP, we aim to be more open & transparent & organic & grass roots from the bottom up not dropped from the ivory tower.
If this vibes with you start building SLOP integrations whenever you reach for an MCP integration so that we can grow both communities & learn from each other.
+.. contents::
+
diff --git a/content/2025-07-13-building-and-modding-multimower-with-dry-engine.rst b/content/2025-07-13-building-and-modding-multimower-with-dry-engine.rst
index 0b7daaa..9617f9a 100644
--- a/content/2025-07-13-building-and-modding-multimower-with-dry-engine.rst
+++ b/content/2025-07-13-building-and-modding-multimower-with-dry-engine.rst
@@ -8,11 +8,6 @@ Building and Modding MultiMower with Dry Engine
:status: published
:summary: Learn how to download, compile, and mod MultiMower - a multiplayer lawn mower game built with the Dry Engine. We'll explore the codebase structure.
-.. contents:: Table of Contents
- :depth: 2
- :local:
- :backlinks: top
-
Resources and Community
-----------------------
@@ -1194,3 +1189,5 @@ MultiMower provides an excellent platform for learning game development and modd
The build process is straightforward on Fedora when you follow these tested steps, and the Dry engine's helper scripts make dependency management painless.
Happy mowing & modding!
+
+.. contents::
diff --git a/content/2025-07-28-analyzing-godot-engine-codebase-millions-lines-of-code.rst b/content/2025-07-28-analyzing-godot-engine-codebase-millions-lines-of-code.rst
index 3a6d7ab..a63ef53 100644
--- a/content/2025-07-28-analyzing-godot-engine-codebase-millions-lines-of-code.rst
+++ b/content/2025-07-28-analyzing-godot-engine-codebase-millions-lines-of-code.rst
@@ -228,4 +228,6 @@ While the Godot engine itself contains millions of lines of code, games built wi
Piano Roll Man is a unique music-based game that lets you load any MIDI file from the internet and play through it as a level. With a full level editor and the ability to share levels by simply sharing MIDI files, it showcases Godot's flexibility in creating innovative gameplay mechanics.
-`Get Piano Roll Man now for just $6 during alpha! `_ (Price increases to $12 in beta and $18 at release) Available for Linux, Windows, and Mac - your purchase includes all future releases as we shape the game together with our alpha community.
\ No newline at end of file
+`Get Piano Roll Man now for just $6 during alpha! `_ (Price increases to $12 in beta and $18 at release) Available for Linux, Windows, and Mac - your purchase includes all future releases as we shape the game together with our alpha community.
+
+.. contents::