wowana.me

website source


commit 39c02ec576be13acf5aee39252da61b459a85aae
parent 40c19c3907d1a304ff2fa81fbb52d09de2e2d4a1
Author: opal hart <opal@wowana.me>
Date:   Sun,  8 Dec 2019 01:35:03 +0000

enforce new gitignore on out/ dir

Diffstat:
Mout/about.xht | 4++--
Mout/blog/a-musing-on-sharing-and-receiving-opinions.xht | 4++--
Mout/blog/a-new-era-for-hidden-answers.xht | 4++--
Mout/blog/acme-client-letskencrypt-dns-01-how-to.xht | 4++--
Mout/blog/are-passwords-the-right-solution.xht | 4++--
Mout/blog/chen-hosting-goals-and-difficulties.xht | 4++--
Mout/blog/federated-social-networking.xht | 4++--
Mout/blog/feed.atom | 1068++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mout/blog/guess-im-done-with-discord.xht | 4++--
Mout/blog/index.xht | 42+++++++++++++++++++++---------------------
Mout/blog/learning-how-to-learn.xht | 10+++++-----
Mout/blog/living-without-discord.xht | 4++--
Mout/blog/my-and-your-pgp-habits-could-be-better.xht | 4++--
Mout/blog/paving-the-road-for-the-future-of-technology.xht | 4++--
Mout/blog/site-update.xht | 4++--
Mout/blog/staying-safe-online.xht | 4++--
Mout/blog/testing-patches-made-to-bashblog-script.xht | 4++--
Mout/blog/the-grey-area-of-paedophilia.xht | 4++--
Mout/blog/trying-new-software.xht | 4++--
Mout/blog/why-i-no-longer-use-github.xht | 10+++++-----
Mout/blog/why-program-efficiency-and-usability-matters.xht | 4++--
Mout/blog/wowaname-now-on-git-and-hosted-on-my-laptop.xht | 4++--
Mout/bookmarks.xht | 24++++++++++++------------
Mout/contact.xht | 6+++---
Mout/donate.xht | 8++++----
Mout/fediverse.xht | 10+++++-----
Aout/files/Summitto.txt | 103+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aout/files/backfromgab.txt | 142+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aout/files/pgp/matrix-keys.asc | 36++++++++++++++++++++++++++++++++++++
Aout/files/pgp/xmpp-omemo-keys.asc | 34++++++++++++++++++++++++++++++++++
Mout/htss.xht | 18+++++++++---------
Mout/index.xht | 2+-
Mout/permalink.xht | 4++--
Mout/pgp.xht | 4++--
Mout/software.xht | 10+++++-----
35 files changed, 959 insertions(+), 644 deletions(-)

diff --git a/out/about.xht b/out/about.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='about'> -<h1>about</h1> +<main> +<h1 id="about">about</h1> <p>my nickname is wowaname, my real name is opal hart, and my legal name is something I don't want to talk about. I have strong interests in technology, security, communications, and personal freedom. not much else about me is immediately important unless you get to know me.</p> diff --git a/out/blog/a-musing-on-sharing-and-receiving-opinions.xht b/out/blog/a-musing-on-sharing-and-receiving-opinions.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='a-musing-on-sharing-and-receiving-opinions'> -<h1>a musing on sharing and receiving opinions</h1> +<main> +<h1 id="a-musing-on-sharing-and-receiving-opinions">a musing on sharing and receiving opinions</h1> <time datetime='2018-09-24T11:40:36+0000' title='2018-09-24T11:40:36+0000'>2018 Sep 24</time> diff --git a/out/blog/a-new-era-for-hidden-answers.xht b/out/blog/a-new-era-for-hidden-answers.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='a-new-era-for-hidden-answers'> -<h1>a new era for Hidden Answers</h1> +<main> +<h1 id="a-new-era-for-Hidden-Answers">a new era for Hidden Answers</h1> <time datetime='2018-04-13T00:55:08+0000' title='2018-04-13T00:55:08+0000'>2018 Apr 13</time> diff --git a/out/blog/acme-client-letskencrypt-dns-01-how-to.xht b/out/blog/acme-client-letskencrypt-dns-01-how-to.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='acme-client-letskencrypt-dns-01-how-to'> -<h1>acme-client (letskencrypt) dns-01 how-to</h1> +<main> +<h1 id="acme-client-%28letskencrypt%29-dns-01-how-to">acme-client (letskencrypt) dns-01 how-to</h1> <time datetime='2018-09-21T16:45:46+0000' title='2018-09-21T16:45:46+0000'>2018 Sep 21</time> diff --git a/out/blog/are-passwords-the-right-solution.xht b/out/blog/are-passwords-the-right-solution.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='are-passwords-the-right-solution'> -<h1>are passwords the right solution?</h1> +<main> +<h1 id="are-passwords-the-right-solution%3F">are passwords the right solution?</h1> <time datetime='2018-01-09T10:51:38+0000' title='2018-01-09T10:51:38+0000'>2018 Jan 09</time> diff --git a/out/blog/chen-hosting-goals-and-difficulties.xht b/out/blog/chen-hosting-goals-and-difficulties.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='chen-hosting-goals-and-difficulties'> -<h1>Chen Hosting goals and difficulties</h1> +<main> +<h1 id="Chen-Hosting-goals-and-difficulties">Chen Hosting goals and difficulties</h1> <time datetime='2018-03-05T04:29:31+0000' title='2018-03-05T04:29:31+0000'>2018 Mar 05</time> diff --git a/out/blog/federated-social-networking.xht b/out/blog/federated-social-networking.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='federated-social-networking'> -<h1>federated social networking</h1> +<main> +<h1 id="federated-social-networking">federated social networking</h1> <time datetime='2019-07-12T07:10:27+0000' title='2019-07-12T07:10:27+0000'>2019 Jul 12</time> diff --git a/out/blog/feed.atom b/out/blog/feed.atom @@ -4,220 +4,291 @@ <link href="/blog/" rel="alternate"/> <link href="/blog/feed.atom" rel="self"/> <id>/blog/</id> - <updated>2019-09-22T19:28:20+0000</updated> + <updated>2019-12-08T01:21:53+0000</updated> <entry> - <title>a musing on sharing and receiving opinions</title> - <link href="/blog/a-musing-on-sharing-and-receiving-opinions.xht" rel="alternate" type="application/xhtml+xml" /> - <id>/blog/a-musing-on-sharing-and-receiving-opinions.xht</id> - <published>2018-09-24T11:40:36+0000</published> - <updated>2018-09-24T11:40:36+0000</updated> + <title>testing patches made to bashblog script</title> + <link href="/blog/testing-patches-made-to-bashblog-script.xht" rel="alternate" type="application/xhtml+xml" /> + <id>/blog/testing-patches-made-to-bashblog-script.xht</id> + <published>2017-12-21T21:08:11+0000</published> + <updated>2017-12-21T21:08:11+0000</updated> <author><name>opal hart</name></author> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> -<p>from <a href="https://anime.website/notice/1098692">my fediverse post</a>:</p> - -<blockquote> - <p>am i perfect? no, far from it. i go out of my way to be an edgy fuck more than enough, i am quick to resort to namecalling, but overall i feel like i'm a reasonable person if you can look past that. while some people use edginess/insults to carry out their "race war now" politics, i simply use it because i'm used to it, i don't take offence to it when it's used against me, and i believe (to a fault) in "treat others how you want to be treated."</p> - -<p>except sometimes i put my edginess aside for a brief bit, and i try to discuss something maturely, without the intent to provoke. and that isn't even well-received as much as it should be, for whatever reason. people choose to be ignorant to differing opinions rather than to be openly sceptical, rather than to judge whether a new idea is acceptable, needs additional review/argument, or can be discarded safely (and ideally in an adultlike manner that doesn't end up accusing people of stuff simply because they believe in something).</p> - -<p>psychologists have a term for silencing opposition: it's a maladaptive coping response to stressors, meaning it is unhealthy in the long run and only causes more problems. the adage "you can run but you can't hide" is suitable here; you can temporarily silence dissenting opinions (or ruin your life trying to permanently silence all sources of it) instead of just taking those opinions as they are: opinions. nobody's forcing you to believe anything, and the people who do use force to spread their opinions are to be looked down upon. most of us are simply exposing others to new ideas based off our own experiences and knowledge; we're doing it in an attempt to help out but we don't always show our intent straight up, because we're naïve and believe that everyone is as open as us to new ideas and opinions.</p> +<p>since I'm using a linux desktop now in place of my windows 8.1 laptop, I can now sanely use linux commands such as gpg and rsync (and the bashblog script itself) to locally sign my posts and transmit them to my server with minimum effort. the <a href="https://github.com/cfenollosa/bashblog">original bashblog script</a> relies heavily on GNUisms especially in the <code>date</code> command, therefore requiring a little effort to adapt to alpine linux (which uses busybox and not coreutils) and the inability to use some of these odd GNU requirements. I wish people would pay attention to compatibility; everyone seems to focus only on GNU and BSD and completely forgets about POSIX standards and requirements.</p> -<p>like i said, i'm flawed as fuck, but i don't believe my flaws and edginess has a profound impact on my ability to diffuse my opinions and knowledge to others out there</p> -</blockquote> +<p>anyway, this post should be signed (click <q>PGP signature</q> near the top of this post to get a markdown version of the article along with the appended PGP signature). I will manually sign previous blog posts as well, for completeness.</p> </div> </content> </entry> <entry> - <title>a new era for Hidden Answers</title> - <link href="/blog/a-new-era-for-hidden-answers.xht" rel="alternate" type="application/xhtml+xml" /> - <id>/blog/a-new-era-for-hidden-answers.xht</id> - <published>2018-04-13T00:55:08+0000</published> - <updated>2019-05-11T03:38:03+0000</updated> + <title>guess I&#39;m done with Discord</title> + <link href="/blog/guess-im-done-with-discord.xht" rel="alternate" type="application/xhtml+xml" /> + <id>/blog/guess-im-done-with-discord.xht</id> + <published>2019-08-15T23:57:49+0000</published> + <updated>2019-08-29T09:57:38+0000</updated> <author><name>opal hart</name></author> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> -<p>this post is specifically for users of the Hidden Answers website. if you don't know what it is, this probably isn't worth reading. still, curious people who want to help out with the website are welcome to <a href="/contact.xht">contact me</a>; any help is appreciated.</p> +<p>I'll let the E-mail ticket do most of the talking:</p> -<p>for those who aren't on Hidden Answers: it's a hidden service question-answer website using the <a href="http://question2answer.org/">Question2Answer</a> software, and in similar format to Stack Exchange. it's available <a href="http://answerstedhctbek.onion/">on tor</a> and <a href="http://hiddenanswers.i2p/">on i2p</a> and currently is multilingual for English, Spanish, Portuguese, and Russian speakers.</p> +<blockquote> + <p>Hi,</p> -<p>at the time of writing, new user registration is closed for a multitude of reasons. I have hopes of re-enabling registration soon, after we have fixed some long-lasting issues with the site.</p> +<p>Today I received a prompt to verify my account with a phone number [1], +which is the first time I have ever encountered this message in the +entire time I've had my account (created 2017 Jan 09 according to my +password manager). My account opal#6614 has a verified E-mail address +(the one I'm sending this message from) and two-factor authentication. +As I have mentioned in a prior support request, I use Tor to access +Discord, both on my desktop and my phone.</p> -<p>as users have inevitably noticed by now, there are a few issues with the site, ranging from the community to the software. the past month, the MySQL database for Hidden Answers has experienced unexplained corruption, and last week the server's disk space was completely consumed by MySQL binary logs, causing the site to be totally inaccessible. (seriously MySQL/MariaDB, why keep all logs infinitely by default? and why did nobody tell me about this before I went into web hosting?)</p> +<p>I refuse to provide phone verification as I believe it is Discord's +fault for flagging my account even though I've never had an issue +following terms of service. I do not spam, I do not upload content +against terms of service (even though I disagree with the list of +banned content), and I have never used this or other accounts to evade +bans or other limitations. The reCAPTCHA upon login was insulting +enough, and now being asked for a phone number is an even bigger spit +in my face. The only thing I can think of that may have triggered +Discord's crappy anti-spam detection, is the invite I sent to a user +for my newly-created guild. That, and the fact I just so happen to be +using Tor when sending the invite. Because, everything else about the +invite was fine: I have been friends with the user I invited, and I did +not spam the user (or any other users for that matter) whatsoever.</p> -<p>over the past year pinochet, the website founder, has come in and out of the scene for being responsible for the site. the grunt of the website's work has been handled by both me and the dedicated moderation team. but even we aren't enough to keep the website running optimally. not only that, but mods come and go, and some of them understandably become tired of dealing with the site. and we have no idea what's going on with the multilingual sites (Portuguese HA was overrun by scammers at some point, for example). communication between all the moderators is barely established, and this causes additional strain on relationships and on the state of the website.</p> +<p>Please make it so: +1. Discord's anti-spam isn't so anal, +2. my account (and other accounts in good standing and with proper 2FA) +is exempt from such checks, and +3. I don't have to solve a Google reCAPTCHA for an account I have taken +every step to protect against bruteforcing. Using Tor is not a crime; +don't treat it as such.</p> -<p>pinochet is now long gone and only the mods and I are left to run the site. I am officially taking over the site; this is effective at the time of writing this post. that means you should write down my PGP key and you should write down my contact information (it's best to contact me over E-mail and XMPP, and <em>please</em> tell me who you are and why you wish to contact me, or I'll likely ignore you. saying <q>hi</q> isn't enough to get my attention because I deal with a lot of people and things daily).</p> +<p>I'm tired of Discord's attitude toward things like this and I'll sooner +abandon my account and uninstall the app if I am unable to access my +account. I will recommend all my friends to migrate to a more suitable +platform if this continues, too. I am not part of Discord Hype Squad +for very good reason; Discord has shown to be hostile toward FOSS and +privacy for a while now.</p> -<p>I am going to make a few assertions. before, I have made these as suggestions, but they have clearly not been enough to cause any notable change in the site. from this point on:</p> +<p>[1]&lt;<a href="https://pl.wowana.me/media/0bf9e6e5cb428f89596e9d217f281d4f054895c85a3450a5b7fb2d876e8f6bc1.png">https://pl.wowana.me/media/0bf9e6e5cb428f89596e9d217f281d4f054895c85a3450a5b7fb2d876e8f6bc1.png</a>></p> -<ul> -<li>I <em>need</em> moderators, editors, and anyone else with an official Hidden Answers role to post their E-mail and/or XMPP address on their profile, and I <em>need</em> them to have a copy-pastable PGP key or fingerprint. no exceptions. we need to improve communication, especially since the PM system has been disabled (and more on that in the next point).</li> -<li>PMs are <em>indefinitely</em> disabled. they're a venue of abuse. they're unencrypted. I have had to look into suspicious accounts per moderator request, and each suspicious account I looked into, I found shitloads of messages breaking the website's rules. if you need to contact someone, do it off-site. do it on their public wall. PMs are useless for a question-answer site such as ours.</li> -<li>I will make my source code changes to Question2Answer available on my git. I am aware this will make the website easier to clone, but I believe this isn't an issue, since people already try to set up scam sites targeting HA users anyway. the benefit of open software development outweighs the risks, in my view.</li> -<li>we <em>need</em> a defined process to choose official roles. we need more concise roles too: -<ul> -<li>super administrator: the website owner (me, now). I can add new admins and mods, change site settings, and be the <q>last say</q> of what goes on.</li> -<li>administrator: trusted people who represent Hidden Answers probably more than I do, lift a lot of the site's weight, and can maintain relations with mods and users. I'm appointing v0h20 and Fox to this role because they have done a shitload for this site and I trust their judgment for adding new mods.</li> -<li>global moderator. their main roles will be to oversee editors and to block rulebreaking users.</li> -<li>global editor. responsible for backtracking through the older questions (at least until they're all cleaned up eventually) and recategorising, editing, closing, and selecting answers as necessary. does this for new questions and answers as well.</li> -<li>category editors. responsible for cleaning up posts under their own category and can be seen as a category expert as well.</li> -<li>emeritus. just a status for ex-mods and -admins that have stepped down from their roles voluntarily (or were inactive).</li> -<li>technical contributor. I promised a role for anyone willing to help with the code. these people contribute to Q2A updates, debugging, and security penetration testing.</li> -</ul></li> -<li>we <em>need</em> administration transparecy. moderation decisions need to be made public so we're all on the same page, and so users can criticise us if we do something wrong.</li> -<li>we <em>need</em> concrete rules and ways to deal with offences. so far, it's just been play-by-ear.</li> -<li>additional focus needs to be placed on the other HA languages.</li> -<li>additional focus also needs to be placed on supplementary shit like a showcase of frequently-asked questions, to make it easier for newbies to search.</li> -<li>anything else needs to be discussed on HA, in front of everyone, making use of the poll system I installed recently. that way, we have a more democratic approach to the site.</li> -</ul> +<p>Thanks,</p> -<p>I'm busy with IRL shit (school semester is wrapping up for instance, I have a lot of studying to do and projects to wrap up), so anything that's broken will stay broken until I get around to it or until someone is able to help me with it. be reminded that since this is a hidden service website, I have trust issues and if you contact me anonymously, asking to help, I'll probably assume you're a malicious entity. so <em>please</em> tell me anything that can help me establish who you are. I'm not all that anonymous so I don't think I'm being hypocritical for asking you for some additional information about yourself. if you disagree with my approach, don't contact me.</p> +<p>wowaname &lt;<a href="https://wowana.me/pgp.xht">https://wowana.me/pgp.xht</a>></p> +</blockquote> -<p>any issues or questions or whatever you have about any of this, please <a href="/contact.xht">contact me directly</a> so I can respond to you sooner. I check E-mail and XMPP more often than I check Hidden Answers, and I prefer those methods of contact because they are much easier for me to keep track of shit. pinochet/oqypa are out of the picture; don't use those E-mail addresses because you won't get a response.</p> +<p>reply:</p> + +<blockquote> + <p>Hi opal,</p> + +<p>Thanks for reaching out!</p> + +<p>Sorry to hear that you're walled out of your account. I just checked with my team, and upon review of your account, it appears that our system's detection system has triggered successfully and we will not be removing the phone verification requirement on your account, and you'll be required to register a phone number to your Discord account in order to continue the use of it.</p> + +<p>It's possible that our system detected that you were using a VPN or proxy that was shared with other bad actors, which is why our system flagged your account. However, for privacy reasons, we're not able to share the specifics of the inner workings of our system.</p> + +<p>I understand that you put privacy above all else, however, we won't be able to remove the phone verification prompt and you really need to use a phone number to get back into the account. Just a heads up, if you're currently using a VOIP or landline number, unfortunately, VOIP and landlines are not compatible with our verification system.</p> + +<p>Otherwise, if you have recently attempted to verify this number already, our system will put a timeout on a number from being used again for anti-abuse purposes, and unfortunately, you will need to wait for the end of the timeout to use the number once more or use a different number to verify the account. Sadly, because the system automatically detects and generates a timeout period when a phone number has been used multiple times to verify an account, there is no exact ETA for when the number will be able to used to verify another account.</p> + +<p>If that's not the case, let me know what number you're trying to register and I'll be more than happy to double check in our system.</p> + +<p>Best, +Devemer</p> +</blockquote> + +<p>my reply:</p> + +<blockquote> + <blockquote> + <p>upon review of your account, it appears that our system's detection +system has triggered successfully and we will not be removing the +phone verification requirement on your account, and you'll be required +to register a phone number to your Discord account in order to +continue the use of it.</p> + +<p>It's possible that our system detected that you were using a VPN or +proxy that was shared with other bad actors, which is why our system +flagged your account. However, for privacy reasons, we're not able to +share the specifics of the inner workings of our system. </p> +</blockquote> + +<p>I've been accessing Discord with Tor just fine for several months now. +How in the hell is my account suddenly a threat to Discord?</p> + +<blockquote> + <p>I understand that you put privacy above all else, however </p> +</blockquote> + +<p>No, you don't understand. I will <em>not</em> give any phone number for +verification. I am treated like an abuser of the Discord service, I am +singled out for my use of Tor. I take this personally. If Discord blocks +Tor, then clearly you do not want to see me as a user. I will do my best +to find an alternate platform with a user interface my friends and other +peers are comfortable with. Discord has never held a monopoly over chat +and voice, and it never will. An alarming amount of your userbase is +vocally unhappy with Discord just as I am, as I have noted from many +conversations across several guilds.</p> + +<p>I've enabled 2FA, I rotate my passwords at least once a year, I do not +engage in password reuse, I choose strong passphrases, I verified my +E-mail. Discord will not bully me into solving reCAPTCHAs as free labour +for Google, nor will it bully me into providing a phone number. If you +or any other representative/specialist will not override this asinine +"detection system" despite this abundant evidence that I am not a bad +actor, then it's simple, I will leave Discord. I've tolerated all of +Discord's other shortcomings without much protest, but I will not stoop +any lower to remain on the platform.</p> + +<p>Unless you can refer me to someone who can look into this given the +<em>context</em> of my account, this will be my last reply. I will be making +this message thread public, in the interest of other current and +potential Discord users.</p> + +</blockquote> + +<hr /> + +<p>in a nutshell, unless Discord has a change of heart and allows me access +to my account, I will cease to use its service. chances seem slim, +though, especially considering they shot down my suggestion to remove +reCAPTCHA puzzles from the login form, even when 2FA is active on the +account in question.</p> + +<p>I will be communicating with a couple communities with which I'm +involved to explain that I am unable to use Discord, and with any luck, +we can explore user-friendly alternatives together.</p> </div> </content> </entry> <entry> - <title>acme-client (letskencrypt) dns-01 how-to</title> - <link href="/blog/acme-client-letskencrypt-dns-01-how-to.xht" rel="alternate" type="application/xhtml+xml" /> - <id>/blog/acme-client-letskencrypt-dns-01-how-to.xht</id> - <published>2018-09-21T16:45:46+0000</published> - <updated>2018-09-21T16:45:46+0000</updated> + <title>wowana.me now on git (and hosted on my laptop)</title> + <link href="/blog/wowaname-now-on-git-and-hosted-on-my-laptop.xht" rel="alternate" type="application/xhtml+xml" /> + <id>/blog/wowaname-now-on-git-and-hosted-on-my-laptop.xht</id> + <published>2019-06-05T02:53:09+0000</published> + <updated>2019-06-05T03:15:47+0000</updated> <author><name>opal hart</name></author> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> -<p>I just spent half my day literally yelling at the screen trying to figure out how to use <a href="https://kristaps.bsd.lv/acme-client">acme-client</a> (formally known as letskencrypt) for dns-01 challenges. there's no examples in the man page, none online, and the source code didn't help much.</p> +<p>my blog has long been overdue for a new post, so here goes nothing. I +haven't been writing lately for several reasons: the main one being that +I've had difficulties with bashblog. also, of course, I have been busy +with many things in the past few months, some of which I will cover in +later posts. I have a lot to write about in the coming months; I'll try +to get through it all when I have spare time.</p> <hr /> -<p>why not <a href="https://certbot.eff.org/">certbot</a>? I've tried it, but it insists on making its own crazy filetree structure, and I needed everything contained to a single directory (more specifically, a mountpoint shared between my LXC containers, with appropriate file permissions set). why not <a href="https://github.com/lukas2511/dehydrated">dehydrated</a>? I probably could have used it, but I was attracted to acme-client for its implementation in C, portability, and minimal dependencies. I was pretty much stubborn to make it work. why not just use http-01? I run a dedicated server with containerised services and a bunch of NAT black magic, so DNS challenges allow me to create my certs in one container instead of entrusting all my containers with the task and causing more headache for myself.</p> - -<p>anyway, after digging through an issue on github and dehydrated's source, I finally had enough information in order to implement a working dns-01 script. I hope this saves someone else from spending a day like I did, and wanting to kill themselves at the end of it.</p> - -<p>I use mksh, but with a bit of editing you can translate it to POSIX sh, or just replace the shebang with bash. as you can see, I didn't really place much effort into making this pretty; I just wanted it to work.</p> +<p>so, bashblog. from my <a href="/blog/testing-patches-made-to-bashblog-script.xht" title="“testing patches made to bashblog script”">previous post about it</a>, I described some of +the changes I had to make to it for my own use. with my new patches, I +found that editing old articles is almost impossible without incurring a +headache, so my plan was to rewrite the entire script. and since I'd be +rewriting it, might as well do it in a language I'm more comfortable +with: perl. that wass a big project I kept putting off, until one day I +thought, "shit, why am I not managing it with a makefile?"</p> -<pre><code>#!/bin/mksh +<p>why use <code>make</code>? I first learned proper use of the utility, as well as +how to write a proper makefile, when working on my chat client, +<a href="https://git.volatile.bz/wowaname/achlys" title="wowaname/achlys Git repository">achlys</a>. I wanted to avoid anything such as automake or cmake due +to their complexity, so despite lack of a clear makefile introduction, I +went for it anyway, to my success. in addition to its usefulness for +building C and C++ projects, it's also useful for its core purpose: +smart file-dependency tracking. this is what makes it perfect for a +website; the fact that I can write my entire site's content in markdown +(what I've already been doing with my blog articles), write a few +wrappers to generate the boilerplate HTML, and have it <em>only</em> touch +files that would be updated. if I write an article like I'm doing now, I +just save it, run <code>make</code> (and <code>make check</code> to ensure the output is +conformant XHTML, before I push a broken copy of my website live), and +it'll touch just this page, the blog index, and the atom feed. if I +decide I want to add a link to the site sidebar, I can just modify the +header template and <code>make</code> will generate my entire site. this has the +nice side effect of avoiding server-side includes as well. now I don't +have to worry about a lot of things; I can focus on writing content.</p> -domains=( - 'anime.website anime.website' - 'krustykrab.restaurant bfbb.krustykrab.restaurant' - 'gentoo.today gentoo.today install.gentoo.today' - 'volatile.bz git.volatile.bz' - 'krustykrab.restaurant krustykrab.restaurant' - # ... -) -nsupdate_key=/etc/bind/ddns.key +<p>since it's all backed by git, I have a few benefits from this. I no +longer have to sign blog posts individually; I let git take care of +signed commits for me. this way, you can not only verify the post, but +any edits I make as well. it's all preserved in the commit history for +complete transparency, and for something like a mostly-static, +archive-quality website, I find this invaluable. I also get natural +backups of my site. of course there's the live site copy accessible over +http, but also I get to keep a working copy on my desktop, which allows +me to use the editing tools with which I'm comfortable, instead of being +limited to whatever my server has. I don't like installing too much +cruft on any server; the bulk of my convenience programs (such as vim) +are at home on my desktop.</p> -for line in "${domains[@]}"; do - zone=`cut -f1 &lt;&lt;&lt;"$line"` - domainlist=`cut -f2 &lt;&lt;&lt;"$line"` - echo "Updating '$domainlist' in $zone" - pemdir=/mnt/certs/`cut -d' ' -f1 &lt;&lt;&lt;"$domainlist"` - mkdir -p $pemdir - acme-client -vnNmt dns-01 -c $pemdir -k $pemdir/privkey.pem $domainlist |&amp; - while read -p type domain token; do - keyauth=`printf '%s' "$token" | openssl dgst -sha256 -binary | base64 | tr '+\/' '-_' | tr -d '='` - nsupdate -4l -k $nsupdate_key &lt;&lt;-EOF - zone $zone - update delete _acme-challenge.$domain TXT - update add _acme-challenge.$domain 60 TXT $keyauth - send - EOF - wait 10 - print -p "$type $domain $token" - done - wait - for domain in `echo $domainlist`; do - nsupdate -4l -k $nsupdate_key &lt;&lt;-EOF - zone $zone - update delete _acme-challenge.$domain TXT - send - EOF - done -done &gt; /var/log/acme.log -</code></pre> +<p>you can clone <a href="https://wowana.me/git/wowana.me.git">https://wowana.me/git/wowana.me.git</a> if you're interested +in how I generate my site, if you want an archived copy (of the public +portions) of my website, or if you want to mirror the site elsewhere +(just be kind and link back to <a href="https://wowana.me/">https://wowana.me/</a>, please). I will +soon provide access to my other projects on wowana.me as well as a +mirror on git.volatile.bz, and I will provide cloning instructions on +wowana.me for repositories, since I will not expose these repositories +using an interface such as cgit or stagit. I am not really a fan of +allowing code to be indexed over HTTP; anyone who is truly interested in +my code can clone the repository directly. I will also provide release +tarballs for certain projects (such as achlys) for those who do not have +ready access to git on their system.</p> -<p>this script is under the same licence as the rest of my site (Creative Commons Zero) and is free to redistribute and modify. let me know if this has been of any use to you.</p> +<hr /> + +<p>while you may have noticed I have been making changes to my website (the +<a href="/blog/">blog index</a> received a makeover, for example, and web pages now +have file extensions exposed), I have also made less-visible changes. +one thing of note is that I am now hosting wowana.me on my laptop. I am +using <a href="https://git.volatile.bz/wowaname/quark" title="wowaname/quark Git repository">quark</a> HTTP server written by some of the people over at +<a href="https://suckless.org/" title="suckless.org">suckless</a>, complete with a few bug fixes and modifications for my +personal use (potentially more fixes as time goes on). quark is <em>very</em> +lightweight, clocking in at just under 3mb memory usage at the time of +writing this article. this setup is still served behind nginx, both to +proxy my home IP since I still do not have an ISP suitable for hosting +directly from home, and to cache requests in order to reduce load on my +laptop. also, there are a few nginx-specific rewrites I have for my +site, and I cannot yet find a good way to replace these. so for now, +nginx still plays a role in my website, and that's fine since I use it +for other sites anyway.</p> + +<p>I am looking forward to fully self-hosting wowana.me and all services +located on my domain, to reduce my dependency on third-party hosting. +it's my definitive home on the internet, so I may as well make it +completely mine.</p> + +<p>I also hope that others see the simplicity in what I'm doing here, and +consider moving away from complex website frameworks, opting to roll +their own in a similar fashion to what I am doing. I understand that not +everyone may be a programmer or a web developer, but I believe that +there are certain tools all of us need to know about, so that we can +make the most out of our computers and our time. I can finally manage my +site in a sane manner, visualise all its components, know exactly what +will show up on the live site, because I am in control of every aspect +of its generation. it certainly beats writing all that HTML manually.</p> </div> </content> </entry> <entry> - <title>are passwords the right solution?</title> - <link href="/blog/are-passwords-the-right-solution.xht" rel="alternate" type="application/xhtml+xml" /> - <id>/blog/are-passwords-the-right-solution.xht</id> - <published>2018-01-09T10:51:38+0000</published> - <updated>2018-01-09T10:51:38+0000</updated> + <title>a musing on sharing and receiving opinions</title> + <link href="/blog/a-musing-on-sharing-and-receiving-opinions.xht" rel="alternate" type="application/xhtml+xml" /> + <id>/blog/a-musing-on-sharing-and-receiving-opinions.xht</id> + <published>2018-09-24T11:40:36+0000</published> + <updated>2018-09-24T11:40:36+0000</updated> <author><name>opal hart</name></author> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> -<p>[I have lacked motivation to write anything lately, but this week marks the beginning of my spring college semester, so I figured I'd force myself back into a schedule.]</p> - -<p>a month or two ago I read <a href="https://dropsafe.crypticide.com/article/9481">an article by Alec Muffett</a>, where he attempted to defend password authentication as possibly the only viable online security solution. I even sent him an E-mail asking him to reconsider some of his thoughts toward passwords:</p> +<p>from <a href="https://anime.website/notice/1098692">my fediverse post</a>:</p> <blockquote> - <p>[...] I came across your opinion -on password use [4] and I have to disagree with you. My issue with -passwords (as they are currently widely implemented) is that the -password has to be sent to the server verbatim, and it is up to the -server to safely handle this password (hashing it and making sure memory -where passwords are handled is promptly cleared, in case of -vulnerabilities in the server that allow reading memory), and it is up -to both the user and the server to initiate a secure connection so that -password eavesdropping is infeasible. I favour PKI, challenge -authentication, and other mechanisms which do not require any -transmission of a private key or passphrase over plaintext to the -server. This places the burden of security on the user and on the -PKI/challenge protocol itself, which I believe to be much safer than -having to place the burden on all of the user, server, and transmission -medium. Please consider these points and perhaps revise your decision on -claiming that passwords as they are used today are a sound security -mechanism.</p> -</blockquote> - -<p>so already, that explains half my stance on passwords off the bat. I do favour PKI -- I use elliptic curve keys for all SSH connections and disable password authentication, and I would use similar authentication for websites if it was an option. to me, it makes more sense to have a file or files tied to each device I own, and should that device be compromised, I can simply log in from another device and revoke the now-insecure key. this allows for finer-grained access control than I would have with passwords: for example, right now I would have to reset my password if I logged in even once on an untrusted public computer. granted, I would have to use a temporary key for a public computer, stored on something such as a USB drive, but at least I wouldn't have to change the key on each device I own. it's a different story if you have a remarkable memory and can memorise random passwords with ease, but a lot of people including myself cannot or will not trust our memory to this task.</p> - -<p>I have more faith in <abbr title="two-factor authentication">TFA</abbr> than I do in plain passwords. to save myself from reiterating ideas I have already typed (again) I will cite my response to the <a href="http://answerstedhctbek.onion/227514">Hidden Answers question <q>What and how much credentials do you save in KeePassX?</q></a> (please note this link is only accessible over Tor or this <a href="http://hiddenanswers.i2p/227514">I2P link</a>):</p> + <p>am i perfect? no, far from it. i go out of my way to be an edgy fuck more than enough, i am quick to resort to namecalling, but overall i feel like i'm a reasonable person if you can look past that. while some people use edginess/insults to carry out their "race war now" politics, i simply use it because i'm used to it, i don't take offence to it when it's used against me, and i believe (to a fault) in "treat others how you want to be treated."</p> -<blockquote> - <p>[W]e should look more into TFA. KeePass supports it to some extent (it combines a password, something you know - with a keyfile, something you have like a USB drive). It allows you a little more time to react to breached security because even if the attacker has one piece of the TFA, it will take him some time to get the other piece and actually be able to utilise that information.</p> +<p>except sometimes i put my edginess aside for a brief bit, and i try to discuss something maturely, without the intent to provoke. and that isn't even well-received as much as it should be, for whatever reason. people choose to be ignorant to differing opinions rather than to be openly sceptical, rather than to judge whether a new idea is acceptable, needs additional review/argument, or can be discarded safely (and ideally in an adultlike manner that doesn't end up accusing people of stuff simply because they believe in something).</p> -<p>Weigh the differences:</p> +<p>psychologists have a term for silencing opposition: it's a maladaptive coping response to stressors, meaning it is unhealthy in the long run and only causes more problems. the adage "you can run but you can't hide" is suitable here; you can temporarily silence dissenting opinions (or ruin your life trying to permanently silence all sources of it) instead of just taking those opinions as they are: opinions. nobody's forcing you to believe anything, and the people who do use force to spread their opinions are to be looked down upon. most of us are simply exposing others to new ideas based off our own experiences and knowledge; we're doing it in an attempt to help out but we don't always show our intent straight up, because we're naïve and believe that everyone is as open as us to new ideas and opinions.</p> -<ul> -<li>Store the passwords in your head. <strong>Pros:</strong> you can't hack a brain (as far as I know). <strong>Cons:</strong> unless you have impeccable memory, you will likely formulate smaller, weaker passwords because that's all you can remember. Also, you may choose to reuse passwords more often, which is also unsafe.</li> -<li>Store the passwords on paper. <strong>Pros:</strong> you can't hack a piece of paper. Also, if you don't label the passwords (you use something like PasswordCard.org) you can be a little safer in case you lose it / someone sees it. <strong>Cons:</strong> someone can easily steal that piece of paper, and even if you use the PasswordCard, you have significantly narrowed the possible passwords for the attacker. So, if you lose that card, you're going to want to rush to change all your passwords.</li> -<li>Store the passwords in a password manager. <strong>Pros:</strong> Password managers organise your passwords and they require you to only know the master password, leaving you with less to remember. Good managers can also generate strong random passwords for you. <strong>Cons:</strong> once someone gets the master password, your passwords are all in the open and you're in big trouble unless you set up TFA for all your accounts.</li> -</ul> +<p>like i said, i'm flawed as fuck, but i don't believe my flaws and edginess has a profound impact on my ability to diffuse my opinions and knowledge to others out there</p> </blockquote> - -<p>TFA/multi-factor authentication is a definite improvement over single-factor authentication, and only recently have I decided to add TFA to any account I could find an option to do so. I also use a combination of storing frequently-used passwords in my head and storing the rest in a password manager, which are encrypted and synchronised to Google Drive and, in effect, to my phone. that way, I have a copy wherever I go and I am as secure as possible within the confines of password management.</p> - -<p>I still believe authentication should be given more thought; there are still <em>plenty</em> of organisations that have very poor regard for security and impose artificial limits on passwords out of cost/laziness:</p> - -<ul> -<li>limits on password length or character composition,</li> -<li>storing passwords in the remote database as plaintext,</li> -<li>sending back a password over an insecure channel as <q>confirmation</q> of a password reset, and</li> -<li>requiring a user to add <q>security questions</q> to one's account (which is a huge fucking oxymoron; there's nothing secure about security questions).</li> -</ul> - -<p>if all websites agreed that these are poor practices, that would eliminate many of the issues with passwords right away. combine that with mandatory use of a secure channel such as TLS (which many sites thankfully do now), use of server-side password hashing such as bcrypt or Argon2, and user education on proper password formulation (no password reuse, no dictionary words, et cetera) and sites would be sitting pretty while not compromising compatibility with the current security ecosystem. users should know that password managers are as necessary as an Internet browser at this point, and that there are many user-friendly solutions to this already: many Web browsers even have built-in password saving and synchronisation across devices, but of course there are also solutions such as KeePass and LastPass. in fact, these points I just made are in line with Alec's article I linked at the beginning, so we're in agreement there.</p> - -<p>but what if we want to take a step further and opt for a more secure (but less orthodox) solution? let's look at the list of advantages Alec gave favouring passwords, and compare this to something like PKI:</p> - -<ol> -<li>passwords are easy to deploy <em>[and so is a PKI solution, at the cost of a temporary stage of switching from passwords to PKI. if done correctly, PKI can be abstracted to the end-user so that it is actually easier to use than passwords, and users can just click <q>generate login</q> to create a random file and save it to an internal (optionally synched) database on-the-fly.]</em></li> -<li>passwords are easy to manage <em>[... see above for why PKI would be easy to manage without the user being concerned with implementation.]</em></li> -<li>passwords don’t require identity linkage between silos – so your Google username can be different from your Skype username, can be different from your SecretFetishPornSite.com username <em>[... PKI doesn't require this either; simply generate new keys for each site you use.]</em></li> -<li>passwords are scalable – you can use as many different ones as you like <em>[... same for PKI.]</em></li> -<li>passwords can be varied between silos so that loss of one does not impact the others <em>[... see above.]</em></li> -<li>passwords don’t (necessarily) expire <em>[... still same for PKI. advanced users could optionally be allowed to set expiries for keys (just like X.509 allows), and users could at any time revoke a key from a website if it's compromised.]</em></li> -<li>passwords are the purest form of authentication via ‘something you know’, and thus ideal for the network or “cyber” environment. <em>[now, this <strong>is</strong> an actual argument for passwords. PKI is along the lines of <q>something you have</q>, but for the majority of security-conscious users, so are passwords. passwords are stored in a database or on a piece of paper (something we have) unless we have remarkable memory (more power to you) or we reuse passwords (which is wrong).]</em></li> -<li>you don’t need to pay an intermediary or third-party a surcharge just to get a new password, nor to maintain an old one <em>[... same for PKI.]</em></li> -</ol> - -<p>aside from the fact that PKI is <q>something you have</q> rather than <q>something you know</q>, it maintains many of the properties of passwords and has the added benefit of being secure by default: secret keys are not transmitted over the wire, and server database compromises would be fruitless since all keys stored are already public. end result, both users and server administrators have less to think about and worry about. there are still perfectly valid uses for passwords, but I would like for people not to fool themselves into thinking passwords are the universal solution. passwords should <em>strictly</em> be something you know rather than something you stick in a database, and you should only have to memorise a handful of passwords, instead of having to remember one password per mail account, social network account, bank account, forum account, game account, and whatever other accounts you have. passwords should be used in a local context: useful to decrypt your PKI database locally or to unlock your computer/phone quickly.</p> </div> </content> </entry> @@ -426,190 +497,289 @@ policing.</p> </content> </entry> <entry> - <title>guess I&#39;m done with Discord</title> - <link href="/blog/guess-im-done-with-discord.xht" rel="alternate" type="application/xhtml+xml" /> - <id>/blog/guess-im-done-with-discord.xht</id> - <published>2019-08-15T23:57:49+0000</published> - <updated>2019-08-29T09:57:38+0000</updated> + <title>&#34;Learning how to learn&#34;</title> + <link href="/blog/learning-how-to-learn.xht" rel="alternate" type="application/xhtml+xml" /> + <id>/blog/learning-how-to-learn.xht</id> + <published>2018-01-23T18:42:19+0000</published> + <updated>2018-01-23T18:42:19+0000</updated> <author><name>opal hart</name></author> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> -<p>I'll let the E-mail ticket do most of the talking:</p> +<p>here's a verbatim essay I wrote in response to the common misconceptions held by many Tor users and <q>privacy freaks</q>:</p> <blockquote> - <p>Hi,</p> + <p>You probably see advice published everywhere – guides and tutorials and lessons. People who claim to have your best interests at heart. Many people do, but at the same time many people don't. And even the people who do can make mistakes. If you don't do so already, you need to learn how to think like a scientist: always sceptical, but never driven by fear. Being able to think for yourself, weighing all information you come across for validity, is a necessary asset that people seem to overlook in their quest toward activism.</p> -<p>Today I received a prompt to verify my account with a phone number [1], -which is the first time I have ever encountered this message in the -entire time I've had my account (created 2017 Jan 09 according to my -password manager). My account opal#6614 has a verified E-mail address -(the one I'm sending this message from) and two-factor authentication. -As I have mentioned in a prior support request, I use Tor to access -Discord, both on my desktop and my phone.</p> +<h2 id="Know-what-you%27re-using">Know what you're using</h2> -<p>I refuse to provide phone verification as I believe it is Discord's -fault for flagging my account even though I've never had an issue -following terms of service. I do not spam, I do not upload content -against terms of service (even though I disagree with the list of -banned content), and I have never used this or other accounts to evade -bans or other limitations. The reCAPTCHA upon login was insulting -enough, and now being asked for a phone number is an even bigger spit -in my face. The only thing I can think of that may have triggered -Discord's crappy anti-spam detection, is the invite I sent to a user -for my newly-created guild. That, and the fact I just so happen to be -using Tor when sending the invite. Because, everything else about the -invite was fine: I have been friends with the user I invited, and I did -not spam the user (or any other users for that matter) whatsoever.</p> +<p>You installed Tor because it's nice and secure. Do you know exactly how it works though? Do you know what happens if you use it wrong?</p> -<p>Please make it so: -1. Discord's anti-spam isn't so anal, -2. my account (and other accounts in good standing and with proper 2FA) -is exempt from such checks, and -3. I don't have to solve a Google reCAPTCHA for an account I have taken -every step to protect against bruteforcing. Using Tor is not a crime; -don't treat it as such.</p> +<p>I see these technologies get thrown around all the time in privacy-related conversation: Tor, VPN, PGP, Tails. And for the aspiring hackers, Kali comes up quite often. All these things are fine, but people discover them more out of haphazard curiosity than anything. They know what these things are, they know that others tell them to use these things, but they don't often know why people talk about them so much.</p> -<p>I'm tired of Discord's attitude toward things like this and I'll sooner -abandon my account and uninstall the app if I am unable to access my -account. I will recommend all my friends to migrate to a more suitable -platform if this continues, too. I am not part of Discord Hype Squad -for very good reason; Discord has shown to be hostile toward FOSS and -privacy for a while now.</p> +<p>Read up about these subjects. You don't have to do an entire research debacle on them, but you should be able to summarise to yourself what everything does and why it works. Wikipedia is a great resource; it's concise and you can always branch out to learn more if you're interested. Once you know exactly what these technologies were made for, you will be able to utilise them intelligently.</p> -<p>[1]&lt;<a href="https://pl.wowana.me/media/0bf9e6e5cb428f89596e9d217f281d4f054895c85a3450a5b7fb2d876e8f6bc1.png">https://pl.wowana.me/media/0bf9e6e5cb428f89596e9d217f281d4f054895c85a3450a5b7fb2d876e8f6bc1.png</a>></p> +<p>I can summarise up a few common misconceptions: Tor's primary purpose is to provide a secure proxy to the Web, while I2P's is to provide an anonymous network that replaces the Web. A commercial VPN is for privacy, while Tor is for anonymity (this article explains their differences nicely).</p> -<p>Thanks,</p> +<p>Tails and Kali are simply customised Linux distributions (these two happen to be Debian-based), meaning that I could take Arch Linux (or your favourite distro) and replicate the functionality of either, after I take the time to configure it to my liking. The reason people use Tails, Whonix, or Kali is because they trust the developers to make a system that meets their needs, and they are incapable or unwilling to configure their own system. Ultimately, the choice of operating system is up to you; there is no "best" operating system, so try various systems out until you find your match.</p> -<p>wowaname &lt;<a href="https://wowana.me/pgp.xht">https://wowana.me/pgp.xht</a>></p> +<h2 id="Be-sceptical">Be sceptical</h2> + +<p>Don't believe everything you see. Professionals make mistakes, amateurs make mistakes, you and I make mistakes. Even with these guides, you should use your own judgment and filter out what seems logical. I wrote this in hopes that I was making sense, in hopes that my logic was sound and worth reading. But, I can always miss important things, and I'm here to learn just as everyone else is. After reading anything, you should cross-reference with other information if you're unsure about certain points, and ultimately you should test the information against your own knowledge to see if it fits in with what you believe.</p> + +<p>Knowledge evolves; people go to sleep believing in one cause, only to wake up believing in something else. The best any of us can do is follow what our heart says, keep our wits about us, and hope that our current beliefs will lead us on a better path.</p> + +<h2 id="Lead-effectively">Lead effectively</h2> + +<p>A good leader shows power by being motivated and experienced, not by being deceptive and forceful. You gain followers by relating with them, by sharing common core values, and by educating them. People should follow you because it is their decision to do so, because they actually wish to listen to you. If someone leaves you, do not try to pull them back; it only means that they felt your group was not the best fit in terms of ideals, goals, or methods. If everyone leaves you, you may want to ask why and adjust your actions based on the response. Leaders are people too, and they're bound to make mistakes, but a good leader (and a well-formed group) can recover from these mistakes quickly and easily.</p> + +<p>With that said, leadership is bound to change. It's natural, it's seamless (in a mature group, people just know who's "in charge" simply by the way they present themselves in the group), and it fosters new ideas and a different way of approaching issues. When starting a group, don't worry about who's head; that will come naturally and by consensus. Just focus on what you, as a group, need to do, and take everyone's opinions and suggestions into account. There should be an equal level of trust placed on all group members, and if the group simply cannot trust someone then it should make a decision on whether removing the person from the group is the best move. Feelings may be hurt, but a good group is resilient to this sort of friction. The group will carry on its business and wait for the conflict to pass.</p> + +<p>Most importantly, never trust someone solely because they are a figurehead. There is a strong difference between a figurehead and a true leader, and more often than not, people will grow to oppose a figurehead once they begin learning the truth about him. A figurehead is usually defaulted into power – either by status or by money or heritage. In contrast, a leader starts out as an equal and is brought into high esteem by his peers. Both leaders and figureheads are influential, but figureheads will hardly have your best interests at heart. Figureheads will do what they need to retain power, and they will trick others into believing whatever they have to say. They rely on the power of emotion in order to convince others that certain views are correct. And once they have a following, they can dispatch whatever lies they wish, knowing that their followers will eagerly eat it up.</p> + +<p>If you think this part sounds a bit overreactionary, I apologise, but I have seen this cult-like pattern in quite a few groups, namely the social justice movement. Everyone in the movement is bound together by a common emotional appeal: they are all minorities (real or imagined) and they seek safety in their circle by rejecting outsiders and playing the role of a victim. This is a toxic, spiraling attitude that only strengthens the power of the group, and the worst part is, people who seek acceptance see this movement and think they are doing the "right thing" by promoting minorities. So, they join in, finally feeling a sense of acceptance, and they learn from others in the movement that the patriarchy is the cause of all suffering in the world. A logical person would dismiss this claim and assign the blame to real issues (sexism and racism are issues, but not in the ways that the social justice movement claims), but once you have given someone hope and reassurance, you can make them believe whatever you wish.</p> +</blockquote> + </div> + </content> + </entry> + <entry> + <title>why program efficiency [and usability] matters</title> + <link href="/blog/why-program-efficiency-and-usability-matters.xht" rel="alternate" type="application/xhtml+xml" /> + <id>/blog/why-program-efficiency-and-usability-matters.xht</id> + <published>2017-11-24T14:26:09+0000</published> + <updated>2019-06-05T03:41:13+0000</updated> + <author><name>opal hart</name></author> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> +<p>in 2016 I wrote a small rant about the current downward trend of software and web development, entitled <q>Why program efficiency matters</q>:</p> + +<blockquote> +<p>Computer hardware has become faster, more efficient, and more powerful in recent years, which means programmers are not constrained as much by memory and CPU cycles. But does that mean programmers should just give up trying to make their code more efficient?</p> + +<dl> +<dt>It doesn't matter if our programs are bigger!</dt> +<dd>I don't know about you, but I enjoy extra disk space for movies and music. Just because disk space is affordable doesn't mean programmers can excuse themselves for adding unnecessary fluff to their projects.</dd> + +<dt>It doesn't matter if our code takes up more memory!</dt> +<dd>Multitasking computers have been a thing for a while now. With that said, I would like my computer to actually multitask. I shouldn't have to constantly worry about how many programs I have running in the background and how much memory they consume. Also, there are plenty of older systems running in corporate and educational environments that simply cannot handle modern (and memory-hungry) software without constantly locking up.</dd> + +<dt>It doesn't matter if our code is slower!</dt> +<dd>Speed is always a value to strive for. Any sensible person would choose "faster" if presented with two programs that perform the exact same tasks but at different speeds. +</dd> +</dl> + +<p>That said, if you have to sacrifice any of the above for security, please do so. Otherwise, if there is any way to make a program smaller or faster or more efficient, without changing the core functionality of the program, then take the time to improve in those aspects. Laziness is no excuse for a slow, fat program. At the same time, don't let yourself be consumed by trying to make your code perform better before you have even finished writing the program.</p> </blockquote> -<p>reply:</p> +<p>this applies to desktop, server, mobile, and Web software all alike:</p> + +<ul> +<li>desktop operating systems are gradually becoming more bloated and new features are half-baked (such as later versions of Windows), people using Electron to develop fucking everything now (and I'll talk about Electron on its own in a bit).</li> +<li>server software dependent on weightier languages such as node and python (<a href="https://matrix.org/">matrix.org</a> for instance). this is very problematic because servers have much more stressful demands and none of us wish to spend resources we can better use to serve end-users. every bit of RAM and every CPU cycle counts under high load.</li> +<li>mobile phones are mad useful for on-the-go matters (I'll have a blog post later, describing a smartphone's exact use compared to laptops and desktops) but they're becoming more powerful than most laptops now. many apps are Web-centric and it's quite possible that a lot of the mobile ecosystem is unoptimised: not just the apps but also the operating system and the virtual environments under which apps are designed to run.</li> +<li>the Web used to have one thing: static content. then forms were introduced, allowing for greater user interaction and ease of use. after that, javascript, and now we have full-blown HTML5+javascript applications that run in your browser. and believe me, I understand the desire to have this capability: it's cross-platform and any device with a modern browser can use your app. however, there are a few things wrong with this: HTML was not really designed to represent full-blown applications, and web developers don't pay a thought to efficiency/accessibility and they will normally take the path of least resistance to deploy their applications. I'll talk more about what I believe the Web should be used for in a later post.</li> +</ul> + +<p>I'm making this post today because someone sent me a link to a post Casper Beyer made regarding Electron, entitled <q><a href="https://medium.com/@caspervonb/electron-is-cancer-b066108e6c32">Electron is Cancer</a></q>. I'll quote some notable passages from the post:</p> <blockquote> - <p>Hi opal,</p> + <p><q>Well, it works fine on my machine, and I only have 32 gigabytes of ram.</q> - Silicon Valley Developer, 2017</p> -<p>Thanks for reaching out!</p> +<p>If that’s you, well then that’s good for you, but just because something performs <q>well enough</q> on your machine doesn’t mean there are not any performance problems. You are not your end-users, and you if you are a developer most likely do not run average hardware.</p> +</blockquote> -<p>Sorry to hear that you're walled out of your account. I just checked with my team, and upon review of your account, it appears that our system's detection system has triggered successfully and we will not be removing the phone verification requirement on your account, and you'll be required to register a phone number to your Discord account in order to continue the use of it.</p> +<p>^ I made this point in my 2016 rant -- people have different hardware and developers need to keep this in mind, lest they want their programs only to run on a small set of machines in the world.</p> -<p>It's possible that our system detected that you were using a VPN or proxy that was shared with other bad actors, which is why our system flagged your account. However, for privacy reasons, we're not able to share the specifics of the inner workings of our system.</p> +<blockquote> + <p><q>Electron is so great, we did not have to hire new people we can just use your web designers that we already have in-house and it is so easy!</q> - Someone Actually Said That</p> + +<p>Okay, sure having a plumber cut out a square wheel from a plank is also a lot easier to do than having a woodworker carve a perfectly round wooden wheel, but it is gonna be one hell of a bumpy ride, and square wheels are actually fine, right?</p> +</blockquote> + +<p>^ I've seen this a lot too; people have derived from <q>do one thing and do it right</q> philosophy, both in software and in expertise (although on the expertise side of things, it helps to be well-versed in several areas so you're more valuable in a job, but usually those areas are close enough together that they complement each other. you wouldn't want that plumber performing heart surgery on you, would you?)</p> + +<p>if you have time, read Beyer's full post because it covers a lot of good points about Electron and about modern software developers as a whole. it's a rarity to find a decent dev nowadays who cares about efficiency, usability, and accessibility; and that certainly affects where technology is going as a whole. as we depend more on technology in our everyday lives (mobile, IoT, business) there is really no room for sloppy code to run in banks, hospitals, vehicles, and other mission-critical devices.</p> + </div> + </content> + </entry> + <entry> + <title>a new era for Hidden Answers</title> + <link href="/blog/a-new-era-for-hidden-answers.xht" rel="alternate" type="application/xhtml+xml" /> + <id>/blog/a-new-era-for-hidden-answers.xht</id> + <published>2018-04-13T00:55:08+0000</published> + <updated>2019-05-11T03:38:03+0000</updated> + <author><name>opal hart</name></author> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> +<p>this post is specifically for users of the Hidden Answers website. if you don't know what it is, this probably isn't worth reading. still, curious people who want to help out with the website are welcome to <a href="/contact.xht">contact me</a>; any help is appreciated.</p> + +<p>for those who aren't on Hidden Answers: it's a hidden service question-answer website using the <a href="http://question2answer.org/">Question2Answer</a> software, and in similar format to Stack Exchange. it's available <a href="http://answerstedhctbek.onion/">on tor</a> and <a href="http://hiddenanswers.i2p/">on i2p</a> and currently is multilingual for English, Spanish, Portuguese, and Russian speakers.</p> -<p>I understand that you put privacy above all else, however, we won't be able to remove the phone verification prompt and you really need to use a phone number to get back into the account. Just a heads up, if you're currently using a VOIP or landline number, unfortunately, VOIP and landlines are not compatible with our verification system.</p> +<p>at the time of writing, new user registration is closed for a multitude of reasons. I have hopes of re-enabling registration soon, after we have fixed some long-lasting issues with the site.</p> -<p>Otherwise, if you have recently attempted to verify this number already, our system will put a timeout on a number from being used again for anti-abuse purposes, and unfortunately, you will need to wait for the end of the timeout to use the number once more or use a different number to verify the account. Sadly, because the system automatically detects and generates a timeout period when a phone number has been used multiple times to verify an account, there is no exact ETA for when the number will be able to used to verify another account.</p> +<p>as users have inevitably noticed by now, there are a few issues with the site, ranging from the community to the software. the past month, the MySQL database for Hidden Answers has experienced unexplained corruption, and last week the server's disk space was completely consumed by MySQL binary logs, causing the site to be totally inaccessible. (seriously MySQL/MariaDB, why keep all logs infinitely by default? and why did nobody tell me about this before I went into web hosting?)</p> -<p>If that's not the case, let me know what number you're trying to register and I'll be more than happy to double check in our system.</p> +<p>over the past year pinochet, the website founder, has come in and out of the scene for being responsible for the site. the grunt of the website's work has been handled by both me and the dedicated moderation team. but even we aren't enough to keep the website running optimally. not only that, but mods come and go, and some of them understandably become tired of dealing with the site. and we have no idea what's going on with the multilingual sites (Portuguese HA was overrun by scammers at some point, for example). communication between all the moderators is barely established, and this causes additional strain on relationships and on the state of the website.</p> -<p>Best, -Devemer</p> -</blockquote> +<p>pinochet is now long gone and only the mods and I are left to run the site. I am officially taking over the site; this is effective at the time of writing this post. that means you should write down my PGP key and you should write down my contact information (it's best to contact me over E-mail and XMPP, and <em>please</em> tell me who you are and why you wish to contact me, or I'll likely ignore you. saying <q>hi</q> isn't enough to get my attention because I deal with a lot of people and things daily).</p> -<p>my reply:</p> +<p>I am going to make a few assertions. before, I have made these as suggestions, but they have clearly not been enough to cause any notable change in the site. from this point on:</p> -<blockquote> - <blockquote> - <p>upon review of your account, it appears that our system's detection -system has triggered successfully and we will not be removing the -phone verification requirement on your account, and you'll be required -to register a phone number to your Discord account in order to -continue the use of it.</p> +<ul> +<li>I <em>need</em> moderators, editors, and anyone else with an official Hidden Answers role to post their E-mail and/or XMPP address on their profile, and I <em>need</em> them to have a copy-pastable PGP key or fingerprint. no exceptions. we need to improve communication, especially since the PM system has been disabled (and more on that in the next point).</li> +<li>PMs are <em>indefinitely</em> disabled. they're a venue of abuse. they're unencrypted. I have had to look into suspicious accounts per moderator request, and each suspicious account I looked into, I found shitloads of messages breaking the website's rules. if you need to contact someone, do it off-site. do it on their public wall. PMs are useless for a question-answer site such as ours.</li> +<li>I will make my source code changes to Question2Answer available on my git. I am aware this will make the website easier to clone, but I believe this isn't an issue, since people already try to set up scam sites targeting HA users anyway. the benefit of open software development outweighs the risks, in my view.</li> +<li>we <em>need</em> a defined process to choose official roles. we need more concise roles too: +<ul> +<li>super administrator: the website owner (me, now). I can add new admins and mods, change site settings, and be the <q>last say</q> of what goes on.</li> +<li>administrator: trusted people who represent Hidden Answers probably more than I do, lift a lot of the site's weight, and can maintain relations with mods and users. I'm appointing v0h20 and Fox to this role because they have done a shitload for this site and I trust their judgment for adding new mods.</li> +<li>global moderator. their main roles will be to oversee editors and to block rulebreaking users.</li> +<li>global editor. responsible for backtracking through the older questions (at least until they're all cleaned up eventually) and recategorising, editing, closing, and selecting answers as necessary. does this for new questions and answers as well.</li> +<li>category editors. responsible for cleaning up posts under their own category and can be seen as a category expert as well.</li> +<li>emeritus. just a status for ex-mods and -admins that have stepped down from their roles voluntarily (or were inactive).</li> +<li>technical contributor. I promised a role for anyone willing to help with the code. these people contribute to Q2A updates, debugging, and security penetration testing.</li> +</ul></li> +<li>we <em>need</em> administration transparecy. moderation decisions need to be made public so we're all on the same page, and so users can criticise us if we do something wrong.</li> +<li>we <em>need</em> concrete rules and ways to deal with offences. so far, it's just been play-by-ear.</li> +<li>additional focus needs to be placed on the other HA languages.</li> +<li>additional focus also needs to be placed on supplementary shit like a showcase of frequently-asked questions, to make it easier for newbies to search.</li> +<li>anything else needs to be discussed on HA, in front of everyone, making use of the poll system I installed recently. that way, we have a more democratic approach to the site.</li> +</ul> -<p>It's possible that our system detected that you were using a VPN or -proxy that was shared with other bad actors, which is why our system -flagged your account. However, for privacy reasons, we're not able to -share the specifics of the inner workings of our system. </p> -</blockquote> +<p>I'm busy with IRL shit (school semester is wrapping up for instance, I have a lot of studying to do and projects to wrap up), so anything that's broken will stay broken until I get around to it or until someone is able to help me with it. be reminded that since this is a hidden service website, I have trust issues and if you contact me anonymously, asking to help, I'll probably assume you're a malicious entity. so <em>please</em> tell me anything that can help me establish who you are. I'm not all that anonymous so I don't think I'm being hypocritical for asking you for some additional information about yourself. if you disagree with my approach, don't contact me.</p> -<p>I've been accessing Discord with Tor just fine for several months now. -How in the hell is my account suddenly a threat to Discord?</p> +<p>any issues or questions or whatever you have about any of this, please <a href="/contact.xht">contact me directly</a> so I can respond to you sooner. I check E-mail and XMPP more often than I check Hidden Answers, and I prefer those methods of contact because they are much easier for me to keep track of shit. pinochet/oqypa are out of the picture; don't use those E-mail addresses because you won't get a response.</p> + </div> + </content> + </entry> + <entry> + <title>acme-client (letskencrypt) dns-01 how-to</title> + <link href="/blog/acme-client-letskencrypt-dns-01-how-to.xht" rel="alternate" type="application/xhtml+xml" /> + <id>/blog/acme-client-letskencrypt-dns-01-how-to.xht</id> + <published>2018-09-21T16:45:46+0000</published> + <updated>2018-09-21T16:45:46+0000</updated> + <author><name>opal hart</name></author> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> +<p>I just spent half my day literally yelling at the screen trying to figure out how to use <a href="https://kristaps.bsd.lv/acme-client">acme-client</a> (formally known as letskencrypt) for dns-01 challenges. there's no examples in the man page, none online, and the source code didn't help much.</p> -<blockquote> - <p>I understand that you put privacy above all else, however </p> -</blockquote> +<hr /> -<p>No, you don't understand. I will <em>not</em> give any phone number for -verification. I am treated like an abuser of the Discord service, I am -singled out for my use of Tor. I take this personally. If Discord blocks -Tor, then clearly you do not want to see me as a user. I will do my best -to find an alternate platform with a user interface my friends and other -peers are comfortable with. Discord has never held a monopoly over chat -and voice, and it never will. An alarming amount of your userbase is -vocally unhappy with Discord just as I am, as I have noted from many -conversations across several guilds.</p> +<p>why not <a href="https://certbot.eff.org/">certbot</a>? I've tried it, but it insists on making its own crazy filetree structure, and I needed everything contained to a single directory (more specifically, a mountpoint shared between my LXC containers, with appropriate file permissions set). why not <a href="https://github.com/lukas2511/dehydrated">dehydrated</a>? I probably could have used it, but I was attracted to acme-client for its implementation in C, portability, and minimal dependencies. I was pretty much stubborn to make it work. why not just use http-01? I run a dedicated server with containerised services and a bunch of NAT black magic, so DNS challenges allow me to create my certs in one container instead of entrusting all my containers with the task and causing more headache for myself.</p> -<p>I've enabled 2FA, I rotate my passwords at least once a year, I do not -engage in password reuse, I choose strong passphrases, I verified my -E-mail. Discord will not bully me into solving reCAPTCHAs as free labour -for Google, nor will it bully me into providing a phone number. If you -or any other representative/specialist will not override this asinine -"detection system" despite this abundant evidence that I am not a bad -actor, then it's simple, I will leave Discord. I've tolerated all of -Discord's other shortcomings without much protest, but I will not stoop -any lower to remain on the platform.</p> +<p>anyway, after digging through an issue on github and dehydrated's source, I finally had enough information in order to implement a working dns-01 script. I hope this saves someone else from spending a day like I did, and wanting to kill themselves at the end of it.</p> -<p>Unless you can refer me to someone who can look into this given the -<em>context</em> of my account, this will be my last reply. I will be making -this message thread public, in the interest of other current and -potential Discord users.</p> +<p>I use mksh, but with a bit of editing you can translate it to POSIX sh, or just replace the shebang with bash. as you can see, I didn't really place much effort into making this pretty; I just wanted it to work.</p> -</blockquote> +<pre><code>#!/bin/mksh -<hr /> +domains=( + 'anime.website anime.website' + 'krustykrab.restaurant bfbb.krustykrab.restaurant' + 'gentoo.today gentoo.today install.gentoo.today' + 'volatile.bz git.volatile.bz' + 'krustykrab.restaurant krustykrab.restaurant' + # ... +) +nsupdate_key=/etc/bind/ddns.key -<p>in a nutshell, unless Discord has a change of heart and allows me access -to my account, I will cease to use its service. chances seem slim, -though, especially considering they shot down my suggestion to remove -reCAPTCHA puzzles from the login form, even when 2FA is active on the -account in question.</p> +for line in "${domains[@]}"; do + zone=`cut -f1 &lt;&lt;&lt;"$line"` + domainlist=`cut -f2 &lt;&lt;&lt;"$line"` + echo "Updating '$domainlist' in $zone" + pemdir=/mnt/certs/`cut -d' ' -f1 &lt;&lt;&lt;"$domainlist"` + mkdir -p $pemdir + acme-client -vnNmt dns-01 -c $pemdir -k $pemdir/privkey.pem $domainlist |&amp; + while read -p type domain token; do + keyauth=`printf '%s' "$token" | openssl dgst -sha256 -binary | base64 | tr '+\/' '-_' | tr -d '='` + nsupdate -4l -k $nsupdate_key &lt;&lt;-EOF + zone $zone + update delete _acme-challenge.$domain TXT + update add _acme-challenge.$domain 60 TXT $keyauth + send + EOF + wait 10 + print -p "$type $domain $token" + done + wait + for domain in `echo $domainlist`; do + nsupdate -4l -k $nsupdate_key &lt;&lt;-EOF + zone $zone + update delete _acme-challenge.$domain TXT + send + EOF + done +done &gt; /var/log/acme.log +</code></pre> -<p>I will be communicating with a couple communities with which I'm -involved to explain that I am unable to use Discord, and with any luck, -we can explore user-friendly alternatives together.</p> +<p>this script is under the same licence as the rest of my site (Creative Commons Zero) and is free to redistribute and modify. let me know if this has been of any use to you.</p> </div> </content> </entry> <entry> - <title>&#34;Learning how to learn&#34;</title> - <link href="/blog/learning-how-to-learn.xht" rel="alternate" type="application/xhtml+xml" /> - <id>/blog/learning-how-to-learn.xht</id> - <published>2018-01-23T18:42:19+0000</published> - <updated>2018-01-23T18:42:19+0000</updated> + <title>site update</title> + <link href="/blog/site-update.xht" rel="alternate" type="application/xhtml+xml" /> + <id>/blog/site-update.xht</id> + <published>2018-03-27T01:30:09+0000</published> + <updated>2018-03-27T01:30:09+0000</updated> <author><name>opal hart</name></author> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> -<p>here's a verbatim essay I wrote in response to the common misconceptions held by many Tor users and <q>privacy freaks</q>:</p> +<p>by the way, you may be curious as to why some of my websites were down this week. something happened to one of my VPSes so I had to reinstall the operating system and set everything back up. the new install is now enjoying Alpine Linux just like all my other boxes.</p> + </div> + </content> + </entry> + <entry> + <title>why I no longer use GitHub</title> + <link href="/blog/why-i-no-longer-use-github.xht" rel="alternate" type="application/xhtml+xml" /> + <id>/blog/why-i-no-longer-use-github.xht</id> + <published>2018-06-21T13:32:04+0000</published> + <updated>2018-06-21T13:32:04+0000</updated> + <author><name>opal hart</name></author> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> +<p>I have had issues with GitHub long before the Microsoft acquisition this year. in fact, Microsoft is the best thing that could have happened to it because it's an excuse for people to leave GitHub. but for everyone who continues to use it, who has built their FOSS projects on top of its infrastructure, they need a little more motivation to move than just an acquisition scare. and the fact that these projects stay behind inconveniences me, as a FOSS contributor, especially if they outright <em>refuse</em> to collaborate outside of GitHub and they <em>insist</em> on you making an account, opening pull requests and new issues through the web interface.</p> -<blockquote> - <p>You probably see advice published everywhere – guides and tutorials and lessons. People who claim to have your best interests at heart. Many people do, but at the same time many people don't. And even the people who do can make mistakes. If you don't do so already, you need to learn how to think like a scientist: always sceptical, but never driven by fear. Being able to think for yourself, weighing all information you come across for validity, is a necessary asset that people seem to overlook in their quest toward activism.</p> +<p>since I am tired of reiterating to every project the reasons I refuse to sign up to and contribute via GitHub, I feel like the best course of action is to write it all out, once, and give this article to anyone who asks. plus, maybe all my readers may find this an interesting read to perhaps rethink their decision to use GitHub for their projects.</p> -<h2>Know what you're using</h2> +<h2 id="GitHub-is-not-FOSS">GitHub is not FOSS</h2> -<p>You installed Tor because it's nice and secure. Do you know exactly how it works though? Do you know what happens if you use it wrong?</p> +<p>GitHub boasts its love for the FOSS community, but the site itself runs on proprietary software. if you hate double standards as I do, you may stop reading as you should be content with the answer I gave you.</p> -<p>I see these technologies get thrown around all the time in privacy-related conversation: Tor, VPN, PGP, Tails. And for the aspiring hackers, Kali comes up quite often. All these things are fine, but people discover them more out of haphazard curiosity than anything. They know what these things are, they know that others tell them to use these things, but they don't often know why people talk about them so much.</p> +<p>but really, look at GitLab in comparison. GitLab is the leading competitor and the current go-to for most people fleeing GitHub because of its similar <q>social coding</q> interface. guess what? it's FOSS, so you can take GitLab's software and run it on your own server. and from what I understand, GitLab manages to be a for-profit company despite the fact it gives away its software to the community, so why doesn't the <q>FOSS-loving</q> GitHub do it as well? it just doesn't fly with me.</p> -<p>Read up about these subjects. You don't have to do an entire research debacle on them, but you should be able to summarise to yourself what everything does and why it works. Wikipedia is a great resource; it's concise and you can always branch out to learn more if you're interested. Once you know exactly what these technologies were made for, you will be able to utilise them intelligently.</p> +<h2 id="GitHub-is-%28poorly%29-reinventing-git">GitHub is (poorly) reinventing git</h2> -<p>I can summarise up a few common misconceptions: Tor's primary purpose is to provide a secure proxy to the Web, while I2P's is to provide an anonymous network that replaces the Web. A commercial VPN is for privacy, while Tor is for anonymity (this article explains their differences nicely).</p> +<p>git is a distributed version control system. it says that right on the tin. and it does a damn good job at being one. so why turn it into something that it isn't? I don't know, but GitHub seems happy doing away with many of the benefits of this. with plain git, I can stick my repository anywhere, give people the link to clone it, and take pull requests through mail. everyone on the Internet has an E-mail address (which is also a federated communication technology, so it's easy to see how it can be best friends with git) and E-mail doesn't lock you into a single terms-of-service agreement (I'll go in depth on that in a bit). this makes it easier for the passerby to contribute to a project, regardless where the project is hosted. no new user accounts necessary.</p> -<p>Tails and Kali are simply customised Linux distributions (these two happen to be Debian-based), meaning that I could take Arch Linux (or your favourite distro) and replicate the functionality of either, after I take the time to configure it to my liking. The reason people use Tails, Whonix, or Kali is because they trust the developers to make a system that meets their needs, and they are incapable or unwilling to configure their own system. Ultimately, the choice of operating system is up to you; there is no "best" operating system, so try various systems out until you find your match.</p> +<p>with GitHub, E-mail is second-class and people become spoiled by the wrong way of doing things, so they insist that you do things the wrong way as well. this is called <em>vendor lock-in</em> and it's very bad especially for FOSS projects. you can witness a similar effect between <a href="https://www.blender.org/media-exposure/youtube-blocks-blender-videos-worldwide/">Blender and YouTube</a> that surfaced recently. GitHub knows it has you by the nape and can shut you down whenever they want, and it can use that to manipulate you into making decisions for your project that you otherwise wouldn't take. and GitHub knows that your project's success is imperative to its own success, since it means more people signing up to contribute, more people being exposed to its nice, incorrect, not-git interface, and thus more people becoming locked in to GitHub as well.</p> -<h2>Be sceptical</h2> +<h2 id="there-are-some-AUP%2FToS-loopholes%2C-and-they-%2Awill%2A-shut-you-down">there are some AUP/ToS loopholes, and they <em>will</em> shut you down</h2> -<p>Don't believe everything you see. Professionals make mistakes, amateurs make mistakes, you and I make mistakes. Even with these guides, you should use your own judgment and filter out what seems logical. I wrote this in hopes that I was making sense, in hopes that my logic was sound and worth reading. But, I can always miss important things, and I'm here to learn just as everyone else is. After reading anything, you should cross-reference with other information if you're unsure about certain points, and ultimately you should test the information against your own knowledge to see if it fits in with what you believe.</p> +<p>I promised I would go into detail about the terms of service. there are two clauses that are poorly worded, subjective, and ... well, loopholish in nature.</p> -<p>Knowledge evolves; people go to sleep believing in one cause, only to wake up believing in something else. The best any of us can do is follow what our heart says, keep our wits about us, and hope that our current beliefs will lead us on a better path.</p> +<blockquote> + <p>You agree that you will not under any circumstances upload, post, host, or transmit any content that[...] contains or installs any active malware or exploits, or uses our platform for exploit delivery (such as part of a command and control system)</p> +</blockquote> -<h2>Lead effectively</h2> +<p>this means that you can develop an innocuous research tool, note in your README that it must not be used maliciously and that you are not responsible for skids using your software, and still get punished. all it takes is a skid cloning your repo, pissing off the wrong people with it, and those people reporting you to GitHub. and yes, I am not making this up. I know of people who have been affected by this and I am sure you can find your own examples if you search for a bit.</p> -<p>A good leader shows power by being motivated and experienced, not by being deceptive and forceful. You gain followers by relating with them, by sharing common core values, and by educating them. People should follow you because it is their decision to do so, because they actually wish to listen to you. If someone leaves you, do not try to pull them back; it only means that they felt your group was not the best fit in terms of ideals, goals, or methods. If everyone leaves you, you may want to ask why and adjust your actions based on the response. Leaders are people too, and they're bound to make mistakes, but a good leader (and a well-formed group) can recover from these mistakes quickly and easily.</p> +<blockquote> + <p>[...]transmit any content that[...] is discriminatory or abusive toward any individual or group</p> +</blockquote> -<p>With that said, leadership is bound to change. It's natural, it's seamless (in a mature group, people just know who's "in charge" simply by the way they present themselves in the group), and it fosters new ideas and a different way of approaching issues. When starting a group, don't worry about who's head; that will come naturally and by consensus. Just focus on what you, as a group, need to do, and take everyone's opinions and suggestions into account. There should be an equal level of trust placed on all group members, and if the group simply cannot trust someone then it should make a decision on whether removing the person from the group is the best move. Feelings may be hurt, but a good group is resilient to this sort of friction. The group will carry on its business and wait for the conflict to pass.</p> +<p>oh, this is a fun one. this basically means that anyone can report you as long as they feel offended. I'm sure you have heard enough about this so I won't go into excruciating detail, but I will tell you that it is a <em>huge</em> loophole allowing anyone to abuse the report function to knock you off GitHub.</p> -<p>Most importantly, never trust someone solely because they are a figurehead. There is a strong difference between a figurehead and a true leader, and more often than not, people will grow to oppose a figurehead once they begin learning the truth about him. A figurehead is usually defaulted into power – either by status or by money or heritage. In contrast, a leader starts out as an equal and is brought into high esteem by his peers. Both leaders and figureheads are influential, but figureheads will hardly have your best interests at heart. Figureheads will do what they need to retain power, and they will trick others into believing whatever they have to say. They rely on the power of emotion in order to convince others that certain views are correct. And once they have a following, they can dispatch whatever lies they wish, knowing that their followers will eagerly eat it up.</p> +<hr /> -<p>If you think this part sounds a bit overreactionary, I apologise, but I have seen this cult-like pattern in quite a few groups, namely the social justice movement. Everyone in the movement is bound together by a common emotional appeal: they are all minorities (real or imagined) and they seek safety in their circle by rejecting outsiders and playing the role of a victim. This is a toxic, spiraling attitude that only strengthens the power of the group, and the worst part is, people who seek acceptance see this movement and think they are doing the "right thing" by promoting minorities. So, they join in, finally feeling a sense of acceptance, and they learn from others in the movement that the patriarchy is the cause of all suffering in the world. A logical person would dismiss this claim and assign the blame to real issues (sexism and racism are issues, but not in the ways that the social justice movement claims), but once you have given someone hope and reassurance, you can make them believe whatever you wish.</p> -</blockquote> +<p>so, you may be wondering what I <em>do</em> prefer in stead of GitHub. of course you could use GitLab or software such as Gogs or Gitea, but that still has the issue of revolving around <q>social coding</q> and locking users in to specific software.</p> + +<p>thankfully, the components of GitHub, GitLab, et cetera -- they are all available standalone. personally I set up <a href="http://gitolite.com/">gitolite</a> for repository access control, <a href="https://git.zx2c4.com/cgit/">cgit</a> for a simple Web frontend, and I plan to include an issue tracker that treats E-mail as first-class rather than forcing users to create accounts (possibly <a href="https://www.bugzilla.org/">Bugzilla</a> but I'm open to suggestions). and if you are attached to your <abbr title="continuous integration">CI</abbr>s then there are probably decent FOSS solutions for that; personally I don't see myself using them that much so I don't know much about them.</p> + +<p>or, you could take advantage of the fact that there are people interested in abandoning the GitHub and social-coding ecosystems just like I am: <a href="https://drewdevault.com/2018/06/05/Should-you-move-to-sr.ht.html">sr.ht</a> is both a service that you can sign up for as well as <a href="https://git.sr.ht/~sircmpwn/legacy.sr.ht/tree/README.md">a suite of programs</a> you can set up on your own server to provide something similar to what I have described above.</p> + +<p>in the end, GitHub isn't the only thing out there for FOSS projects. nor is it the best thing. plenty of projects already spun out their own solutions, and the only presence they may have on GitHub (if any) is a simple backup mirror to their repository.</p> + +<p>I hope that my reasoning has maybe encouraged you to try to use something else for your own projects, but if not, I hope you at least understand why I no longer wish to use GitHub.</p> </div> </content> </entry> @@ -903,19 +1073,6 @@ free, open chat.</p> </content> </entry> <entry> - <title>site update</title> - <link href="/blog/site-update.xht" rel="alternate" type="application/xhtml+xml" /> - <id>/blog/site-update.xht</id> - <published>2018-03-27T01:30:09+0000</published> - <updated>2018-03-27T01:30:09+0000</updated> - <author><name>opal hart</name></author> - <content type="xhtml"> - <div xmlns="http://www.w3.org/1999/xhtml"> -<p>by the way, you may be curious as to why some of my websites were down this week. something happened to one of my VPSes so I had to reinstall the operating system and set everything back up. the new install is now enjoying Alpine Linux just like all my other boxes.</p> - </div> - </content> - </entry> - <entry> <title>staying safe online</title> <link href="/blog/staying-safe-online.xht" rel="alternate" type="application/xhtml+xml" /> <id>/blog/staying-safe-online.xht</id> @@ -1030,17 +1187,81 @@ with other sources.</p> </content> </entry> <entry> - <title>testing patches made to bashblog script</title> - <link href="/blog/testing-patches-made-to-bashblog-script.xht" rel="alternate" type="application/xhtml+xml" /> - <id>/blog/testing-patches-made-to-bashblog-script.xht</id> - <published>2017-12-21T21:08:11+0000</published> - <updated>2017-12-21T21:08:11+0000</updated> + <title>are passwords the right solution?</title> + <link href="/blog/are-passwords-the-right-solution.xht" rel="alternate" type="application/xhtml+xml" /> + <id>/blog/are-passwords-the-right-solution.xht</id> + <published>2018-01-09T10:51:38+0000</published> + <updated>2018-01-09T10:51:38+0000</updated> <author><name>opal hart</name></author> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> -<p>since I'm using a linux desktop now in place of my windows 8.1 laptop, I can now sanely use linux commands such as gpg and rsync (and the bashblog script itself) to locally sign my posts and transmit them to my server with minimum effort. the <a href="https://github.com/cfenollosa/bashblog">original bashblog script</a> relies heavily on GNUisms especially in the <code>date</code> command, therefore requiring a little effort to adapt to alpine linux (which uses busybox and not coreutils) and the inability to use some of these odd GNU requirements. I wish people would pay attention to compatibility; everyone seems to focus only on GNU and BSD and completely forgets about POSIX standards and requirements.</p> +<p>[I have lacked motivation to write anything lately, but this week marks the beginning of my spring college semester, so I figured I'd force myself back into a schedule.]</p> + +<p>a month or two ago I read <a href="https://dropsafe.crypticide.com/article/9481">an article by Alec Muffett</a>, where he attempted to defend password authentication as possibly the only viable online security solution. I even sent him an E-mail asking him to reconsider some of his thoughts toward passwords:</p> + +<blockquote> + <p>[...] I came across your opinion +on password use [4] and I have to disagree with you. My issue with +passwords (as they are currently widely implemented) is that the +password has to be sent to the server verbatim, and it is up to the +server to safely handle this password (hashing it and making sure memory +where passwords are handled is promptly cleared, in case of +vulnerabilities in the server that allow reading memory), and it is up +to both the user and the server to initiate a secure connection so that +password eavesdropping is infeasible. I favour PKI, challenge +authentication, and other mechanisms which do not require any +transmission of a private key or passphrase over plaintext to the +server. This places the burden of security on the user and on the +PKI/challenge protocol itself, which I believe to be much safer than +having to place the burden on all of the user, server, and transmission +medium. Please consider these points and perhaps revise your decision on +claiming that passwords as they are used today are a sound security +mechanism.</p> +</blockquote> + +<p>so already, that explains half my stance on passwords off the bat. I do favour PKI -- I use elliptic curve keys for all SSH connections and disable password authentication, and I would use similar authentication for websites if it was an option. to me, it makes more sense to have a file or files tied to each device I own, and should that device be compromised, I can simply log in from another device and revoke the now-insecure key. this allows for finer-grained access control than I would have with passwords: for example, right now I would have to reset my password if I logged in even once on an untrusted public computer. granted, I would have to use a temporary key for a public computer, stored on something such as a USB drive, but at least I wouldn't have to change the key on each device I own. it's a different story if you have a remarkable memory and can memorise random passwords with ease, but a lot of people including myself cannot or will not trust our memory to this task.</p> + +<p>I have more faith in <abbr title="two-factor authentication">TFA</abbr> than I do in plain passwords. to save myself from reiterating ideas I have already typed (again) I will cite my response to the <a href="http://answerstedhctbek.onion/227514">Hidden Answers question <q>What and how much credentials do you save in KeePassX?</q></a> (please note this link is only accessible over Tor or this <a href="http://hiddenanswers.i2p/227514">I2P link</a>):</p> + +<blockquote> + <p>[W]e should look more into TFA. KeePass supports it to some extent (it combines a password, something you know - with a keyfile, something you have like a USB drive). It allows you a little more time to react to breached security because even if the attacker has one piece of the TFA, it will take him some time to get the other piece and actually be able to utilise that information.</p> -<p>anyway, this post should be signed (click <q>PGP signature</q> near the top of this post to get a markdown version of the article along with the appended PGP signature). I will manually sign previous blog posts as well, for completeness.</p> +<p>Weigh the differences:</p> + +<ul> +<li>Store the passwords in your head. <strong>Pros:</strong> you can't hack a brain (as far as I know). <strong>Cons:</strong> unless you have impeccable memory, you will likely formulate smaller, weaker passwords because that's all you can remember. Also, you may choose to reuse passwords more often, which is also unsafe.</li> +<li>Store the passwords on paper. <strong>Pros:</strong> you can't hack a piece of paper. Also, if you don't label the passwords (you use something like PasswordCard.org) you can be a little safer in case you lose it / someone sees it. <strong>Cons:</strong> someone can easily steal that piece of paper, and even if you use the PasswordCard, you have significantly narrowed the possible passwords for the attacker. So, if you lose that card, you're going to want to rush to change all your passwords.</li> +<li>Store the passwords in a password manager. <strong>Pros:</strong> Password managers organise your passwords and they require you to only know the master password, leaving you with less to remember. Good managers can also generate strong random passwords for you. <strong>Cons:</strong> once someone gets the master password, your passwords are all in the open and you're in big trouble unless you set up TFA for all your accounts.</li> +</ul> +</blockquote> + +<p>TFA/multi-factor authentication is a definite improvement over single-factor authentication, and only recently have I decided to add TFA to any account I could find an option to do so. I also use a combination of storing frequently-used passwords in my head and storing the rest in a password manager, which are encrypted and synchronised to Google Drive and, in effect, to my phone. that way, I have a copy wherever I go and I am as secure as possible within the confines of password management.</p> + +<p>I still believe authentication should be given more thought; there are still <em>plenty</em> of organisations that have very poor regard for security and impose artificial limits on passwords out of cost/laziness:</p> + +<ul> +<li>limits on password length or character composition,</li> +<li>storing passwords in the remote database as plaintext,</li> +<li>sending back a password over an insecure channel as <q>confirmation</q> of a password reset, and</li> +<li>requiring a user to add <q>security questions</q> to one's account (which is a huge fucking oxymoron; there's nothing secure about security questions).</li> +</ul> + +<p>if all websites agreed that these are poor practices, that would eliminate many of the issues with passwords right away. combine that with mandatory use of a secure channel such as TLS (which many sites thankfully do now), use of server-side password hashing such as bcrypt or Argon2, and user education on proper password formulation (no password reuse, no dictionary words, et cetera) and sites would be sitting pretty while not compromising compatibility with the current security ecosystem. users should know that password managers are as necessary as an Internet browser at this point, and that there are many user-friendly solutions to this already: many Web browsers even have built-in password saving and synchronisation across devices, but of course there are also solutions such as KeePass and LastPass. in fact, these points I just made are in line with Alec's article I linked at the beginning, so we're in agreement there.</p> + +<p>but what if we want to take a step further and opt for a more secure (but less orthodox) solution? let's look at the list of advantages Alec gave favouring passwords, and compare this to something like PKI:</p> + +<ol> +<li>passwords are easy to deploy <em>[and so is a PKI solution, at the cost of a temporary stage of switching from passwords to PKI. if done correctly, PKI can be abstracted to the end-user so that it is actually easier to use than passwords, and users can just click <q>generate login</q> to create a random file and save it to an internal (optionally synched) database on-the-fly.]</em></li> +<li>passwords are easy to manage <em>[... see above for why PKI would be easy to manage without the user being concerned with implementation.]</em></li> +<li>passwords don’t require identity linkage between silos – so your Google username can be different from your Skype username, can be different from your SecretFetishPornSite.com username <em>[... PKI doesn't require this either; simply generate new keys for each site you use.]</em></li> +<li>passwords are scalable – you can use as many different ones as you like <em>[... same for PKI.]</em></li> +<li>passwords can be varied between silos so that loss of one does not impact the others <em>[... see above.]</em></li> +<li>passwords don’t (necessarily) expire <em>[... still same for PKI. advanced users could optionally be allowed to set expiries for keys (just like X.509 allows), and users could at any time revoke a key from a website if it's compromised.]</em></li> +<li>passwords are the purest form of authentication via ‘something you know’, and thus ideal for the network or “cyber” environment. <em>[now, this <strong>is</strong> an actual argument for passwords. PKI is along the lines of <q>something you have</q>, but for the majority of security-conscious users, so are passwords. passwords are stored in a database or on a piece of paper (something we have) unless we have remarkable memory (more power to you) or we reuse passwords (which is wrong).]</em></li> +<li>you don’t need to pay an intermediary or third-party a surcharge just to get a new password, nor to maintain an old one <em>[... same for PKI.]</em></li> +</ol> + +<p>aside from the fact that PKI is <q>something you have</q> rather than <q>something you know</q>, it maintains many of the properties of passwords and has the added benefit of being secure by default: secret keys are not transmitted over the wire, and server database compromises would be fruitless since all keys stored are already public. end result, both users and server administrators have less to think about and worry about. there are still perfectly valid uses for passwords, but I would like for people not to fool themselves into thinking passwords are the universal solution. passwords should <em>strictly</em> be something you know rather than something you stick in a database, and you should only have to memorise a handful of passwords, instead of having to remember one password per mail account, social network account, bank account, forum account, game account, and whatever other accounts you have. passwords should be used in a local context: useful to decrypt your PKI database locally or to unlock your computer/phone quickly.</p> </div> </content> </entry> @@ -1105,225 +1326,4 @@ with other sources.</p> </div> </content> </entry> - <entry> - <title>why I no longer use GitHub</title> - <link href="/blog/why-i-no-longer-use-github.xht" rel="alternate" type="application/xhtml+xml" /> - <id>/blog/why-i-no-longer-use-github.xht</id> - <published>2018-06-21T13:32:04+0000</published> - <updated>2018-06-21T13:32:04+0000</updated> - <author><name>opal hart</name></author> - <content type="xhtml"> - <div xmlns="http://www.w3.org/1999/xhtml"> -<p>I have had issues with GitHub long before the Microsoft acquisition this year. in fact, Microsoft is the best thing that could have happened to it because it's an excuse for people to leave GitHub. but for everyone who continues to use it, who has built their FOSS projects on top of its infrastructure, they need a little more motivation to move than just an acquisition scare. and the fact that these projects stay behind inconveniences me, as a FOSS contributor, especially if they outright <em>refuse</em> to collaborate outside of GitHub and they <em>insist</em> on you making an account, opening pull requests and new issues through the web interface.</p> - -<p>since I am tired of reiterating to every project the reasons I refuse to sign up to and contribute via GitHub, I feel like the best course of action is to write it all out, once, and give this article to anyone who asks. plus, maybe all my readers may find this an interesting read to perhaps rethink their decision to use GitHub for their projects.</p> - -<h2>GitHub is not FOSS</h2> - -<p>GitHub boasts its love for the FOSS community, but the site itself runs on proprietary software. if you hate double standards as I do, you may stop reading as you should be content with the answer I gave you.</p> - -<p>but really, look at GitLab in comparison. GitLab is the leading competitor and the current go-to for most people fleeing GitHub because of its similar <q>social coding</q> interface. guess what? it's FOSS, so you can take GitLab's software and run it on your own server. and from what I understand, GitLab manages to be a for-profit company despite the fact it gives away its software to the community, so why doesn't the <q>FOSS-loving</q> GitHub do it as well? it just doesn't fly with me.</p> - -<h2>GitHub is (poorly) reinventing git</h2> - -<p>git is a distributed version control system. it says that right on the tin. and it does a damn good job at being one. so why turn it into something that it isn't? I don't know, but GitHub seems happy doing away with many of the benefits of this. with plain git, I can stick my repository anywhere, give people the link to clone it, and take pull requests through mail. everyone on the Internet has an E-mail address (which is also a federated communication technology, so it's easy to see how it can be best friends with git) and E-mail doesn't lock you into a single terms-of-service agreement (I'll go in depth on that in a bit). this makes it easier for the passerby to contribute to a project, regardless where the project is hosted. no new user accounts necessary.</p> - -<p>with GitHub, E-mail is second-class and people become spoiled by the wrong way of doing things, so they insist that you do things the wrong way as well. this is called <em>vendor lock-in</em> and it's very bad especially for FOSS projects. you can witness a similar effect between <a href="https://www.blender.org/media-exposure/youtube-blocks-blender-videos-worldwide/">Blender and YouTube</a> that surfaced recently. GitHub knows it has you by the nape and can shut you down whenever they want, and it can use that to manipulate you into making decisions for your project that you otherwise wouldn't take. and GitHub knows that your project's success is imperative to its own success, since it means more people signing up to contribute, more people being exposed to its nice, incorrect, not-git interface, and thus more people becoming locked in to GitHub as well.</p> - -<h2>there are some AUP/ToS loopholes, and they <em>will</em> shut you down</h2> - -<p>I promised I would go into detail about the terms of service. there are two clauses that are poorly worded, subjective, and ... well, loopholish in nature.</p> - -<blockquote> - <p>You agree that you will not under any circumstances upload, post, host, or transmit any content that[...] contains or installs any active malware or exploits, or uses our platform for exploit delivery (such as part of a command and control system)</p> -</blockquote> - -<p>this means that you can develop an innocuous research tool, note in your README that it must not be used maliciously and that you are not responsible for skids using your software, and still get punished. all it takes is a skid cloning your repo, pissing off the wrong people with it, and those people reporting you to GitHub. and yes, I am not making this up. I know of people who have been affected by this and I am sure you can find your own examples if you search for a bit.</p> - -<blockquote> - <p>[...]transmit any content that[...] is discriminatory or abusive toward any individual or group</p> -</blockquote> - -<p>oh, this is a fun one. this basically means that anyone can report you as long as they feel offended. I'm sure you have heard enough about this so I won't go into excruciating detail, but I will tell you that it is a <em>huge</em> loophole allowing anyone to abuse the report function to knock you off GitHub.</p> - -<hr /> - -<p>so, you may be wondering what I <em>do</em> prefer in stead of GitHub. of course you could use GitLab or software such as Gogs or Gitea, but that still has the issue of revolving around <q>social coding</q> and locking users in to specific software.</p> - -<p>thankfully, the components of GitHub, GitLab, et cetera -- they are all available standalone. personally I set up <a href="http://gitolite.com/">gitolite</a> for repository access control, <a href="https://git.zx2c4.com/cgit/">cgit</a> for a simple Web frontend, and I plan to include an issue tracker that treats E-mail as first-class rather than forcing users to create accounts (possibly <a href="https://www.bugzilla.org/">Bugzilla</a> but I'm open to suggestions). and if you are attached to your <abbr title="continuous integration">CI</abbr>s then there are probably decent FOSS solutions for that; personally I don't see myself using them that much so I don't know much about them.</p> - -<p>or, you could take advantage of the fact that there are people interested in abandoning the GitHub and social-coding ecosystems just like I am: <a href="https://drewdevault.com/2018/06/05/Should-you-move-to-sr.ht.html">sr.ht</a> is both a service that you can sign up for as well as <a href="https://git.sr.ht/~sircmpwn/legacy.sr.ht/tree/README.md">a suite of programs</a> you can set up on your own server to provide something similar to what I have described above.</p> - -<p>in the end, GitHub isn't the only thing out there for FOSS projects. nor is it the best thing. plenty of projects already spun out their own solutions, and the only presence they may have on GitHub (if any) is a simple backup mirror to their repository.</p> - -<p>I hope that my reasoning has maybe encouraged you to try to use something else for your own projects, but if not, I hope you at least understand why I no longer wish to use GitHub.</p> - </div> - </content> - </entry> - <entry> - <title>why program efficiency [and usability] matters</title> - <link href="/blog/why-program-efficiency-and-usability-matters.xht" rel="alternate" type="application/xhtml+xml" /> - <id>/blog/why-program-efficiency-and-usability-matters.xht</id> - <published>2017-11-24T14:26:09+0000</published> - <updated>2019-06-05T03:41:13+0000</updated> - <author><name>opal hart</name></author> - <content type="xhtml"> - <div xmlns="http://www.w3.org/1999/xhtml"> -<p>in 2016 I wrote a small rant about the current downward trend of software and web development, entitled <q>Why program efficiency matters</q>:</p> - -<blockquote> -<p>Computer hardware has become faster, more efficient, and more powerful in recent years, which means programmers are not constrained as much by memory and CPU cycles. But does that mean programmers should just give up trying to make their code more efficient?</p> - -<dl> -<dt>It doesn't matter if our programs are bigger!</dt> -<dd>I don't know about you, but I enjoy extra disk space for movies and music. Just because disk space is affordable doesn't mean programmers can excuse themselves for adding unnecessary fluff to their projects.</dd> - -<dt>It doesn't matter if our code takes up more memory!</dt> -<dd>Multitasking computers have been a thing for a while now. With that said, I would like my computer to actually multitask. I shouldn't have to constantly worry about how many programs I have running in the background and how much memory they consume. Also, there are plenty of older systems running in corporate and educational environments that simply cannot handle modern (and memory-hungry) software without constantly locking up.</dd> - -<dt>It doesn't matter if our code is slower!</dt> -<dd>Speed is always a value to strive for. Any sensible person would choose "faster" if presented with two programs that perform the exact same tasks but at different speeds. -</dd> -</dl> - -<p>That said, if you have to sacrifice any of the above for security, please do so. Otherwise, if there is any way to make a program smaller or faster or more efficient, without changing the core functionality of the program, then take the time to improve in those aspects. Laziness is no excuse for a slow, fat program. At the same time, don't let yourself be consumed by trying to make your code perform better before you have even finished writing the program.</p> -</blockquote> - -<p>this applies to desktop, server, mobile, and Web software all alike:</p> - -<ul> -<li>desktop operating systems are gradually becoming more bloated and new features are half-baked (such as later versions of Windows), people using Electron to develop fucking everything now (and I'll talk about Electron on its own in a bit).</li> -<li>server software dependent on weightier languages such as node and python (<a href="https://matrix.org/">matrix.org</a> for instance). this is very problematic because servers have much more stressful demands and none of us wish to spend resources we can better use to serve end-users. every bit of RAM and every CPU cycle counts under high load.</li> -<li>mobile phones are mad useful for on-the-go matters (I'll have a blog post later, describing a smartphone's exact use compared to laptops and desktops) but they're becoming more powerful than most laptops now. many apps are Web-centric and it's quite possible that a lot of the mobile ecosystem is unoptimised: not just the apps but also the operating system and the virtual environments under which apps are designed to run.</li> -<li>the Web used to have one thing: static content. then forms were introduced, allowing for greater user interaction and ease of use. after that, javascript, and now we have full-blown HTML5+javascript applications that run in your browser. and believe me, I understand the desire to have this capability: it's cross-platform and any device with a modern browser can use your app. however, there are a few things wrong with this: HTML was not really designed to represent full-blown applications, and web developers don't pay a thought to efficiency/accessibility and they will normally take the path of least resistance to deploy their applications. I'll talk more about what I believe the Web should be used for in a later post.</li> -</ul> - -<p>I'm making this post today because someone sent me a link to a post Casper Beyer made regarding Electron, entitled <q><a href="https://medium.com/@caspervonb/electron-is-cancer-b066108e6c32">Electron is Cancer</a></q>. I'll quote some notable passages from the post:</p> - -<blockquote> - <p><q>Well, it works fine on my machine, and I only have 32 gigabytes of ram.</q> - Silicon Valley Developer, 2017</p> - -<p>If that’s you, well then that’s good for you, but just because something performs <q>well enough</q> on your machine doesn’t mean there are not any performance problems. You are not your end-users, and you if you are a developer most likely do not run average hardware.</p> -</blockquote> - -<p>^ I made this point in my 2016 rant -- people have different hardware and developers need to keep this in mind, lest they want their programs only to run on a small set of machines in the world.</p> - -<blockquote> - <p><q>Electron is so great, we did not have to hire new people we can just use your web designers that we already have in-house and it is so easy!</q> - Someone Actually Said That</p> - -<p>Okay, sure having a plumber cut out a square wheel from a plank is also a lot easier to do than having a woodworker carve a perfectly round wooden wheel, but it is gonna be one hell of a bumpy ride, and square wheels are actually fine, right?</p> -</blockquote> - -<p>^ I've seen this a lot too; people have derived from <q>do one thing and do it right</q> philosophy, both in software and in expertise (although on the expertise side of things, it helps to be well-versed in several areas so you're more valuable in a job, but usually those areas are close enough together that they complement each other. you wouldn't want that plumber performing heart surgery on you, would you?)</p> - -<p>if you have time, read Beyer's full post because it covers a lot of good points about Electron and about modern software developers as a whole. it's a rarity to find a decent dev nowadays who cares about efficiency, usability, and accessibility; and that certainly affects where technology is going as a whole. as we depend more on technology in our everyday lives (mobile, IoT, business) there is really no room for sloppy code to run in banks, hospitals, vehicles, and other mission-critical devices.</p> - </div> - </content> - </entry> - <entry> - <title>wowana.me now on git (and hosted on my laptop)</title> - <link href="/blog/wowaname-now-on-git-and-hosted-on-my-laptop.xht" rel="alternate" type="application/xhtml+xml" /> - <id>/blog/wowaname-now-on-git-and-hosted-on-my-laptop.xht</id> - <published>2019-06-05T02:53:09+0000</published> - <updated>2019-06-05T03:15:47+0000</updated> - <author><name>opal hart</name></author> - <content type="xhtml"> - <div xmlns="http://www.w3.org/1999/xhtml"> -<p>my blog has long been overdue for a new post, so here goes nothing. I -haven't been writing lately for several reasons: the main one being that -I've had difficulties with bashblog. also, of course, I have been busy -with many things in the past few months, some of which I will cover in -later posts. I have a lot to write about in the coming months; I'll try -to get through it all when I have spare time.</p> - -<hr /> - -<p>so, bashblog. from my <a href="/blog/testing-patches-made-to-bashblog-script.xht" title="“testing patches made to bashblog script”">previous post about it</a>, I described some of -the changes I had to make to it for my own use. with my new patches, I -found that editing old articles is almost impossible without incurring a -headache, so my plan was to rewrite the entire script. and since I'd be -rewriting it, might as well do it in a language I'm more comfortable -with: perl. that wass a big project I kept putting off, until one day I -thought, "shit, why am I not managing it with a makefile?"</p> - -<p>why use <code>make</code>? I first learned proper use of the utility, as well as -how to write a proper makefile, when working on my chat client, -<a href="https://git.volatile.bz/wowaname/achlys" title="wowaname/achlys Git repository">achlys</a>. I wanted to avoid anything such as automake or cmake due -to their complexity, so despite lack of a clear makefile introduction, I -went for it anyway, to my success. in addition to its usefulness for -building C and C++ projects, it's also useful for its core purpose: -smart file-dependency tracking. this is what makes it perfect for a -website; the fact that I can write my entire site's content in markdown -(what I've already been doing with my blog articles), write a few -wrappers to generate the boilerplate HTML, and have it <em>only</em> touch -files that would be updated. if I write an article like I'm doing now, I -just save it, run <code>make</code> (and <code>make check</code> to ensure the output is -conformant XHTML, before I push a broken copy of my website live), and -it'll touch just this page, the blog index, and the atom feed. if I -decide I want to add a link to the site sidebar, I can just modify the -header template and <code>make</code> will generate my entire site. this has the -nice side effect of avoiding server-side includes as well. now I don't -have to worry about a lot of things; I can focus on writing content.</p> - -<p>since it's all backed by git, I have a few benefits from this. I no -longer have to sign blog posts individually; I let git take care of -signed commits for me. this way, you can not only verify the post, but -any edits I make as well. it's all preserved in the commit history for -complete transparency, and for something like a mostly-static, -archive-quality website, I find this invaluable. I also get natural -backups of my site. of course there's the live site copy accessible over -http, but also I get to keep a working copy on my desktop, which allows -me to use the editing tools with which I'm comfortable, instead of being -limited to whatever my server has. I don't like installing too much -cruft on any server; the bulk of my convenience programs (such as vim) -are at home on my desktop.</p> - -<p>you can clone <a href="https://wowana.me/git/wowana.me.git">https://wowana.me/git/wowana.me.git</a> if you're interested -in how I generate my site, if you want an archived copy (of the public -portions) of my website, or if you want to mirror the site elsewhere -(just be kind and link back to <a href="https://wowana.me/">https://wowana.me/</a>, please). I will -soon provide access to my other projects on wowana.me as well as a -mirror on git.volatile.bz, and I will provide cloning instructions on -wowana.me for repositories, since I will not expose these repositories -using an interface such as cgit or stagit. I am not really a fan of -allowing code to be indexed over HTTP; anyone who is truly interested in -my code can clone the repository directly. I will also provide release -tarballs for certain projects (such as achlys) for those who do not have -ready access to git on their system.</p> - -<hr /> - -<p>while you may have noticed I have been making changes to my website (the -<a href="/blog/">blog index</a> received a makeover, for example, and web pages now -have file extensions exposed), I have also made less-visible changes. -one thing of note is that I am now hosting wowana.me on my laptop. I am -using <a href="https://git.volatile.bz/wowaname/quark" title="wowaname/quark Git repository">quark</a> HTTP server written by some of the people over at -<a href="https://suckless.org/" title="suckless.org">suckless</a>, complete with a few bug fixes and modifications for my -personal use (potentially more fixes as time goes on). quark is <em>very</em> -lightweight, clocking in at just under 3mb memory usage at the time of -writing this article. this setup is still served behind nginx, both to -proxy my home IP since I still do not have an ISP suitable for hosting -directly from home, and to cache requests in order to reduce load on my -laptop. also, there are a few nginx-specific rewrites I have for my -site, and I cannot yet find a good way to replace these. so for now, -nginx still plays a role in my website, and that's fine since I use it -for other sites anyway.</p> - -<p>I am looking forward to fully self-hosting wowana.me and all services -located on my domain, to reduce my dependency on third-party hosting. -it's my definitive home on the internet, so I may as well make it -completely mine.</p> - -<p>I also hope that others see the simplicity in what I'm doing here, and -consider moving away from complex website frameworks, opting to roll -their own in a similar fashion to what I am doing. I understand that not -everyone may be a programmer or a web developer, but I believe that -there are certain tools all of us need to know about, so that we can -make the most out of our computers and our time. I can finally manage my -site in a sane manner, visualise all its components, know exactly what -will show up on the live site, because I am in control of every aspect -of its generation. it certainly beats writing all that HTML manually.</p> - </div> - </content> - </entry> </feed> diff --git a/out/blog/guess-im-done-with-discord.xht b/out/blog/guess-im-done-with-discord.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='guess-im-done-with-discord'> -<h1>guess I'm done with Discord</h1> +<main> +<h1 id="guess-I%27m-done-with-Discord">guess I'm done with Discord</h1> <time datetime='2019-08-15T23:57:49+0000' title='2019-08-15T23:57:49+0000'>2019 Aug 15</time> diff --git a/out/blog/index.xht b/out/blog/index.xht @@ -29,31 +29,31 @@ </header> </div> -<main id='index'> -<h1>blog</h1> +<main> +<h1 id="blog">blog</h1> <p><a href="/blog/feed.atom">atom feed</a></p> <ul> -<li><a href="living-without-discord.xht">living without Discord</a> <em>last updated <time datetime='2019-09-20T15:16:53+0000' title='2019-09-20T15:16:53+0000'>2019 Sep 20</time></em></li> -<li><a href="guess-im-done-with-discord.xht">guess I'm done with Discord</a> <em>last updated <time datetime='2019-08-29T09:57:38+0000' title='2019-08-29T09:57:38+0000'>2019 Aug 29</time></em></li> -<li><a href="federated-social-networking.xht">federated social networking</a> <em>last updated <time datetime='2019-08-29T09:41:55+0000' title='2019-08-29T09:41:55+0000'>2019 Aug 29</time></em></li> -<li><a href="staying-safe-online.xht">staying safe online</a> <em>last updated <time datetime='2019-08-24T00:15:20+0000' title='2019-08-24T00:15:20+0000'>2019 Aug 24</time></em></li> -<li><a href="why-program-efficiency-and-usability-matters.xht">why program efficiency [and usability] matters</a> <em>last updated <time datetime='2019-06-05T03:41:13+0000' title='2019-06-05T03:41:13+0000'>2019 Jun 05</time></em></li> -<li><a href="wowaname-now-on-git-and-hosted-on-my-laptop.xht">wowana.me now on git (and hosted on my laptop)</a> <em>last updated <time datetime='2019-06-05T03:15:47+0000' title='2019-06-05T03:15:47+0000'>2019 Jun 05</time></em></li> -<li><a href="a-new-era-for-hidden-answers.xht">a new era for Hidden Answers</a> <em>last updated <time datetime='2019-05-11T03:38:03+0000' title='2019-05-11T03:38:03+0000'>2019 May 11</time></em></li> -<li><a href="a-musing-on-sharing-and-receiving-opinions.xht">a musing on sharing and receiving opinions</a> <em>last updated <time datetime='2018-09-24T11:40:36+0000' title='2018-09-24T11:40:36+0000'>2018 Sep 24</time></em></li> -<li><a href="acme-client-letskencrypt-dns-01-how-to.xht">acme-client (letskencrypt) dns-01 how-to</a> <em>last updated <time datetime='2018-09-21T16:45:46+0000' title='2018-09-21T16:45:46+0000'>2018 Sep 21</time></em></li> -<li><a href="my-and-your-pgp-habits-could-be-better.xht">my (and your) PGP habits could be better</a> <em>last updated <time datetime='2018-07-15T02:11:20+0000' title='2018-07-15T02:11:20+0000'>2018 Jul 15</time></em></li> -<li><a href="why-i-no-longer-use-github.xht">why I no longer use GitHub</a> <em>last updated <time datetime='2018-06-21T13:32:04+0000' title='2018-06-21T13:32:04+0000'>2018 Jun 21</time></em></li> -<li><a href="the-grey-area-of-paedophilia.xht">the grey area of paedophilia</a> <em>last updated <time datetime='2018-04-28T20:38:43+0000' title='2018-04-28T20:38:43+0000'>2018 Apr 28</time></em></li> -<li><a href="site-update.xht">site update</a> <em>last updated <time datetime='2018-03-27T01:30:09+0000' title='2018-03-27T01:30:09+0000'>2018 Mar 27</time></em></li> -<li><a href="paving-the-road-for-the-future-of-technology.xht">paving the road for the future of technology</a> <em>last updated <time datetime='2018-03-27T01:23:17+0000' title='2018-03-27T01:23:17+0000'>2018 Mar 27</time></em></li> -<li><a href="chen-hosting-goals-and-difficulties.xht">Chen Hosting goals and difficulties</a> <em>last updated <time datetime='2018-03-05T04:29:31+0000' title='2018-03-05T04:29:31+0000'>2018 Mar 05</time></em></li> -<li><a href="trying-new-software.xht">trying new software</a> <em>last updated <time datetime='2018-02-11T12:01:13+0000' title='2018-02-11T12:01:13+0000'>2018 Feb 11</time></em></li> -<li><a href="learning-how-to-learn.xht">"Learning how to learn"</a> <em>last updated <time datetime='2018-01-23T18:42:19+0000' title='2018-01-23T18:42:19+0000'>2018 Jan 23</time></em></li> -<li><a href="are-passwords-the-right-solution.xht">are passwords the right solution?</a> <em>last updated <time datetime='2018-01-09T10:51:38+0000' title='2018-01-09T10:51:38+0000'>2018 Jan 09</time></em></li> -<li><a href="testing-patches-made-to-bashblog-script.xht">testing patches made to bashblog script</a> <em>last updated <time datetime='2017-12-21T21:08:11+0000' title='2017-12-21T21:08:11+0000'>2017 Dec 21</time></em></li> +<li><a href="living-without-discord.xht">living without Discord</a> <em>last updated <time datetime='2019-09-20T15:16:53-00:00' title='2019-09-20T15:16:53-00:00'>2019 Sep 20</time></em></li> +<li><a href="guess-im-done-with-discord.xht">guess I'm done with Discord</a> <em>last updated <time datetime='2019-08-29T09:57:38-00:00' title='2019-08-29T09:57:38-00:00'>2019 Aug 29</time></em></li> +<li><a href="federated-social-networking.xht">federated social networking</a> <em>last updated <time datetime='2019-08-29T09:41:55-00:00' title='2019-08-29T09:41:55-00:00'>2019 Aug 29</time></em></li> +<li><a href="staying-safe-online.xht">staying safe online</a> <em>last updated <time datetime='2019-08-24T00:15:20-00:00' title='2019-08-24T00:15:20-00:00'>2019 Aug 24</time></em></li> +<li><a href="why-program-efficiency-and-usability-matters.xht">why program efficiency [and usability] matters</a> <em>last updated <time datetime='2019-06-05T03:41:13-00:00' title='2019-06-05T03:41:13-00:00'>2019 Jun 05</time></em></li> +<li><a href="wowaname-now-on-git-and-hosted-on-my-laptop.xht">wowana.me now on git (and hosted on my laptop)</a> <em>last updated <time datetime='2019-06-05T03:15:47-00:00' title='2019-06-05T03:15:47-00:00'>2019 Jun 05</time></em></li> +<li><a href="a-new-era-for-hidden-answers.xht">a new era for Hidden Answers</a> <em>last updated <time datetime='2019-05-11T03:38:03-00:00' title='2019-05-11T03:38:03-00:00'>2019 May 11</time></em></li> +<li><a href="a-musing-on-sharing-and-receiving-opinions.xht">a musing on sharing and receiving opinions</a> <em>last updated <time datetime='2018-09-24T11:40:36-00:00' title='2018-09-24T11:40:36-00:00'>2018 Sep 24</time></em></li> +<li><a href="acme-client-letskencrypt-dns-01-how-to.xht">acme-client (letskencrypt) dns-01 how-to</a> <em>last updated <time datetime='2018-09-21T16:45:46-00:00' title='2018-09-21T16:45:46-00:00'>2018 Sep 21</time></em></li> +<li><a href="my-and-your-pgp-habits-could-be-better.xht">my (and your) PGP habits could be better</a> <em>last updated <time datetime='2018-07-15T02:11:20-00:00' title='2018-07-15T02:11:20-00:00'>2018 Jul 15</time></em></li> +<li><a href="why-i-no-longer-use-github.xht">why I no longer use GitHub</a> <em>last updated <time datetime='2018-06-21T13:32:04-00:00' title='2018-06-21T13:32:04-00:00'>2018 Jun 21</time></em></li> +<li><a href="the-grey-area-of-paedophilia.xht">the grey area of paedophilia</a> <em>last updated <time datetime='2018-04-28T20:38:43-00:00' title='2018-04-28T20:38:43-00:00'>2018 Apr 28</time></em></li> +<li><a href="site-update.xht">site update</a> <em>last updated <time datetime='2018-03-27T01:30:09-00:00' title='2018-03-27T01:30:09-00:00'>2018 Mar 27</time></em></li> +<li><a href="paving-the-road-for-the-future-of-technology.xht">paving the road for the future of technology</a> <em>last updated <time datetime='2018-03-27T01:23:17-00:00' title='2018-03-27T01:23:17-00:00'>2018 Mar 27</time></em></li> +<li><a href="chen-hosting-goals-and-difficulties.xht">Chen Hosting goals and difficulties</a> <em>last updated <time datetime='2018-03-05T04:29:31-00:00' title='2018-03-05T04:29:31-00:00'>2018 Mar 05</time></em></li> +<li><a href="trying-new-software.xht">trying new software</a> <em>last updated <time datetime='2018-02-11T12:01:13-00:00' title='2018-02-11T12:01:13-00:00'>2018 Feb 11</time></em></li> +<li><a href="learning-how-to-learn.xht">"Learning how to learn"</a> <em>last updated <time datetime='2018-01-23T18:42:19-00:00' title='2018-01-23T18:42:19-00:00'>2018 Jan 23</time></em></li> +<li><a href="are-passwords-the-right-solution.xht">are passwords the right solution?</a> <em>last updated <time datetime='2018-01-09T10:51:38-00:00' title='2018-01-09T10:51:38-00:00'>2018 Jan 09</time></em></li> +<li><a href="testing-patches-made-to-bashblog-script.xht">testing patches made to bashblog script</a> <em>last updated <time datetime='2017-12-21T21:08:11-00:00' title='2017-12-21T21:08:11-00:00'>2017 Dec 21</time></em></li> </ul> </main> </body> diff --git a/out/blog/learning-how-to-learn.xht b/out/blog/learning-how-to-learn.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='learning-how-to-learn'> -<h1>"Learning how to learn"</h1> +<main> +<h1 id="%22Learning-how-to-learn%22">"Learning how to learn"</h1> <time datetime='2018-01-23T18:42:19+0000' title='2018-01-23T18:42:19+0000'>2018 Jan 23</time> @@ -39,7 +39,7 @@ <blockquote> <p>You probably see advice published everywhere – guides and tutorials and lessons. People who claim to have your best interests at heart. Many people do, but at the same time many people don't. And even the people who do can make mistakes. If you don't do so already, you need to learn how to think like a scientist: always sceptical, but never driven by fear. Being able to think for yourself, weighing all information you come across for validity, is a necessary asset that people seem to overlook in their quest toward activism.</p> -<h2>Know what you're using</h2> +<h2 id="Know-what-you%27re-using">Know what you're using</h2> <p>You installed Tor because it's nice and secure. Do you know exactly how it works though? Do you know what happens if you use it wrong?</p> @@ -51,13 +51,13 @@ <p>Tails and Kali are simply customised Linux distributions (these two happen to be Debian-based), meaning that I could take Arch Linux (or your favourite distro) and replicate the functionality of either, after I take the time to configure it to my liking. The reason people use Tails, Whonix, or Kali is because they trust the developers to make a system that meets their needs, and they are incapable or unwilling to configure their own system. Ultimately, the choice of operating system is up to you; there is no "best" operating system, so try various systems out until you find your match.</p> -<h2>Be sceptical</h2> +<h2 id="Be-sceptical">Be sceptical</h2> <p>Don't believe everything you see. Professionals make mistakes, amateurs make mistakes, you and I make mistakes. Even with these guides, you should use your own judgment and filter out what seems logical. I wrote this in hopes that I was making sense, in hopes that my logic was sound and worth reading. But, I can always miss important things, and I'm here to learn just as everyone else is. After reading anything, you should cross-reference with other information if you're unsure about certain points, and ultimately you should test the information against your own knowledge to see if it fits in with what you believe.</p> <p>Knowledge evolves; people go to sleep believing in one cause, only to wake up believing in something else. The best any of us can do is follow what our heart says, keep our wits about us, and hope that our current beliefs will lead us on a better path.</p> -<h2>Lead effectively</h2> +<h2 id="Lead-effectively">Lead effectively</h2> <p>A good leader shows power by being motivated and experienced, not by being deceptive and forceful. You gain followers by relating with them, by sharing common core values, and by educating them. People should follow you because it is their decision to do so, because they actually wish to listen to you. If someone leaves you, do not try to pull them back; it only means that they felt your group was not the best fit in terms of ideals, goals, or methods. If everyone leaves you, you may want to ask why and adjust your actions based on the response. Leaders are people too, and they're bound to make mistakes, but a good leader (and a well-formed group) can recover from these mistakes quickly and easily.</p> diff --git a/out/blog/living-without-discord.xht b/out/blog/living-without-discord.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='living-without-discord'> -<h1>living without Discord</h1> +<main> +<h1 id="living-without-Discord">living without Discord</h1> <time datetime='2019-09-20T14:55:27+0000' title='2019-09-20T14:55:27+0000'>2019 Sep 20</time> diff --git a/out/blog/my-and-your-pgp-habits-could-be-better.xht b/out/blog/my-and-your-pgp-habits-could-be-better.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='my-and-your-pgp-habits-could-be-better'> -<h1>my (and your) PGP habits could be better</h1> +<main> +<h1 id="my-%28and-your%29-PGP-habits-could-be-better">my (and your) PGP habits could be better</h1> <time datetime='2018-07-15T02:11:20+0000' title='2018-07-15T02:11:20+0000'>2018 Jul 15</time> diff --git a/out/blog/paving-the-road-for-the-future-of-technology.xht b/out/blog/paving-the-road-for-the-future-of-technology.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='paving-the-road-for-the-future-of-technology'> -<h1>paving the road for the future of technology</h1> +<main> +<h1 id="paving-the-road-for-the-future-of-technology">paving the road for the future of technology</h1> <time datetime='2018-03-27T01:23:17+0000' title='2018-03-27T01:23:17+0000'>2018 Mar 27</time> diff --git a/out/blog/site-update.xht b/out/blog/site-update.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='site-update'> -<h1>site update</h1> +<main> +<h1 id="site-update">site update</h1> <time datetime='2018-03-27T01:30:09+0000' title='2018-03-27T01:30:09+0000'>2018 Mar 27</time> diff --git a/out/blog/staying-safe-online.xht b/out/blog/staying-safe-online.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='staying-safe-online'> -<h1>staying safe online</h1> +<main> +<h1 id="staying-safe-online">staying safe online</h1> <time datetime='2019-08-24T00:15:20+0000' title='2019-08-24T00:15:20+0000'>2019 Aug 24</time> diff --git a/out/blog/testing-patches-made-to-bashblog-script.xht b/out/blog/testing-patches-made-to-bashblog-script.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='testing-patches-made-to-bashblog-script'> -<h1>testing patches made to bashblog script</h1> +<main> +<h1 id="testing-patches-made-to-bashblog-script">testing patches made to bashblog script</h1> <time datetime='2017-12-21T21:08:11+0000' title='2017-12-21T21:08:11+0000'>2017 Dec 21</time> diff --git a/out/blog/the-grey-area-of-paedophilia.xht b/out/blog/the-grey-area-of-paedophilia.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='the-grey-area-of-paedophilia'> -<h1>the grey area of paedophilia</h1> +<main> +<h1 id="the-grey-area-of-paedophilia">the grey area of paedophilia</h1> <time datetime='2018-04-28T20:38:43+0000' title='2018-04-28T20:38:43+0000'>2018 Apr 28</time> diff --git a/out/blog/trying-new-software.xht b/out/blog/trying-new-software.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='trying-new-software'> -<h1>trying new software</h1> +<main> +<h1 id="trying-new-software">trying new software</h1> <time datetime='2018-02-11T12:01:13+0000' title='2018-02-11T12:01:13+0000'>2018 Feb 11</time> diff --git a/out/blog/why-i-no-longer-use-github.xht b/out/blog/why-i-no-longer-use-github.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='why-i-no-longer-use-github'> -<h1>why I no longer use GitHub</h1> +<main> +<h1 id="why-I-no-longer-use-GitHub">why I no longer use GitHub</h1> <time datetime='2018-06-21T13:32:04+0000' title='2018-06-21T13:32:04+0000'>2018 Jun 21</time> @@ -38,19 +38,19 @@ <p>since I am tired of reiterating to every project the reasons I refuse to sign up to and contribute via GitHub, I feel like the best course of action is to write it all out, once, and give this article to anyone who asks. plus, maybe all my readers may find this an interesting read to perhaps rethink their decision to use GitHub for their projects.</p> -<h2>GitHub is not FOSS</h2> +<h2 id="GitHub-is-not-FOSS">GitHub is not FOSS</h2> <p>GitHub boasts its love for the FOSS community, but the site itself runs on proprietary software. if you hate double standards as I do, you may stop reading as you should be content with the answer I gave you.</p> <p>but really, look at GitLab in comparison. GitLab is the leading competitor and the current go-to for most people fleeing GitHub because of its similar <q>social coding</q> interface. guess what? it's FOSS, so you can take GitLab's software and run it on your own server. and from what I understand, GitLab manages to be a for-profit company despite the fact it gives away its software to the community, so why doesn't the <q>FOSS-loving</q> GitHub do it as well? it just doesn't fly with me.</p> -<h2>GitHub is (poorly) reinventing git</h2> +<h2 id="GitHub-is-%28poorly%29-reinventing-git">GitHub is (poorly) reinventing git</h2> <p>git is a distributed version control system. it says that right on the tin. and it does a damn good job at being one. so why turn it into something that it isn't? I don't know, but GitHub seems happy doing away with many of the benefits of this. with plain git, I can stick my repository anywhere, give people the link to clone it, and take pull requests through mail. everyone on the Internet has an E-mail address (which is also a federated communication technology, so it's easy to see how it can be best friends with git) and E-mail doesn't lock you into a single terms-of-service agreement (I'll go in depth on that in a bit). this makes it easier for the passerby to contribute to a project, regardless where the project is hosted. no new user accounts necessary.</p> <p>with GitHub, E-mail is second-class and people become spoiled by the wrong way of doing things, so they insist that you do things the wrong way as well. this is called <em>vendor lock-in</em> and it's very bad especially for FOSS projects. you can witness a similar effect between <a href="https://www.blender.org/media-exposure/youtube-blocks-blender-videos-worldwide/">Blender and YouTube</a> that surfaced recently. GitHub knows it has you by the nape and can shut you down whenever they want, and it can use that to manipulate you into making decisions for your project that you otherwise wouldn't take. and GitHub knows that your project's success is imperative to its own success, since it means more people signing up to contribute, more people being exposed to its nice, incorrect, not-git interface, and thus more people becoming locked in to GitHub as well.</p> -<h2>there are some AUP/ToS loopholes, and they <em>will</em> shut you down</h2> +<h2 id="there-are-some-AUP%2FToS-loopholes%2C-and-they-%2Awill%2A-shut-you-down">there are some AUP/ToS loopholes, and they <em>will</em> shut you down</h2> <p>I promised I would go into detail about the terms of service. there are two clauses that are poorly worded, subjective, and ... well, loopholish in nature.</p> diff --git a/out/blog/why-program-efficiency-and-usability-matters.xht b/out/blog/why-program-efficiency-and-usability-matters.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='why-program-efficiency-and-usability-matters'> -<h1>why program efficiency [and usability] matters</h1> +<main> +<h1 id="why-program-efficiency-%5Band-usability%5D-matters">why program efficiency [and usability] matters</h1> <time datetime='2017-11-24T14:26:09+0000' title='2017-11-24T14:26:09+0000'>2017 Nov 24</time> diff --git a/out/blog/wowaname-now-on-git-and-hosted-on-my-laptop.xht b/out/blog/wowaname-now-on-git-and-hosted-on-my-laptop.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='wowaname-now-on-git-and-hosted-on-my-laptop'> -<h1>wowana.me now on git (and hosted on my laptop)</h1> +<main> +<h1 id="wowana.me-now-on-git-%28and-hosted-on-my-laptop%29">wowana.me now on git (and hosted on my laptop)</h1> <time datetime='2019-06-05T02:53:09+0000' title='2019-06-05T02:53:09+0000'>2019 Jun 05</time> diff --git a/out/bookmarks.xht b/out/bookmarks.xht @@ -29,15 +29,15 @@ </header> </div> -<main id='bookmarks'> -<h1>bookmarks</h1> +<main> +<h1 id="bookmarks">bookmarks</h1> <p>this is a list of public bookmarks for websites or articles to which I want to refer in the future. pay mind that this may be a mix of clearnet HTTP(S) links and onion/i2p/other protocols mixed in, and it's mainly organised for my own use.</p> -<h2>articles</h2> +<h2 id="articles">articles</h2> <p>links to blogs, news, opinion pieces, or any other useful information.</p> @@ -55,7 +55,7 @@ organised for my own use.</p> <li><a href="https://visualstudiomagazine.com/articles/2013/06/01/roc-rocks.aspx">Why you shouldn't comment (or document) code</a>, which mainly encourages self-documenting code (<a href="https://archive.is/KWwKr">archived</a> <span class="altnet-permalinks">{ <a class="tor-permalink" href="http://archivecaslytosk.onion/KWwKr">.onion</a> }</span>)</li> </ul> -<h2>files</h2> +<h2 id="files">files</h2> <p>a list of torrents and downloads I want to get around to but don't have enough spare disk space.</p> @@ -64,7 +64,7 @@ enough spare disk space.</p> <li><a href="magnet:?xt=urn:btih:2dc18f47afee0307e138dab3015ee7e5154766f6&amp;dn=Geocities+-+The+PATCHED+Torrent">Geocities patched torrent</a> (<a href="magnet:?xt=urn:btih:decb3f33cea4386d5e030a57acd71adb26542024&amp;dn=Geocities+-+The+Torrent">original, seems to have no seeders</a>)</li> </ul> -<h2>ASCII, ANSI, Shift-JIS art</h2> +<h2 id="ASCII%2C-ANSI%2C-Shift-JIS-art">ASCII, ANSI, Shift-JIS art</h2> <ul> <li><a href="https://16colo.rs/">16colo.rs</a></li> @@ -73,7 +73,7 @@ enough spare disk space.</p> <li>Links to ASCII art web pages (<a href="https://web.archive.org/web/20011102043925/http://www.geocities.com/soho/2695/links.htm">wayback</a>)</li> </ul> -<h2>mesh networking</h2> +<h2 id="mesh-networking">mesh networking</h2> <p>resources for future inclusion on the <a href="https://mesh.gentoo.today/">mesh wiki</a></p> @@ -84,7 +84,7 @@ enough spare disk space.</p> <li><a href="https://tomesh.net/">Toronto Mesh</a></li> </ul> -<h2>miscellaneous</h2> +<h2 id="miscellaneous">miscellaneous</h2> <ul> <li><a href="https://academictorrents.com/">Academic Torrents</a></li> @@ -102,29 +102,29 @@ enough spare disk space.</p> <li><a href="https://meta.wikimedia.org/wiki/Wikimedia_servers">Wikimedia server trivia</a></li> </ul> -<h3>hardware 2FA/security modules</h3> +<h3 id="hardware-2FA%2Fsecurity-modules">hardware 2FA/security modules</h3> <ul> <li><a href="https://www.nitrokey.com/">Nitrokey</a></li> <li><a href="https://solokeys.com/">SoloKeys</a></li> </ul> -<h2>music</h2> +<h2 id="music">music</h2> <ul> <li><a href="http://lolicore.org/">lolicore archive</a></li> <li><a href="https://files.sq10.net/music/vaporwave/list/">sq10 files</a> (vapourwave archive)</li> </ul> -<h2>software</h2> +<h2 id="software">software</h2> <p>some of these repositories, I should probably mirror eventually.</p> -<h3>stuff I use</h3> +<h3 id="stuff-I-use">stuff I use</h3> <p>see my <a href="/software.xht">software list</a>.</p> -<h3>other</h3> +<h3 id="other">other</h3> <ul> <li><a href="http://www.brain-dump.org/projects/abduco/">abduco</a></li> diff --git a/out/contact.xht b/out/contact.xht @@ -29,10 +29,10 @@ </header> </div> -<main id='contact'> -<h1>contact</h1> +<main> +<h1 id="contact">contact</h1> -<p>you can reach me via E-mail at <a href="&#x6D;&#x61;&#105;&#x6C;&#x74;&#111;:&#111;&#112;&#x61;&#x6C;&#64;&#x77;&#111;&#119;&#97;&#x6E;&#97;.&#x6D;&#101;">&#111;&#112;&#x61;&#x6C;&#64;&#x77;&#111;&#119;&#97;&#x6E;&#97;.&#x6D;&#101;</a>, or if you use tor mail, <a href="&#x6D;&#x61;&#x69;&#x6C;&#x74;&#111;:&#x77;&#x6F;&#119;&#97;&#x6E;&#x61;&#109;&#x65;&#64;&#118;&#111;&#x6C;&#97;&#55;&#105;l&#x65;&#x69;&#97;&#120;4u&#x65;&#111;&#119;&#x2E;&#x6F;&#x6E;&#105;&#111;&#110;">&#x77;&#x6F;&#119;&#97;&#x6E;&#x61;&#109;&#x65;&#64;&#118;&#111;&#x6C;&#97;&#55;&#105;l&#x65;&#x69;&#97;&#120;4u&#x65;&#111;&#119;&#x2E;&#x6F;&#x6E;&#105;&#111;&#110;</a>.</p> +<p>you can reach me via E-mail at <a href="&#x6D;&#x61;&#x69;l&#x74;&#111;:&#x6F;p&#97;&#108;&#64;&#x77;&#111;&#119;&#x61;n&#x61;&#x2E;&#x6D;&#x65;">&#x6F;p&#97;&#108;&#64;&#x77;&#111;&#119;&#x61;n&#x61;&#x2E;&#x6D;&#x65;</a>, or if you use tor mail, <a href="&#x6D;&#x61;&#105;&#108;&#x74;&#x6F;:&#x77;&#111;w&#97;&#x6E;&#x61;m&#x65;&#64;v&#x6F;&#x6C;&#x61;&#55;&#x69;l&#101;&#105;a&#120;4&#117;&#101;&#x6F;&#x77;&#46;o&#x6E;&#105;&#x6F;&#110;">&#x77;&#111;w&#97;&#x6E;&#x61;m&#x65;&#64;v&#x6F;&#x6C;&#x61;&#55;&#x69;l&#101;&#105;a&#120;4&#117;&#101;&#x6F;&#x77;&#46;o&#x6E;&#105;&#x6F;&#110;</a>.</p> <ul> <li><a href="/pgp.xht">PGP is suggested.</a> <em>please give me a well-formed PGP public key so I may reply.</em></li> diff --git a/out/donate.xht b/out/donate.xht @@ -29,14 +29,14 @@ </header> </div> -<main id='donate'> -<h1>costs and donating</h1> +<main> +<h1 id="costs-and-donating">costs and donating</h1> <p>starting 2018 September, I will publicly track expenses and donations for my services.</p> <p><a href="#donors">check below for a list of donors</a></p> -<h2>donation methods</h2> +<h2 id="donation-methods">donation methods</h2> <p>if you are interested in helping with my costs, you can make a donation to:</p> @@ -60,7 +60,7 @@ <li>need an alternate payment method.</li> </ul> -<h2>costs</h2> +<h2 id="costs">costs</h2> <p>my servers and domains cost around <em>US$2 000 a year</em> to maintain:</p> diff --git a/out/fediverse.xht b/out/fediverse.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='fediverse'> -<h1>the fediverse</h1> +<main> +<h1 id="the-fediverse">the fediverse</h1> <p>if you're tired of twitter (or you got banned from it like me) then you're probably looking for a decent replacement to meet people and @@ -84,7 +84,7 @@ me</a> via E-mail.</p> free time, and I will take suggestions on how to better present the information here.</p> -<h2>Pleroma</h2> +<h2 id="Pleroma">Pleroma</h2> <table> <tr> @@ -166,7 +166,7 @@ information here.</p> </tr> </table> -<h2>Mastodon</h2> +<h2 id="Mastodon">Mastodon</h2> <table> <tr> @@ -213,7 +213,7 @@ information here.</p> </tr> </table> -<h2>Misskey</h2> +<h2 id="Misskey">Misskey</h2> <table> <tr> diff --git a/out/files/Summitto.txt b/out/files/Summitto.txt @@ -0,0 +1,103 @@ +Date: Tue, 13 Aug 2019 12:08:33 +0000 +From: opal hart <opal@wowana.me> +To: Lucas Mul <lucas@summitto.com> +Subject: Re: PGP Packet Library +References: <CAK+RM2bhPKiw2aCjY0tbv8OqfpV+KotKL5WWXx=Ano864-xTcQ@mail.gmail.com> +Organization: Volatile +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: quoted-printable + +On Tue, 13 Aug 2019 08:43:50 +0200 +Lucas Mul <lucas@summitto.com> wrote: + +> Dear Opal, +> +> We (https://summitto.com) open-sourced a C++17 based PGP packet library. +> Using the library, you can create packets, encode and decode packet data +> and create a PGP key from e.g. a raw elliptic curve point. We've seen quite +> a lot of bad publicity for PGP lately, that's why we want to share this +> library with as many people as possible. +> +> Here you go: +> https://github.com/summitto/pgp-packet-library + +Nice, but a few things: + +I assume you simply queried keyservers and are notifying active PGP +users, or something of the sort, about this library? Or did you +approach me or my website some other way? I don't recall having any +prior relationship to Summitto, and while I am fine with unprompted +communication (otherwise I wouldn't have my E-mail address public), I am +still curious as to how people decide to reach me. + +I'm partly curious because for usual readers of my site, I believe I +make it understood how opinionated I am about certain technologies. I +rarely get correspondence originating from GMail, so seeing how your +message not only originates from Google's mail servers but also has an +ugly multipart HTML format with an image in your signature, I have to +say your message sticks out like a sore thumb from most of the mail I +get. I suggest reading about the merits of plain-text E-mail [1] and +perhaps self-hosting Summitto's MX servers. + +Also, your advocacy for PGP while at the same time not using it +yourself (or at least not publishing your key on keyservers, or +otherwise using PGP in an unorthodox fashion) leads me to believe your +proposal is somewhat disearnest. I encourage the use of PGP on my +website so I'm going to assume you make no use of PGP at all based on +this information. (Actually, after looking a bit more, I see +a key on your website [2] but it only has a key for victor@…, +which is not suitable for sending mail to you.) + + +The Summitto website itself [3] does not load properly unless either +JavaScript is enabled or CSS is blocked. This is unacceptable for a +static website. Judging from what I can see from your homepage with CSS +and JS disabled, you appear to primarily be a blockchain-based venture. +I'm too lazy to mentally parse everything else you describe Summitto to +be on the rest of your site, but to me it appears that the main goal is +to hop on a trend, a fad, as a profitable venture. Summitto's privacy +policy [4] further increases my suspicions, since you are eager to +collect analytics on users, even if it is only in-house (with the +exception of using third-party services from Twitter and LinkedIn, both +which prove to be their own hellholes that are not in any way +beneficial to the progress of technology). + + +Finally, as for the library itself [5], I express much of the same views +toward C++ as does Cat-V [6]. All I can say about your choice of C++17 +is that I do believe some people will benefit from using this library, +but personally I am very unaffected since I try my best to avoid +writing in such a language. Also, personally I have feelings against +the GPL, so even if I did find the library valuable enough to port e.g. +to C, I would be faced with licensing issues, because I make a fair +commitment to release and share my code under more-permissive licences. + +Perhaps the most important comment on the code I could make, is to +discourage use of homegrown crypto without proper third-party auditing. +If you have something like that already lined up, let me know. +Otherwise, I cannot suggest use of such a library with good intentions. + + +I will publish this message with your quoted text and my response, as +you have made no effort to encrypt to me. This way, I'm spreading the +word for you, while at the same time letting people decide for +themselves whether Summitto is reputable and competent enough to roll +its own crypto. You can find a copy on my website [7]. + +I hope my honesty does not catch you by surprise, but if this was not +the response you were expecting, then I implore you to be more careful +about where and how you market your solutions. If you're fine with +continuing on this conversation, I will make a best effort to reply. + +[1]<https://useplaintext.email/> +[2]<https://summitto.com/pgp.asc> +[3]<https://summitto.com/> +[4]<https://summitto.com/privacy-policy> +[5]<https://github.com/summitto/pgp-packet-library> +[6]<http://harmful.cat-v.org/software/c++/> +[7]<https://wowana.me/files/Summitto.txt> + +Cheers, +-- +wowaname <https://wowana.me/pgp.xht> diff --git a/out/files/backfromgab.txt b/out/files/backfromgab.txt @@ -0,0 +1,142 @@ +Hi, + +I am a user on the fediverse and a Pleroma instance administrator since +early 2018. I run anime.website, and due to the introduction of another +large commercial entity into the fediverse, naturally I have some +questions and concerns about this. I believe other users and instance +administrators share similar concerns, so with your permission I would +like to share with them the responses I receive here. Note that while +this is not the first large, commercial instance to call the fediverse +its home (Pawoo was one of the first, if not the first), it still has +new implications. I believe Pixiv's Pawoo was implemented atop Mastodon +from the very beginning, not requiring an entire community to migrate. + +I have seen the introduction to the idea from @gab [1] and browsed some +of the comments (including the official ones written from Torba), so I +have a general idea of what Gab is doing to make this happen. And, +although I am not a Gab user myself, I appreciate every move to +decentralisation, so I wish the Gab development team and community the +best of luck in its migration. Gab respects the word of the law, and as +a free-speech advocate myself, I can respect this. In fact, I was +initially a Twitter user up until 2016 where I was kicked off not for +saying something, but for retweeting someone else's post about +something, and at the time I did not receive so much as a warning +before I was banned. This ban prompted me first to leave social media +for a while, then I discovered the fediverse and haven't looked back. +Gab struck no interest to me at the time, since I was beginning to +self-host everything and didn't want to depend on any more large +services if I could help it. + +Enough about myself; hopefully this makes it clear that if Gab chooses +to federate with other instances (which to my understanding it will +attempt to do so), then I will not forbid users from my instance from +interacting with Gab users, and vice versa. But please note I am +treating Gab less as a "website" and more as yet another "instance", a +cog in the fediverse machine. + + +First real concern I have is moderation. I have several questions about +this I want to address: + +1. How is Gab going to handle instances whose rules do not agree with +Gab's own terms? On my instance's rules [2] I state that NSFW content +is allowed as long as it is legal. Coming from an imageboard +background, I am used to unmarked NSFW, so I treat my instance as an +explicit one, a "red board" as one would say on 4chan. This conflicts +with Gab's request to tag all NSFW images. How would Gab administration +deal with this -- would you block the instance in question, mark the +instance as NSFW (Mastodon has this capability), or something else +entirely? + +2. How is Gab going to handle cross-instance reports? Mastodon has a +reporting feature that allows users to flag not only posts on their own +instance, but on remote instances as well. And currently Pleroma (and +potentially GNU social and Misskey, two other popular AP/OStatus +softwares) does not have the most intuitive facility for handling +reports. Currently Pleroma instance admins have to set up SMTP support +in the server, in order to receive reports. And as of now this isn't a +fully-documented process, so many of us just do not respond to reports +delivered by Mastodon. Gab is going to have to consider this and +potentially work with developers of non-Mastodon instance software to +provide a reasonable, streamlined fix. I'm sure the developers would +appreciate Gab's input from a developmental perspective, seeing as Gab +has to deal with moderation at a large scale. If Gab believes it is +safe to ignore abuse coming from other instances, this is an option as +well. IANAL, so I cannot tell you anything except "be careful" that you +do not accidentally link to or re-host anything that could incriminate +the company. + + +Aside from moderation, there is also the concern of mobile apps. As we +all know, app stores such as Google Play and Apple's App Store are very +selective about what they allow, due mainly to potential "bad +publicity" against Google and Apple themselves. I do not agree with +this practice, but I voted with my feet instead of complaining much +and I use a FOSS alternative on Android, F-Droid. Of course not +everyone is going to be savvy enough to do this, but hopefully it's an +option that becomes more realistic as days move on. + +As you've seen already, app developers are already taking stance +against Gab's anticipated move to the fediverse. Correct me if I'm +wrong, but I believe it's no secret that Gab's primary reason for +migrating to Mastodon is to leech off the Mastodon API implementation +in several apps already in markets. As many app developers already have +strong opinions against not only Gab but any large commercial +"centralised" venture, they are quickly choosing to blacklist Gab +domains from being allowed to log in via their apps. They do this +because it is the easiest way out of app-store trouble and because it +aligns with their pro-censorship beliefs in general, as far as I +understand. Obviously this is stupid practice, much as it would be +stupid to blacklist Gab from the Chrome browser app, or something of +the like. + +My point being, what does Gab plan to do if all apps decide to block +Gab in order to remain included in their app stores, or if the apps +that take no action against Gab get suspended from the app stores for +"misconduct"? I see Gab plans to release its own FOSS app (good on +you! we need more FOSS adaptation) but I believe it to be similarly +doomed in app stores, if all other apps follow suit. + +Basically, it would be a shame for Gab's primary purpose of migration +to end up not working out. And I wonder, will Gab proceed to work with +ActivityPub technology if their primary reason for using it is gone? + +On a personal note, I wish to fork the Twidere app in my free time. I +used it back when I was allowed on Twitter, and nowadays I continue to +use it with its new support for Mastodon API, simply because I am +familiar with its interface. While I do not plan to block users from +logging into any instances, I only plan to release on F-Droid. However, +I welcome anyone to re-release my fork on Google Play, so I may +potentially be one of the apps that allows Gab, should the Play Store +have no objection to it. + + +As for features such as groups and editing, does Gab plan to work +upstream in order to provide standard, interoperable solutions to +these? There has been much talk at least in Pleroma dev about +implementing groups in a sane way; GNU social has had groups for a +while but these only work between other GNU social instances. As for +editing, I believe there are ideological debates about the potential +issues that could arise. For example, I could see harm in people +editing old posts, and depending on how much attention those posts +received, things such as favourites/retweets/replies may not be +representative of the edited version of the post. If Gab has some UI +proposal, potentially to show all revisions of a post or something, +then I could see it working; but so far it seems that +delete-and-redraft is the cleanest current solution (although by no +means clean, which is why I abstain from using it when I can). + + +I know this is a lot but I think it will be all my inquiries at +least for now. I hope that I am not asking too much at this early +a stage, but I believe the sooner we get some of these questions +out of the way, the easier the migration will be. Feel free to +share my questions verbatim with anyone you deem fit. Looking forward to +your reply, and to your eventual inclusion in the fediverse. + +[1]<https://gab.com/gab/posts/VnZRendFcDM1alBhNm9QeWV4d0xidz09> +[2]<https://anime.website/static/rules.html> + +Thanks, +-- +wowaname <https://wowana.me/pgp.xht> diff --git a/out/files/pgp/matrix-keys.asc b/out/files/pgp/matrix-keys.asc @@ -0,0 +1,36 @@ +Below, you will find my per-device encryption keys for my Matrix account +<@wowaname:volatile.bz>. + +You can verify these easily with: + curl https://wowana.me/files/pgp/matrix-keys.asc | + gpg --allow-multiple-messages --verify + + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +Matrix device key for 'clamav' on account <@wowaname:volatile.bz> +Device ID: JGGCUQTMAQ +Device key: IJqH 7M6K +2AP d8JK oto+ iDGE 0v2s NBE2 dCIV v7nO h4A +-----BEGIN PGP SIGNATURE----- + +iHUEARYIAB0WIQTKtVOWZDRJsK7bsTs29tgqTNgkBwUCXVlZdgAKCRA29tgqTNgk +B+BqAP0SCK0MV2rtniut5kDmbJxxd9iUYA8vOjmMMfbJsu6r9AEAtWK+jWso61Jb +8/q92UhiT5OikxOE4aEJfeH2KMlDBwI= +=Ny8s +-----END PGP SIGNATURE----- + + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +Matrix device key for 'pochiko' on account <@wowaname:volatile.bz> +Device ID: UGOODVMNBO +Device key: BAqN 69RQ 65k1 RD/V tFJw eX9C HoF8 j1/u xOXY s/gS iBw +-----BEGIN PGP SIGNATURE----- + +iHUEARYIAB0WIQTKtVOWZDRJsK7bsTs29tgqTNgkBwUCXVlaOAAKCRA29tgqTNgk +B7x9AP9R/EInPVzx7viST8NEnDSZgSDcmN2r6Kib8U3PBAG3rwD/QGsHFapq45zO +bZz7e62d6uT3ATKjxafYsaighIkxKAU= +=j61P +-----END PGP SIGNATURE----- diff --git a/out/files/pgp/xmpp-omemo-keys.asc b/out/files/pgp/xmpp-omemo-keys.asc @@ -0,0 +1,34 @@ +Below, you will find my per-device encryption keys for my XMPP account +<xmpp:opal@wowana.me>. + +You can verify these easily with: + curl https://wowana.me/files/pgp/xmpp-omemo-keys.asc | + gpg --allow-multiple-messages --verify + + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +OMEMO fingerprint for 'mimiga' on account <xmpp:opal@wowana.me>: +5a896a57 3bb1c314 ac4a817e 755188b4 130cc66c b127eef0 451514ff 485bf715 +-----BEGIN PGP SIGNATURE----- + +iHUEARYIAB0WIQTKtVOWZDRJsK7bsTs29tgqTNgkBwUCXWBilQAKCRA29tgqTNgk +BwSlAP47KCfU+PvpIeRHz1gJCI1vKUe6cegviD6+38a+iSccKQEAi11ZM+qmQJFS +3t9RbW9csbHlrovYIxL88mUvlpTocgU= +=t7CV +-----END PGP SIGNATURE----- + + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +OMEMO fingerprint for 'pochiko' on account <xmpp:opal@wowana.me>: +92d2f9d5 af8f021a e5bb5584 43f7ba35 607eff72 66a332f0 63f0551f 18daee4b +-----BEGIN PGP SIGNATURE----- + +iHUEARYIAB0WIQTKtVOWZDRJsK7bsTs29tgqTNgkBwUCXWBinQAKCRA29tgqTNgk +BzPxAQCGl7ZqxVelHdFH7DfaN9rvzifz6Ec/N1t1OmqTcnNO+wEAycqpM8CnYlo+ +nfbYg12FF5Aceh+tKTuSPsz3Qpo7+gg= +=MXp7 +-----END PGP SIGNATURE----- diff --git a/out/htss.xht b/out/htss.xht @@ -29,12 +29,12 @@ </header> </div> -<main id='htss'> -<h1>HTSS: HyperText Semantic Subset</h1> +<main> +<h1 id="HTSS%3A-HyperText-Semantic-Subset">HTSS: HyperText Semantic Subset</h1> <p>This is a draft for a proposed subset of (X)HTML5. None of this information is final and is subject to change without notice.</p> -<h2>Why this instead of AMP?</h2> +<h2 id="Why-this-instead-of-AMP%3F">Why this instead of AMP?</h2> <ul> <li>AMP encourages/requires use of JS.</li> @@ -46,7 +46,7 @@ <p>As an aside, AMP seems to invent the solution to a problem that only surfaced in the Web's later years. To load pages quickly, web developers and designers simply need to emphasise simplicity, and make do with more of the features of bare HTML5. Advertisers must find less-intrusive ways to market their products without compromising on usability, as well. There is plenty of literature online about AMP if you are still not convinced of its uselessness and potential harm to the Web ecosystem.</p> -<h2>Key points</h2> +<h2 id="Key-points">Key points</h2> <ul> <li>HTML documents are for HTML; it should not consist of mixed mimetypes. While JS and CSS are allowed in HTML, reserved HTML tokens still need to be entity-escaped or enclosed in a CDATA tag. The ideal solution is to serve non-HTML as separate files. This also aids in clientside caching and capabilities: the client does not have to download assets it already has, and it does not have to download assets it cannot display (CSS and images inside a text browser or screen reader, for instance). Additionally, this makes HTML cleaner by removing the use of <code>[onhover]</code>, <code>[style]</code>, and other tag attributes.</li> @@ -55,7 +55,7 @@ <li>Making full use of the HTML5 standard is desirable over accepting third-party additions to the specification. Make use of standard markup when possible.</li> </ul> -<h2>What is required?</h2> +<h2 id="What-is-required%3F">What is required?</h2> <ul> <li>HTSS is a subset of HTML5 or XHTML5, therefore the document must begin with an HTML5-compatible doctype, e.g. <code>&lt;!DOCTYPE html&gt;</code> or <code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;!DOCTYPE html&gt;</code>. All other (X)HTML5 rules also apply.</li> @@ -63,7 +63,7 @@ <li>HTSS suggests the use of XHTML5 rather than the SGML-based grammar, but for now this is not a requirement and both the full syntax specifications of HTML5 and XHTML5 are allowed.</li> </ul> -<h2>Tag and attribute requirements</h2> +<h2 id="Tag-and-attribute-requirements">Tag and attribute requirements</h2> <p>Which tags and attributes have specific requirements in HTSS? (CSS selectors are used to refer to tags and their attributes in this section.)</p> @@ -90,7 +90,7 @@ <li><code>table</code>: Must be used semantically for tabular <em>data</em> and not simply for styling (use <code>div</code> and CSS for that).</li> </ul> -<h2>Forbidden tags and attributes</h2> +<h2 id="Forbidden-tags-and-attributes">Forbidden tags and attributes</h2> <p>Which tags and attributes are forbidden in HTSS?</p> @@ -104,7 +104,7 @@ <li>Any HTML5 tag or attribute marked nonstandard and/or vendor-specific.</li> </ul> -<h2>Suggestions for automated HTSS linting</h2> +<h2 id="Suggestions-for-automated-HTSS-linting">Suggestions for automated HTSS linting</h2> <p>Just as validators and linters exist for HTML and AMP, it is useful to have a preliminary linting for documents trying to conform to HTSS. Note that since many of the rules are semantic in nature, an automated system cannot be expected to discern correct usage of tags, as it cannot understand the content of a document in the same capacity that a human can. Such an HTSS linter could only catch low-hanging fruit: obvious syntactic violations of HTSS, such as invalid tags.</p> @@ -116,7 +116,7 @@ <li>Event handler attributes (as mentioned above, the <code>[on*]</code> global attributes for JavaScript) and <code>[style]</code> attribute are not allowed in HTSS.</li> </ul> -<h2>Other</h2> +<h2 id="Other">Other</h2> <p>Not in scope for HTSS, but additional points to consider:</p> diff --git a/out/index.xht b/out/index.xht @@ -29,7 +29,7 @@ </header> </div> -<main id='index'> +<main> <p>I have a few things:</p> <ul> diff --git a/out/permalink.xht b/out/permalink.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='permalink'> -<h1>permalink</h1> +<main> +<h1 id="permalink">permalink</h1> <p>I offer my site over <a href="https://geti2p.net/">I2P</a> and <a href="https://torproject.org/">Tor</a> for increased security and anonymity. you can use and share these links as you wish.</p> diff --git a/out/pgp.xht b/out/pgp.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='pgp'> -<h1>pgp</h1> +<main> +<h1 id="pgp">pgp</h1> <p>my current key is <a href="/pgp/0xFB02FDAFD6C05FE4.asc"><samp>FB02 FDAF D6C0 5FE4</samp></a>. use it to encrypt your messages to me, and use it to verify my signed messages.</p> diff --git a/out/software.xht b/out/software.xht @@ -29,8 +29,8 @@ </header> </div> -<main id='software'> -<h1>my software choices</h1> +<main> +<h1 id="my-software-choices">my software choices</h1> <p>a list of software I use, whether I recommend it or will attempt to replace it (<q>good enough</q> column in table), any support channels @@ -46,7 +46,7 @@ it helpful to have my own copy of this mail in order to easily search for solutions to my issues, in such a way a normal web search cannot satisfy.</p> -<h2>Linux desktop</h2> +<h2 id="Linux-desktop">Linux desktop</h2> <table> <tr> @@ -135,7 +135,7 @@ satisfy.</p> </tr> </table> -<h2>Linux server</h2> +<h2 id="Linux-server">Linux server</h2> <table> <tr> @@ -209,7 +209,7 @@ satisfy.</p> <li>I plan to release my configurations publicly via git.</li> </ol> -<h2>Android</h2> +<h2 id="Android">Android</h2> <p>most apps I use are <q>good enough</q> because I have different requirements on my mobile device than I do on my desktop. are they