Compare commits

..

No commits in common. "abe389fa77f5cb48b60aecc5e4fcf420cf0de899" and "12f273f54e8ae06e6c20392a3a7f09d4d96fc45e" have entirely different histories.

233 changed files with 129 additions and 26261 deletions

View File

@ -1,504 +0,0 @@
const siteURL = "https://tarasis.net";
const fs = require("fs-extra");
const sass = require("sass");
const { promisify } = require("util");
const sassRender = promisify(sass.render);
const postcss = require("postcss");
const autoprefixer = require("autoprefixer");
const markdownIt = require("markdown-it");
const markdownItRenderer = new markdownIt();
const markdownItAnchor = require("markdown-it-anchor");
// const relativeUrl = require("eleventy-filter-relative-url");
const pluginTOC = require("eleventy-plugin-toc");
const moment = require("moment");
const description = require("eleventy-plugin-description");
const pluginRss = require("@11ty/eleventy-plugin-rss");
const UpgradeHelper = require("@11ty/eleventy-upgrade-help");
const xmlFiltersPlugin = require("eleventy-xml-plugin");
const yaml = require("js-yaml");
const syntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
const inspect = require("node:util").inspect;
// relativeURL
const path = require("path");
const urlFilter = require("@11ty/eleventy/src/Filters/Url");
const indexify = (url) => url.replace(/(\/[^.]*)$/, "$1index.html");
module.exports = function (eleventyConfig) {
let pathPrefix = "/";
eleventyConfig.addDataExtension("yaml", contents => yaml.load(contents));
eleventyConfig.addDataExtension("yml", contents => yaml.load(contents));
eleventyConfig.addPlugin(pluginRss);
//Blog excerpts
eleventyConfig.addPlugin(description);
// Eleventy Navigation (https://www.11ty.dev/docs/plugins/navigation/)
eleventyConfig.addPlugin(require("@11ty/eleventy-navigation"));
// Eleventy RSS Feed (https://www.11ty.dev/docs/plugins/rss/)
eleventyConfig.addPlugin(require("@11ty/eleventy-plugin-rss"));
// Filter to generate a Table of Contents from page content
eleventyConfig.addPlugin(pluginTOC, {
tags: ["h2", "h3"],
wrapper: "div",
});
// TODO https://www.npmjs.com/package/eleventy-plugin-meta-generator
// Eleventy Syntax Highlighting (https://www.11ty.dev/docs/plugins/syntaxhighlight/)
// eleventyConfig.addPlugin(require("@11ty/eleventy-plugin-syntaxhighlight"));
eleventyConfig.addPlugin(syntaxHighlight, {
alwaysWrapLineHighlights: true,
// Change which Eleventy template formats use syntax highlighters
// templateFormats: ["*"], // default
// Use only a subset of template types (11ty.js added in v4.0.0)
// templateFormats: ["liquid", "njk", "md", "11ty.js"],
// init callback lets you customize Prism
// init: function({ Prism }) {
// Prism.languages.myCustomLanguage = /* */;
// },
// Added in 3.1.1, add HTML attributes to the <pre> or <code> tags
preAttributes: {
tabindex: 0,
// Added in 4.1.0 you can use callback functions too
"data-language": function({ language, content, options }) {
return language;
}
},
codeAttributes: {},
});
eleventyConfig.addPlugin(xmlFiltersPlugin);
// Custom Collections
eleventyConfig.addCollection("pages", (collection) =>
collection.getFilteredByGlob("./src/_pages/**/*")
);
eleventyConfig.addCollection("posts", (collection) =>
collection
.getFilteredByGlob("./src/_posts/**/*")
.filter(
(item) => item.data.draft !== true && item.date <= new Date()
)
.reverse()
.map((cur, i, all) => {
cur.data["siblings"] = {
next: all[i - 1],
prev: all[i + 1],
};
return cur;
})
);
eleventyConfig.addCollection("projects", (collection) =>
collection
.getFilteredByGlob("./src/projects/**/*")
.sort((a, b) => a.data.weight - b.data.weight)
);
// eleventyConfig.addCollection("posts", function (collectionApi) {
// return collectionApi.getFilteredByGlob("./src/_posts/**/*.md");
// });
eleventyConfig.addCollection("drafts", (collection) =>
collection
.getFilteredByGlob("./src/_drafts/**/*")
.sort((a, b) => a.data.weight - b.data.weight)
) ;
eleventyConfig.addCollection("tags", (collection) => {
let tags = new Set();
collection.getAll().forEach((item) => {
if ("tags" in item.data) {
if (item.data.tags != undefined) {
for (const tag of item.data.tags) {
tags.add(tag);
}
}
}
});
return [...tags];
});
eleventyConfig.addCollection("categories", (collection) => {
let categories = new Set();
collection.getAll().forEach((item) => {
if ("category" in item.data) {
if (item.data.category != undefined) {
for (const category of item.data.category) {
categories.add(category);
}
}
}
});
return [...categories];
});
// Filters
// eleventyConfig.addFilter("markdownify", (str) => {
// return markdownItRenderer.renderInline(str);
// });
eleventyConfig.addFilter("markdownify", (string) => {
return md.renderInline(string);
});
eleventyConfig.addNunjucksFilter("markdownify", (str) => md.render(str));
eleventyConfig.addFilter("jsonify", (variable) => JSON.stringify(variable));
eleventyConfig.addFilter("slugify", (str) =>
require("slugify")(str, {
lower: true,
replacement: "-",
remove: /[*+~.·,()''`´%!?¿:@]/g,
})
);
eleventyConfig.addFilter("where", (array, key, value) =>
array.filter((item) => {
const keys = key.split(".");
const reducedKey = keys.reduce((object, key) => object[key], item);
return reducedKey === value ? item : false;
})
);
eleventyConfig.addFilter("date", (date, format = "") =>
require("moment")(date).format(format)
);
eleventyConfig.addLiquidFilter("toUTCString", (date) => {
const utc = date.toUTCString();
return moment.utc(utc).format("MMMM Do YYYY");
});
eleventyConfig.addFilter("number_of_words", numberOfWords);
// eleventyConfig.addShortcode("where_exp", function (item, exp) {
// console.log(exp);
// return eval(exp);
// });
eleventyConfig.addFilter("where_exp", function (value) {
// where_exp function
return value.hidden != true;
});
eleventyConfig.addFilter("inspect", function (obj = {}) {
return inspect(obj, {sorted: true});
});
eleventyConfig.addFilter('group_by', groupBy)
eleventyConfig.addLayoutAlias(
"archive-taxonomy",
"layouts/archive-taxonomy.html"
);
eleventyConfig.addLayoutAlias("archive", "layouts/archive.html");
eleventyConfig.addLayoutAlias("categories", "layouts/categories.html");
eleventyConfig.addLayoutAlias("category", "layouts/category.html");
eleventyConfig.addLayoutAlias("collection", "layouts/collection.html");
eleventyConfig.addLayoutAlias("compress", "layouts/compress.html");
eleventyConfig.addLayoutAlias("default", "layouts/default.html");
eleventyConfig.addLayoutAlias("home", "layouts/home.html");
eleventyConfig.addLayoutAlias("posts", "layouts/posts.html");
eleventyConfig.addLayoutAlias("search", "layouts/search.html");
eleventyConfig.addLayoutAlias("single", "layouts/single.html");
eleventyConfig.addLayoutAlias("splash", "layouts/splash.html");
eleventyConfig.addLayoutAlias("tag", "layouts/tag.html");
eleventyConfig.addLayoutAlias("tags", "layouts/tags.html");
eleventyConfig.addLayoutAlias("gallery", "layouts/gallery");
eleventyConfig.addLayoutAlias("drafts", "layouts/drafts");
// Passthrough copy
// don't use .gitignore (allows compiling sass to css into a monitored folder WITHOUT committing it to repo)
eleventyConfig.setUseGitIgnore(false);
//Copy CNAME
eleventyConfig.addPassthroughCopy("src/CNAME");
// Processing configuration
eleventyConfig.addPassthroughCopy("src/favicon.ico");
eleventyConfig.addPassthroughCopy("src/admin");
eleventyConfig.addPassthroughCopy("src/assets");
// eleventyConfig.addPassthroughCopy({ "src/_sass": "assets/css" });
eleventyConfig.addShortcode("post_url", (collection, slug) => {
try {
if (collection.length < 1) {
throw "Collection appears to be empty";
}
if (!Array.isArray(collection)) {
throw "Collection is an invalid type - it must be an array!";
}
if (typeof slug !== "string") {
throw "Slug is an invalid type - it must be a string!";
}
const found = collection.find((p) => p.fileSlug == slug);
if (found === 0 || found === undefined) {
throw `${slug} not found in specified collection.`;
} else {
return found.url;
}
} catch (e) {
console.error(
`RMCG:An error occured while searching for the url to ${slug}. Details:`,
e
);
}
});
// Set section
// Configure BrowserSync to serve the 404 page for missing files
eleventyConfig.setBrowserSyncConfig({
callbacks: {
ready: (_err, browserSync) => {
const content_404 = fs.readFileSync("dist/404.html");
browserSync.addMiddleware("*", (_req, res) => {
// render the 404 content instead of redirecting
res.write(content_404);
res.end();
});
},
},
});
eleventyConfig.setBrowserSyncConfig({
files: "./dist/assets/styles/**/*.css",
});
// Merge Data (https://www.11ty.dev/docs/data-deep-merge/)
eleventyConfig.setDataDeepMerge(true);
eleventyConfig.setFrontMatterParsingOptions({
excerpt: true,
});
eleventyConfig.setLibrary("md", markdownIt().use(markdownItAnchor));
eleventyConfig.setLiquidOptions({
// dynamicPartials: false,
// strictVariables: false,
// strictFilters: false,
jekyllInclude: true,
});
// Markdown Configuration
const md = require("markdown-it")({
html: true,
breaks: true,
linkify: true,
});
eleventyConfig.setLibrary(
"md",
md
.use(require("markdown-it-attrs"))
.use(require("markdown-it-container"), "", {
validate: () => true,
render: (tokens, idx) => {
if (tokens[idx].nesting === 1) {
const classList = tokens[idx].info.trim();
return `<div ${classList && `class="${classList}"`}>`;
} else {
return `</div>`;
}
},
})
.use(require("markdown-it-fontawesome"))
.use(require("markdown-it-footnote"))
);
// override markdown-it-footnote anchor template to use a different unicode character
md.renderer.rules.footnote_anchor = (tokens, idx, options, env, slf) => {
var id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);
if (tokens[idx].meta.subId > 0) {
id += ":" + tokens[idx].meta.subId;
}
/* ⇑ with escape code to prevent display as Apple Emoji on iOS */
return (
' <a href="#fnref' +
id +
'" class="footnote-backref">\u21d1\uFE0E</a>'
);
};
//for upgrade sanity
//eleventyConfig.addPlugin(UpgradeHelper);
// eleventyConfig.addWatchTarget("./assets/css/");
// eleventyConfig.addTransform(
// "sass",
// async function sassTransform(content, outputPath) {
// if (outputPath?.endsWith(".css")) {
// const { css } = await sassRender({
// data: content,
// outputStyle: "compressed",
// precision: 3,
// });
// return css;
// }
// return content;
// }
// );
eleventyConfig.addFilter("relative_url", relativeURLALT);
eleventyConfig.addFilter("absolute_url", absoluteUrl);
return {
templateFormats: ["html", "liquid", "md", "njk"],
pathPrefix,
environment: "production",
// absolute_url: "https://tarasis.net/",
passthroughFileCopy: true,
dir: {
input: "src",
includes: "_includes",
data: "_data",
output: "dist",
// input: "./", // Equivalent to Jekyll's source property
// output: "./_site", // Equivalent to Jekyll's destination property
},
};
};
function numberOfWords(content) {
return content.split(/\s+/g).length;
}
function relativeURL(url, pathPrefix = undefined) {
if (pathPrefix !== undefined) {
// Fall back on original url filter if pathPrefix is set.
return urlFilter(url, pathPrefix);
}
if (pathPrefix == undefined && this.page == undefined) {
return urlFilter(url, "");
}
// Look up the url of the current rendering page, which is accessible via
// `this`.
//console.log(this); // rmcg
// rmcg - removed ctx from this.ctx.page.url
const currentDir = this.page.url;
const filteredUrl = urlFilter(url, "/");
// Make sure the index.html is expressed.
const indexUrl = indexify(filteredUrl);
// Check that the url doesn't specify a protocol.
const u = new URL(indexUrl, "make-relative://");
if (u.protocol !== "make-relative:") {
// It has a protocol, so just return the filtered URL output.
return filteredUrl;
}
// Return the relative path, or `index.html` if it's the same as the current
// page's directory.
const relativePath = `${
path.relative(currentDir, u.pathname) || "index.html"
}`;
return relativePath;
}
/**
* Just `{{ '/something' | url }}` will return the relative path to
* `/something/index.html`.
*
* `{{ '/something.with.dots' | url }}` will return the relative path to
* `/something.with.dots`.
*
* @param {string} url the URL to transform
* @param {string} [pathPrefix] optional path prefix to force an absolute URL
* @returns {string} resulting URL
*/
function relativeURLALT(url, pathPrefix = undefined) {
pathPrefix = "/";
// console.log(url);
// console.log(pathPrefix);
// console.log(this.page);
if (pathPrefix !== undefined) {
// Fall back on original url filter if pathPrefix is set.
return urlFilter(url, pathPrefix);
}
if (pathPrefix == undefined && this.page == undefined) {
// console.log("dropping out");
return urlFilter(url, "");
}
// Look up the url of the current rendering page, which is accessible via
// `this`.
console.log(this);
const currentDir = this.page.url;
const filteredUrl = urlFilter(url, "/");
// Make sure the index.html is expressed.
const indexUrl = indexify(filteredUrl);
// Check that the url doesn't specify a protocol.
const u = new URL(indexUrl, "make-relative://");
if (u.protocol !== "make-relative:") {
// It has a protocol, so just return the filtered URL output.
return filteredUrl;
}
// Return the relative path, or `index.html` if it's the same as the current
// page's directory.
const relativePath = `${
path.relative(currentDir, u.pathname) || "index.html"
}`;
return relativePath;
}
function absoluteUrl(url) {
if (url !== undefined) {
return siteURL + url
} else {
return siteURL
}
}
function groupBy(array, key) {
const get = entry => key.split('.').reduce((acc, key) => acc[key], entry)
const map = array.reduce((acc, entry) => {
const value = get(entry)
if (typeof acc[value] === 'undefined') {
acc[value] = []
}
acc[value].push(entry)
return acc
}, {})
return Object.keys(map).reduce(
(acc, key) => [...acc, { name: key, items: map[key] }],
[]
)
}

78
.gitignore vendored
View File

@ -9,81 +9,3 @@ _site
.jekyll-metadata .jekyll-metadata
**/*/premdesigns **/*/premdesigns
# ---> Eleventy
#_site
#package-lock.json
css/main.css.map
# dependency directories
node_modules/
# config
.env*
# caches
.cache
.sass-cache/
# eleventy gulp build
/dist
*.log
npm-debug.*
*.scssc
*.swp
Thumbs.db
dist
src/_includes/css
# my chosen output directory.
www
#### From FrontEnd Mentor gitignore. Just to avoid accidentally uploading design files
#
# Avoid accidental upload of the Sketch and Figma design files
#####################################################
## Please do not remove lines 5 and 6 - thanks! 🙂 ##
#####################################################
*.sketch
*.fig
# Avoid accidental XD upload if you convert the design file
###############################################
## Please do not remove line 12 - thanks! 🙂 ##
###############################################
*.xd
.prettierignore
# ---> macOS
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

View File

@ -1,7 +1,9 @@
# main links # main links
main: main:
# - title: "Posts" # - title: ""
# url: /year-archive/ # url: /docs/quick-start-guide/
- title: "Posts"
url: /year-archive/
- title: "Tags" - title: "Tags"
url: /tags/ url: /tags/
- title: "Categories" - title: "Categories"

View File

@ -6,7 +6,6 @@ share: true
related: true related: true
title: 'An End of Sorts' title: 'An End of Sorts'
tag: [Life, Work] tag: [Life, Work]
eleventyExcludeFromCollections: true
--- ---
Lets be clear up front: ITS MY **FAULT**. Lets be clear up front: ITS MY **FAULT**.

View File

@ -0,0 +1,58 @@
---
title: A short look back on my Camino de Santiago journey
tags:
- life
- camino
- caminodesantiago
category: camino
---
A year ago tomorrow I began the most gruelling, yet immensely satisfying, journey of my life. I set off from my home in Buchholz in der Nordheide Germany, to fly to France to walk the Camino de Santiago.
Ostensibly the point of the walk was to find myself, to seek out something that had been missing in me for a long time. But it was also about trying to make a decision about what I was doing and my relationship with my wife.
I kinda failed at the latter point. I found while walking that often my brain zoned out and I wasn't thinking about what I should have been. I did however find something that (mostly) made me feel good.
My original intention was to take time along the way to stop for an extra day here and there to see places that I was walking through, but it never really happened. I kind of regret that, although the point of the walk was not to be a tourist.
I had fully intended to go back on the Camino this year (2020), but the unthinkable happened and the world entered a state of lock down that for now has no end in sight. The intention was to walk (mostly) different routes this time, because there are a heck of a lot of them.
I didn't want to end when I did, I wasn't ready to back and quite honestly, I'm still not ready to.
## Some Stats, Dates, and Figures
- I walked 2 camino's. The Camino Frances & Camino Portuguese (Porto; More Costal Route + Espiritual Variente)
- I flew from Hamburg to France on the 28th of May 2019
- I started the Camino de Santiago, leaving Saint-Jean-Pied-de-Port on the 31st of May 2019
- I finished the Camino on the 8th July 2019, when I arrived in Santiago de Compostela
- I left the next day for Finisterre
- I arrived in Finisterre on the 11th of July 2019
- I start the Camino Portuguese on the 18th July 2019
- I arrived in Santiago de Compostela on the 31st of July 2019
- I flew back to Hamburg from Porto on the 6th of August 2019 (walking 14km to the airport from Porto)
- I took 3 rest days (3rd, 8th and 23rd of June). The first 2 where not because I actually needed to rest, but because I had the wrong shoes and they where messing my feet up. (which gave me a couple of nasty blisters)
- I bought a new pair of shoes on the evening of the 7th of June, which I then used the rest of the way.
- I sent roughly 2kg of stuff home on the 8th of June, stuff I thought I needed but didn't
Originally I was track my steps / distances using a Fitbit HR and my iPhone 6S. However because of issues charging the HR (connector area broke), I gave up using it on July 6th.
In total I walked at least 1643km. This was a combination of the daily Camino walks, plus any extra after I arrived at my destination.
| Section | Stage Distance Walked | Total walked that stage |
| ------- | -------- | ------- |
| Camino Frances | 793.04km | 972.3km |
| Santiago to Finisterre | 96.16km | 105.9km |
| Camino Portuguese | 299.14km | 402.9km |
| **Totals:** | **1,188.34km** | **1,481.1km** |
The remaining 160km was days walking around Finisterre, Muxia, Santiago and Porto.
## Photos
Over the next little while I am going to post photos from my journey, more than I did at the time on Instagram (which had a limit of 10 per post).
I'll try and add context to them, and a bit about where they where taken.
Anyway, enough for now. I intend, body willing, to locally repeat the Camino distances over the next 2 months.

View File

@ -2,8 +2,6 @@
title: Cash Register Challenge on freeCodeCamp title: Cash Register Challenge on freeCodeCamp
tags: [webdev, javascript, freecodecamp] tags: [webdev, javascript, freecodecamp]
category: programming category: programming
eleventyExcludeFromCollections: true
layout: single
--- ---
I've been (slowly) working through the JavaScript module on [freeCodeCamp](https://freecodecamp.org) for a while now, and have recently been doing the certificate challenges. The last of which is the "Cash Register" challenge where you are to write a function that takes a price, a payment amount and an array that contains the cash in the drawer. I've been (slowly) working through the JavaScript module on [freeCodeCamp](https://freecodecamp.org) for a while now, and have recently been doing the certificate challenges. The last of which is the "Cash Register" challenge where you are to write a function that takes a price, a payment amount and an array that contains the cash in the drawer.
@ -37,10 +35,10 @@ Example of the cash in drawer array:
] ]
``` ```
Sample input to function, Sample input to function,
```javascript ```javascript
checkCashRegister(3.26, 100, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]]) checkCashRegister(3.26, 100, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]])
``` ```
and the expected return object and the expected return object

View File

@ -2,7 +2,6 @@
title: CSS Properties, or I have a problem. title: CSS Properties, or I have a problem.
tags: [webdev, css] tags: [webdev, css]
category: programming category: programming
eleventyExcludeFromCollections: true
--- ---

View File

@ -2,7 +2,6 @@
title: What happens when I finish a Frontend Mentor Challenge title: What happens when I finish a Frontend Mentor Challenge
tags: [webdev, site, frontendmentor] tags: [webdev, site, frontendmentor]
category: [programming, webdev] category: [programming, webdev]
eleventyExcludeFromCollections: true
--- ---
I've been doing challenges from [Frontend Mentor](https://frontendmentor.io) as a means to practice frontend web development. Specifically working with plain HTML, CSS and JavaScript. I've been doing challenges from [Frontend Mentor](https://frontendmentor.io) as a means to practice frontend web development. Specifically working with plain HTML, CSS and JavaScript.

View File

@ -2,11 +2,9 @@
title: Filtering title: Filtering
tags: [webdev, javascript] tags: [webdev, javascript]
category: programming category: programming
eleventyExcludeFromCollections: true
--- ---
I was watching the video [How To Create A Search Bar In JavaScript](https://www.youtube.com/watch?v=TlP5WIxVirU) by [Web Dev Simplified](https://www.youtube.com/channel/UCFbNIlppjAuEX4znoulh0Cw) to learn how to do a search bar in JavaScript. I was watching the video [How To Create A Search Bar In JavaScript](https://www.youtube.com/watch?v=TlP5WIxVirU) by [Web Dev Simplified](https://www.youtube.com/channel/UCFbNIlppjAuEX4znoulh0Cw) to learn how to do a search bar in JavaScript.
What I realised as I was coding along, was that the video was reallymore about filtering data than what I might think of as a search bar. Which is fine, and totally not wrong, but I do find some of Kyle's choices suspect / curious. What I realised as I was coding along, was that the video was reallymore about filtering data than what I might think of as a search bar. Which is fine, and totally not wrong, but I do find some of Kyle's choices suspect / curious.

View File

@ -0,0 +1,4 @@
---
layout: post
title: pretty-terminal-configs
---

View File

@ -6,7 +6,6 @@ share: true
related: true related: true
title: 'Superheroes' title: 'Superheroes'
tag: [Movies, TV, Comics] tag: [Movies, TV, Comics]
eleventyExcludeFromCollections: true
--- ---
Test Test

View File

@ -6,7 +6,6 @@ tags:
- swift - swift
- coding-challenges - coding-challenges
category: coding-challenges category: coding-challenges
eleventyExcludeFromCollections: true
--- ---
# Challenge 3 # Challenge 3

View File

@ -7,7 +7,6 @@ related: true
title: SwiftUI title: SwiftUI
tags: [swiftui,programming,ios, swift] tags: [swiftui,programming,ios, swift]
category: Programming category: Programming
eleventyExcludeFromCollections: true
--- ---
Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years. Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.
@ -43,7 +42,7 @@ print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT. #=> prints 'Hi, Tom' to STDOUT.
``` ```
Bash: Bash:
```bash ```bash
#!/usr/bin/env bash #!/usr/bin/env bash
@ -104,13 +103,13 @@ regexp = /[abc]/
# This is a comment # This is a comment
class Person class Person
attr_accessor :name attr_accessor :name
def initialize(attributes = {}) def initialize(attributes = {})
@name = attributes[:name] @name = attributes[:name]
end end
def self.greet def self.greet
"hello" "hello"
end end
@ -179,7 +178,7 @@ $(document).ready(function() {
} }
``` ```
<p>notice</p>{: .notice} <p>notice</p>{: .notice}
<p>primary</p>{: .notice--primary} <p>primary</p>{: .notice--primary}
<p>info</p>{: .notice--info} <p>info</p>{: .notice--info}
<p>warning</p>{: .notice--warning} <p>warning</p>{: .notice--warning}

View File

@ -4,14 +4,12 @@ title: terminal-colors
tags: tags:
- programming - programming
category: programming category: programming
eleventyExcludeFromCollections: true
--- ---
Color ... I have a problem ... Color ... I have a problem ...
Or Colour if you're from the UK and associated territories. Or Colour if you're from the UK and associated territories.
Seriously, I legitimately have a problem. I need color when I am working with source code, the terminal or when I am reading computer books (like images, or source code). Seriously, I legitimately have a problem. I need color when I am working with source code, the terminal or when I am reading computer books (like images, or source code).

View File

@ -2,7 +2,6 @@
title: Writeup title: Writeup
tags: [camino,caminodesantiago,jakobsweg,life] tags: [camino,caminodesantiago,jakobsweg,life]
category: personal category: personal
eleventyExcludeFromCollections: true
--- ---
Its been a long while since I posted. I fell behind on my Camino posts, although I continued to take notes for a while, before I ended up giving up on those too. Its been a long while since I posted. I fell behind on my Camino posts, although I continued to take notes for a while, before I ended up giving up on those too.

View File

@ -35,18 +35,18 @@ layout: default
{% if page.toc %} {% if page.toc %}
<aside class="sidebar__right {% if page.toc_sticky %}sticky{% endif %}"> <aside class="sidebar__right {% if page.toc_sticky %}sticky{% endif %}">
<nav class="toc"> <nav class="toc">
<header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ page.toc_label | default: ui-text[site.locale].toc_label | default: "On this page" }}</h4></header> <header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ page.toc_label | default: site.data.ui-text[site.locale].toc_label | default: "On this page" }}</h4></header>
{% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" %} {% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" %}
</nav> </nav>
</aside> </aside>
{% endif %} {% endif %}
{{ content }} {{ content }}
{% if page.link %}<div><a href="{{ page.link }}" class="btn btn--primary">{{ ui-text[site.locale].ext_link_label | default: "Direct Link" }}</a></div>{% endif %} {% if page.link %}<div><a href="{{ page.link }}" class="btn btn--primary">{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}</a></div>{% endif %}
</section> </section>
<footer class="page__meta"> <footer class="page__meta">
{% if ui-text[site.locale].meta_label %} {% if site.data.ui-text[site.locale].meta_label %}
<h4 class="page__meta-title">{{ ui-text[site.locale].meta_label }}</h4> <h4 class="page__meta-title">{{ site.data.ui-text[site.locale].meta_label }}</h4>
{% endif %} {% endif %}
{% include page__taxonomy.html %} {% include page__taxonomy.html %}
{% include page__date.html %} {% include page__date.html %}
@ -65,7 +65,7 @@ layout: default
{% comment %}<!-- only show related on a post page when `related: true` -->{% endcomment %} {% comment %}<!-- only show related on a post page when `related: true` -->{% endcomment %}
{% if page.id and page.related and site.related_posts.size > 0 %} {% if page.id and page.related and site.related_posts.size > 0 %}
<div class="page__related"> <div class="page__related">
<h4 class="page__related-title">{{ ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4> <h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
<div class="grid__wrapper"> <div class="grid__wrapper">
{% for post in site.related_posts limit:4 %} {% for post in site.related_posts limit:4 %}
{% include archive-single.html type="grid" %} {% include archive-single.html type="grid" %}
@ -75,7 +75,7 @@ layout: default
{% comment %}<!-- otherwise show recent posts if no related when `related: true` -->{% endcomment %} {% comment %}<!-- otherwise show recent posts if no related when `related: true` -->{% endcomment %}
{% elsif page.id and page.related %} {% elsif page.id and page.related %}
<div class="page__related"> <div class="page__related">
<h4 class="page__related-title">{{ ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4> <h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
<div class="grid__wrapper"> <div class="grid__wrapper">
{% for post in site.posts limit:4 %} {% for post in site.posts limit:4 %}
{% if post.id == page.id %} {% if post.id == page.id %}

View File

@ -2,7 +2,6 @@
title: "Page Not Found" title: "Page Not Found"
excerpt: "Page not found. Your pixels are in another canvas." excerpt: "Page not found. Your pixels are in another canvas."
sitemap: false sitemap: false
layout: default
permalink: /404.html permalink: /404.html
--- ---

View File

@ -5,7 +5,7 @@ author_profile: true
read_time: true read_time: true
share: true share: true
related: true related: true
date: 2019-02-22 00:54:00 +01:00 date: '2019-02-22 00:54:00 +0100'
tag: Site tag: Site
--- ---
@ -19,4 +19,4 @@ Why the changes? Well my dedicated server at [Online.net](https://www.online.net
I know that no-one really reads my blog, I post so infrequently and its not exactly riviting content, but getting the site up and running again, plus getting my wiki back up was bugging me :) I know that no-one really reads my blog, I post so infrequently and its not exactly riviting content, but getting the site up and running again, plus getting my wiki back up was bugging me :)
As an aside I lost a little data, basically my wiki which had a lot of server config stuff, because the default install of Dokuwiki puts the data off in */var/lib/dokuwiki/data* and when I was backing up the main dokuwiki directory I apparently didn't have the setting to follow symlinks on. As an aside I lost a little data, basically my wiki which had a lot of server config stuff, because the default install of Dokuwiki puts the data off in */var/lib/dokuwiki/data* and when I was backing up the main dokuwiki directory I apparently didn't have the setting to follow symlinks on.

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 1 … So the adventure (finally) begins title: Day 1 … So the adventure (finally) begins
date: 2019-05-28 21:32:45 +01:59 date: 2019-05-28 21:32:45 +0159
tags: [camino,caminodesantiago,jakobsweg,caminofrances] tags: [camino,caminodesantiago,jakobsweg,caminofrances]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 5 - Unexpectedly Easy title: Day 5 - Unexpectedly Easy
date: 2019-06-01 20:50:46 +01:59 date: 2019-06-01 20:50:46 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 6 - Bad Day title: Day 6 - Bad Day
date: 2019-06-02 18:48:22 +01:59 date: 2019-06-02 18:48:22 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 7 - Taking a break title: Day 7 - Taking a break
date: 2019-06-03 22:19:16 +01:59 date: 2019-06-03 22:19:16 +0159
category: category:
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 8 - Its my birthday title: Day 8 - Its my birthday
date: 2019-06-04 21:29:37 +01:59 date: 2019-06-04 21:29:37 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 9 - TWTFSSMTW title: Day 9 - TWTFSSMTW
date: 2019-06-05 21:04:53 +01:59 date: 2019-06-05 21:04:53 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 10 - A Fountain of Wine title: Day 10 - A Fountain of Wine
date: 2019-06-06 21:57:40 +01:59 date: 2019-06-06 21:57:40 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 11 - Frustrated title: Day 11 - Frustrated
date: 2019-06-07 23:09:43 +01:59 date: 2019-06-07 23:09:43 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 12 - An unexpected port title: Day 12 - An unexpected port
date: 2019-06-08 22:43:16 +01:59 date: 2019-06-08 22:43:16 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 13 - A second wind title: Day 13 - A second wind
date: 2019-06-09 22:38:02 +01:59 date: 2019-06-09 22:38:02 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 15 - cant think of a subtitle yet title: Day 15 - cant think of a subtitle yet
date: 2019-06-11 23:05:50 +01:59 date: 2019-06-11 23:05:50 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 16 - Off to the races title: Day 16 - Off to the races
date: 2019-06-12 22:20:00 +01:59 date: 2019-06-12 22:20:00 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 17 title: Day 17
date: 2019-06-13 23:00:00 +01:59 date: 2019-06-13 23:00:00 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 18 - drawn to stop title: Day 18 - drawn to stop
date: 2019-06-14 22:56:21 +01:59 date: 2019-06-14 22:56:21 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 19 title: Day 19
date: 2019-06-15 18:06:55 +01:59 date: 2019-06-15 18:06:55 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -5,7 +5,7 @@ read_time: true
share: true share: true
related: true related: true
title: Day 21 title: Day 21
date: 2019-06-17 22:38:55 +01:59 date: 2019-06-17 22:38:55 +0159
tags: [camino,caminodesantiago,jakobsweg] tags: [camino,caminodesantiago,jakobsweg]
--- ---

View File

@ -6,7 +6,7 @@ tags:
- personal - personal
- site - site
category: personal category: personal
date: 2020-04-17 02:18:00 +01:00 date: 2020-04-17 02:18 +0100
--- ---
Long time, no write. Long time, no write.
@ -74,4 +74,4 @@ I made a start at the beginning of the year using a combination of Duolingo and
# Last but not least ... # Last but not least ...
As a minor aside, the site has had a minor bit of sprucing. Same theme, different colors. I've also put the categories back but I don't really like them. I don't really see them as any different that tags, particularly as I prefer the url to just be **domain/date/title** rather than **domain/category/date/title**, so there will likely be further tweaks to be made. Also I want to look at what collections are and how to post photos on here (from the Camino). As a minor aside, the site has had a minor bit of sprucing. Same theme, different colors. I've also put the categories back but I don't really like them. I don't really see them as any different that tags, particularly as I prefer the url to just be **domain/date/title** rather than **domain/category/date/title**, so there will likely be further tweaks to be made. Also I want to look at what collections are and how to post photos on here (from the Camino).

View File

@ -6,13 +6,13 @@ tags:
- swift - swift
- coding-challenges - coding-challenges
category: coding-challenges category: coding-challenges
date: 2020-04-20 15:28:00 +01:00 date: 2020-04-20 15:28 +0100
--- ---
Second one within 13 hours, good lord, that would never do. Second one within 13 hours, good lord, that would never do.
So this challenge was to test if a string matched against the reverse of itself. Basically a palindrome checker. So this challenge was to test if a string matched against the reverse of itself. Basically a palindrome checker.
This took me less time, partly because my first approach was similar to the approach for challenge 1. I used a copy of the string as a ``Character`` Array with two indexes (one counting up from 0, the other down from the max number of characters), and compared each character of the array against the one at the opposite end of the array. This took me less time, partly because my first approach was similar to the approach for challenge 1. I used a copy of the string as a ``Character`` Array with two indexes (one counting up from 0, the other down from the max number of characters), and compared each character of the array against the one at the opposite end of the array.
So for ```['R', 'A', 'R']```, my solution compared if the character at index ```[0]``` was equal to the one at index ```[2]```, then ```[1]``` to ```[1]```. If at any point there wasn't a match, then it would have returned ```false```, otherwise it would have returned ```true```. So for ```['R', 'A', 'R']```, my solution compared if the character at index ```[0]``` was equal to the one at index ```[2]```, then ```[1]``` to ```[1]```. If at any point there wasn't a match, then it would have returned ```false```, otherwise it would have returned ```true```.
@ -26,11 +26,11 @@ Anyway, this was my first attempt at the challenge
```swift ```swift
func challenge2(input: String) -> Bool { func challenge2(input: String) -> Bool {
let arrayOfCharacters = Array(input.lowercased()) let arrayOfCharacters = Array(input.lowercased())
//start from either end of the string, return false the first time they don't match //start from either end of the string, return false the first time they don't match
var index = 0 var index = 0
var reverseIndex = arrayOfCharacters.count - 1 var reverseIndex = arrayOfCharacters.count - 1
while index != reverseIndex { while index != reverseIndex {
if (arrayOfCharacters[index] != arrayOfCharacters[reverseIndex]) { if (arrayOfCharacters[index] != arrayOfCharacters[reverseIndex]) {
return false return false
@ -38,8 +38,9 @@ func challenge2(input: String) -> Bool {
reverseIndex -= 1 reverseIndex -= 1
index += 1 index += 1
} }
return true return true
} }
``` ```
(As an aside, to my mind index, reverseIndex and arrayOfCharacters should be highlighted the same color the whole way through the code, not in two different colors. Not sure what I can do about that.)
(As an aside, to my mind index, reverseIndex and arrayOfCharacters should be highlighted the same color the whole way through the code, not in two different colors. Not sure what I can do about that.)

View File

@ -6,7 +6,7 @@ tags:
- swift - swift
- coding-challenges - coding-challenges
category: coding-challenges category: coding-challenges
date: 2020-04-20 13:36:00 +01:00 date: 2020-04-20 13:36 +0100
--- ---
As an effort to improve and challenge myself I got a copy of Paul Hudson's [Swift Coding Challenges](https://www.hackingwithswift.com/store/swift-coding-challenges) book and I'm going to work through it and post my thoughts on it and about how I did. I (probably) won't post the answers because that might spoil it for some. As an effort to improve and challenge myself I got a copy of Paul Hudson's [Swift Coding Challenges](https://www.hackingwithswift.com/store/swift-coding-challenges) book and I'm going to work through it and post my thoughts on it and about how I did. I (probably) won't post the answers because that might spoil it for some.
@ -14,4 +14,4 @@ For Challenge 1 I basically had the first answer, however I ... um ... made it m
I was over thinking the challenge and for some reason thinking about actually counting the occurrences of letters. I was over thinking the challenge and for some reason thinking about actually counting the occurrences of letters.
*facepalm* *facepalm*

View File

@ -21,9 +21,9 @@ gallery:
image_path: https://roadmap.sh/roadmaps/devops.png image_path: https://roadmap.sh/roadmaps/devops.png
alt: DevOps Roadmap alt: DevOps Roadmap
title: DevOps Roadmap title: DevOps Roadmap
date: 2020-04-21 00:44:00 +01:00 date: 2020-04-21 00:44 +0100
--- ---
I mentioned in the [goals post]({% post_url collections.posts, "goals" %}), one of the things I am aiming to do is to start learning web development. I mentioned in the [goals post]({% post_url 2020-04-17-goals %}), one of the things I am aiming to do is to start learning web development.
I was well aware that what falls under the banner of web development is massive, I just hadn't realised quite how large it was. I was well aware that what falls under the banner of web development is massive, I just hadn't realised quite how large it was.
@ -37,13 +37,13 @@ What I find overwhelming is what to use for learning in terms of tutorials, vide
At the moment my focus is split between the following multiple sources At the moment my focus is split between the following multiple sources
Text: Text:
- [FreeCodeCamp](https://www.freecodecamp.org) - [FreeCodeCamp](https://www.freecodecamp.org)
- [HTML Dog](https://htmldog.com/guides/) - [HTML Dog](https://htmldog.com/guides/)
- and a couple of others (links are on my iPad, will update later) - and a couple of others (links are on my iPad, will update later)
Video: Video:
- [The Complete 2020 Web Development Bootcamp](https://www.udemy.com/course/the-complete-web-development-bootcamp/) by Angela Yu - [The Complete 2020 Web Development Bootcamp](https://www.udemy.com/course/the-complete-web-development-bootcamp/) by Angela Yu
- [CS50s Web Programming with Python and JavaScript](https://cs50.harvard.edu/web/) (via [edx](https://www.edx.org/course/cs50s-web-programming-with-python-and-javascript)) - (although this is kinda a mix of both video and text) - [CS50s Web Programming with Python and JavaScript](https://cs50.harvard.edu/web/) (via [edx](https://www.edx.org/course/cs50s-web-programming-with-python-and-javascript)) - (although this is kinda a mix of both video and text)
- [Colt's Code Camp (Learn Coding From Scratch)](https://www.youtube.com/watch?v=SF_Xl5TOGlY&list=PLblA84xge2_xNtaFnZhefjFbnDrpySKD3) by Colt Steele - [Colt's Code Camp (Learn Coding From Scratch)](https://www.youtube.com/watch?v=SF_Xl5TOGlY&list=PLblA84xge2_xNtaFnZhefjFbnDrpySKD3) by Colt Steele
@ -52,4 +52,4 @@ I'm trying to get a feel for what works best for me, what sits in my mind more a
Right now I'm still vetting, I def like Angela's course, or at least her voice, style, and humour (even if I'm watching the videos at 1.5-2.0x speed). However it is the only thing I've linked to that requires payment. Right now I'm still vetting, I def like Angela's course, or at least her voice, style, and humour (even if I'm watching the videos at 1.5-2.0x speed). However it is the only thing I've linked to that requires payment.
I really like FreeCodeCamp's site, and the mechanics of teaching in the browser. I seriously question the 300 hours it suggests per module. I'm virtually finished the first module within about 6 hours. I'm currently working on the first "assignment", and I could easily see spending a bunch of time doing those and making them look great. I really like FreeCodeCamp's site, and the mechanics of teaching in the browser. I seriously question the 300 hours it suggests per module. I'm virtually finished the first module within about 6 hours. I'm currently working on the first "assignment", and I could easily see spending a bunch of time doing those and making them look great.

View File

@ -9,7 +9,7 @@ tags:
- caminodesantiago - caminodesantiago
category: camino category: camino
date: 2020-05-27 01:45:00 +01:00 date: 2020-05-27 01:45 +0100
--- ---
A year ago tomorrow I began the most gruelling, yet immensely satisfying, journey of my life. I set off from my home in Buchholz in der Nordheide Germany, to fly to France to walk the Camino de Santiago. A year ago tomorrow I began the most gruelling, yet immensely satisfying, journey of my life. I set off from my home in Buchholz in der Nordheide Germany, to fly to France to walk the Camino de Santiago.
@ -59,4 +59,4 @@ Over the next little while I am going to post photos from my journey, more than
I'll try and add context to them, and a bit about where they where taken. I'll try and add context to them, and a bit about where they where taken.
Anyway, enough for now. I intend, body willing, to locally repeat the Camino distances over the next 2 months. Anyway, enough for now. I intend, body willing, to locally repeat the Camino distances over the next 2 months.

View File

@ -2,7 +2,6 @@
title: What happens when I finish a Frontend Mentor Challenge (or how I build and deploy an 11ty site) title: What happens when I finish a Frontend Mentor Challenge (or how I build and deploy an 11ty site)
tags: [webdev, site, frontendmentor] tags: [webdev, site, frontendmentor]
category: [programming, webdev] category: [programming, webdev]
date: 2022-10-15
--- ---
I've been doing challenges from [Frontend Mentor](https://frontendmentor.io) as a means to practice frontend web development. Specifically working with plain HTML, CSS and JavaScript. I've been doing challenges from [Frontend Mentor](https://frontendmentor.io) as a means to practice frontend web development. Specifically working with plain HTML, CSS and JavaScript.

View File

@ -2,9 +2,6 @@
title: Moving site from Jekyll to ??? title: Moving site from Jekyll to ???
tags: [webdev, site, personal] tags: [webdev, site, personal]
category: [site, webdev, personal] category: [site, webdev, personal]
date: 2023-01-21
last_modified: 2023-01-22 13:11
excerpt: Goal is that at some point in the not to distant future I will move the blog from [Jekyll](https://jekyllrb.com) & the [Minimal Mistakes Theme](https://mmistakes.github.io/minimal-mistakes/) to something built with [11ty](https://www.11ty.dev/).
--- ---
Goal is that at some point in the not to distant future I will move the blog from [Jekyll](https://jekyllrb.com) & the [Minimal Mistakes Theme](https://mmistakes.github.io/minimal-mistakes/) to something built with [11ty](https://www.11ty.dev/). Goal is that at some point in the not to distant future I will move the blog from [Jekyll](https://jekyllrb.com) & the [Minimal Mistakes Theme](https://mmistakes.github.io/minimal-mistakes/) to something built with [11ty](https://www.11ty.dev/).
@ -15,4 +12,4 @@ I had considered using [Hugo](https://gohugo.io), but that would again be a new
Whatever I end up doing, I do want to have it so that it is a mixture of "proper" blog posts along with short status style updates (like a Microblog). Then people who don't care for those can filter on just the posts, and likewise have 2-3 rss feeds; one for status updates, one for just blog posts, and finally one the has both. Whatever I end up doing, I do want to have it so that it is a mixture of "proper" blog posts along with short status style updates (like a Microblog). Then people who don't care for those can filter on just the posts, and likewise have 2-3 rss feeds; one for status updates, one for just blog posts, and finally one the has both.
Regardless I am going to try and blog more this year. I've some posts I want to do about my setup, and the post-receive hooks I use in [Gitea](https://gitea.io/en-us/)/[Forgejo](https://forgejo.org). As well as thoughts on [Frontend Mentor](https://www.frontendmentor.io/). Regardless I am going to try and blog more this year. I've some posts I want to do about my setup, and the post-receive hooks I use in [Gitea](https://gitea.io/en-us/)/[Forgejo](https://forgejo.org). As well as thoughts on [Frontend Mentor](https://www.frontendmentor.io/).

View File

@ -1,6 +1,5 @@
--- ---
# made a liquid file so theme is correctly compiled into import below # Only the main Sass file needs front matter (the dashes are enough)
permalink: /assets/css/tocompile.scss
--- ---
@charset "utf-8"; @charset "utf-8";
@ -27,7 +26,6 @@ $warning-color: #d67f05 !default;
$danger-color: #ff0000 !default; $danger-color: #ff0000 !default;
$info-color: #3b9cba !default; $info-color: #3b9cba !default;
// section not needed under 11ty
/* neon syntax highlighting (base16) */ /* neon syntax highlighting (base16) */
$base00: #1a191a; $base00: #1a191a;
$base01: #e0e0e0; $base01: #e0e0e0;
@ -57,7 +55,6 @@ $base0f: #926e5c;
// base16-classic-dark // base16-classic-dark
// base16-brewer // base16-brewer
// section not needed under 11ty
// Hacking the syntax highlighting // Hacking the syntax highlighting
.nb { .nb {
/* Name.Builtin */ /* Name.Builtin */
@ -83,7 +80,7 @@ $base0f: #926e5c;
// Progress Bar // Progress Bar
#progress-bar { #progress-bar {
background: linear-gradient(to right, red, orange , yellow, green, background: linear-gradient(to right, red, orange , yellow, green,
blue, indigo, violet var(--scroll), transparent 0); blue, indigo, violet var(--scroll), transparent 0);
position: fixed; position: fixed;
overflow: hidden; overflow: hidden;
@ -94,7 +91,7 @@ $base0f: #926e5c;
// Scroll to top // Scroll to top
#scroll-to-top { #scroll-to-top {
background: rgb(215, 210, 210); background: black;
display:block; display:block;
position:fixed; position:fixed;
font-size:25px; font-size:25px;
@ -126,7 +123,7 @@ $base0f: #926e5c;
} }
#scroll-to-top span { #scroll-to-top span {
cursor:pointer; cursor:pointer;
color:#dee3ee color:#1a1d24
} }
#scroll-to-top span:hover .up-arrow, #scroll-to-top span:hover .up-arrow,
#scroll-to-top span:active .up-arrow { #scroll-to-top span:active .up-arrow {
@ -141,12 +138,8 @@ pre {
color: #1bb6be !important color: #1bb6be !important
} }
$github-color: #fff !default;
//@import "progress.css"; // for progress bar //@import "progress.css"; // for progress bar
//@import "minimal-mistakes/skins/{{ site.minimal_mistakes_skin | default: 'default' }}"; // skin @import "minimal-mistakes/skins/{{ site.minimal_mistakes_skin | default: 'default' }}"; // skin
@import "minimal-mistakes/skins/_{{ site.minimal_mistakes_skin | default: 'default' }}.scss"; // skin
@import "minimal-mistakes"; // main partials @import "minimal-mistakes"; // main partials
//@import "assets/css/override-notices.scss" //@import "assets/css/override-notices.scss"
@import "override-notices.scss"; @import "override-notices.scss"

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

View File

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View File

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 2.4 MiB

After

Width:  |  Height:  |  Size: 2.4 MiB

View File

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

Before

Width:  |  Height:  |  Size: 876 B

After

Width:  |  Height:  |  Size: 876 B

View File

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 152 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 403 KiB

After

Width:  |  Height:  |  Size: 403 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 608 KiB

After

Width:  |  Height:  |  Size: 608 KiB

View File

@ -1,742 +0,0 @@
0a1
>
13d13
<
19a20,21
> <meta property="article:author" content="Robert McGovern">
>
22c24
< <meta property="og:type" content="website">
---
> <meta property="og:type" content="article">
26c28
< <meta property="og:url" content="http://localhost:4000/">
---
> <meta property="og:url" content="index.html">
33c35
< <meta property="og:image" content="http://localhost:4000/assets/images/bio-photo.jpg">
---
> <meta property="og:image" content="index.html">
40c42
< <meta name="twitter:url" content="http://localhost:4000/">
---
> <meta name="twitter:url" content="index.html">
43,46c45,46
< <meta name="twitter:card" content="summary">
<
< <meta name="twitter:image" content="http://localhost:4000/assets/images/bio-photo.jpg">
<
---
> <meta name="twitter:card" content="summary_large_image">
> <meta name="twitter:image" content="index.html">
52a53
> <meta property="article:published_time" content="2020-03-05T11:10:24+00:00">
56a58
>
62c64
< <link rel="canonical" href="http://localhost:4000/">
---
> <link rel="canonical" href="index.html">
66d67
< <link rel="next" href="http://localhost:4000/page2/">
68d68
<
75c75
< "url": "http://localhost:4000/"
---
> "url": "index.html"
90c90
< <link href="/feed.xml" type="application/atom+xml" rel="alternate" title="TDN: RMCG Feed">
---
> <link href="feed.xml" type="application/atom+xml" rel="alternate" title="TDN: RMCG Feed">
101c101
< <link rel="stylesheet" href="/assets/css/main.css">
---
> <link rel="stylesheet" href="assets/css/main.css">
107c107
< <script src="/assets/js/progress.js"></script>
---
> <script src="assets/js/progress.js"></script>
109c109
< <script src="/assets/js/scroll-to-top.js"></script>
---
> <script src="assets/js/scroll-to-top.js"></script>
118c118
< <body class="layout--home">
---
> <body class="layout--">
138c138
< <a class="site-logo" href="/"><img src="/assets/images/apple-touch-icon.png" alt="TDN: RMCG"></a>
---
> <a class="site-logo" href="index.html"><img src="assets/images/apple-touch-icon.png" alt="TDN: RMCG"></a>
140c140
< <a class="site-title" href="/">
---
> <a class="site-title" href="index.html">
144,152c144
< <ul class="visible-links"><li class="masthead__menu-item">
< <a href="/year-archive/">Posts</a>
< </li><li class="masthead__menu-item">
< <a href="/tags/">Tags</a>
< </li><li class="masthead__menu-item">
< <a href="/categories/">Categories</a>
< </li><li class="masthead__menu-item">
< <a href="/about/">About</a>
< </li></ul>
---
> <ul class="visible-links"></ul>
174a167
>
177,178d169
< <div class="sidebar sticky">
<
181,331d171
< <div itemscope itemtype="https://schema.org/Person">
<
<
< <div class="author__avatar">
<
< <img src="/assets/images/bio-photo.jpg" alt="Robert McGovern" itemprop="image">
<
< </div>
<
<
< <div class="author__content">
<
< <h3 class="author__name" itemprop="name">Robert McGovern</h3>
<
<
< <div class="author__bio" itemprop="description">
< <p>Wannabe field researcher for the Hitchhikers Guide to the Galaxy</p>
<
< </div>
<
< </div>
<
< <div class="author__urls-wrapper">
< <button class="btn btn--inverse">Follow</button>
< <ul class="author__urls social-icons">
<
< <li itemprop="homeLocation" itemscope itemtype="https://schema.org/Place">
< <i class="fas fa-fw fa-map-marker-alt" aria-hidden="true"></i> <span itemprop="name">ZZ9 Plural Z Alpha</span>
< </li>
<
<
<
<
<
< <li><a href="https://tarasis.net" rel="nofollow noopener noreferrer"><i class="fas fa-fw fa-link" aria-hidden="true"></i><span class="label">Website</span></a></li>
<
<
<
< <li><a href="mailto:rob@tarasis.net" rel="nofollow noopener noreferrer"><i class="fas fa-fw fa-envelope-square" aria-hidden="true"></i><span class="label">Email</span></a></li>
<
<
<
< <li><a href="https://www.linkedin.com/in/robertmcgovern/" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span class="label">Linkedin</span></a></li>
<
<
<
< <li><a href="https://github.com/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-github" aria-hidden="true"></i><span class="label">Github</span></a></li>
<
<
<
< <li><a href="https://twitter.com/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-twitter-square" aria-hidden="true"></i><span class="label">Twitter</span></a></li>
<
<
<
< <li><a href="https://www.facebook.com/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-facebook" aria-hidden="true"></i><span class="label">Facebook</span></a></li>
<
<
<
< <li><a href="https://instagram.com/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-instagram" aria-hidden="true"></i><span class="label">Instagram</span></a></li>
<
<
<
< <li><a href="https://www.flickr.com/photos/tarasis/" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-flickr" aria-hidden="true"></i><span class="label">Flickr</span></a></li>
<
<
<
< <li><a href="https://www.youtube.com/user/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">Youtube</span></a></li>
<
<
<
< <li><a href="https://soundcloud.com/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-soundcloud" aria-hidden="true"></i><span class="label">Soundcloud</span></a></li>
<
<
<
< <li><a href="https://www.last.fm/user/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-lastfm" aria-hidden="true"></i><span class="label">Last.FM</span></a></li>
<
<
<
< <li><a href="https://www.reddit.com/user/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-reddit" aria-hidden="true"></i><span class="label">Reddit</span></a></li>
<
<
<
< <li><a href="https://www.pinterest.com/tarasis/" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-pinterest" aria-hidden="true"></i><span class="label">Pinterest</span></a></li>
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
< <!--
< <li>
< <a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer">
< <i class="fas fa-fw" aria-hidden="true"></i> Custom Social Profile Link
< </a>
< </li>
< -->
< </ul>
< </div>
< </div>
<
<
< </div>
<
<
<
338d177
< <h3 class="archive__subtitle">Recent posts</h3>
340a180
> <h3 class="archive__subtitle">Recent Posts</h3>
343d182
< <div class="entries-list">
345d183
<
349,384c187
< <div class="list__item">
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<
< <h2 class="archive__item-title no_toc" itemprop="headline">
<
< <a href="/2022/10/15/frontend-mentor-challenge-deployment/" rel="permalink">What happens when I finish a Frontend Mentor Challenge (or how I build and deploy an 11ty site)
< </a>
<
< </h2>
<
<
< <p class="page__meta">
<
<
<
<
<
<
<
<
< <span class="page__meta-readtime">
< <i class="far fa-clock" aria-hidden="true"></i>
<
< 4 minute read
<
< </span>
<
< </p>
<
<
< <p class="archive__item-excerpt" itemprop="description">Ive been doing challenges from Frontend Mentor as a means to practice frontend web development. Specifically working with plain HTML, CSS and JavaScript.
<
< R...</p>
< </article>
< </div>
<
---
> <div class="entries-list">
386,421d188
<
<
<
<
< <div class="list__item">
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<
< <h2 class="archive__item-title no_toc" itemprop="headline">
<
< <a href="/2020/05/27/camino-de-santiago/" rel="permalink">A short look back on my Camino de Santiago journey
< </a>
<
< </h2>
<
<
< <p class="page__meta">
<
<
<
<
<
<
<
<
< <span class="page__meta-readtime">
< <i class="far fa-clock" aria-hidden="true"></i>
<
< 3 minute read
<
< </span>
<
< </p>
<
<
< <p class="archive__item-excerpt" itemprop="description">A year ago tomorrow I began the most gruelling, yet immensely satisfying, journey of my life. I set off from my home in Buchholz in der Nordheide Germany, to...</p>
< </article>
424,425d190
<
<
429,812d193
< <div class="list__item">
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<
< <h2 class="archive__item-title no_toc" itemprop="headline">
<
< <a href="/2020/04/21/learning-web-development/" rel="permalink">Learning Web Development
< </a>
<
< </h2>
<
<
< <p class="page__meta">
<
<
<
<
<
<
<
<
< <span class="page__meta-readtime">
< <i class="far fa-clock" aria-hidden="true"></i>
<
< 2 minute read
<
< </span>
<
< </p>
<
<
< <p class="archive__item-excerpt" itemprop="description">I mentioned in the goals post, one of the things I am aiming to do is to start learning web development.
<
< I was well aware that what falls under the banner o...</p>
< </article>
< </div>
<
<
<
<
<
<
< <div class="list__item">
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<
< <h2 class="archive__item-title no_toc" itemprop="headline">
<
< <a href="/2020/04/20/swift-coding-challenge-2/" rel="permalink">Swift Coding Challenges: Challenge 2
< </a>
<
< </h2>
<
<
< <p class="page__meta">
<
<
<
<
<
<
<
<
< <span class="page__meta-readtime">
< <i class="far fa-clock" aria-hidden="true"></i>
<
< 1 minute read
<
< </span>
<
< </p>
<
<
< <p class="archive__item-excerpt" itemprop="description">Second one within 13 hours, good lord, that would never do.
<
< So this challenge was to test if a string matched against the reverse of itself. Basically a pal...</p>
< </article>
< </div>
<
<
<
<
<
<
< <div class="list__item">
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<
< <h2 class="archive__item-title no_toc" itemprop="headline">
<
< <a href="/2020/04/20/swift-coding-challenges/" rel="permalink">Swift Coding Challenges: Challenge 1
< </a>
<
< </h2>
<
<
< <p class="page__meta">
<
<
<
<
<
<
<
<
< <span class="page__meta-readtime">
< <i class="far fa-clock" aria-hidden="true"></i>
<
< less than 1 minute read
<
< </span>
<
< </p>
<
<
< <p class="archive__item-excerpt" itemprop="description">As an effort to improve and challenge myself I got a copy of Paul Hudsons Swift Coding Challenges book and Im going to work through it and post my thoughts...</p>
< </article>
< </div>
<
<
<
<
<
<
< <div class="list__item">
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<
< <h2 class="archive__item-title no_toc" itemprop="headline">
<
< <a href="/2020/04/17/goals/" rel="permalink">Goals
< </a>
<
< </h2>
<
<
< <p class="page__meta">
<
<
<
<
<
<
<
<
< <span class="page__meta-readtime">
< <i class="far fa-clock" aria-hidden="true"></i>
<
< 6 minute read
<
< </span>
<
< </p>
<
<
< <p class="archive__item-excerpt" itemprop="description">Long time, no write.
<
< A lot has changed in my life, not least of which is that I am no longer a stay at home dad or living in Germany. For now I am back home...</p>
< </article>
< </div>
<
<
<
<
<
<
< <div class="list__item">
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<
< <h2 class="archive__item-title no_toc" itemprop="headline">
<
< <a href="/2019/06/17/Day21/" rel="permalink">Day 21
< </a>
<
< </h2>
<
<
< <p class="page__meta">
<
<
<
<
<
<
<
<
< <span class="page__meta-readtime">
< <i class="far fa-clock" aria-hidden="true"></i>
<
< 2 minute read
<
< </span>
<
< </p>
<
<
< <p class="archive__item-excerpt" itemprop="description">Day 21 of trip
<
< Day Frómista to Carrión de los Condes. 18.88km according to app. 19.18km with Phone GPS (minor detour). Was walking quickly. Which Fitbit doe...</p>
< </article>
< </div>
<
<
<
<
<
<
< <div class="list__item">
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<
< <h2 class="archive__item-title no_toc" itemprop="headline">
<
< <a href="/2019/06/15/Day19/" rel="permalink">Day 19
< </a>
<
< </h2>
<
<
< <p class="page__meta">
<
<
<
<
<
<
<
<
< <span class="page__meta-readtime">
< <i class="far fa-clock" aria-hidden="true"></i>
<
< 3 minute read
<
< </span>
<
< </p>
<
<
< <p class="archive__item-excerpt" itemprop="description">Day 19 of trip
<
< Day 16 of walk.
<
< Today was Hornillos del Camino to Castrojeriz (19.47km)
<
< Weather: cool, grey and minimal sun (nice to walk in)
<
< Terrain: lig...</p>
< </article>
< </div>
<
<
<
<
<
<
< <div class="list__item">
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<
< <h2 class="archive__item-title no_toc" itemprop="headline">
<
< <a href="/2019/06/14/Day-2018/" rel="permalink">Day 18 - drawn to stop
< </a>
<
< </h2>
<
<
< <p class="page__meta">
<
<
<
<
<
<
<
<
< <span class="page__meta-readtime">
< <i class="far fa-clock" aria-hidden="true"></i>
<
< 4 minute read
<
< </span>
<
< </p>
<
<
< <p class="archive__item-excerpt" itemprop="description">Day 18
<
< Burgos to Hornillos del Camino ~22km
<
< Weather was pleasant but cool
<
< Terrain most flat, gravel &amp; roads
<
< Woke up at 3am freezing and no blanket to...</p>
< </article>
< </div>
<
<
<
<
<
<
< <div class="list__item">
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<
< <h2 class="archive__item-title no_toc" itemprop="headline">
<
< <a href="/2019/06/13/Day-2017/" rel="permalink">Day 17
< </a>
<
< </h2>
<
<
< <p class="page__meta">
<
<
<
<
<
<
<
<
< <span class="page__meta-readtime">
< <i class="far fa-clock" aria-hidden="true"></i>
<
< 3 minute read
<
< </span>
<
< </p>
<
<
< <p class="archive__item-excerpt" itemprop="description">Day 17
<
< So its day 17 of the trip and day 14 of the Camino (day 12 if you take out 2 rest days)
<
< Woke at 6 pretty impressed that I didnt hear the 2 women i...</p>
< </article>
< </div>
<
<
< </div>
<
<
< <nav class="pagination">
<
< <ul>
<
<
< <li><a href="#" class="disabled"><span aria-hidden="true">Previous</span></a></li>
<
<
<
<
< <li><a href="#" class="disabled current">1</a></li>
<
<
<
<
<
<
<
<
<
<
<
<
<
<
< <li><a href="/page2/">2</a></li>
<
<
<
<
<
<
<
< <li><a href="/page3/">3</a></li>
<
<
<
<
< <li><a href="/page2/">Next</a></li>
<
< </ul>
< </nav>
<
<
<
841,842d221
< <li><strong>Follow:</strong></li>
<
869c248
< <li><a href="/feed.xml"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
---
> <li><a href="feed.xml"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
874c253
< <div class="page__footer-copyright">&copy; 2023 Robert McGovern. Powered by <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
---
> <div class="page__footer-copyright">&copy; %2023 Robert McGovern. Powered by <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
880c259
< <script src="/assets/js/main.min.js"></script>
---
> <script src="assets/js/main.min.js"></script>
884a264
>
886,889c266,268
< <script src="/assets/js/lunr/lunr.min.js"></script>
< <script src="/assets/js/lunr/lunr-store.js"></script>
< <script src="/assets/js/lunr/lunr-en.js"></script>
<
---
> <script src="assets/js/lunr/lunr.min.js"></script>
> <script src="assets/js/lunr/lunr-store.js"></script>
> <script src="assets/js/lunr/lunr-en.js"></script>

View File

@ -1,60 +0,0 @@
// Credits 🙇 for original ideas to:
// Fork of https://github.com/vimtor/eleventy-plugin-external-links
// css.gg SVG icon https://github.com/astrit/css.gg/blob/master/icons/svg/external.svg
const { parse, HTMLElement } = require("node-html-parser");
const { extname } = require("path");
module.exports = eleventyConfig => {
const options = {
name: "external-links",
regex: new RegExp("^(([a-z]+:)|(//))", "i"),
target: "_blank",
rel: "noopener noreferrer nofollow",
extensions: [".html"],
};
eleventyConfig.addTransform(options.name, (content, outputPath) => {
if (outputPath && options.extensions.includes(extname(outputPath))) {
const root = parse(content);
const links = root.querySelectorAll("a");
links
.filter(link => {
const href = link.getAttribute("href");
return (
href &&
options.regex.test(href) &&
!link.getAttribute("rel") &&
!link.getAttribute("target")
);
})
.forEach(link => {
link.setAttribute("target", options.target);
link.setAttribute("rel", options.rel);
const srText = new HTMLElement("span", { class: "sr-only" });
srText.textContent = "(opens in a new window)";
const icon = new HTMLElement(
"svg",
{},
`viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"`
);
icon.set_content(`
<path
d="M15.6396 7.02527H12.0181V5.02527H19.0181V12.0253H17.0181V8.47528L12.1042 13.3892L10.6899 11.975L15.6396 7.02527Z"
fill="currentColor"
/>
<path
d="M10.9819 6.97473H4.98193V18.9747H16.9819V12.9747H14.9819V16.9747H6.98193V8.97473H10.9819V6.97473Z"
fill="currentColor"
/>`);
link.appendChild(srText);
link.appendChild(icon);
});
return root.toString();
}
return content;
});
};

View File

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

Before

Width:  |  Height:  |  Size: 876 B

After

Width:  |  Height:  |  Size: 876 B

View File

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Some files were not shown because too many files have changed in this diff Show More