Add post about PVGttM

Add support for `status` prop on posts (draft or hidden)
Fix fonts
This commit is contained in:
Eric Woodward 2023-07-21 00:12:16 -04:00
parent b0751f0cb4
commit 5af4cb886f
19 changed files with 360 additions and 309 deletions

24
LICENSE
View File

@ -1,21 +1,11 @@
MIT License
The MIT License (MIT)
Copyright (c) 2018 Douglas Matoso
Copyright (c) 2018-23 Eric Woodward
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Based on [NanoGen](https://github.com/doug2k1/nanogen), copyright (c) 2018 Douglas Matoso
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -1,8 +1,8 @@
# Mystic Site Builder (2022 Edition)
# It's Eric Woodward (dotcom)
Micro static site generator in Node.js
A custom-built static site generator in Node.js used to create the website https://www.itsericwoodward.com (and https://itsericwoodward.com, for good measure).
Based on the ideas in this post: https://medium.com/douglas-matoso-english/build-static-site-generator-nodejs-8969ebe34b22
Based (at least in part) on the ideas in this post: https://medium.com/douglas-matoso-english/build-static-site-generator-nodejs-8969ebe34b22
## Setup
@ -10,10 +10,11 @@ Based on the ideas in this post: https://medium.com/douglas-matoso-english/build
$ npm i
$ npm run build
$ npm run serve
$ npm run watch
```
Go to http://localhost:5000 to see the generated site.
## How to use
If you want to use NanoGen to generate your own site, just fork this repository and add your content to the `src` folder.
If you want to use this as the basis for generating your own site, just fork this repository and update the content in the `src` folder.

View File

@ -1,7 +1,8 @@
const { exists } = require("fs-extra/lib/fs");
module.exports = async (config) => {
const { promises: fs } = require("fs"),
const
{ promises: fs } = require("fs"),
fse = require("fs-extra"),
path = require("path"),
ejs = require("ejs"),
@ -22,8 +23,9 @@ module.exports = async (config) => {
linkify: true,
typographer: true,
xhtmlOut: true,
}),
emoji = require("markdown-it-emoji"),
})
.use(require("markdown-it-footnote"))
.use(require("markdown-it-emoji")),
// { readJsonIfExists } = require("./utils"),
{ build, isRebuild, logFunction: log = () => {} } = config || {},
{ outputPath, journalsPerPage = 5, srcPath } = build,
@ -59,6 +61,7 @@ module.exports = async (config) => {
filePath = path.join(pagePath, file),
// read page file
data = fse.readFileSync(filePath, "utf-8"),
info = fse.statSync(filePath, "utf-8"),
// render page
{ attributes, body } = frontMatter(data),
{ content_type: contentType, tags: originalTags = [] } =
@ -94,6 +97,7 @@ module.exports = async (config) => {
page: {
name,
...attributes,
date_upd: attributes?.date_pub !== info.mtime ? info.mtime : (attributes.date_upd ?? ''),
body: updatedBody,
destPath,
filePath,
@ -187,8 +191,6 @@ module.exports = async (config) => {
}
};
md.use(emoji);
log(`${isRebuild ? "Reb" : "B"}uilding...`);
// clear destination folder
@ -227,7 +229,7 @@ module.exports = async (config) => {
},
pages = files
.map(({ page }) => ({ ...page }))
.filter(({ is_draft }) => !is_draft)
.filter(({ is_draft, status }) => !is_draft && status !== "draft")
.sort(sortByPubDate),
tagCloud = pages.reduce((acc, curr) => {
const { tags } = curr;

427
package-lock.json generated
View File

@ -1,13 +1,13 @@
{
"name": "iew-site-builder",
"version": "0.9.0",
"version": "0.9.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "iew-site-builder",
"version": "0.9.0",
"license": "ISC",
"version": "0.9.2",
"license": "MIT",
"dependencies": {
"chalk": "^4.1.2",
"chokidar": "^3.4.3",
@ -16,6 +16,7 @@
"json5": "^2.1.3",
"markdown-it": "^13.0.1",
"markdown-it-emoji": "^2.0.0",
"markdown-it-footnote": "^3.0.3",
"network-address": "^1.1.2",
"serve-handler": "^6.1.3"
},
@ -29,9 +30,9 @@
}
},
"node_modules/@zeit/schemas": {
"version": "2.21.0",
"resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz",
"integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==",
"version": "2.29.0",
"resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.29.0.tgz",
"integrity": "sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==",
"dev": true
},
"node_modules/accepts": {
@ -72,7 +73,7 @@
"string-width": "^4.1.0"
}
},
"node_modules/ansi-regex": {
"node_modules/ansi-align/node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
@ -81,6 +82,50 @@
"node": ">=8"
}
},
"node_modules/ansi-align/node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"node_modules/ansi-align/node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-align/node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"dev": true,
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@ -183,34 +228,10 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/boxen/node_modules/ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"dev": true,
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/boxen/node_modules/ansi-styles": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"dev": true,
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/boxen/node_modules/chalk": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
"integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
"integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
"dev": true,
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
@ -219,61 +240,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/boxen/node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true
},
"node_modules/boxen/node_modules/string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"dev": true,
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
"strip-ansi": "^7.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/boxen/node_modules/strip-ansi": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
"integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
"dev": true,
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/boxen/node_modules/wrap-ansi": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
"integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
"dev": true,
"dependencies": {
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
"strip-ansi": "^7.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
@ -413,6 +379,64 @@
"node": ">=12"
}
},
"node_modules/cliui/node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/cliui/node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"node_modules/cliui/node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/cliui/node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/cliui/node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@ -505,11 +529,14 @@
}
},
"node_modules/dotenv": {
"version": "16.0.3",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
"integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
"version": "16.3.1",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
"integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/motdotla/dotenv?sponsor=1"
}
},
"node_modules/eastasianwidth": {
@ -519,9 +546,9 @@
"dev": true
},
"node_modules/ejs": {
"version": "3.1.8",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
"integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
"version": "3.1.9",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
"integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
"dev": true,
"dependencies": {
"jake": "^10.8.5"
@ -534,9 +561,9 @@
}
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true
},
"node_modules/entities": {
@ -693,9 +720,9 @@
}
},
"node_modules/glob": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
"integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
@ -723,9 +750,9 @@
}
},
"node_modules/graceful-fs": {
"version": "4.2.10",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"dev": true
},
"node_modules/has-flag": {
@ -737,9 +764,9 @@
}
},
"node_modules/highlight.js": {
"version": "11.7.0",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.7.0.tgz",
"integrity": "sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ==",
"version": "11.8.0",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz",
"integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==",
"engines": {
"node": ">=12.0.0"
}
@ -880,15 +907,15 @@
"dev": true
},
"node_modules/jake": {
"version": "10.8.5",
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
"integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
"version": "10.8.7",
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
"integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==",
"dev": true,
"dependencies": {
"async": "^3.2.3",
"chalk": "^4.0.2",
"filelist": "^1.0.1",
"minimatch": "^3.0.4"
"filelist": "^1.0.4",
"minimatch": "^3.1.2"
},
"bin": {
"jake": "bin/cli.js"
@ -939,9 +966,9 @@
"dev": true
},
"node_modules/json5": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz",
"integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==",
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"bin": {
"json5": "lib/cli.js"
},
@ -989,6 +1016,11 @@
"resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz",
"integrity": "sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ=="
},
"node_modules/markdown-it-footnote": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/markdown-it-footnote/-/markdown-it-footnote-3.0.3.tgz",
"integrity": "sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w=="
},
"node_modules/markdown-it/node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@ -1036,9 +1068,9 @@
}
},
"node_modules/minimatch": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz",
"integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==",
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
@ -1048,9 +1080,9 @@
}
},
"node_modules/minimist": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
"integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@ -1248,12 +1280,12 @@
"dev": true
},
"node_modules/serve": {
"version": "14.1.2",
"resolved": "https://registry.npmjs.org/serve/-/serve-14.1.2.tgz",
"integrity": "sha512-luwVfJwbeE7dhCKeRU0vIBpt4bXdbAfzwsWJIQ5eqrIW2e+4nLWXbSlZ0WzelSFHQq+FlueOW6dr90jEewS9zw==",
"version": "14.2.0",
"resolved": "https://registry.npmjs.org/serve/-/serve-14.2.0.tgz",
"integrity": "sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg==",
"dev": true,
"dependencies": {
"@zeit/schemas": "2.21.0",
"@zeit/schemas": "2.29.0",
"ajv": "8.11.0",
"arg": "5.0.2",
"boxen": "7.0.0",
@ -1372,29 +1404,35 @@
"dev": true
},
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
"strip-ansi": "^7.0.1"
},
"engines": {
"node": ">=8"
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=8"
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/strip-final-newline": {
@ -1483,9 +1521,9 @@
}
},
"node_modules/uri-js/node_modules/punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
"dev": true,
"engines": {
"node": ">=6"
@ -1530,71 +1568,33 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/widest-line/node_modules/ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"dev": true,
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/widest-line/node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true
},
"node_modules/widest-line/node_modules/string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"node_modules/wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"dev": true,
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
"strip-ansi": "^7.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/widest-line/node_modules/strip-ansi": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
"integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
"node_modules/wrap-ansi/node_modules/ansi-styles": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"dev": true,
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/wrappy": {
@ -1613,9 +1613,9 @@
}
},
"node_modules/yargs": {
"version": "17.6.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz",
"integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==",
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
"dependencies": {
"cliui": "^8.0.1",
@ -1638,6 +1638,47 @@
"engines": {
"node": ">=12"
}
},
"node_modules/yargs/node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/yargs/node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"node_modules/yargs/node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/yargs/node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
}
}
}

View File

@ -1,6 +1,6 @@
{
"name": "iew-site-builder",
"version": "0.9.1",
"version": "0.9.2",
"description": "",
"main": "index.js",
"scripts": {
@ -11,7 +11,7 @@
},
"keywords": [],
"author": "",
"license": "ISC",
"license": "MIT",
"dependencies": {
"chalk": "^4.1.2",
"chokidar": "^3.4.3",
@ -20,6 +20,7 @@
"json5": "^2.1.3",
"markdown-it": "^13.0.1",
"markdown-it-emoji": "^2.0.0",
"markdown-it-footnote": "^3.0.3",
"network-address": "^1.1.2",
"serve-handler": "^6.1.3"
},

View File

@ -1,26 +1,26 @@
{
site: {
title: "It's Eric Woodward (dotcom)",
author: {
name: "Eric Woodward",
email: "redacted@nunyodam.com", // not used
photo: "/images/eric-8bit.gif",
site: "https://itsericwoodward.com",
},
site: {
title: "It's Eric Woodward (dotcom)",
author: {
name: "Eric Woodward",
email: "hey@itsericwoodward.com", // not used
photo: "/images/eric-8bit.gif",
site: "https://itsericwoodward.com",
},
base_uri: "",
robots: "index,follow",
language: "en-us",
copyright: "Copyright 2014-2022 Eric Woodward, licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.",
basePath: "",
uri: "https://www.itsericwoodward.com",
},
build: {
journalsPerPage: 5,
srcPath: "src",
outputPath: "out",
},
serve: {
port: 4997,
},
base_uri: "",
robots: "index,follow",
language: "en-us",
copyright: "Copyright 2014-2023 Eric Woodward, licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.",
basePath: "",
uri: "https://www.itsericwoodward.com",
},
build: {
journalsPerPage: 5,
srcPath: "src",
outputPath: "out",
},
serve: {
port: 4997,
},
}

View File

@ -331,7 +331,7 @@ Section 3 - The Boring Stuff
I offer no promises for support, but feel free to contact me at any of the
following addresses / locations:
Email: hey@itsericwoodward.com
Email: hey [at] itsericwoodward.com
WWW: https://www.itsericwoodward.com/chim/

View File

@ -28,9 +28,8 @@
if (!window.Cookies || !window.FontFaceObserver) return;
// Handle Fonts
const font_ls = new FontFaceObserver("liberation_serif"),
font_msc = new FontFaceObserver("marcellus_sc");
Promise.all([font_ls.load(), font_msc.load()]).then(function () {
const fontExo2 = new FontFaceObserver("exo_2");
fontExo2.load().then(function () {
if (
document.documentElement.className.indexOf(
"js-hasFontsLoaded"

View File

@ -1,43 +1,43 @@
@font-face {
font-family: 'exo_2';
src: url('/files/fonts/Exo2-Regular-webfont.eot');
src: url('/files/fonts/Exo2-Regular-webfont.eot?#iefix') format('embedded-opentype'),
url('/files/fonts/Exo2-Regular-webfont.woff') format('woff'),
url('/files/fonts/Exo2-Regular-webfont.ttf') format('truetype'),
url('/files/fonts/Exo2-Regular-webfont.svg#exo_2') format('svg');
src: url('/fonts/exo2/Exo2-Regular-webfont.eot');
src: url('/fonts/exo2/Exo2-Regular-webfont.eot?#iefix') format('embedded-opentype'),
url('/fonts/exo2/Exo2-Regular-webfont.woff') format('woff'),
url('/fonts/exo2/Exo2-Regular-webfont.ttf') format('truetype'),
url('/fonts/exo2/Exo2-Regular-webfont.svg#exo_2') format('svg');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'exo_2';
src: url('/files/fonts/Exo2-Italic-webfont.eot');
src: url('/files/fonts/Exo2-Italic-webfont.eot?#iefix') format('embedded-opentype'),
url('/files/fonts/Exo2-Italic-webfont.woff') format('woff'),
url('/files/fonts/Exo2-Italic-webfont.ttf') format('truetype'),
url('/files/fonts/Exo2-Italic-webfont.svg#exo_2') format('svg');
src: url('/fonts/exo2/Exo2-Italic-webfont.eot');
src: url('/fonts/exo2/Exo2-Italic-webfont.eot?#iefix') format('embedded-opentype'),
url('/fonts/exo2/Exo2-Italic-webfont.woff') format('woff'),
url('/fonts/exo2/Exo2-Italic-webfont.ttf') format('truetype'),
url('/fonts/exo2/Exo2-Italic-webfont.svg#exo_2') format('svg');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'exo_2';
src: url('Exo2-Bold-webfont.eot');
src: url('Exo2-Bold-webfont.eot?#iefix') format('embedded-opentype'),
url('Exo2-Bold-webfont.woff') format('woff'),
url('Exo2-Bold-webfont.ttf') format('truetype'),
url('Exo2-Bold-webfont.svg#exo_2') format('svg');
src: url('/fonts/exo2/Exo2-Bold-webfont.eot');
src: url('/fonts/exo2/Exo2-Bold-webfont.eot?#iefix') format('embedded-opentype'),
url('/fonts/exo2/Exo2-Bold-webfont.woff') format('woff'),
url('/fonts/exo2/Exo2-Bold-webfont.ttf') format('truetype'),
url('/fonts/exo2/Exo2-Bold-webfont.svg#exo_2') format('svg');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'exo_2';
src: url('Exo2-BoldItalic-webfont.eot');
src: url('Exo2-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('Exo2-BoldItalic-webfont.woff') format('woff'),
url('Exo2-BoldItalic-webfont.ttf') format('truetype'),
url('Exo2-BoldItalic-webfont.svg#exo_2') format('svg');
src: url('/fonts/exo2/Exo2-BoldItalic-webfont.eot');
src: url('/fonts/exo2/Exo2-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('/fonts/exo2/Exo2-BoldItalic-webfont.woff') format('woff'),
url('/fonts/exo2/Exo2-BoldItalic-webfont.ttf') format('truetype'),
url('/fonts/exo2/Exo2-BoldItalic-webfont.svg#exo_2') format('svg');
font-weight: 600;
font-style: italic;
}

View File

@ -1137,7 +1137,7 @@ samp {
}
.js-hasFontsLoaded body {
font-family: "Exo 2", sans-serif;
font-family: "exo_2", sans-serif;
}
.pageMenu-link.isCurrent .pageMenu-text {

View File

@ -41,7 +41,7 @@
<ul class="asideMenu-list socialList">
<li class="asideMenu-item socialList-item">
<a rel="me auth" class="asideMenu-link u-url url" title="It's Eric Woodward's Gitea Instance" href="https://git.itsericwoodward.com">My Git Repos</a>
<a rel="me auth" class="asideMenu-link u-url url" title="It's Eric Woodward's Gitea Server" href="https://git.itsericwoodward.com/explore/repos">My Git Repos</a>
</li>
<li class="asideMenu-item socialList-item">
<a rel="me" class="asideMenu-link u-url url" title="itsericwoodward on LinkedIn" href="https://www.linkedin.com/in/itsericwoodward">LinkedIn</a>
@ -54,7 +54,7 @@
href="https://boardgamegeek.com/user/ericplaysgames">BoardGameGeek</a>
</li>
<li class="asideMenu-item socialList-item">
<a rel="me" class="asideMenu-link u-url url u-email" title="&#69;&#109;&#97;&#105;&#108;" href="&#109;&#x61;&#x69;&#108;&#116;&#x6f;&#58;&#x65;&#x72;&#x69;&#x63;&#64;&#x69;&#116;&#x73;&#x65;&#114;&#x69;&#x63;&#119;&#111;&#111;&#x64;&#x77;&#97;&#x72;&#100;&#x2e;&#99;&#111;&#109;">&#69;&#109;&#97;&#105;&#108;</a>
<a rel="me" class="asideMenu-link u-url url u-email" title="&#69;&#109;&#97;&#105;&#108;" href="&#109;&#x61;&#x69;&#108;&#116;&#x6f;&#58;&#x68;&#x65;&#x79;&#64;&#x69;&#116;&#x73;&#x65;&#114;&#x69;&#x63;&#119;&#111;&#111;&#x64;&#x77;&#97;&#x72;&#100;&#x2e;&#99;&#111;&#109;">&#69;&#109;&#97;&#105;&#108;</a>
</li>
<!--
<li class="asideMenu-item socialList-item">

View File

@ -24,7 +24,7 @@
class="licenseImg"
src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png" />
</a>
Except where otherwise noted, content on this site is &copy; 2014-2022
Except where otherwise noted, content on this site is &copy; 2014-2023
<a
xmlns:cc="http://creativecommons.org/ns#"
href="<%=site.author.uri%>"

View File

@ -70,7 +70,7 @@
<li>
I prefer to be reached via e-mail at
<a rel="me" class="u-url url u-email" title="&#69;&#109;&#97;&#105;&#108;"
href="&#109;&#x61;&#x69;&#108;&#116;&#x6f;&#58;&#x65;&#x72;&#x69;&#x63;&#64;&#x69;&#116;&#x73;&#x65;&#114;&#x69;&#x63;&#119;&#111;&#111;&#x64;&#x77;&#97;&#x72;&#100;&#x2e;&#99;&#111;&#109;">&#69;&#109;&#97;&#105;&#108;</a>.
href="&#109;&#x61;&#x69;&#108;&#116;&#x6f;&#58;&#x68;&#x65;&#x79;&#64;&#x69;&#116;&#x73;&#x65;&#114;&#x69;&#x63;&#119;&#111;&#111;&#x64;&#x77;&#97;&#x72;&#100;&#x2e;&#99;&#111;&#109;">&#69;&#109;&#97;&#105;&#108;</a>.
<!--(securely, if you want to use my
<a rel="pgpkey" type="application/pgp-keys" title="PGP Public Key" href="/files/public.aexpk">PGP Key</a>).-->
Alternatively, you can grab my
@ -78,7 +78,8 @@
</li>
<li>
I host a collection of
<a rel="me authn" class="u-url url" href="https://git.itsericwoodward.com/eric/">git repos</a>
<a rel="me authn" class="u-url url" title="It's Eric Woodward's Gitea Server"
href="https://git.itsericwoodward.com/explore/repos">git repos</a>
(where I keep my code).
</li>
<li>

View File

@ -1,19 +1,17 @@
---
{
"title": "Games",
"description": "Some of Eric's gaming-related projects.",
"date_pub": "2018-08-18T13:39:00-04:00",
"date_upd": "2022-08-22T11:15:00-04:00",
"section": "games",
"content_type": "feature",
"short_code": "mg",
}
title: Games
description: A small collection of my gaming-related projects.
date_pub: 2018-08-18T13:39:00-04:00
section: games
content_type: feature
short_code: mg
---
One of my biggest hobbies / time-sinks over the last 20+ years of my life has been gaming in its various forms. As such, below you'll find a small collection of my gaming-related projects.
One of my biggest hobbies / time-sinks over the last 30+ years of my life has been gaming in its various forms. As such, below you'll find a small collection of my gaming-related projects.
### My Games
- [The Planar Vagabond's Guide to the Multiverse](http://www.planarvagabond.com/) **NEW** - A free role-playing game that I'm developing as part of an ongoing campaign, and which doubles as a nifty pocket guide to the wild and weird multiverse of interplanar travel.
- [Camp Happy Island Massacre](/chim) - My first (and only) computer game, a comedy-horror text game for the DOS operating system that you can now play online.
- [Mythic Wars](https://mythicwarsgame.com/) - My tabletop (card and dice) game, where the gods and goddesses themselves battle for ultimate supremacy! Published by [Excalibre Games](http://excalibregames.com/).

View File

@ -2,15 +2,15 @@
title: Greetings!
description: Welcome to It's Eric Woodward (dotcom).
date_pub: 2015-11-10T07:18:00-05:00
date_upd: 2021-06-21T23:15:00-04:00
section: main
content_type: feature
short_code: m1
---
As it says [elsewhere](/about.html), my name is Eric Woodward, and this is my website.
Mostly, I use it as a repository for some of the stuff that my brain has dumped out through the years, such as the [games](games.html) and [web](web.html) projects that I occasionally work on, the odd [journal entry](/journal/), and what I'm working on right [now](/now.html).
Mostly, I use it as a repository for some of the stuff that my brain has dumped out through the years, like the various [games](games.html) and [web projects](web.html) that I've (half-)created, the odd [journal entry](/journal/), and some info on what I'm doing [right now](/now.html).
I also host [my own git repos](https://git.itsericwoodward.com/), in case you want to see what I've been working on.
I also host [my own git repos](https://git.itsericwoodward.com/explore/repos), in case you're curious about the code I've constructed.
Thanks for stopping by!

View File

@ -2,15 +2,16 @@
title: Now
description: A short list of the things that I'm (probably) working on right now.
date_pub: 2021-06-21T23:15:00-04:00
date_upd: 2022-07-21T00:52:00-04:00
section: main
content_type: feature
short_code: mn
---
Between the hours of roughly 9AM and 12AM (`America/New_York` time, give or take an hour or two), you'll most likely find me working on any or all of the following:
Between the hours of roughly 9AM and 12AM (`America/New_York` time, give or take an hour or two), you'll most likely find me doing any or all of the following:
- work stuff,
- this website,
- some crazy side project (probably involving a game and/or a Raspberry Pi), or
- my Monday night [Old School Essentials](https://necroticgnome.com/collections/old-school-essentials) campaign.
- working,
- [developing](/journal/2015/03-18-developing-the-web) this website,
- making another [magic deck](/magic-decks),
- playing D&D (especially if it's Thursday, because that's **Togar's night!**),
- messing around with some crazy side project (probably involving a game and/or a Raspberry Pi), or
- building out my Monday night astral campaign, [The Planar Vagabond's Guide to the Multiverse](http://www.planarvagabond.com/).

View File

@ -1,23 +1,24 @@
---
{
"title": "Web Stuff",
"description": "Some of Eric's web-related projects.",
"date_pub": "2018-08-18T17:50:00-04:00",
"date_upd": "2022-07-21T00:57:00-04:00",
"section": "web",
"content_type": "feature",
"short_code": "mw"
"title": "Web Stuff",
"description": "Some of Eric's web-related projects.",
"date_pub": "2018-08-18T17:50:00-04:00",
"section": "web",
"content_type": "feature",
"short_code": "mw",
}
---
The web is, IMHO, the most revolutionary invention in information sharing since [Gutenberg's](https://www.gutenberg.org/) printing press. As such, I spend an inordinate amount of time thinking about the web, and I do what I can to help [develop it](https://blog.itsericwoodward.com/2015/developing-the-web).
### Here
+ [LinkLists](/linklists) - Lists of links (natch) to various web sites, resources, and/or [blogs](/linklists/blogroll.html), typically organized around a particular subject. Like bookmarking, but not. Updated (occasionally).
- [LinkLists](/linklists) - Lists of links (natch) to various web sites, resources, and/or [blogs](/linklists/blogroll.html), typically organized around a particular subject. Like bookmarking, but not. Updated (occasionally).
### Elsewhere
+ [Mythic Wars](https://mythicwarsgame.com/) - The site for my tabletop card-and-dice game, where the gods and goddesses themselves battle for ultimate supremacy! Features a free print-and-play demo, lots of free wallpapers, and the comprehensive rules, among other things.
+ [The Codex Mythica](https://codex.mythicwarsgame.com/) - An [open-source](https:/git.itsericwoodward.com/eric/codex-mythica/) web application I wrote which functions as a card database for Mythic Wars.
+ [My Blog](https://blog.itsericwoodward.com) - A retired instance of the [Known blogging software](https://withknown.com/) where I used to collect my various day-to-day musings.
+ [My Code Repos](https://git.itsericwoodward.com/) - A private [Gitea](https://gitea.io/) instance hosting some of my Git repositories.
- [The Planar Vagabond's Guide to the Multiverse](http://www.planarvagabond.com/) **NEW** - The website for a free role-playing game that I'm developing as part of an ongoing campaign, which doubles as a nifty pocket guide to the wild and weird multiverse of interplanar travel.
- [Mythic Wars](https://mythicwarsgame.com/) - The site for my tabletop card-and-dice game, where the gods and goddesses themselves battle for ultimate supremacy! Features a free print-and-play demo, lots of free wallpapers, and the comprehensive rules, among other things.
- [The Codex Mythica](https://codex.mythicwarsgame.com/) - An [open-source](https:/git.itsericwoodward.com/eric/codex-mythica/) web application I wrote which functions as a card database for Mythic Wars.
- [My Blog](https://blog.itsericwoodward.com) - A retired instance of the [Known blogging software](https://withknown.com/) where I used to collect my various day-to-day musings.
- [My Code Repos](https://git.itsericwoodward.com/explore/repos) - A private [Gitea](https://gitea.io/) instance hosting some of my Git repositories (including the code for [this very site](https://git.itsericwoodward.com/eric/itsericwoodward-site-v2)).

View File

@ -7,17 +7,32 @@ tldr: I've received even more emails telling me that I've been hacked. Since I s
tags: hackers, hacking, email, internet, spam
---
Since my last few posts about script-kiddies and the [fake extortions](/journal/2018/12-03-hacked) [they try to commit](/journal/2019/11-27-hacked-again), I've received upwards of 50 such emails, each with a different bitcoin address, and many with slight differences in text, style, or form, but all basically the same: an email from myself (_gasp_) claiming that I have been hacked, that some non-descript OS or "device" I own has some magical virus installed on it, and that, if I don't pay the hacker a ransom in bitcoin, my life will be _ruined_.
Since my last few posts about script-kiddies and the [fake extortions](/journal/2018/12-03-hacked) [they try to commit](/journal/2019/11-27-hacked-again), I've received upwards of 50 such emails, each with a different bitcoin address, and many with slight differences in text, style, or form, but all basically the same: an email from myself (_gasp_) claiming that I have been hacked, that some nondescript OS or "device" I own has some magical virus installed on it, and that, if I don't pay the hacker a ransom in bitcoin, my life will be _ruined_.
However, I know from past experience that these messages are little more than spam, sent out en masse in hopes that they can rope in some poor sucker who falls for this. I know most of these are bogus from the beginning because the email I use for my phone is completely unrelated to the ones that keep receiving these messages. Other times, the email will make vague references to programs I don't even have installed, again betraying their carboon-copied nature. In truth, I have never paid ransom, even though I've personally received dozens of these messages, and my life has yet to be ruined by these _lamers_.
However, I know from past experience that these messages are little more than spam, sent out en masse in hopes that they can rope in some poor sucker who falls for this. I know most of these are bogus from the beginning because the email I use for my phone is completely unrelated to the ones that keep receiving these messages. Other times, the email will make vague references to programs I don't even have installed, again betraying their carbon-copied nature. In truth, I have never paid ransom, even though I've personally received dozens of these messages, and my life has yet to be ruined by these _lamers_.
So, as a public service, I have included the bitcoin addresses for these fakers, in hopes that some other would-be victim finds this page (possibly through a web search), and they learn that they can ignore this BS as well:
```
====== BEGIN WALL OF SHAME ======
====== UPDATED: 2022-12-23 ======
====== UPDATED: 2023-07-18 ======
13g3WtdxuoB9AVyy54QW9xxbDtFjE2iNHk
17WhVHdWCW3yNNAo4LXsPRpTCnhN8wVtG8
15NCWERN56DQNf4WiPLR2txgiEF2np5Q2g
bc1qvcsx0sjzqc9yy69qumjaa2jz57rr480a89tpxl
1Pp5DTCTRSzoFyaHbrSEWGDWZZRp3rMsWv
1DxrzqzwqDBw1jcHUZv1Qb9eFFfYzdiXCY
1MQj3F Sm2kcent MBiDfNZj AMP4VYf QRriC (sic)
12aJgkbT9o zAZnVwiKDg76 FNpS6FcCeVvS (sic)
19yaJM8qhsyXnwoQP7zQbMkqJStoMYxPmE
1EPeB1Ea1v1XAg7L2yFFuhifFsX1sswDKG
12nEVuGNtRFMVjeVmLtD4nt2sHX68S47yH
1M6WbcKrAu3WtyTSUz1hk4eaHRD3oUNKtp
15mSqySLsJ8MZqNQ7RfXiq54HGyt7uh3Cn
bc1qkudmdasfmlhkesgqxy7f3jtt22665wwgfsqrmq
1GwaVJAdZHQEJFdD1tpDw4KvYas1XAJyic
bc1q47rckymrjwrrld5gtpps2tshx429z2w4elwspn
1GyYujUxs2eJpECpYu3Ns6F4RvZqsp8NT6
1GdVKgGS8iXeSSrynTfHyDugrpchwVDmdZ

View File

@ -4,6 +4,7 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<% if (site && Array.isArray(site.pages)) {
site.pages
.filter(({ is_draft, status}) => !is_draft && status !== 'draft' && status !== 'hidden')
.sort(sortByPath)
.forEach((page) => { -%>
<url>