-import frontmatter
+#!/bin/python3
+import argparse
import yaml
import chevron as mustache
from pathlib import Path
-from collections import ChainMap
+import collections
import os.path
+import sys
+
+import frontmatter
+import monitor
class PseudoMap():
def __getitem__(self, key):
title = "".join(x for x in title if x in allowable)
return title
+RELOAD_HTML = b"""<script>window.setTimeout(function () { location.reload(false);}, 5000);</script>"""
+
class Templatable(PseudoMap):
def __init__(self, blog):
self.blog = blog
def output(self):
output = self.content()
+ if self.blog.reload:
+ output += RELOAD_HTML
self.output_path.parent.mkdir(parents=True, exist_ok=True)
with open(self.output_path, "wb") as f:
f.write(output)
@property
def context(self):
- return ChainMap(self, self.blog)
+ return collections.ChainMap(self, self.blog)
class Static(Templatable):
def __init__(self, path, blog):
def id(self):
if hasattr(self, "wordpress_slug"): return self.wordpress_slug
if hasattr(self, "slug"): return self.slug
- return utrl_slug(self.title)
+ return url_slug(self.title)
+
+ def __hash__(self):
+ return hash(self.id)
class Tag(Templatable):
def __init__(self, tag, blog):
super().__init__(blog)
self.tag = tag
+ self.posts = set()
+ def add_post(self, post):
+ self.posts.add(post)
def __hash__(self):
return hash(self.tag)
class Category(Tag):
pass
class Blog(PseudoMap):
- def __init__(self, config="config.yaml"):
- self.tags = set()
- self.categories = set()
+ def __init__(self, config="config.yaml", reload=False):
+ self.tags = {}
+ self.categories = {}
self.posts = []
+ self.reload = reload
self.load_config(config)
self.load_posts()
def add_post(self, post):
self.posts.append(post)
+
for tag in post.tags:
- self.tags.add(Tag(tag, self))
+ self.tag_for(tag).add_post(post)
for category in post.categories:
- self.categories.add(Category(category, self))
+ self.category_for(category).add_post(post)
+
+ def category_for(self, category):
+ if category not in self.categories:
+ self.categories[category] = Category(category, self)
+ return self.categories[category]
+
+ def tag_for(self, tag):
+ if tag not in self.tags:
+ self.tags[tag] = Tag(tag, self)
+ return self.tags[tag]
@property
def images(self):
def pages(self):
return [] # TODO
+ def generate_all(blog):
+ for image in blog.images:
+ image.output()
+ for static in blog.static:
+ static.output()
+ for post in blog.posts:
+ post.output()
+ for tag in blog.tags.values():
+ tag.output()
+ for category in blog.categories.values():
+ category.output()
+ for page in blog.pages:
+ page.output()
+
+ def updates_happened(self, paths):
+ for path in paths:
+ self._update_happened(path)
+
+ def _update_happened(self, path):
+ path = Path(path)
+ global_update = [
+ self.tag_template, self.category_template, self.post_template,
+ Path(self.static_dir) / "wp-includes",
+ Path(self.static_dir) / "wp-content/themes",
+ self.page_dir,
+ ]
+ local_update = [
+ self.post_dir,
+ self.static_dir, # aside from those two subdirs
+ self.image_dir,
+ ]
+ if any(path.is_relative_to(top) for top in global_update):
+ print(path, "updated, generating all...", file=sys.stderr)
+ self.generate_all()
+ elif any(path.is_relative_to(top) for top in local_update):
+ print(path, "updated, generating all (needlessly)...", file=sys.stderr)
+ self.generate_all() # TODO: Don't generate everything
+ else:
+ #print(path, "updated, ignoring...", file=sys.stderr)
+ pass
+
+ # TODO: Reload when 'blog' executable or config file is changed?
+
if __name__ == "__main__":
- blog = Blog()
- for image in blog.images:
- image.output()
- for static in blog.static:
- static.output()
- for post in blog.posts:
- post.output()
- for tag in blog.tags:
- tag.output()
- for category in blog.categories:
- category.output()
- for page in blog.pages:
- page.output()
+ parser = argparse.ArgumentParser(
+ prog="blog",
+ description="Generate za3k's blog from HTML/markdown files with YAML frontmatter and some templates",
+ )
+ parser.add_argument("-a", "--all", action='store_true')
+ parser.add_argument('changed_files', metavar="FILE", type=argparse.FileType('r'), nargs="*", help='blog posts to re-generate (source paths)')
+ parser.add_argument("-f", "--follow", action='store_true', help="continue running and monitoring for file changes")
+ args = parser.parse_args()
+
+ if len(args.changed_files) == 0:
+ args.all = True
+
+ blog = Blog(reload=args.follow)
+ if args.all:
+ blog.generate_all()
+ else:
+ blog.updates_happened(changed_files)
+
+ if args.follow:
+ print("monitoring for changes...", file=sys.stderr)
+ # Discard updates within 5s of one another
+ for changed_file in monitor.Monitor(blog.source, discard_rapid=5):
+ blog.updates_happened([changed_file])
--- /dev/null
+
+<!DOCTYPE html>
+<html lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0, minimum-scale=1.0, maximum-scale=3.0">
+<link rel="profile" href="http://gmpg.org/xfn/11" />
+<link rel="pingback" href="https://blog.za3k.com/xmlrpc.php" />
+<title>games</title>
+<meta name='robots' content='max-image-preview:large' />
+<link rel="alternate" type="application/rss+xml" title=" » Feed" href="https://blog.za3k.com/feed/" />
+<link rel="alternate" type="application/rss+xml" title=" » Comments Feed" href="https://blog.za3k.com/comments/feed/" />
+<link rel="alternate" type="application/rss+xml" title=" » games Tag Feed" href="https://blog.za3k.com/tag/games/feed/" />
+<script type="text/javascript">
+/* <![CDATA[ */
+window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/blog.za3k.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.5.5"}};
+/*! This file is auto-generated */
+!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
+/* ]]> */
+</script>
+<link rel='stylesheet' id='dashicons-css' href='https://blog.za3k.com/wp-includes/css/dashicons.min.css?ver=6.5.5' type='text/css' media='all' />
+<link rel='stylesheet' id='admin-bar-css' href='https://blog.za3k.com/wp-includes/css/admin-bar.min.css?ver=6.5.5' type='text/css' media='all' />
+<style id='admin-bar-inline-css' type='text/css'>
+
+ @media screen { html { margin-top: 32px !important; } }
+ @media screen and ( max-width: 782px ) { html { margin-top: 46px !important; } }
+
+@media print { #wpadminbar { display:none; } }
+</style>
+<style id='wp-emoji-styles-inline-css' type='text/css'>
+
+ img.wp-smiley, img.emoji {
+ display: inline !important;
+ border: none !important;
+ box-shadow: none !important;
+ height: 1em !important;
+ width: 1em !important;
+ margin: 0 0.07em !important;
+ vertical-align: -0.1em !important;
+ background: none !important;
+ padding: 0 !important;
+ }
+</style>
+<link rel='stylesheet' id='wp-block-library-css' href='https://blog.za3k.com/wp-includes/css/dist/block-library/style.min.css?ver=6.5.5' type='text/css' media='all' />
+<style id='classic-theme-styles-inline-css' type='text/css'>
+/*! This file is auto-generated */
+.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
+</style>
+<style id='global-styles-inline-css' type='text/css'>
+body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
+.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
+:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
+:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
+.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
+</style>
+<link rel='stylesheet' id='mantra-style-css' href='https://blog.za3k.com/wp-content/themes/mantra/style.css?ver=3.3.2' type='text/css' media='all' />
+<style id='mantra-style-inline-css' type='text/css'>
+ #wrapper { max-width: 1050px; } #content { width: 100%; max-width:810px; max-width: calc( 100% - 240px ); } #primary, #secondary { width:240px; } #primary .widget-title, #secondary .widget-title { margin-right: -2em; text-align: left; } html { font-size:14px; } body, input, textarea {font-family:Segoe UI, Arial, sans-serif; } #content h1.entry-title a, #content h2.entry-title a, #content h1.entry-title, #content h2.entry-title, #front-text1 h2, #front-text2 h2 {font-family:Georgia, Times New Roman, Times, serif; } .widget-area {font-family:Helvetica, sans-serif; } .entry-content h1, .entry-content h2, .entry-content h3, .entry-content h4, .entry-content h5, .entry-content h6 {font-family:Georgia, Times New Roman, Times, serif; } .nocomments, .nocomments2 {display:none;} #header-container > div { margin-top:20px; } #header-container > div { margin-left:40px; } body { background-color:#444444 !important; } #header { background-color:#333333; } #footer { background-color:#222222; } #footer2 { background-color:#171717; } #site-title span a { color:#0D85CC; } #site-description { color:#999999; } #content, .column-text, #front-text3, #front-text4 { color:#333333 ;} .widget-area a:link, .widget-area a:visited, a:link, a:visited ,#searchform #s:hover, #container #s:hover, #access a:hover, #wp-calendar tbody td a, #site-info a, #site-copyright a, #access li:hover > a, #access ul ul:hover > a { color:#0D85CC; } a:hover, .entry-meta a:hover, .entry-utility a:hover, .widget-area a:hover { color:#12a7ff; } #content .entry-title a, #content .entry-title, #content h1, #content h2, #content h3, #content h4, #content h5, #content h6 { color:#444444; } #content .entry-title a:hover { color:#000000; } .widget-title { background-color:#444444; } .widget-title { color:#2EA5FD; } #footer-widget-area .widget-title { color:#0C85CD; } #footer-widget-area a { color:#666666; } #footer-widget-area a:hover { color:#888888; } body .wp-caption { background-image:url(https://blog.za3k.com/wp-content/themes/mantra/resources/images/pins/Pin2.png); } .entry-content p:not(:last-child), .entry-content ul, .entry-summary ul, .entry-content ol, .entry-summary ol { margin-bottom:1.5em;} .entry-meta .entry-time { display:none; } #branding { height:75px ;}
+/* Mantra Custom CSS */
+</style>
+<link rel='stylesheet' id='mantra-mobile-css' href='https://blog.za3k.com/wp-content/themes/mantra/resources/css/style-mobile.css?ver=3.3.2' type='text/css' media='all' />
+<script type="text/javascript" src="https://blog.za3k.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
+<script type="text/javascript" src="https://blog.za3k.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
+<script type="text/javascript" id="mantra-frontend-js-extra">
+/* <![CDATA[ */
+var mantra_options = {"responsive":"1","image_class":"imageSeven","equalize_sidebars":"0"};
+/* ]]> */
+</script>
+<script type="text/javascript" src="https://blog.za3k.com/wp-content/themes/mantra/resources/js/frontend.js?ver=3.3.2" id="mantra-frontend-js"></script>
+<link rel="https://api.w.org/" href="https://blog.za3k.com/wp-json/" /><link rel="alternate" type="application/json" href="https://blog.za3k.com/wp-json/wp/v2/tags/60" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://blog.za3k.com/xmlrpc.php?rsd" />
+<meta name="generator" content="WordPress 6.5.5" />
+<link rel="stylesheet" type="text/css" href="https://blog.za3k.com/wp-content/plugins/wp-recaptcha/recaptcha.css" /><!--[if lte IE 8]> <style type="text/css" media="screen"> #access ul li, .edit-link a , #footer-widget-area .widget-title, .entry-meta,.entry-meta .comments-link, .short-button-light, .short-button-dark ,.short-button-color ,blockquote { position:relative; behavior: url(https://blog.za3k.com/wp-content/themes/mantra/resources/js/PIE/PIE.php); } #access ul ul { -pie-box-shadow:0px 5px 5px #999; } #access ul li.current_page_item, #access ul li.current-menu-item , #access ul li ,#access ul ul ,#access ul ul li, .commentlist li.comment ,.commentlist .avatar, .nivo-caption, .theme-default .nivoSlider { behavior: url(https://blog.za3k.com/wp-content/themes/mantra/resources/js/PIE/PIE.php); } </style> <![endif]--><!--[if lt IE 9]>
+ <script>
+ document.createElement('header');
+ document.createElement('nav');
+ document.createElement('section');
+ document.createElement('article');
+ document.createElement('aside');
+ document.createElement('footer');
+ document.createElement('hgroup');
+ </script>
+ <![endif]--> </head>
+<body class="archive tag tag-games tag-60 logged-in admin-bar no-customize-support mantra-image-seven mantra-caption-light mantra-hratio-0 mantra-sidebar-right mantra-menu-left">
+ <script type="text/javascript">
+/* <![CDATA[ */
+
+ (function() {
+ var request, b = document.body, c = 'className', cs = 'customize-support', rcs = new RegExp('(^|\\s+)(no-)?'+cs+'(\\s+|$)');
+
+ request = true;
+
+ b[c] = b[c].replace( rcs, ' ' );
+ // The customizer requires postMessage and CORS (if the site is cross domain).
+ b[c] += ( window.postMessage && request ? ' ' : ' no-' ) + cs;
+ }());
+
+/* ]]> */
+</script>
+ <div id="wpadminbar" class="nojq nojs">
+ <div class="quicklinks" id="wp-toolbar" role="navigation" aria-label="Toolbar">
+ <ul role='menu' id='wp-admin-bar-root-default' class="ab-top-menu"><li id='wp-admin-bar-wp-logo' class="menupop"><a class='ab-item' role="menuitem" aria-expanded="false" href='https://blog.za3k.com/wp-admin/about.php'><span class="ab-icon" aria-hidden="true"></span><span class="screen-reader-text">About WordPress</span></a><div class="ab-sub-wrapper"><ul role='menu' aria-label='About WordPress' id='wp-admin-bar-wp-logo-default' class="ab-submenu"><li id='wp-admin-bar-about'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/about.php'>About WordPress</a></li><li id='wp-admin-bar-contribute'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/contribute.php'>Get Involved</a></li></ul><ul role='menu' aria-label='About WordPress' id='wp-admin-bar-wp-logo-external' class="ab-sub-secondary ab-submenu"><li id='wp-admin-bar-wporg'><a class='ab-item' role="menuitem" href='https://wordpress.org/'>WordPress.org</a></li><li id='wp-admin-bar-documentation'><a class='ab-item' role="menuitem" href='https://wordpress.org/documentation/'>Documentation</a></li><li id='wp-admin-bar-learn'><a class='ab-item' role="menuitem" href='https://learn.wordpress.org/'>Learn WordPress</a></li><li id='wp-admin-bar-support-forums'><a class='ab-item' role="menuitem" href='https://wordpress.org/support/forums/'>Support</a></li><li id='wp-admin-bar-feedback'><a class='ab-item' role="menuitem" href='https://wordpress.org/support/forum/requests-and-feedback'>Feedback</a></li></ul></div></li><li id='wp-admin-bar-site-name' class="menupop"><a class='ab-item' role="menuitem" aria-expanded="false" href='https://blog.za3k.com/wp-admin/'>blog.za3k.com</a><div class="ab-sub-wrapper"><ul role='menu' aria-label='blog.za3k.com' id='wp-admin-bar-site-name-default' class="ab-submenu"><li id='wp-admin-bar-dashboard'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/'>Dashboard</a></li><li id='wp-admin-bar-plugins'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/plugins.php'>Plugins</a></li></ul><ul role='menu' aria-label='blog.za3k.com' id='wp-admin-bar-appearance' class="ab-submenu"><li id='wp-admin-bar-themes'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/themes.php'>Themes</a></li><li id='wp-admin-bar-widgets'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/widgets.php'>Widgets</a></li><li id='wp-admin-bar-menus'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/nav-menus.php'>Menus</a></li><li id='wp-admin-bar-background' class="hide-if-customize"><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/themes.php?page=custom-background'>Background</a></li><li id='wp-admin-bar-header' class="hide-if-customize"><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/themes.php?page=custom-header'>Header</a></li></ul></div></li><li id='wp-admin-bar-customize' class="hide-if-no-customize"><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/customize.php?url=https%3A%2F%2Fblog.za3k.com%2Ftag%2Fgames%2F'>Customize</a></li><li id='wp-admin-bar-comments'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/edit-comments.php'><span class="ab-icon" aria-hidden="true"></span><span class="ab-label awaiting-mod pending-count count-0" aria-hidden="true">0</span><span class="screen-reader-text comments-in-moderation-text">0 Comments in moderation</span></a></li><li id='wp-admin-bar-new-content' class="menupop"><a class='ab-item' role="menuitem" aria-expanded="false" href='https://blog.za3k.com/wp-admin/post-new.php'><span class="ab-icon" aria-hidden="true"></span><span class="ab-label">New</span></a><div class="ab-sub-wrapper"><ul role='menu' aria-label='New' id='wp-admin-bar-new-content-default' class="ab-submenu"><li id='wp-admin-bar-new-post'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/post-new.php'>Post</a></li><li id='wp-admin-bar-new-media'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/media-new.php'>Media</a></li><li id='wp-admin-bar-new-page'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/post-new.php?post_type=page'>Page</a></li><li id='wp-admin-bar-new-user'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/user-new.php'>User</a></li></ul></div></li><li id='wp-admin-bar-edit'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/term.php?taxonomy=post_tag&tag_ID=60&post_type=post'>Edit Tag</a></li></ul><ul role='menu' id='wp-admin-bar-top-secondary' class="ab-top-secondary ab-top-menu"><li id='wp-admin-bar-search' class="admin-bar-search"><div class="ab-item ab-empty-item" tabindex="-1" role="menuitem"><form action="https://blog.za3k.com/" method="get" id="adminbarsearch"><input class="adminbar-input" name="s" id="adminbar-search" type="text" value="" maxlength="150" /><label for="adminbar-search" class="screen-reader-text">Search</label><input type="submit" class="adminbar-button" value="Search" /></form></div></li><li id='wp-admin-bar-my-account' class="menupop with-avatar"><a class='ab-item' role="menuitem" aria-expanded="false" href='https://blog.za3k.com/wp-admin/profile.php'>Howdy, <span class="display-name">admin</span><img alt='' src='https://secure.gravatar.com/avatar/09485be3ee1e86da6e39412f5c1b2a48?s=26&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/09485be3ee1e86da6e39412f5c1b2a48?s=52&d=mm&r=g 2x' class='avatar avatar-26 photo' height='26' width='26' decoding='async'/></a><div class="ab-sub-wrapper"><ul role='menu' aria-label='Howdy, admin' id='wp-admin-bar-user-actions' class="ab-submenu"><li id='wp-admin-bar-user-info'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-admin/profile.php'><img alt='' src='https://secure.gravatar.com/avatar/09485be3ee1e86da6e39412f5c1b2a48?s=64&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/09485be3ee1e86da6e39412f5c1b2a48?s=128&d=mm&r=g 2x' class='avatar avatar-64 photo' height='64' width='64' decoding='async'/><span class='display-name'>admin</span><span class='display-name edit-profile'>Edit Profile</span></a></li><li id='wp-admin-bar-logout'><a class='ab-item' role="menuitem" href='https://blog.za3k.com/wp-login.php?action=logout&_wpnonce=47237d8193'>Log Out</a></li></ul></div></li></ul> </div>
+ </div>
+
+ <div id="toTop"><i class="crycon-back2top"></i> </div>
+
+<div id="wrapper" class="hfeed">
+
+
+<header id="header">
+
+ <div id="masthead">
+
+ <div id="branding" role="banner" >
+
+
+ <div id="header-container">
+
+ <div>
+ <div id="site-title">
+ <span> <a href="https://blog.za3k.com/" title="" rel="home"></a> </span>
+ </div>
+ <div id="site-description" >blog of zachary "za3k" vance</div>
+ </div> <div class="socials" id="sheader">
+
+ <a target="_blank" rel="nofollow" href="https://blog.za3k.com/feed/" class="socialicons social-RSS" title="RSS">
+ <img alt="RSS" src="https://blog.za3k.com/wp-content/themes/mantra/resources/images/socials/RSS.png" />
+ </a>
+
+ <a target="_blank" rel="nofollow" href="https://twitter.com/unchoke" class="socialicons social-Twitter" title="Twitter">
+ <img alt="Twitter" src="https://blog.za3k.com/wp-content/themes/mantra/resources/images/socials/Twitter.png" />
+ </a>
+ </div>
+ </div> <!-- #header-container -->
+ <div style="clear:both;"></div>
+
+ </div><!-- #branding -->
+
+ <a id="nav-toggle"><span> Menu</span></a>
+ <nav id="access" class="jssafe" role="navigation">
+
+ <div class="skip-link screen-reader-text"><a href="#content" title="Skip to content">Skip to content</a></div>
+ <div class="menu"><ul id="prime_nav" class="menu"><li id="menu-item-255" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-255"><a href="https://blog.za3k.com/category/non-technical/">Non-Technical</a></li>
+<li id="menu-item-256" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-256"><a href="https://blog.za3k.com/category/technical/">Technical</a></li>
+</ul></div>
+ </nav><!-- #access -->
+
+ </div><!-- #masthead -->
+
+ <div style="clear:both;"> </div>
+
+</header><!-- #header -->
+<div id="main" class="main">
+ <div id="forbottom" >
+
+ <div style="clear:both;"> </div>
+
+
+ <section id="container">
+
+ <div id="content" role="main">
+
+
+ <header class="page-header">
+ <h1 class="page-title">Tag Archives: <span>{{ tag }}</span></h1>
+
+ </header>
+
+ <nav id="nav-above" class="navigation">
+ <div class="nav-previous"><a href="https://blog.za3k.com/tag/games/page/2/" ><span class="meta-nav">«</span> Older posts</a></div>
+ <div class="nav-next"></div>
+ </nav><!-- #nav-above -->
+
+
+ {{# posts }}
+ {{& post }}
+ {{/ posts }}
+
+ <div class='pagination_container'><nav class='pagination'><span class='current'>1</span><a href='https://blog.za3k.com/tag/games/page/2/' class='inactive' >2</a></nav></div>
+
+
+ </div><!-- #content -->
+ <div id="primary" class="widget-area" role="complementary">
+
+
+
+ <ul class="xoxo">
+ <li id="block-15" class="widget-container widget_block widget_text">
+<p><a href="https://za3k.com/blog">archive</a><br><a href="https://za3k.com">za3k.com</a></p>
+</li><li id="block-2" class="widget-container widget_block widget_search"><form role="search" method="get" action="https://blog.za3k.com/" class="wp-block-search__no-button wp-block-search" ><label class="wp-block-search__label screen-reader-text" for="wp-block-search__input-1" >Search</label><div class="wp-block-search__inside-wrapper " ><input class="wp-block-search__input" id="wp-block-search__input-1" placeholder="Search" value="" type="search" name="s" required /></div></form></li><li id="block-14" class="widget-container widget_block widget_tag_cloud"><p class="wp-block-tag-cloud"><a href="https://blog.za3k.com/tag/announcements/" class="tag-cloud-link tag-link-204 tag-link-position-1" style="font-size: 8pt;" aria-label="announcements (3 items)">announcements</a>
+<a href="https://blog.za3k.com/tag/archiving/" class="tag-cloud-link tag-link-151 tag-link-position-2" style="font-size: 14.155172413793pt;" aria-label="archiving (12 items)">archiving</a>
+<a href="https://blog.za3k.com/tag/art/" class="tag-cloud-link tag-link-39 tag-link-position-3" style="font-size: 15.965517241379pt;" aria-label="art (17 items)">art</a>
+<a href="https://blog.za3k.com/tag/backup/" class="tag-cloud-link tag-link-18 tag-link-position-4" style="font-size: 15pt;" aria-label="backup (14 items)">backup</a>
+<a href="https://blog.za3k.com/tag/book-review/" class="tag-cloud-link tag-link-189 tag-link-position-5" style="font-size: 9.2068965517241pt;" aria-label="book review (4 items)">book review</a>
+<a href="https://blog.za3k.com/tag/command-line/" class="tag-cloud-link tag-link-56 tag-link-position-6" style="font-size: 8pt;" aria-label="command-line (3 items)">command-line</a>
+<a href="https://blog.za3k.com/tag/cooking/" class="tag-cloud-link tag-link-84 tag-link-position-7" style="font-size: 8pt;" aria-label="cooking (3 items)">cooking</a>
+<a href="https://blog.za3k.com/tag/crafts/" class="tag-cloud-link tag-link-104 tag-link-position-8" style="font-size: 9.2068965517241pt;" aria-label="crafts (4 items)">crafts</a>
+<a href="https://blog.za3k.com/tag/dead-tree/" class="tag-cloud-link tag-link-69 tag-link-position-9" style="font-size: 9.2068965517241pt;" aria-label="dead tree (4 items)">dead tree</a>
+<a href="https://blog.za3k.com/tag/debian/" class="tag-cloud-link tag-link-114 tag-link-position-10" style="font-size: 10.172413793103pt;" aria-label="debian (5 items)">debian</a>
+<a href="https://blog.za3k.com/tag/email/" class="tag-cloud-link tag-link-22 tag-link-position-11" style="font-size: 9.2068965517241pt;" aria-label="email (4 items)">email</a>
+<a href="https://blog.za3k.com/tag/game/" class="tag-cloud-link tag-link-91 tag-link-position-12" style="font-size: 9.2068965517241pt;" aria-label="game (4 items)">game</a>
+<a href="https://blog.za3k.com/tag/game-design/" class="tag-cloud-link tag-link-92 tag-link-position-13" style="font-size: 10.172413793103pt;" aria-label="game design (5 items)">game design</a>
+<a href="https://blog.za3k.com/tag/games/" class="tag-cloud-link tag-link-60 tag-link-position-14" style="font-size: 15.965517241379pt;" aria-label="games (17 items)">games</a>
+<a href="https://blog.za3k.com/tag/hack-a-day/" class="tag-cloud-link tag-link-228 tag-link-position-15" style="font-size: 22pt;" aria-label="hack-a-day (57 items)">hack-a-day</a>
+<a href="https://blog.za3k.com/tag/hacks/" class="tag-cloud-link tag-link-32 tag-link-position-16" style="font-size: 9.2068965517241pt;" aria-label="hacks (4 items)">hacks</a>
+<a href="https://blog.za3k.com/tag/hardware/" class="tag-cloud-link tag-link-136 tag-link-position-17" style="font-size: 12.224137931034pt;" aria-label="hardware (8 items)">hardware</a>
+<a href="https://blog.za3k.com/tag/linux/" class="tag-cloud-link tag-link-17 tag-link-position-18" style="font-size: 18.741379310345pt;" aria-label="linux (30 items)">linux</a>
+<a href="https://blog.za3k.com/tag/minecraft-2/" class="tag-cloud-link tag-link-8 tag-link-position-19" style="font-size: 9.2068965517241pt;" aria-label="minecraft (4 items)">minecraft</a>
+<a href="https://blog.za3k.com/tag/music/" class="tag-cloud-link tag-link-36 tag-link-position-20" style="font-size: 11.620689655172pt;" aria-label="music (7 items)">music</a>
+<a href="https://blog.za3k.com/tag/november/" class="tag-cloud-link tag-link-227 tag-link-position-21" style="font-size: 18.01724137931pt;" aria-label="november (26 items)">november</a>
+<a href="https://blog.za3k.com/tag/organization/" class="tag-cloud-link tag-link-105 tag-link-position-22" style="font-size: 9.2068965517241pt;" aria-label="organization (4 items)">organization</a>
+<a href="https://blog.za3k.com/tag/physical/" class="tag-cloud-link tag-link-71 tag-link-position-23" style="font-size: 9.2068965517241pt;" aria-label="physical (4 items)">physical</a>
+<a href="https://blog.za3k.com/tag/piskell/" class="tag-cloud-link tag-link-109 tag-link-position-24" style="font-size: 9.2068965517241pt;" aria-label="piskell (4 items)">piskell</a>
+<a href="https://blog.za3k.com/tag/pixel-art/" class="tag-cloud-link tag-link-37 tag-link-position-25" style="font-size: 11.620689655172pt;" aria-label="pixel art (7 items)">pixel art</a>
+<a href="https://blog.za3k.com/tag/programming/" class="tag-cloud-link tag-link-47 tag-link-position-26" style="font-size: 11.01724137931pt;" aria-label="programming (6 items)">programming</a>
+<a href="https://blog.za3k.com/tag/publishing/" class="tag-cloud-link tag-link-68 tag-link-position-27" style="font-size: 9.2068965517241pt;" aria-label="publishing (4 items)">publishing</a>
+<a href="https://blog.za3k.com/tag/puzzles/" class="tag-cloud-link tag-link-275 tag-link-position-28" style="font-size: 8pt;" aria-label="puzzles (3 items)">puzzles</a>
+<a href="https://blog.za3k.com/tag/recipe/" class="tag-cloud-link tag-link-87 tag-link-position-29" style="font-size: 10.172413793103pt;" aria-label="recipe (5 items)">recipe</a>
+<a href="https://blog.za3k.com/tag/research/" class="tag-cloud-link tag-link-212 tag-link-position-30" style="font-size: 11.01724137931pt;" aria-label="research (6 items)">research</a>
+<a href="https://blog.za3k.com/tag/review/" class="tag-cloud-link tag-link-190 tag-link-position-31" style="font-size: 11.620689655172pt;" aria-label="review (7 items)">review</a>
+<a href="https://blog.za3k.com/tag/self-improvement/" class="tag-cloud-link tag-link-98 tag-link-position-32" style="font-size: 11.01724137931pt;" aria-label="self-improvement (6 items)">self-improvement</a>
+<a href="https://blog.za3k.com/tag/software/" class="tag-cloud-link tag-link-137 tag-link-position-33" style="font-size: 10.172413793103pt;" aria-label="software (5 items)">software</a>
+<a href="https://blog.za3k.com/tag/storage/" class="tag-cloud-link tag-link-173 tag-link-position-34" style="font-size: 9.2068965517241pt;" aria-label="storage (4 items)">storage</a>
+<a href="https://blog.za3k.com/tag/system-administration/" class="tag-cloud-link tag-link-14 tag-link-position-35" style="font-size: 15.241379310345pt;" aria-label="system administration (15 items)">system administration</a>
+<a href="https://blog.za3k.com/tag/throwaway/" class="tag-cloud-link tag-link-229 tag-link-position-36" style="font-size: 19.827586206897pt;" aria-label="throwaway (37 items)">throwaway</a>
+<a href="https://blog.za3k.com/tag/timelog/" class="tag-cloud-link tag-link-158 tag-link-position-37" style="font-size: 9.2068965517241pt;" aria-label="timelog (4 items)">timelog</a>
+<a href="https://blog.za3k.com/tag/video/" class="tag-cloud-link tag-link-259 tag-link-position-38" style="font-size: 8pt;" aria-label="video (3 items)">video</a>
+<a href="https://blog.za3k.com/tag/video-game/" class="tag-cloud-link tag-link-248 tag-link-position-39" style="font-size: 11.01724137931pt;" aria-label="video game (6 items)">video game</a>
+<a href="https://blog.za3k.com/tag/video-games/" class="tag-cloud-link tag-link-59 tag-link-position-40" style="font-size: 12.827586206897pt;" aria-label="video games (9 items)">video games</a>
+<a href="https://blog.za3k.com/tag/website/" class="tag-cloud-link tag-link-57 tag-link-position-41" style="font-size: 13.793103448276pt;" aria-label="website (11 items)">website</a>
+<a href="https://blog.za3k.com/tag/websites/" class="tag-cloud-link tag-link-41 tag-link-position-42" style="font-size: 9.2068965517241pt;" aria-label="websites (4 items)">websites</a>
+<a href="https://blog.za3k.com/tag/wikipedia/" class="tag-cloud-link tag-link-269 tag-link-position-43" style="font-size: 8pt;" aria-label="wikipedia (3 items)">wikipedia</a>
+<a href="https://blog.za3k.com/tag/yearly-review/" class="tag-cloud-link tag-link-191 tag-link-position-44" style="font-size: 11.01724137931pt;" aria-label="yearly review (6 items)">yearly review</a>
+<a href="https://blog.za3k.com/tag/zorchpad/" class="tag-cloud-link tag-link-282 tag-link-position-45" style="font-size: 11.01724137931pt;" aria-label="zorchpad (6 items)">zorchpad</a></p></li> </ul>
+
+ <ul class="xoxo">
+ </ul>
+
+
+ </div><!-- #primary .widget-area -->
+
+ </section><!-- #container -->
+
+ <div style="clear:both;"></div>
+
+ </div> <!-- #forbottom -->
+ </div><!-- #main -->
+
+
+ <footer id="footer" role="contentinfo">
+ <div id="colophon">
+
+
+
+ </div><!-- #colophon -->
+
+ <div id="footer2">
+
+ <div style="text-align:center;clear:both;padding-top:4px;" >
+ <a href="https://blog.za3k.com/" title="" rel="home">
+ </a> | Powered by <a target="_blank" href="http://www.cryoutcreations.eu/mantra" title="Mantra Theme by Cryout Creations">Mantra</a> & <a target="_blank" href="http://wordpress.org/"
+ title="Semantic Personal Publishing Platform"> WordPress. </a>
+</div><!-- #site-info -->
+ </div><!-- #footer2 -->
+
+ </footer><!-- #footer -->
+
+</div><!-- #wrapper -->
+
+<script type="text/javascript" src="https://blog.za3k.com/wp-includes/js/hoverintent-js.min.js?ver=2.2.1" id="hoverintent-js-js"></script>
+<script type="text/javascript" src="https://blog.za3k.com/wp-includes/js/admin-bar.min.js?ver=6.5.5" id="admin-bar-js"></script>
+
+</body>
+</html>