+1
-1
_config.yml
+1
-1
_config.yml
···
29
29
30
30
exclude: ['_includes/notes_graph.json', '.env', 'gemset.nix', 'fission.yaml', 'blog.code-workspace', 'netlify.toml', '_ignored', '_archive', '.vscode', '.obsidian', '.gitignore', '.github', 'README.md']
31
31
32
-
include: ['.well-known', '_pages']
32
+
include: ['.well-known', '_pages', '_redirects']
33
33
34
34
# markdown: CommonMarkGhPages
35
35
markdown: kramdown
+1
-1
_includes/head.html
+1
-1
_includes/head.html
···
5
5
<meta name="description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.title }}{% endif %}">
6
6
<meta property="og:site_name" content="{{ site.title }}">
7
7
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
8
-
<link rel="stylesheet" href="{{ 'styles.css' | relative_url }}">
8
+
<link rel="stylesheet" href="{{ '/styles.css' | relative_url }}">
9
9
<link rel="alternate" type="application/atom+xml" title="Blog Feed for bmannconsulting.com" href="{{ site.url }}/blog.xml" />
10
10
11
11
{% comment %}<!-- Littlefoot footnotes https://github.com/goblindegook/littlefoot -->{% endcomment %}
+2
_notes/Colophon.md
+2
_notes/Colophon.md
···
10
10
11
11
There is a [Backlog](https://notes.bmannconsulting.com/#/page/bmc%2Fbacklog) of things in progress.
12
12
13
+
This site is published to [[IPFS]] using [[Fission]] Github Actions.
14
+
13
15
## Time Passes
14
16
15
17
End of December 2022, poured the whole site into [[LogSeq]]. There is an archived [snapshot of 2022 Simply Jekyll](https://2022.bmannconsulting.com).
_notes/Fission.md
_notes/Fission.md
This is a binary file and will not be displayed.
+19
_notes/IPFS.md
+19
_notes/IPFS.md
···
1
+
---
2
+
title: InterPlanetary File System (IPFS)
3
+
---
4
+
5
+
IPFS is the InterPlanetary File System.
6
+
7
+
As mentioned in the [[Colophon]], this site is published to IPFS using the [[Fission]] Github Action. The action builds the static representation from the Markdown source using [[Jekyll]], calculates a top level [[CID]] hash aka Content IDentitifier, updates the [[DNSLink]] for the bmannconsulting.com domain, and has the Fission server cache a copy.
8
+
9
+
You can see that the DNSLink for the domain using this DNS checker <https://dnsrecords.io/_dnslink.bmannconsulting.com>, which in turn is just an alias to a Fission app, which has the actual hash <https://dnsrecords.io/_dnslink.bmcgarden.fission.app>.[^dnsrecords] You can take the CID that you find there, of the form `bafybeicxxtumkkha75i26livxe5a3iqklqfo42d7qytk2f4ob37bs3jpqa` and plug that in anywhere that understands IPFS and get the contents of that cyberboats page.
10
+
11
+
[^dnsrecords]: DNS Records is a great service! An online DNS checker / explorer. It also does social previews in things like Slack or Discord chat, so a great way to just type in a link and get the results in the preview <https://dnsrecords.io/>
12
+
13
+
You can peek at the IPFS file system underneath, by linking to one of the annual blog folders, like 2020 blog posts <https://bmannconsulting.com/blog/2020/>. Since we're browsing in there, we can also get the CID for the <a href="{{ "/blog/2020/01/03/cyberboats/" | relative_link }}">cyberboats</a> blog post, and plug it into any other gateway, like the [[Web3Storage]] one: <https://bafybeicz677flygp3v6zei4xkt3pcp6npuwk5dp2awqq3hxnxhgukhrpky.ipfs.dweb.link/> [^unstyled]
14
+
15
+
[^unstyled]: Yeah, this is unstyled, because it's trying to fetch a CSS file that is no longer referenced correctly. I could hardcode it to use the full path, but then it will point to a different version of the stylesheet. To figure out!
16
+
17
+
InterPlanetary Naming Service (IPNS) can use a name that points to IPFS hashes. This website you're browsing now is already being served over Fission's IPFS Gateway. If you're running [[Brave]], it can cache and browse sites, so you'd actually be able to browse it through localhost.
18
+
19
+
Since we already looked at Web3Storage, let's browse via IPNS using their gateway. You'll see <a href="https://w3s.link/ipns/bmannconsulting.com" target="_ipfs">w3s.link/ipns/bmannconsulting.com</a> redirect to <a href="https://bmannconsulting-com.ipns.dweb.link/" target="_ipfs">bmannconsulting-com.ipns.dweb.link</a>
+4
-8
_pages/blog.xml
blog.xml
+4
-8
_pages/blog.xml
blog.xml
···
1
1
---
2
-
layout: null
3
-
permalink: /blog.xml
4
2
---
5
3
<?xml version="1.0" encoding="UTF-8"?>
6
4
<rss version="2.0"
···
11
9
<channel>
12
10
<title>{{ site.name | xml_escape }} - Blog Feed</title>
13
11
<description>{% if site.description %}{{ site.description | xml_escape }}{% endif %}</description>
14
-
<sy:updatePeriod>{{ site.feed_update_period | default: "daily" | xml_escape }}</sy:updatePeriod>
15
-
<sy:updateFrequency>{{ site.feed_update_frequency | default: 1 | xml_escape }}</sy:updateFrequency>
16
12
<link>{{ site.url }}</link>
17
13
<atom:link href="{{ site.url }}{{ page.url }}" rel="self" type="application/rss+xml" />
18
14
<lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate>
···
23
19
{% if post.section == 'blog' and blogcount < feed_items %}
24
20
<item>
25
21
<title>{{ post.title | xml_escape }}</title>
26
-
{% if site.author.name %}
27
-
<dc:creator>{{ site.author.name | xml_escape }}</dc:creator>
22
+
{% if site.name %}
23
+
<dc:creator>{{ site.name | xml_escape }}</dc:creator>
28
24
{% endif %}
29
25
<description>{{ post.content | xml_escape }}</description>
30
-
<pubDate>{{ post.date | date_to_rfc822 }}</pubDate>
31
26
<link>{{ site.url }}{{ post.url }}</link>
32
-
<guid isPermaLink="true">{{ site.url }}{{ post.url }}</guid>
27
+
<pubDate>{{ post.date | date_to_rfc822 }}</pubDate>
28
+
<guid isPermaLink="true">https://bmannconsulting-com.ipns.dweb.link{{ post.url }}</guid>
33
29
</item>
34
30
{% assign blogcount = blogcount | plus: 1 %}
35
31
{% elsif blogcount >= feed_items %}
+1
-1
_pages/feeds.md
+1
-1
_pages/feeds.md
···
4
4
permalink: /feeds/
5
5
---
6
6
7
-
* Subscribe to this site for longer form blog posts <https://bmannconsulting.com/blog.xml>
7
+
* Subscribe to this site for longer form blog posts <a href="{{ '/blog.xml' | relative_link }}">bmannconsulting.com/blog.xml</a>
8
8
* Personal blog <https://blog.bmannconsulting.com/feed.xml>
9
9
* Mastodon accounts can be subscribed to as an RSS feed <https://cosocial.ca/@boris.rss>
+1
-1
_pages/index.md
+1
-1
_pages/index.md
···
20
20
{% for blog in recentblogs %}
21
21
{% if blog.section == 'blog' and blogcount < bloglimit %}
22
22
<li class="blog-entry" style="margin-bottom: 5px;">
23
-
<a class="internal-link" href="{{ blog.url }}">{{ blog.title }}</a>
23
+
<a class="internal-link" href="{{ blog.url }}">{{ blog.title }}</a> <time>{{ blog.date | date: "%B %-d, %Y" }}</time>
24
24
</li>
25
25
{% assign blogcount = blogcount | plus: 1 %}
26
26
{% elsif blogcount >= bloglimit %}
+2
_redirects
+2
_redirects