From 8193b4daba5bcf5502701f1e9e22f9390bac86b0775d49ef3509444d11ba45e8 Mon Sep 17 00:00:00 2001 From: Nicholas Johnson Date: Sun, 26 May 2024 00:00:00 +0000 Subject: Flatten directory structure --- content/about.md | 14 +++++++------- content/entry/atom-and-rss.md | 4 ++-- content/entry/dead-mans-switch.md | 2 +- content/entry/future-proof-digital-timestamping.md | 2 +- content/entry/icannot-be-trusted.md | 2 +- content/entry/journal-update-024.md | 2 +- content/entry/site-update-006.md | 2 +- content/entry/statement-of-gpg-key-transition.md | 4 ++-- .../entry/struggle-to-graduate-without-nonfree-software.md | 2 +- content/entry/tone-deaf-marketing.md | 2 +- content/entry/why-i-timestamped-my-journal.md | 4 ++-- 11 files changed, 20 insertions(+), 20 deletions(-) (limited to 'content') diff --git a/content/about.md b/content/about.md index 392822a..d7096c9 100644 --- a/content/about.md +++ b/content/about.md @@ -16,7 +16,7 @@ SimpleX is my preferred method of contact. It's private and secure. Email is **very** insecure. If you still insist on using it, at least encrypt with Age for harm reduction. Note that Age over email is not a substitute for a secure messenger. [:envelope_with_arrow: Email](mailto:nick@nicholasjohnson.ch) -[:key: Age Key](/resource/age.pub) +[:key: Age Key](/age.pub) ## Signing Key @@ -24,7 +24,7 @@ Email is **very** insecure. If you still insist on using it, at least encrypt wi My Signify key is my root of trust. Use git-signify to verify my signed releases. [:closed_lock_with_key: Git-Signify](https://git.nicholasjohnson.ch/git-signify/) -[:key: Signify Key](/resource/signify.pub) +[:key: Signify Key](/signify.pub) ## Git Repositories @@ -86,8 +86,8 @@ I also timestamped this journal so that its human provenance can be verified. Se I publish old DKIM private keys for better email deniability. -[:old_key: DKIM4](/resource/old-dkim-privates/dkim4.pem) -[:old_key: DKIM3](/resource/old-dkim-privates/dkim3.pem) -[:old_key: DKIM2](/resource/old-dkim-privates/dkim2.pem) -[:old_key: DKIM1](/resource/old-dkim-privates/dkim1.pem) -[:old_key: Mail](/resource/old-dkim-privates/mail.pem) +[:old_key: DKIM4](/old-dkim-privates/dkim4.pem) +[:old_key: DKIM3](/old-dkim-privates/dkim3.pem) +[:old_key: DKIM2](/old-dkim-privates/dkim2.pem) +[:old_key: DKIM1](/old-dkim-privates/dkim1.pem) +[:old_key: Mail](/old-dkim-privates/mail.pem) diff --git a/content/entry/atom-and-rss.md b/content/entry/atom-and-rss.md index db591a2..caaa829 100644 --- a/content/entry/atom-and-rss.md +++ b/content/entry/atom-and-rss.md @@ -5,7 +5,7 @@ tags: ['computing'] draft: false --- Most netizens are vaguely familiar with this symbol: -[RSS icon [IMG]](/resource/feed-icon-28x28.png) +[RSS icon [IMG]](/feed-icon-28x28.png) It represents [Atom](https://www.wikipedia.org/wiki/Atom_%28standard%29) and [RSS](https://www.wikipedia.org/wiki/RSS). From Wikipedia ([CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/)): ## RSS @@ -22,7 +22,7 @@ I'm not inherently against social media. I'm just against proprietary walled gar Now that you know what Atom/RSS is and you have an idea what it's used for, I'll move on to the meat of this post: how to use Atom/RSS. To begin using Atom/RSS yourself, you'll need to install a feed reader. There is mature feed reader software available for all major platforms including mobile. Decent feed readers support both Atom and RSS and you probably won't need to know which is which. Most sites including this one still use RSS. I do plan to eventually switch [my site feed](/atom.xml) over to Atom since it's more modern. Once you find the feed symbol -[RSS icon [IMG]](/resource/feed-icon-28x28.png) +[RSS icon [IMG]](/feed-icon-28x28.png) on the webpage with the feed you want, just copy paste the link adding it into your feed reader and you're golden. After that your reader will take care of retrieving the content from that feed automatically. If you can't find a feed icon on a site, that doesn't mean the site doesn't support RSS. They may just not advertise it. Search the web for that site's RSS feed to see if anything turns up. If nothing turns up, there are websites that will parse the page you want turning it into a web feed. As long as you're not required to log in to view the content, you can probably find an RSS feed for it. Decent Atom/RSS aggregators allow you to create groups of feeds, so you can combine related feeds or view them separately. You can even aggregate all your feeds into 1 big feed if that's what you want. With Atom/RSS, the choice is yours. If you stop reading a feed, it's as easy to remove from your aggregator as it was to add. Sites with lots of content offer Atom/RSS feeds based on category. For example if you're only interested in my posts about "computing", you can subscribe only to this RSS feed. diff --git a/content/entry/dead-mans-switch.md b/content/entry/dead-mans-switch.md index 85b67d4..31df52f 100644 --- a/content/entry/dead-mans-switch.md +++ b/content/entry/dead-mans-switch.md @@ -43,7 +43,7 @@ In theory the DMS represents a sequential, [noncooperative game](https://www.wik This point structure assumes both Players value retribution but not as much as avoiding harm. Both Players assume the other will adopt the strategy of maximizing their own points. Using the [Minimax](https://www.wikipedia.org/wiki/Minimax#Example_2) algorithm it can be determined that both Players will do nothing. Any other action would result in both players having less points. Points are represented for each Player in the format (P1,P2) in the decision tree below: -[decision_tree [IMG]](/resource/decision_tree.jpg) +[decision_tree [IMG]](/decision_tree.jpg) ## In Practice In practice there are a number of complicating factors. Player 2 may not know exactly what the leaks contain making it impossible to value the cost of violence. Player 1 can create the perception of cost but in reality not even set up the switch or set one up incorrectly so it doesn't work or simply forget to deactivate it thus triggering it. Player 2 may find a way to disarm it. To account for the real-world outcomes you would need a much larger decision tree. And even then what are the chances that both players act rationally? So don't think that a DMS is guaranteed to be effective. diff --git a/content/entry/future-proof-digital-timestamping.md b/content/entry/future-proof-digital-timestamping.md index d09eb2a..653c1f6 100644 --- a/content/entry/future-proof-digital-timestamping.md +++ b/content/entry/future-proof-digital-timestamping.md @@ -25,7 +25,7 @@ Then I found [OpenTimestamps](https://opentimestamps.org/). It's based on Bitcoi Also, OpenTimestamps has an extremely efficient design compared to other Bitcoin timestamping schemes. Thanks to OpenTimestamps' clever use of [Merkle trees](https://petertodd.org/2016/opentimestamps-announcement#merkle-trees), it can timestamp unlimited data using only 1 transaction. Other Bitcoin timestamping software uses 1 transaction per timestamp, an extremely wasteful, inefficient design. At least OpenTimestamps isn't that bad. -So anyway, I created a timestamped Git commit and tagged it [timestamp-1](https://archive.softwareheritage.org/swh:1:rel:e4726ec79a43e28c616e4d5f3db0efe2237b23f9;origin=https://git.nicholasjohnson.ch/nicksphere-gmi;visit=swh:1:snp:fb9bef300f9b939382f5656232d95377c8630a10). I wrote the concatenated commit data of the timestamped commit to [a file](/resource/timestamp-1.txt) in case you're interested to see what it looks like. The software works in a very elegant fashion. It even maintains compatibility with non-OpenTimestamps Git clients, so GnuPG can still verify the commit signature. +So anyway, I created a timestamped Git commit and tagged it [timestamp-1](https://archive.softwareheritage.org/swh:1:rel:e4726ec79a43e28c616e4d5f3db0efe2237b23f9;origin=https://git.nicholasjohnson.ch/nicksphere-gmi;visit=swh:1:snp:fb9bef300f9b939382f5656232d95377c8630a10). I wrote the concatenated commit data of the timestamped commit to [a file](/timestamp-1.txt) in case you're interested to see what it looks like. The software works in a very elegant fashion. It even maintains compatibility with non-OpenTimestamps Git clients, so GnuPG can still verify the commit signature. The base64-encoded timestamp appended to the commit data includes all the necessary hashes to build the Merkle path from the tagged commit to the merkle root included in the Bitcoin transaction. Using './ots --git-extract ' on any file in the nicksphere-gmi repo present at the timestamped commit, you can extract an ots proof file which you can then verify with './ots --verify '. diff --git a/content/entry/icannot-be-trusted.md b/content/entry/icannot-be-trusted.md index 9d1122f..bd2ec32 100644 --- a/content/entry/icannot-be-trusted.md +++ b/content/entry/icannot-be-trusted.md @@ -18,6 +18,6 @@ Ideally, you're accessing this journal [over](gemini://nick6gsepvtmkcpibpid6dqtq My Tor onion and I2P addresses aren't foolproof. They're hosted on a VPS, meaning my VPS provider could hijack them. Using nicholasjohnson.ch to access my journal, you have to trust both ICANN and my VPS though. So you're better off using Tor or I2P so you only need to trust one third party, not two. -Brief digression: To avoid trusting any third party, you can always [verify my journal's Git repository](https://archive.softwareheritage.org/swh:1:rev:0990ac4365ea2e436a9d28aeefdd16ec65c27afa;visit=swh:1:snp:d25282c0c441839d1ca147a90699bd2c7d986a21) with [my public Signify key](/resource/signify.pub) and a small utility called [git-signify](https://git.nicholasjohnson.ch/git-signify/). If there's any doubt the key is mine, I gave a [Libreplanet talk](https://media.libreplanet.org/u/libreplanet/m/taking-back-the-web-with-haketilo/) with my public key in the slides five months ago and I have an unbroken history of public keys going back to December of 2020 starting with my original [GPG key](/2021/12/30/statement-of-gpg-key-transition/) which I transitioned away from. +Brief digression: To avoid trusting any third party, you can always [verify my journal's Git repository](https://archive.softwareheritage.org/swh:1:rev:0990ac4365ea2e436a9d28aeefdd16ec65c27afa;visit=swh:1:snp:d25282c0c441839d1ca147a90699bd2c7d986a21) with [my public Signify key](/signify.pub) and a small utility called [git-signify](https://git.nicholasjohnson.ch/git-signify/). If there's any doubt the key is mine, I gave a [Libreplanet talk](https://media.libreplanet.org/u/libreplanet/m/taking-back-the-web-with-haketilo/) with my public key in the slides five months ago and I have an unbroken history of public keys going back to December of 2020 starting with my original [GPG key](/2021/12/30/statement-of-gpg-key-transition/) which I transitioned away from. If you yourself are an online service provider, please follow my example and offer a Tor onion and/or I2P address to help resist ICANN's power. diff --git a/content/entry/journal-update-024.md b/content/entry/journal-update-024.md index b84e475..4e6751e 100644 --- a/content/entry/journal-update-024.md +++ b/content/entry/journal-update-024.md @@ -18,7 +18,7 @@ There are still small improvements to be made and probably minor bugs to fix, bu I've also made some changes to [the journal itself](https://git.nicholasjohnson.ch/journal "Journal Repository"). Here they are in no particular order: -* Started publishing my [DKIM private keys](/resource/old-dkim-privates.txt "My DKIM Private Keys"). +* Started publishing my [DKIM private keys](/old-dkim-privates.txt "My DKIM Private Keys"). * Replaced [outdated/unmaintained/upstreamed repos](https://git.nicholasjohnson.ch/journal/diff/?id=28dc72ee06fab33f4c07ecd0c840d27f420ef05c4c478793dbb130f6f5ecda8e&id2=fc23b52eefdb23fa5c1b572c10f3472eaa4a63154ab9a26fae8165a5e7cb39a6 "Journal Git Commit: Replace outdated/unmaintained/upstreamed repos with archived links") from [my cgit instance](https://git.nicholasjohnson.ch "My Cgit Instance") with archived links. * Added the '[computing](/tags/computing/ "Journal tag: 'computing'")' tag for computing-related journal entries. * [Replaced files subdomain with archived links.](http://git.nicholasjohnson.ch/journal/diff/?id=369824d3344a2cacc12a440039090c155d30665b159985367be39e866687a485&id2=0511dfa99267b9a4b36faadd9aedaf4baa3b916707621e03c03e22d959bef1b8 "Journal Git Commit: Replace files subdomain with archived links") diff --git a/content/entry/site-update-006.md b/content/entry/site-update-006.md index ee073db..e2f34c8 100644 --- a/content/entry/site-update-006.md +++ b/content/entry/site-update-006.md @@ -7,6 +7,6 @@ draft: false # What's New I changed the website theme. It's darker now and much easier on the eyes. I didn't particularly like the last theme ever since I started using it. I only picked it because it was easy to manage with how minimal it was. I added a favicon to identify my site: -[favicon [IMG]](/resource/favicon.ico) +[favicon [IMG]](/favicon.ico) It's nothing to brag about. I just thought I ought to have something there. The markdown is improved, especially the blockquotes. It didn't seem like they were rendering on the previous theme, but now they do. Each post now has a word count and estimated reading time in the metadata section. Posts are paginated so they're not all on one page like before. I'm allergic to client-side JS, so this site has none. I modified the theme to use CSS rather than JS for the interactive features. I'm happy with the way it turned out and I consider it a significant improvement. The new theme is everything I originally wanted for my blog, so it's here to stay. diff --git a/content/entry/statement-of-gpg-key-transition.md b/content/entry/statement-of-gpg-key-transition.md index edc9a68..6187313 100644 --- a/content/entry/statement-of-gpg-key-transition.md +++ b/content/entry/statement-of-gpg-key-transition.md @@ -20,10 +20,10 @@ The new Signify key is: RWTJ8JZMFWhB2Ya9GyXbmOQKSxd/x57IV/oNo6/nl344CR1aqf/OgPXf If you have my old GnuPG key, you can verify this transition statement with: -gpg2 --verify [gpg-signify-transition-statement.txt.asc](/resource/gpg-signify-transition-statement.txt.asc) +gpg2 --verify [gpg-signify-transition-statement.txt.asc](/gpg-signify-transition-statement.txt.asc) You can verify the new Signify key with: -signify -V -e -p key.pub -m [gpg-signify-transition-statement.txt.sig](/resource/gpg-signify-transition-statement.txt.sig) +signify -V -e -p key.pub -m [gpg-signify-transition-statement.txt.sig](/gpg-signify-transition-statement.txt.sig) Thank you, and sorry for the inconvenience. diff --git a/content/entry/struggle-to-graduate-without-nonfree-software.md b/content/entry/struggle-to-graduate-without-nonfree-software.md index a2c2ae6..aad76bf 100644 --- a/content/entry/struggle-to-graduate-without-nonfree-software.md +++ b/content/entry/struggle-to-graduate-without-nonfree-software.md @@ -7,7 +7,7 @@ draft: false # Introduction From the title of this journal entry alone, you might think it's about my story struggling to graduate without nonfree software. But I've already beaten that topic to death on this journal. It's time for someone else's story: Wojciech Kosior. He faced the same sort of difficulties graduating that I did, except he graduated. His story is one of incredible determination and persistence. He fought hard to graduate in freedom and won. I don't know of many people with the resolve displayed in his narrative. -The revised narrative of his struggle can be found on [gnu.org](https://www.gnu.org/education/how-i-fought-to-graduate-without-using-non-free-software.html). It went through at least 20 revisions before being published. Many of the details were stripped. He kindly sent me the unedited original copy of his narrative which I personally find more inspiring than the one on gnu.org. I modified the narrative's formatting to make it more presentable here. It was originally sent as a .org. If you want the original .org file (for Emacs), I've uploaded it to this web server for [download](/resource/narrative.org). +The revised narrative of his struggle can be found on [gnu.org](https://www.gnu.org/education/how-i-fought-to-graduate-without-using-non-free-software.html). It went through at least 20 revisions before being published. Many of the details were stripped. He kindly sent me the unedited original copy of his narrative which I personally find more inspiring than the one on gnu.org. I modified the narrative's formatting to make it more presentable here. It was originally sent as a .org. If you want the original .org file (for Emacs), I've uploaded it to this web server for [download](/narrative.org). If you enjoyed reading my story struggling to graduate without nonfree software, then you're in for a treat. Without further introduction, I present to you Wojciech Kosior's narrative. diff --git a/content/entry/tone-deaf-marketing.md b/content/entry/tone-deaf-marketing.md index 62af9f2..35812c8 100644 --- a/content/entry/tone-deaf-marketing.md +++ b/content/entry/tone-deaf-marketing.md @@ -5,7 +5,7 @@ draft: false --- Today I visited the website of a business that I've been a long-time customer of and noticed something strange about their marketing. They were advertising a "summer heat wave special". This came off to me as absolutely tone deaf and in poor taste. We are in the middle of arguably the biggest crisis humanity has ever faced in its history and the disastrous effects it's having are being used as a marketing strategy? -Understand that I am not one of those people who complains to customer service departments on a regular basis over minor problems, but in this case I felt it appropriate. You can find the full reformatted and redacted transcript [here](/resource/climate-change-marketing-transcript.txt "Customer Service Transcript") if you're interested. For this entry, I have cut out the irrelevant automated messages to save time: +Understand that I am not one of those people who complains to customer service departments on a regular basis over minor problems, but in this case I felt it appropriate. You can find the full reformatted and redacted transcript [here](/climate-change-marketing-transcript.txt "Customer Service Transcript") if you're interested. For this entry, I have cut out the irrelevant automated messages to save time: ```plaintext 5:41:45 p.m. [REDACTED]: Good Afternoon, Thank you for contacting [REDACTED]. This is [REDACTED]. How may I assist you? diff --git a/content/entry/why-i-timestamped-my-journal.md b/content/entry/why-i-timestamped-my-journal.md index 37500b1..9b416d8 100644 --- a/content/entry/why-i-timestamped-my-journal.md +++ b/content/entry/why-i-timestamped-my-journal.md @@ -33,7 +33,7 @@ Commands: ```sh git clone https://git.nicholasjohnson.ch/journal && cd journal -ots verify -d "$(git show-ref --hash signify-signature-10)" static/resource/timestamp-2.ots +ots verify -d "$(git show-ref --hash signify-signature-10)" static/timestamp-2.ots ``` @@ -45,6 +45,6 @@ Timestamp chaining could perhaps provide stronger assurance of the legitimacy of But one good idea contained in that entry was to restamp this journal's Git repo to future-proof its timestamp. The old timestamp was performed on the old repo which used the broken SHA-1 hashing algorithm. Since then, I converted the repo to the new SHA-2 object format and SHA-2 support in Git has been stabilized. So everything I needed to create a new, stronger timestamp was present. Well, almost everything. -The only issue I ran into was that the OpenTimestamps software does not have sufficient [Git integration](https://github.com/opentimestamps/opentimestamps-client/blob/master/doc/git-integration.md "OpenTimestamps Git Integration") to embed timestamps within Git objects in SHA-2 repos like it can for SHA-1 repos. So I just timestamped [the most recent tag](https://git.nicholasjohnson.ch/journal/tag/?h=signify-signature-10 "Most Recent Tag of Journal Repo") manually, creating a fully separate [.ots proof file](/resource/timestamp-2.ots "Timestamp Proof File") which is verified without using OpenTimestamps' GnuPG wrapper. +The only issue I ran into was that the OpenTimestamps software does not have sufficient [Git integration](https://github.com/opentimestamps/opentimestamps-client/blob/master/doc/git-integration.md "OpenTimestamps Git Integration") to embed timestamps within Git objects in SHA-2 repos like it can for SHA-1 repos. So I just timestamped [the most recent tag](https://git.nicholasjohnson.ch/journal/tag/?h=signify-signature-10 "Most Recent Tag of Journal Repo") manually, creating a fully separate [.ots proof file](/timestamp-2.ots "Timestamp Proof File") which is verified without using OpenTimestamps' GnuPG wrapper. Hopefully the new timestamp lasts. If not, both [Software Heritage](https://archive.softwareheritage.org/browse/origin/directory/?origin_url=https://git.nicholasjohnson.ch/journal "Journal Repo on Software Heritage") and [Archive.org](https://web.archive.org/web/*/https://nicholasjohnson.ch/ "Journal on Archive.org") have centralized timestamps of this journal as fallbacks. -- cgit v1.2.3