diff --git a/_includes/header.html b/_includes/header.html
index a37be4a..00fe2dc 100644
--- a/_includes/header.html
+++ b/_includes/header.html
@@ -20,7 +20,7 @@
{% endif %}
{% if page.tags %}
-
+
{% endif %}
diff --git a/blog/_posts/2013-01-07-secure-git-repositories.md b/blog/_posts/2013-01-07-secure-git-repositories.md
index 2144678..1b3012a 100644
--- a/blog/_posts/2013-01-07-secure-git-repositories.md
+++ b/blog/_posts/2013-01-07-secure-git-repositories.md
@@ -1,7 +1,7 @@
---
title: Secure Git Repositories
layout: post
-tags: git security
+tags: [ 'git', 'security' ]
description: Seamless data encryption of repository files.
---
diff --git a/blog/_posts/2013-01-14-terminating-gearman-workers-in-php.md b/blog/_posts/2013-01-14-terminating-gearman-workers-in-php.md
index 5cc8991..50175cb 100644
--- a/blog/_posts/2013-01-14-terminating-gearman-workers-in-php.md
+++ b/blog/_posts/2013-01-14-terminating-gearman-workers-in-php.md
@@ -1,7 +1,7 @@
---
title: Terminating Gearman Workers in PHP
layout: post
-tags: deploy gearman pcntl php
+tags: [ 'deploy', 'gearman', 'pcntl', 'php' ]
description: Locally and remotely stopping workers without interrupting jobs.
code: https://gist.github.com/dpb587/4531728
---
diff --git a/blog/_posts/2013-01-21-opengrok-cli.md b/blog/_posts/2013-01-21-opengrok-cli.md
index 857bb91..697c1a5 100644
--- a/blog/_posts/2013-01-21-opengrok-cli.md
+++ b/blog/_posts/2013-01-21-opengrok-cli.md
@@ -1,7 +1,7 @@
---
title: OpenGrok CLI
layout: post
-tags: opengrok php symfony xpath
+tags: [ 'opengrok', 'php', 'symfony', 'xpath' ]
description: Making it easier to search code from the command line.
code: https://github.com/dpb587/opengrok-cli
---
diff --git a/blog/_posts/2013-01-28-scripting-endicia-to-purchase-postage.md b/blog/_posts/2013-01-28-scripting-endicia-to-purchase-postage.md
index 32355cb..f9a738b 100644
--- a/blog/_posts/2013-01-28-scripting-endicia-to-purchase-postage.md
+++ b/blog/_posts/2013-01-28-scripting-endicia-to-purchase-postage.md
@@ -1,7 +1,7 @@
---
title: Scripting Endicia to Purchase Postage
layout: post
-tags: applescript endicia loopy
+tags: [ 'applescript', 'endicia', 'loopy' ]
description: Automating user interactions with AppleScript.
code: https://gist.github.com/dpb587/4660132
---
diff --git a/blog/_posts/2013-02-08-automating-backups-to-the-cloud.md b/blog/_posts/2013-02-08-automating-backups-to-the-cloud.md
index 3005f2d..a40fd50 100644
--- a/blog/_posts/2013-02-08-automating-backups-to-the-cloud.md
+++ b/blog/_posts/2013-02-08-automating-backups-to-the-cloud.md
@@ -1,7 +1,7 @@
---
title: Automating Backups to the Cloud
layout: post
-tags: backup gpg s3
+tags: [ 'backup', 'gpg', 's3' ]
description: Combining gpg, Amazon S3 and IAM policies.
---
diff --git a/blog/_posts/2013-02-19-using-facter-in-ant-scripts.md b/blog/_posts/2013-02-19-using-facter-in-ant-scripts.md
index 25cec72..1e4ff5f 100644
--- a/blog/_posts/2013-02-19-using-facter-in-ant-scripts.md
+++ b/blog/_posts/2013-02-19-using-facter-in-ant-scripts.md
@@ -1,7 +1,7 @@
---
title: Using Facter in Ant Scripts
layout: post
-tags: ant facter
+tags: [ 'ant', 'facter' ]
description: Reusing facts from build scripts.
---
diff --git a/blog/_posts/2013-03-01-a-generic-storage-interface.md b/blog/_posts/2013-03-01-a-generic-storage-interface.md
index 4d92236..8870d95 100644
--- a/blog/_posts/2013-03-01-a-generic-storage-interface.md
+++ b/blog/_posts/2013-03-01-a-generic-storage-interface.md
@@ -1,7 +1,7 @@
---
title: A Generic Storage Interface
layout: post
-tags: asset php storage
+tags: [ 'asset', 'php', 'storage' ]
description: Abstracting file storage, whether it's local or cloud.
---
diff --git a/blog/_posts/2013-03-05-path-based-tmpfile-in-php.md b/blog/_posts/2013-03-05-path-based-tmpfile-in-php.md
index afbfa79..44d0b11 100644
--- a/blog/_posts/2013-03-05-path-based-tmpfile-in-php.md
+++ b/blog/_posts/2013-03-05-path-based-tmpfile-in-php.md
@@ -1,7 +1,7 @@
---
title: Path-based tmpfile in PHP
layout: post
-tags: php
+tags: [ 'php' ]
description: When paths are more useful than resources.
---
diff --git a/blog/_posts/2013-03-07-comparing-php-application-definitions.md b/blog/_posts/2013-03-07-comparing-php-application-definitions.md
index 6d57437..7c2e8f1 100644
--- a/blog/_posts/2013-03-07-comparing-php-application-definitions.md
+++ b/blog/_posts/2013-03-07-comparing-php-application-definitions.md
@@ -1,7 +1,7 @@
---
title: Comparing PHP Application Definitions
layout: post
-tags: code diff language php xslt
+tags: [ 'code', 'diff', 'language', 'php', 'xslt' ]
description: Identifying how classes/interfaces changed between versions.
code: https://github.com/dpb587/diff-defn.php
---
diff --git a/blog/_posts/2013-03-15-using-html-headers-with-wkhtmltopdf.md b/blog/_posts/2013-03-15-using-html-headers-with-wkhtmltopdf.md
index dc88b50..e66c8c8 100644
--- a/blog/_posts/2013-03-15-using-html-headers-with-wkhtmltopdf.md
+++ b/blog/_posts/2013-03-15-using-html-headers-with-wkhtmltopdf.md
@@ -1,7 +1,7 @@
---
title: Using HTML Headers with wkhtmltopdf
layout: post
-tags: headers wkhtmltopdf
+tags: [ 'headers', 'wkhtmltopdf' ]
description: Experimenting with dynamic HTML headers for PDFs.
---
diff --git a/blog/_posts/2013-03-23-bank-card-readers-for-web-applications.md b/blog/_posts/2013-03-23-bank-card-readers-for-web-applications.md
index b4f6317..5cc0076 100644
--- a/blog/_posts/2013-03-23-bank-card-readers-for-web-applications.md
+++ b/blog/_posts/2013-03-23-bank-card-readers-for-web-applications.md
@@ -1,7 +1,7 @@
---
title: Bank Card Readers for Web Applications
layout: post
-tags: bank-card forms javascript reader
+tags: [ 'bank card', 'forms', 'javascript', 'reader' ]
description: Scanning credit cards into website forms.
code: https://gist.github.com/dpb587/5229239
---
diff --git a/blog/_posts/2013-04-27-new-website-for-the-loopy-ewe.md b/blog/_posts/2013-04-27-new-website-for-the-loopy-ewe.md
index 20de924..d6a7913 100644
--- a/blog/_posts/2013-04-27-new-website-for-the-loopy-ewe.md
+++ b/blog/_posts/2013-04-27-new-website-for-the-loopy-ewe.md
@@ -1,7 +1,7 @@
---
title: New Website for The Loopy Ewe
layout: post
-tags: elasticsearch migration redesign theloopyewe
+tags: [ 'elasticsearch', 'migration', 'redesign', 'theloopyewe' ]
description: A summary of the customer-facing changes I worked on for the site.
---
diff --git a/blog/_posts/2013-05-07-embeddable-and-context-aware-web-pages.md b/blog/_posts/2013-05-07-embeddable-and-context-aware-web-pages.md
index 3c8c3b8..910171c 100644
--- a/blog/_posts/2013-05-07-embeddable-and-context-aware-web-pages.md
+++ b/blog/_posts/2013-05-07-embeddable-and-context-aware-web-pages.md
@@ -1,7 +1,7 @@
---
title: Embeddable and Context-Aware Web Pages
layout: post
-tags: architecture http javascript symfony
+tags: [ 'architecture', 'http', 'javascript', 'symfony', 'symfony2' ]
description: Embedding content in an absolutely relative manner.
---
diff --git a/blog/_posts/2013-05-13-structured-data-with-schema-org.md b/blog/_posts/2013-05-13-structured-data-with-schema-org.md
index 9355bd5..b0faa43 100644
--- a/blog/_posts/2013-05-13-structured-data-with-schema-org.md
+++ b/blog/_posts/2013-05-13-structured-data-with-schema-org.md
@@ -1,7 +1,7 @@
---
title: Structured Data with schema.org
layout: post
-tags: product schema.org structured-data xpath
+tags: [ 'product', 'schema.org', 'structured data', 'xpath' ]
description: Ensuring content is useful to both humans and robots.
---
diff --git a/blog/_posts/2013-05-16-ti-debug-a-browser-debugger-for-server-code.md b/blog/_posts/2013-05-16-ti-debug-a-browser-debugger-for-server-code.md
index 4d521ac..101bb64 100644
--- a/blog/_posts/2013-05-16-ti-debug-a-browser-debugger-for-server-code.md
+++ b/blog/_posts/2013-05-16-ti-debug-a-browser-debugger-for-server-code.md
@@ -1,7 +1,7 @@
---
title: "ti-debug: For Debugging Server Code in the Browser"
layout: post
-tags: node xdebug webkit
+tags: [ 'debugger', 'node', 'php', 'xdebug', 'webkit' ]
description: Making it easier to debug languages like PHP and Python with only a browser.
---
diff --git a/blog/_posts/2013-06-01-search-engine-based-on-structured-data.md b/blog/_posts/2013-06-01-search-engine-based-on-structured-data.md
index 46ed822..4150bf2 100644
--- a/blog/_posts/2013-06-01-search-engine-based-on-structured-data.md
+++ b/blog/_posts/2013-06-01-search-engine-based-on-structured-data.md
@@ -1,7 +1,7 @@
---
title: The Basics of a Custom Search Engine
layout: post
-tags: elasticsearch gearmand schema.org search sitemap structured-data
+tags: [ 'elasticsearch', 'gearmand', 'schema.org', 'search', 'sitemap', 'structured data' ]
description: Combining elasticsearch and "structured data" to create a self-hosted search engine.
---
diff --git a/blog/_posts/2014-01-13-barcoding-inventory-with-qr-codes.md b/blog/_posts/2014-01-13-barcoding-inventory-with-qr-codes.md
index 47c1cc4..db65ad0 100644
--- a/blog/_posts/2014-01-13-barcoding-inventory-with-qr-codes.md
+++ b/blog/_posts/2014-01-13-barcoding-inventory-with-qr-codes.md
@@ -1,7 +1,7 @@
---
title: "Barcoding Inventory with QR Codes"
layout: post
-tags: barcode qr-code retail product label scan
+tags: [ 'barcode', 'qr', 'retail', 'product', 'label', 'scan' ]
description: A web-centric, user-friendly approach for using barcodes in a retail shop.
---
diff --git a/blog/_posts/2014-02-28-distributed-docker-containers.md b/blog/_posts/2014-02-28-distributed-docker-containers.md
index 71d3421..d37489a 100644
--- a/blog/_posts/2014-02-28-distributed-docker-containers.md
+++ b/blog/_posts/2014-02-28-distributed-docker-containers.md
@@ -1,7 +1,7 @@
---
title: Distributed Docker Containers
layout: post
-tags: aws-ec2 docker nodejs scs-utils
+tags: [ 'aws-ec2', 'docker', 'nodejs', 'scs-utils' ]
description: A strategy for integrating Docker services across multiple hosts and data centers.
---
diff --git a/blog/_posts/2014-04-08-photo-galleries-for-jekyll.md b/blog/_posts/2014-04-08-photo-galleries-for-jekyll.md
index bfb6e2a..c88ac9c 100644
--- a/blog/_posts/2014-04-08-photo-galleries-for-jekyll.md
+++ b/blog/_posts/2014-04-08-photo-galleries-for-jekyll.md
@@ -1,7 +1,7 @@
---
title: Photo Galleries for Jekyll
layout: post
-tags: blog gallery iphoto jekyll jekyllrb photo ruby
+tags: [ 'blog', 'gallery', 'iphoto', 'jekyll', 'jekyllrb', 'photo', 'ruby' ]
description: Easily exporting my iPhoto album to this Jekyll-based site.
---
diff --git a/blog/_posts/2014-04-24-color-searching-with-elasticsearch.md b/blog/_posts/2014-04-24-color-searching-with-elasticsearch.md
index 82f2b0c..02c153c 100644
--- a/blog/_posts/2014-04-24-color-searching-with-elasticsearch.md
+++ b/blog/_posts/2014-04-24-color-searching-with-elasticsearch.md
@@ -1,7 +1,7 @@
---
title: Color Searching with Elasticsearch
layout: post
-tags: color ecommerce elasticsearch hsv search weighted
+tags: [ 'color', 'ecommerce', 'elasticsearch', 'hsv', 'search', 'weighted' ]
description: Some mappings, strategies, and queries for advanced color searching with elasticsearch.
primary_image: http://dpb587.me/asset/blog/2014-04-24-color-searching-with-elasticsearch/search0.png
---