paritybit.ca

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 4d6e55f77a284aa5f39be3ac5fd8f13921df4ad1
parent 580c13579f5d17f99ae540069d857a5e9ffeaddb
Author: Jake Bauer <jbauer@paritybit.ca>
Date:   Wed,  3 Nov 2021 05:28:38 -0400

Clean Old Blog Posts

Posts which are unlisted have been removed, other posts have been
updated with new information or better formatting or slight rewordings.

Diffstat:
Mpages/a-critique-of-free-software.md | 6++++++
Dpages/blog/adding-image-optimization-to-my-static-site-generator.md | 45---------------------------------------------
Dpages/blog/adding-search-to-my-blog.md | 38--------------------------------------
Dpages/blog/announcing-kontaktb.md | 40----------------------------------------
Dpages/blog/arguing-effectively.md | 19-------------------
Dpages/blog/attempting-to-replace-my-thinkpads-touchpad.md | 65-----------------------------------------------------------------
Dpages/blog/automating-publishing.md | 44--------------------------------------------
Dpages/blog/book-review-the-mediocre-programmer.md | 62--------------------------------------------------------------
Dpages/blog/btw-i-use-arch.md | 70----------------------------------------------------------------------
Dpages/blog/cat-v-considered-harmful.md | 68--------------------------------------------------------------------
Mpages/blog/choosing-a-self-hosted-git-service.md | 4++--
Dpages/blog/clone-wars-finale.md | 38--------------------------------------
Dpages/blog/curating-my-blogroll.md | 56--------------------------------------------------------
Dpages/blog/dnd-xp-system.md | 126-------------------------------------------------------------------------------
Mpages/blog/ethical-investing.md | 3+++
Mpages/blog/generating-my-geek-code.md | 5+++--
Dpages/blog/gomux-is-the-best-cli-matrix-client.md | 72------------------------------------------------------------------------
Dpages/blog/housecleaning.md | 38--------------------------------------
Mpages/blog/how-i-keep-my-home-directory-clean.md | 8+++++++-
Mpages/blog/how-i-manage-my-dotfiles.md | 22+++++++++++-----------
Dpages/blog/how-much-ram-is-enough.md | 68--------------------------------------------------------------------
Dpages/blog/how-to-create-an-rss-feed-for-your-blog-1.md | 124-------------------------------------------------------------------------------
Dpages/blog/how-to-create-an-rss-feed-for-your-blog-2.md | 149-------------------------------------------------------------------------------
Dpages/blog/how-to-create-an-rss-feed-for-your-blog-3.md | 107-------------------------------------------------------------------------------
Dpages/blog/how-to-not-make-an-ass-of-yourself-internet-discussions.md | 67-------------------------------------------------------------------
Dpages/blog/i-got-more-ram.md | 77-----------------------------------------------------------------------------
Dpages/blog/i-like-perl.md | 67-------------------------------------------------------------------
Dpages/blog/i-was-wrong.md | 40----------------------------------------
Dpages/blog/improving-my-blog-post-publishing-script.md | 63---------------------------------------------------------------
Dpages/blog/interesting-things-for-today.md | 30------------------------------
Dpages/blog/it-doesnt-have-to-be-perfect.md | 36------------------------------------
Dpages/blog/logo-redesign.md | 81-------------------------------------------------------------------------------
Dpages/blog/machine-hostnames.md | 48------------------------------------------------
Dpages/blog/making-my-site-easier-to-read.md | 55-------------------------------------------------------
Dpages/blog/mastodon-to-pleroma-1-setting-up-a-pleroma-server.md | 107-------------------------------------------------------------------------------
Dpages/blog/mastodon-to-pleroma-2-customizing-my-instance.md | 102-------------------------------------------------------------------------------
Dpages/blog/mastodon-to-pleroma-3-shutting-down-mastodon.md | 98-------------------------------------------------------------------------------
Dpages/blog/migrating-my-wiki-off-of-mediawiki.md | 36------------------------------------
Dpages/blog/my-attempts-to-fix-my-mastodon-instance.md | 73-------------------------------------------------------------------------
Dpages/blog/my-first-ctf.md | 37-------------------------------------
Dpages/blog/my-preferred-fediverse-mobile-client.md | 47-----------------------------------------------
Dpages/blog/my-top-10-most-used-commands.md | 58----------------------------------------------------------
Dpages/blog/new-desktop-checklist.md | 37-------------------------------------
Dpages/blog/new-server-checklist.md | 80-------------------------------------------------------------------------------
Dpages/blog/nope-back-to-st.md | 71-----------------------------------------------------------------------
Dpages/blog/posting-statuses-on-pleroma-with-a-shell-script.md | 58----------------------------------------------------------
Dpages/blog/preparing-to-self-host-email.md | 88-------------------------------------------------------------------------------
Dpages/blog/reflecting-on-50-days-of-blogging.md | 49-------------------------------------------------
Dpages/blog/setting-up-a-status-page.md | 67-------------------------------------------------------------------
Dpages/blog/setting-up-gpg-keys-from-scratch.md | 221-------------------------------------------------------------------------------
Dpages/blog/setting-up-weechat-again.md | 101-------------------------------------------------------------------------------
Dpages/blog/switching-to-alacritty-removals.md | 87-------------------------------------------------------------------------------
Dpages/blog/switching-to-alacritty.md | 70----------------------------------------------------------------------
Dpages/blog/switching-to-debian-sid.md | 59-----------------------------------------------------------
Dpages/blog/the-marble-man.md | 31-------------------------------
Dpages/blog/trying-out-aerc.md | 56--------------------------------------------------------
Dpages/blog/trying-out-dwm.md | 113-------------------------------------------------------------------------------
Dpages/blog/tweaking-some-css.md | 38--------------------------------------
Dpages/blog/two-truths-and-a-lie.md | 38--------------------------------------
Dpages/blog/unsure-what-to-write.md | 38--------------------------------------
Dpages/blog/use-xterm-256color-with-alacritty.md | 55-------------------------------------------------------
Dpages/blog/website-redesign.md | 91-------------------------------------------------------------------------------
Mpages/blog/why-i-hate-the-term-modern.md | 6+++---
63 files changed, 35 insertions(+), 3818 deletions(-)

diff --git a/pages/a-critique-of-free-software.md b/pages/a-critique-of-free-software.md @@ -43,6 +43,7 @@ He explains his personal motivations for sharing GNU (the Golden Rule), as a met However, as the follow-up, there is a proclamation that GNU is not in the public domain, and that modifications are going to be restricted (insofar as it comes to the rules of making further modifications). As the ultimate goal, we have these quotes: "Users will no longer be at the mercy of one programmer or company which owns the sources and is in sole position to make changes." and "Finally, the overhead of considering who owns the system software and what one is or is not entitled to do with it will be lifted." The rest of the document speaks to common counter-arguments. Of these, the following quotes are of interest to us: + * GNU will remove operating system software from the realm of competition. * “Control over the use of one's ideas” really constitutes control over other people's lives; and it is usually used to make their lives more difficult. @@ -79,6 +80,7 @@ What happened to "Finally, the overhead of considering who owns the system softw Now, *all people but the few lawyers that know programming* fall into this category. If you doubt this and believe yourself to be someone that understands the GPL and its variants fully, answer these questions: + * To enforce the GPL, should you sue for breach of copyright or contract? * If I modify an AGPL program (e.g to remove a quine), and then share it with a service provider, who runs the software without modification, do they have to share the sources? * What is a quine, and why is it important to the AGPL? @@ -126,6 +128,7 @@ Free software development has become a story of feast or famine. You either sell board member seats to corporations, or you barely coast off of user donations (which happen very rarely). The former, of course, means the corporations exert huge amounts of control. So, for the purposes of demonstration, here are some corporation controlled GPL (or other [Free Software](https://www.gnu.org/licenses/license-list.en.html#GPLCompatibleLicenses)) projects, as well as the consequences thereof: + * [Linux](https://archive.is/zspHt): Linux is a huge project, such that very few competent programmers can even try to comprehend it properly, let alone users. Users are therefore dependent upon the Linux maintainers (get used to this trend). @@ -165,6 +168,7 @@ This is certainly a lot of money to put into Free Software (and other) projects. This actually comes down to a question of economics. Consider a company that wishes to offer service Foo, with some specific features. They have the following options: + * They use an existing Free Software project that fits the bill. This is of zero cost to them, and allows for profit. If they can, they will do this. @@ -209,6 +213,7 @@ Free Software has essentially become a puppet, dancing on strings to the tune of ### Practical How does Free Software turn out in practice? The purported (practical) goals of Free Software are, from what we can gather above: + * Make users be important, and not dependent upon external entities. * Make corporations and other normally-proprietary entities share their useful contributions for the users. * Make life easier for developers and users. @@ -265,6 +270,7 @@ Developers as a whole are not the true beneficiaries of the GPL way - copyright Regardless though, at least any entity that doesn't need to worry about this will *have* to give back to the central community, right? Well, that depends. In practice, GPL litigations end in one of three ways: + * The code never makes it back, the service is simply [shut down](https://archive.is/tNhCE). * The developer burns out and leaves Free Software for good, like [Glenn McGrath](https://archive.is/lspvL) (also note the presence of Landley in this piece - he's the one being interviewed). * Code is surrendered, but [nothing actually useful](https://archive.is/XUo7N) comes out of the effort. diff --git a/pages/blog/adding-image-optimization-to-my-static-site-generator.md b/pages/blog/adding-image-optimization-to-my-static-site-generator.md @@ -1,45 +0,0 @@ -## Adding Image Optimization to My Static Site Generator - -[//]: # "I've added image optimization to my static site generator by making use of the tinypng.com API allowing me to optimize png, jpg, and jpeg images by using my script. No more manual work!" - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-08-06 | - <b>Last Updated:</b> 2020-08-06 -</div> - -I just added image optimization and resizing to my website's static site -generator so that uploading images to my website involves a lot less manual -labour. - -For a while I've been using [tinypng.com](https://tinypng.com) to optimize the -PNG, JPG, and JPEG images that I upload to my website since I found that it did -a better job than the command line utility `pngquant` (which also only worked on -PNGs). They have an API service which allows one to upload 500 images in a month -for free which is much more convenient than visiting the website every time I -need to optimize an image. Using the magic of `curl`, I added the ability to use -this API from my `compile` script which also handles compiling Markdown to HTML -and CSS minification. - -Another thing I added to the script was a `-r` or `--resize` option which takes -a number (let's call it x) as an argument and uses the `convert` utility from -ImageMagick to resize the input image by x%. I would commonly do this on the -command line to generate smaller images (thumbnails, sort of) for embedding in -blog posts to make page load sizes smaller so including it in the script -alongside image optimization was a no-brainer. - -I am slowly getting closer to releasing my scripts as a standalone project. It -would be a set of static site generator scripts that anybody could use but -without the bloat and complication of the existing ones such as Hugo or Jekyll. -I'm aiming for it to be a static site generator for minimalists who don't want -to go through the hassle of writing their own, plus I want to include HTML to -Gopher/Gemini conversion scripts. - -_This is my eighty-sixth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/adding-search-to-my-blog.md b/pages/blog/adding-search-to-my-blog.md @@ -1,38 +0,0 @@ -## Adding Search to my Blog - -[//]: # "As my collection of blog posts keeps growing, it is becoming increasingly apparent to me that I need to offer my users some way to search my previous posts. This post details how I implemented search for my blog." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-07-03 | - <b>Last Updated:</b> 2020-07-03 -</div> - -As my collection of blog posts keeps growing, it is becoming increasingly -apparent to me that I need to offer visitors some way to search through my -previous posts. It will also be a lot easier for me to find an old post where I -half-remember the title and have some idea of the content by being able to -search for it instead of needing to scroll through my list of previous posts. - -For those reasons, today I have added a way for people to search my blog posts. -The feature is available through a link on the [blog page](/blog). Go ahead, -check it out now. - -See? It took all of 30 seconds to implement and I didn't even have to program -anything! All I did was go to [duckduckgo.com](https://duckduckgo.com), type in -`site:www.paritybit.ca/blog` into the search bar, hit `Enter`, copy the URL, and -link to that URL from my blog page. By using this method, I can still avoid -having any JavaScript, back-end scripts building the search results dynamically, -or complex search solutions such as ElasticSearch. - -It really is super easy to add search to your site, even if all you want is a -simple static site. - -_This is my fifty-ninth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/announcing-kontaktb.md b/pages/blog/announcing-kontaktb.md @@ -1,40 +0,0 @@ -## Announcing kontaktdb - -[//]: # "kontaktdb is a small utility I created to store and retrieve basic contact information in plain text because I didn't like the complexity of existing options." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-14 | - <b>Last Updated:</b> 2020-06-14 -</div> - -kontaktdb is a small utility I created to store and retrieve basic contact -information in plain text because I didn't like the complexity of existing -options like abook or khard. All I need is contact name, email, and perhaps some -other information in a simple format that can be read by email clients like -NeoMutt or aerc. - -kontaktdb is designed to store all of its entries in a plain text file with one -line per contact where each line consists of tab-delimited fields. So far, just -name and email address fields are supported. It allows adding, deleting, listing -the contents of the database, retrieving contacts based on a simple query, and -editing contact information (albeit editing an entire contact at once instead of -a specific field for a contact). - -Since I'm working with text content and the program is supposed to be really -simple, I figured a simple POSIX shell script would suffice. If, by the time the -program is nearing feature-completeness, I notice that the shell script is -becoming too cumbersome, I may switch to a different language such as Perl. - -[View the project page](/projects/kontaktdb) - -[View the git repository](https://git.sr.ht/~jbauer/kontaktdb) - -_This is my forty-fifth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/arguing-effectively.md b/pages/blog/arguing-effectively.md @@ -1,19 +0,0 @@ -## How to Argue Effectively - -[//]: # "Everyone should read this article on how to argue effectively." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2019-12-21 | - <b>Last Updated:</b> 2019-12-21 -</div> - -A friend recently shared this [article on arguing -effectively](https://perfect24hours.com/how-to-argue-effectively/) with me and I -highly recommend that everyone give it a read. It's 31 pointers on how to argue -effectively with people so that you can have productive discussions to avoid -frustration and anger on both sides. diff --git a/pages/blog/attempting-to-replace-my-thinkpads-touchpad.md b/pages/blog/attempting-to-replace-my-thinkpads-touchpad.md @@ -1,65 +0,0 @@ -## Attempting to Replace My Thinkpad's Touchpad - -[//]: # "My attempt at replacing my Thinkpad T440s's touchpad with a T450s's touchpad." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-05-19 | - <b>Last Updated:</b> 2020-05-19 -</div> - -_**Note:** Apologies for the awful quality of the photos in this post, it seems -my cellphone's camera is either failing or the number of microscratches on the -glass covering the lens is resulting in poor quality._ - -I have a Thinkpad T440s which has a "buttonless" touchpad. Essentially, the -entire touchpad clicks downward to make clicks and there are no separate -touchpad keys. Although I don't mind how it works and feels (the clunk is quite -satisfying), it doesn't feel good to use in conjunction with the trackpoint for -which Thinkpads are famous. - -The T450s supposedly has a compatible touchpad which can be swapped with the -T440s's to give the T440s the separate buttons in addition to a clickable -touchpad. Ordering one of these cost me ~$20 CAD on eBay and it shipped from -what appears to be a local warehouse. It arrived yesterday so I spent some time -today fitting it into my Thinkpad: - -<figure> - <a href="/img/laptop-open-with-touchpad.jpg"><img - src="/img/laptop-open-with-touchpad-thumb.jpg"/></a> - <figcaption>My T440s with internals exposed and the new touchpad laying - next to it.</figcaption> -</figure> - -Unfortunately, when I replaced the touchpad and put everything together, the -touchpad was not behaving properly. Touching it would cause multiple touch -events to fire off, phantom clicks would happen, and clicking the touchpad -buttons would actually move the mouse instead of clicking. In an attempt to -diagnose the problem, I set up the laptop in a way that I could swap the two -touchpads out and see what happened in a live-booted Linux distribution: - -<figure> - <a href="/img/live-testing-touchpad.jpg"><img - src="/img/live-testing-touchpad-thumb.jpg"/></a> - <figcaption>Live testing the new touchpad with a Linux distro booted off of - a USB stick.</figcaption> -</figure> - -It seemed that the touchpad was being correctly recognized in Ubuntu; it was -recognized as an Alps touchpad. However, no matter what I tried, the new -touchpad wouldn't behave properly where the original one worked just fine. I'm -assuming that it's something to do with an incompatibility between the touchpad -and the existing ribbon cable. I was only able to find one forum thread online -with people experiencing similar problems, with no solutions proposed. So, -unfortunately, I think I'll be returning this touchpad in a few days if I can't -find a solution. It's a shame I couldn't get it to work, but ultimately I don't -really mind the existing touchpad so it's not a big deal. - -_This is my twenty-fourth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/automating-publishing.md b/pages/blog/automating-publishing.md @@ -1,44 +0,0 @@ -## Automating the Publishing of Articles - -[//]: # "There was too much manual work involved in publishing things to my website so I decided to automate it. Read on to learn how." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2019-12-30 | - <b>Last Updated:</b> 2019-12-30 -</div> - -If you're seeing this, it means my automation script worked perfectly. - -There was too much manual work involved in publishing things to my website. - -In order to publish a blog post, guide, or project to my site I had to: - -* Write the RSS feed entry manually. -* Copy the RSS feed entry from the sitewide feed to the relevant other feed - (blog-, project-, or guide-specific feeds). -* Manually add an entry under the What's New heading on the [home page](/) - and delete the oldest entry. -* Manually add an entry under the relevant category page (i.e. [/blog](/blog), - /guides, or [/projects](/projects)). -* Manually compile and upload each of these pages. - -Since all of that is relatively easy to automate, I went ahead and wrote [a -script](https://git.sr.ht/~jbauer/paritybit.ca/tree/master/publish) to do all of -that for me. All I have to do now is call `./publish <type> <file>` and -everything listed above is done for me. - -Not only does this get rid of a lot of potential for error in the process, it -also makes it a lot easier for me to post things which will enable me to post -more frequently without having to worry about all the work that came along with -posting something new. - -The script took me about 3-4 hours to brainstorm, write, realise that I was -doing things inefficiently, look some stuff up on Stackoverflow, rewrite, -realise that I wanted it to do more than just make RSS feeds (which is all I -planned to automate at first), brainstorm some more, look some more stuff up on -Stackoverflow, write some more, and then test and tweak. diff --git a/pages/blog/book-review-the-mediocre-programmer.md b/pages/blog/book-review-the-mediocre-programmer.md @@ -1,62 +0,0 @@ -## Book Review: The Mediocre Programmer - -[//]: # "Reviewing the book The Mediocre Programmer by Craig Maloney." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-05-29 | - <b>Last Updated:</b> 2020-05-29 -</div> - -_The Mediocre Programmer_ by Craig Maloney was released this past week and can -be found at [themediocreprogrammer.com](http://themediocreprogrammer.com/). -It's about the journey of becoming a better programmer passing through being a -mediocre programmer and dealing with all that is associated with growing as a -developer. Unlike other self-help books or books that teach one how to be better -at their profession, this book is non-prescriptive and takes the reader on a -journey through the many aspects of and feelings associated with being a -mediocre programmer from an author with a well-established programming career. - -The book is available in HTML, as a PDF, or in EPUB format. I opted to print the -PDF version since I prefer reading physical copies of long texts; it's 114 pages -so it printed nicely out onto 15 pieces of paper (double sided, 4 pages per -side). I managed to finish the whole book in a single evening. I enjoyed the -personal nature of the book and the fact that it wasn't written in an, "I am a -super successful person, just do what I do to become like me," way. - -The book begins with a short introduction about what a mediocre programmer is -and what Maloney's motivation was for writing it. It goes on to discuss various -aspects of being a professional programmer such as how we learn, motivation to -learn and complete projects, how our success is measured, and the kinds of -feelings that professional programmers can have which can lead to burnout or -mental illness. A particularly important section is about asking for help in our -careers. Many times we will feel like asking for help is admitting defeat or -admitting to ourselves that we are somehow inferior, but Maloney discusses how -this isn't really the case and that seeking out help is one of the most -important things a programmer can do in times of difficulty. - -I am familiar with many of the things discussed throughout the book, but I still -found value in reading about the experiences of a programmer who has been in the -business a lot longer than I have. There is also a section dedicated to using a -strategy akin to Pomodoro timers as a way to ease oneself into starting to work -on projects, which I could relate to from my own experiences procrastinating -when I look at a large project and what must be done (I'm sure many of my fellow -university students can relate). - -In my opinion, this book is an invaluable read for younger developers and new -programmers. Those are the kinds of people who will benefit most from the wisdom -the book has to offer, although there is still value in following along with -Maloney's journey even if you are an experienced programmer. - -Also, Maloney was kind enough to release his book under the CC-BY-SA 4.0 -International License so, if you enjoyed reading the book, consider [donating to -him](https://liberapay.com/craigmaloney). - -_This is my thirty-third post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/btw-i-use-arch.md b/pages/blog/btw-i-use-arch.md @@ -1,70 +0,0 @@ -## BTW, I Use Arch - -[//]: # "Giving Artix Linux a shot to get away from systemd." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-08-29 | - <b>Last Updated:</b> 2020-08-29 -</div> - -Okay, the title isn't exactly 100% accurate; I'm actually using [Artix -Linux](https://artixlinux.org/), an Arch Linux derivative which offers a choice -regarding init systems (between OpenRC, runit, or r6). - -I originally wanted to try [Alpine Linux](https://www.alpinelinux.org) to get -away from systemd and move towards a smaller, simpler operating system. Artix -was suggested to me as an alternative operating system which also featured the -OpenRC init system and I decided to give it a shot after trying out Alpine but -finding its software availability to be a bit lacking. I think Artix provides a -good compromise between lean-ness and software availability with full access to -the Arch Linux package repositories as well as the AUR. If you're wondering why -I chose Artix instead of a Debian-based OS such as Devuan, it's because I have -a few friends also using Artix and they successfully peer-pressured me into -using it. - -To be honest, once the operating system is installed and my desktop environment -is set up, there isn't that much of a difference between Artix and Debian Sid -from the perspective of how the system feels to use. This is just about par for -the course for most Linux distributions though because major differences usually -lie under the hood in the form of different package management tools or OS -utilities. I didn't even have to tweak much to get my desktop environment -working the same as it does on Debian. - -Regarding what lies under the hood, I chose the OpenRC init system over the -other choices Artix offers mostly because it was the other init system I was -familiar with from [my time with -Gentoo](https://www.paritybit.ca/blog/my-beginnings-with-gentoo). OpenRC with -its parallel startup setting turned on feels just as fast as systemd, though I -didn't bother to take any empirical measurements. I also chose to install the -`opendoas` package so that I could use `doas` instead of `sudo` because it uses -slightly less RAM, is slightly faster to type, its configuration is way simpler, -oh... and the codebase appears to be ~2.5% the size of sudo's (from running -`sloccount` on their git repositories). Also of note is that, after a fresh -boot, my Artix install uses ~200MiB of RAM less than my Debian install. - -Pacman, while it has probably the worst syntax out of the contemporary package -managers, didn't give me any trouble after a brief review of the manual page, a -quick rundown from a friend, and the [package manager -Rosetta](https://wiki.archlinux.org/index.php/Pacman/Rosetta). I think I'm going -to have to make a bunch of aliases for commonly-used operations though. -Interestingly, it also feels like the fastest package manager I've tried; I can -say with confidence that it feels noticeably faster than zypper, dnf, apt, and -emerge. For accessing the AUR, I installed yay which I now use for regular -packages too since it just wraps pacman and uses the same syntax. - -The only issue I've come across running Artix instead of Debian is noticeably -worse battery life on my laptop. It's probably just that I have to play around -with some tlp settings or dig into some acpi-related things to fix this though. -Other than that, it's been excellent to use as an operating system and I'm -strongly considering switching all of my workstation machines over to it while -deploying new servers with Alpine Linux or OpenBSD. - -_This is my ninety-seventh post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100DaysToOffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/cat-v-considered-harmful.md b/pages/blog/cat-v-considered-harmful.md @@ -1,68 +0,0 @@ -## Cat -v Considered Harmful - -[//]: # "My thoughts after spending a long time looking through harmful.cat-v.org." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-05-08 | - <b>Last Updated:</b> 2020-05-08 -</div> - -I spent a long while today going through many of the articles on -[cat-v.org](http://harmful.cat-v.org/). Particularly, I spent a lot of time -going through each entry under _[All software -sucks](http://harmful.cat-v.org/software/)_. On that page is a table listing -software considered harmful alongside non-harmful alternatives. - -After having a cursory look through the table, I went on to read each page -discussing why each bit of harmful software is considered harmful and, for the -most part, there are valid criticisms and explanations given. In most of the -mentioned software categories, in fact, it's easy to see why these programs -would be considered harmful. For example, as much as GCC is a really popular -compiler, there is a ton of complexity behind its code. It is not at all a -simple piece of software. Though, frankly, I'm not experienced enough to know -how much complexity in a compiler is too much nor would I know what could be -changed in GCC to make it more simple. - -Despite most of the examples given making intuitive sense or being backed up -with some quotes by experienced programmers (Rob Pike, Theo de Raadt, and the -like), many of the "things considered harmful" seem to be entirely -opinion-based. Take the license section as an example: "GPL, LGPL, Apache -Software License, MPL, CC", is considered harmful where "ISC, MIT/X, BSD, CC0, -public domain" is not. This is clearly just the authors' opinion and preference -for permissive licenses which tend to be smaller and easier to read and -understand simply because they hardly impose any conditions. Yes, those larger -licenses are relatively harder for a layperson to understand, but hardly -impossible assuming one takes the time to read them. Not to mention the benefits -that copyleft licenses provide for preserving end-user freedom. - -Furthermore, for some of the pages specific to a piece of software, the only -discussion provided is a humorous chat log such as for the [GRUB -page](http://harmful.cat-v.org/software/GNU/GRUB/) or a simple "Q&A" such as for -[GNU Auto*hell](http://harmful.cat-v.org/software/GNU/auto-hell). For someone -such as myself, unfamiliar with the particular complexities underlying some of -this software, these pages aren't exactly helpful and don't do much to show how -the software is harmful. They do explicitly say: - -> **Note**: At the moment a detailed rationale is not provided for -most of this, so figuring out why some things are considered more or less -harmful than others is left as an exercise for the reader. Here is a hint: -complexity is the bane of all software, simplicity is the most important -quality, - -though, so I wasn't expecting everything to be plainly spelled out for me with -highly cogent arguments. - -On the whole, I agree with a lot of what is laid out in the explanations. In -general: complexity bad; simple good. It's the viewpoint that I had going in and -the examples definitely strengthened that opinion (I still don't particularly -like Go though). - -_This is my fourteenth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/choosing-a-self-hosted-git-service.md b/pages/blog/choosing-a-self-hosted-git-service.md @@ -215,8 +215,8 @@ sensibilities. ### My Choices <p class="note">I have since changed what I use to cgit. I outline why in a more -recent blog post: [Switching to -cgit](https://www.paritybit.ca/blog/switching-to-cgit)</p> +recent blog post: <a +href="https://www.paritybit.ca/blog/switching-to-cgit">Switching to cgit</a></p> When looking for a self-hosted git service, I was looking for a service that fulfilled the following criteria: diff --git a/pages/blog/clone-wars-finale.md b/pages/blog/clone-wars-finale.md @@ -1,38 +0,0 @@ -## Star Wars: The Clone Wars Finale - -[//]: # "My thoughts on the final story arc of the last season of Star Wars: The Clone Wars" - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-05-04 | - <b>Last Updated:</b> 2020-05-04 -</div> - -Today the final episode for _Star Wars: The Clone Wars_ was released. I had -begun watching it years ago before it was prematurely cancelled and then moved -off of Netflix and completely forgot about its existence until a family member -subscribed to Disney+ and gave me access to the account (I don't pay for any -streaming service myself). - -I have to say, the final story arc of _The Clone Wars_ is some of the best Star -Wars content Disney have ever made, and ranks among the original trilogy for -quality. The writing, pacing, characters, and animation are all fantastic and -draw you into the story a way that the sequel trilogy just wasn't able to do. I -don't want to give any spoilers in case you are interested in watching _The -Clone Wars_ but I will say that they tie the end of the series into _Revenge of -the Sith_ (Episode 3) in a way that makes the animated series feel like it fits -right in with the movies; it's very well done. The final episode marks the end -of an era, both in the Star Wars universe and in the franchise and, in my -opinion, it couldn't have been done better. - -I'm looking forward to seeing what Dave Filoni and Jon Favreau produce for the -Star Wars universe next; they have been doing a phenomenal job. - -_This is my tenth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/curating-my-blogroll.md b/pages/blog/curating-my-blogroll.md @@ -1,56 +0,0 @@ -## Curating My Blogroll - -[//]: # "My blogroll was way too large to not have every feed in my feed reader so I took the time to go through, trim off some defunct blogs, and add them all into my feed reader." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-07 | - <b>Last Updated:</b> 2020-06-07 -</div> - -_**Update**: Add bit about special <link> element._ - -I follow over 100 blogs which is far too many to have to manually visit every -time I want to see if there was new content. I'm not sure why I didn't do this -sooner, but today I went through the entire list and added as many blogs as I -could into my feed reader of choice (Newsboat) and took the opportunity to trim -some blogs which have shut down or which I no longer follow. - -The most challenging part of this was finding the feeds on some people's -websites. For those sites which had feeds, usually there was a button or link -which was easy to find on the homepage, at the bottom of the page, or via some -"about" link. However, I found that many people have feeds for their sites but -don't advertise them so I had to go searching for them manually. Basically, if I -couldn't find a link to a feed on the pages themselves, I searched for -`index.xml`, `feed`, `feed.xml`, `feed.rss`, `rss`, or `rss.xml` either in -the website's root directory, or the subdirectory containing the blog posts. - -If I couldn't find an RSS feed for a particular site, I added that site to the -["No RSS Feed Found" section](/links#no-rss-feed-found) of my blogroll. I will -send an email to the owners of each of those sites asking them if they will -consider adding an RSS feed to their site. If their answer is yes, I'll update -my blogroll; if not, I'll remove them from my blogroll because I don't really -have the time to manually visit a bunch of sites to check if there are new -posts. - -I've also created and uploaded an [OPML](https://en.wikipedia.org/wiki/OPML) -file which contains all of my subscriptions from Newsboat. This allows you to -download this file, import it into your feed reader, and have all of the blogs -and news sources I follow in your feed list. A link to this file can be found on -[my blogroll](/links#blogroll), and at -[www.paritybit.ca/blogroll.opml](https://www.paritybit.ca/blogroll.opml). - -A couple of final things I did was link `/feed.xml`, `/feed`, `/feed.rss`, and -`/index.xml` to my site's feed as these links seemed to be the _de facto_ -standard for where feeds can be easily found (I'm not sure if it's an actual -standard). I also added an HTML `<link>` element in the `<head>` as per [this -MDN article](https://developer.mozilla.org/en-US/docs/Archive/RSS/Getting_Started/Syndicating). - -_This is my thirty-eighth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/dnd-xp-system.md b/pages/blog/dnd-xp-system.md @@ -1,126 +0,0 @@ -## My Custom XP System for DnD - -[//]: # "I wasn't satisfied with the existing XP schemes for DnD, so I decided to create my own scheme with the goals of simplicity and rewarding creative gameplay in mind." - -[//]: # "main.min.css" - -[//]: # "Overview; Killing Enemies; sub:Example; Passing Ability Checks; sub:Examples; Conclusion" - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-02 | - <b>Last Updated:</b> 2020-06-02 -</div> - -_This is a different sort of post than I usually make, but here you go._ - -Playing Dungeons and Dragons with friends this past evening has made me realize -that there doesn't really exist an XP system with which I'm fully satisfied. -Either the system is too complicated, doesn't award XP for the things I want, or -awards XP too slowly. So, I came up with my own basic system: - -### Overview - -A player must reach 100 XP to level up to the next level. Upon levelling up, the -player's XP counter is reset to 0 and XP that went above 100 rolls over (e.g. if -a player receives XP such that they are now at 102 XP, they level up and now -have 2 XP). There is no increase in the amount of XP needed to level up; it is -always 100 XP per level. - -* XP is gained through: - * Killing enemies - * Passing ability checks - -Assuming ample opportunity is given for the players to participate in combat or -make ability checks, players should level up after two or three, 4-6 hour -sessions. - -### Killing Enemies - -XP is awarded per enemy killed. If an enemy escapes, the DM can either choose to -award a fraction of the XP depending on how much damage that creature sustained -or no XP. - -* 2 XP if the enemy's CR is less than half the party's level -* 5 XP if the enemy's CR is half the party's level or higher -* 15 XP if the enemy's CR is equal to the party's level or higher - -After combat, the total amount of XP earned is distributed to each member of the -party who was a part of the combat. Each player who participated in the combat -receives the same amount of XP. - -#### Example - -There is a party of four players. Two of the players are level 10 and two are -level 9 for an average level of 9.5. The players are in combat with two CR 3 -goblins and one CR 5 troll (a medium difficulty encounter). The party kills the -troll and one goblin, but the other goblin manages to escape with only a couple -HP remaining. - -The DM awards 5 XP for killing the troll, 2 XP for killing one of the goblins, -and 1 XP for injuring the goblin which escaped. Each member of the party -receives 8 XP. - -### Passing Ability Checks - -Awarding XP for passing ability checks allows the party to gain XP for various -non-combat actions such as successfully stealing something without being seen, -passing a sneak check, avoiding a dangerous trap, or skillfully impressing an -important character. - -* 1 XP for passing an easy (10 DC) check -* 2 XP for passing a medium (15 DC) check -* 3 XP for passing a hard (20 DC) check -* 4 XP for passing a very hard (25 DC) check -* 5 XP for passing a nearly impossible (30 DC) check - -It's up to the DM to decide when it is appropriate to award XP for passing an -ability check so players do not attempt to "farm XP" by attempting trivial or -nonsensical ability checks and so skill-heavy characters do not outpace the -other party members. If an action is unimportant to the plot or the character's -development (i.e. it's just a random thing the player decided to do for no -reason), then XP should not be awarded. Ideally, XP should only be awarded for -"pivotal" checks where there would be serious consequences to a failed check or -the success of a check is integral to the plot. - -If the ability check is made at disadvantage and is passed, the XP awarded -should be doubled. If players employ Working Together, all players who -participate should be rewarded half the XP amount, rounded up. - -#### Examples - -The party has been tasked with tracking a spy through the streets of a densely -packed city. A player wishes to attempt scaling a slippery wall to get a better -vantage point. This is a hard task and it can only be accomplished alone. If -the player succeeds, they can be awarded 3 XP. - -The party needs to subdue an irate man who has stolen a shield belonging to an -NPC member of the party. This man is fairly strong so this is a hard task. They -send in the two members of the party with the highest strength to handle the -man. Working together, the two players successfully force the man to the ground -and recover the shield, earning themselves 2 XP each. - -The party's thief was captured by the town guard and has been separated from the -rest of the party. As the rest of the party earn combat experience by attempting -to fight their way through the prison to free their comrade, the thief tries to -get creative. They attempt to pickpocket the jail door keys off of a passing -guard; a very hard thing to do. Should they succeed, they have the opportunity -to earn 4 XP and keep pace with the XP that the rest of the party is earning. - -### Conclusion - -From the above examples, you can see that the aim is to incentivize players to -work together and to incentivize them to attempt tasks that may otherwise seem -hard. It rewards creative play where players can feel that their characters are -becoming more skilled the more they use their character's abilities and ensures -that players level up in a timely fashion by awarding a fair amount of XP for -combat situations. This scheme also lets players who don't participate as much -in combat to catch up to other party members by performing non-combat tasks. - -Give it a shot and let me know what you think. I'll be tweaking this scheme -based on how it works out in campaigns I play and what other people say. - -_This is my thirty-fifth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/ethical-investing.md b/pages/blog/ethical-investing.md @@ -12,6 +12,9 @@ <b>Last Updated:</b> 2020-08-13 </div> +<p class="note">None of this is intended to be financial or investment +advice.</p> + The next step after [choosing an investment brokerage](https://www.paritybit.ca/blog/choosing-an-investment-brokerage) or bank is choosing where to put my money. Not only do I have to consider my diff --git a/pages/blog/generating-my-geek-code.md b/pages/blog/generating-my-geek-code.md @@ -30,8 +30,9 @@ My Geek Code (as of the time of writing) came out to: ``` -----BEGIN GEEK CODE BLOCK----- Version: 3.1 -GCS/TW/O d-(+) s:- a-- C++(+++) UL+++/++++ P+>+++ L+++>++++ E--- W--(++) N+ o? -K- w--- O? M-- V? PS++ PE-- Y++ PGP+ t++@ 5? X? R !tv b+ DI+@ D G e>++ h+ r y? +GCS/TW/O d-(+) s:- !a C++(+++) UL+++/++++ P+>+++ L+++>++++ E--- W--(++) N+ o? +K- w-- O? M+ V? PS++ PE-- Y++ PGP t++ 5? X? R !tv b++ D G- e>++ h +r++>+++ y? ------END GEEK CODE BLOCK------ ``` diff --git a/pages/blog/gomux-is-the-best-cli-matrix-client.md b/pages/blog/gomux-is-the-best-cli-matrix-client.md @@ -1,72 +0,0 @@ -## Gomuks is the Best CLI Matrix Client - -[//]: # "I recently tried the gomuks Matrix client and I am now using it as my desktop matrix client. Despite some minor issues, it seems to be the best option at the moment." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-09-24 | - <b>Last Updated:</b> 2020-09-24 -</div> - -I've been using Element (formerly Riot.im) on both desktop and mobile as my -Matrix messaging client since I started using Matrix but there's not doubt that -it's quite slow, bloated, and resource-hungry since it is written using -Electron. For that reason, I'm always on the lookout for better, faster, slimmer -clients. I [previously tried -weechat-matrix](https://www.paritybit.ca/blog/setting-up-weechat-again) but -found it to be too clunky and unpolished for me to continue using it over -Element but this new client, [gomuks](https://maunium.net/go/gomuks/), seems -like it's what I've been looking for. - -According to [the matrix.org page for this -client](https://matrix.org/docs/projects/client/gomuks), its maturity level is -Beta (on the scale of Alpha, Beta, Released) which matches my experience with it -so far; implements the major features that a matrix client should have for me to -deem it functional. As of writing this post, its [latest -release](https://github.com/tulir/gomuks/releases/) is version 0.2.0 from a -couple of weeks ago so it is still in active development. - -Right now, the client supports all of features a Matrix client should have -including encrypted chats, easy interaction with files, room management, message -redaction, replying, and editing, setting different nicknames for different -rooms, and desktop notifications. One of the biggest advantages this client has -over weechat-matrix is it's intuitive, easy-to-use file support. - -Interacting with files is incredibly easy with gomuks. You type `/upload -<filepath>` to upload a file to a chatroom, `/download <filepath>` to download a -file from a chatroom (you can select the file to download with the arrow keys), -and `/open` to open a file using `xdg-open` (which is very useful for -looking at images without needing to download them). Furthermore, there is -an option to render images in text right in the chat which can give you an idea -of what the image is before opening it. - -Matrix-specific customizations are available through the `/toggle` command when -you are connected to a Matrix server and these seem pretty comprehensive. The -client itself, however, is missing several important customization options. -There is currently a lack of customization for both theming/colours and -keybindings which isn't that big of a deal for me, but is something I would like -to see for the full-release of the client. - -The last issue I've noticed with the client at the moment is that text editing -is also a little bit odd. For example, the keybinding `Alt+Enter` was chosen -instead of `Shift+Enter` for entering in a newline, the `Delete`, `Home` and -`End` keys do not work to move around the text entry field, and -`Shift+Backspace` deletes the previous word instead of the more common -`Ctrl+Backspace`. These problems could all be fixed when keybinding -customizations are added though and I've gotten used to the way it works so it -doesn't bother me much. - -Overall, the client is in a really good position right now. It's usable, has -nearly all the features expected of a matrix client, and is much faster, -smoother, and less resource hungry than Element. Once these issues around -customization and the awkward keybindings get fixed, this client looks like it -might be the perfect matrix client. - -_This is my ninety-ninth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100DaysToOffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/housecleaning.md b/pages/blog/housecleaning.md @@ -1,38 +0,0 @@ -## Doing Some House Cleaning - -[//]: # "I've done a little bit of digital organizing and cleaning stuff up now that paritybit.ca has expanded a lot." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-04-07 | - <b>Last Updated:</b> 2021-01-25 -</div> - -The suite of sites under the paritybit.ca domain has been steadily growing as -I've been hosting and playing around with new things. I now have a wiki (which -has since been decomissioned), [a Pleroma -instance](https://pleroma.paritybit.ca), [a Matrix -server](https://matrix.paritybit.ca), [a git server](https://git.paritybit.ca) -and even a simple HTTP-based (for now) [file-sharing -server](https://ftp.paritybit.ca). - -In an attempt to unify things a little bit and to clean some stuff up, I've -decided to move all of the guides that were once hosted here on this website -over to the wiki. - -I've also gone ahead and removed every one of the RSS feeds except [the main -feed](https://www.paritybit.ca/feeds/sitewide-feed.xml). I no longer need to -maintain separate feeds for blogs, guides, and projects because guides are -handled by the wiki and I don't update the projects feed that much. You should -clean up those feeds from your newsreader if you are subscribed as they will now -return `404`s. - -Coming soon will be some additions to the home page of this site to showcase the -other services (similar to what is on the front page of the wiki). I'll also be -looking into auto-posting links to Mastodon for when I release a new blog post -as that can be easily integrated into my publishing script (that script has also -been simplified a lot now that I don't need to handle different feeds). diff --git a/pages/blog/how-i-keep-my-home-directory-clean.md b/pages/blog/how-i-keep-my-home-directory-clean.md @@ -9,9 +9,15 @@ <div class="byline"> <b>Written By:</b> Jake Bauer | <b>Posted:</b> 2020-06-28 | - <b>Last Updated:</b> 2020-06-29 + <b>Last Updated:</b> 2021-10-26 </div> +<p class="note">Note: I have stopped caring about keeping my home directory +clean. While it might be nice to do an <code>ls -a</code> and see hardly +anything, it just wasn't worth the continual effort to wrangle programs into +behaving. Not to mention, many programs I use are old enough that they predate +the XDG specification and therefore don't comply anyways.</p> + _**Update**: The name of the tool mentioned later in the post is [rehome](https://github.com/lpar/rehome). Also added a screenshot showing the current state of my home directory._ diff --git a/pages/blog/how-i-manage-my-dotfiles.md b/pages/blog/how-i-manage-my-dotfiles.md @@ -27,7 +27,7 @@ doing it that way. This is what's required to set it up: -```bash +```sh git init --bare $HOME/docs/proj/dotfiles alias config='git --git-dir=$HOME/docs/proj/dotfiles --work-tree=$HOME' config config --local status.showUntrackedFiles no @@ -35,14 +35,14 @@ config config --local status.showUntrackedFiles no And this is what needs to be done on a new machine to deploy my dotfiles: -```bash - git clone --bare https://git.paritybit.ca/~jbauer/dotfiles $HOME/docs/proj/dotfiles - rm ~/.bashrc ~/.profile - alias config='git --git-dir=$HOME/docs/proj/dotfiles --work-tree=$HOME' - config checkout - config config --local status.showUntrackedFiles no - config update-index --skip-worktree LICENSE README.md .gitignore - rm LICENSE README.md .gitignore +```sh +git clone --bare https://git.paritybit.ca/~jbauer/dotfiles $HOME/docs/proj/dotfiles +rm ~/.bashrc ~/.profile +alias config='git --git-dir=$HOME/docs/proj/dotfiles --work-tree=$HOME' +config checkout +config config --local status.showUntrackedFiles no +config update-index --skip-worktree LICENSE README.md .gitignore +rm LICENSE README.md .gitignore ``` I opted for this method over using another application like @@ -59,7 +59,7 @@ directory but, by using the `--skip-worktree` feature, I can write, add, commit, and then delete those files without git caring. For example, I would write the `README.md` file, then do: -```bash +```sh $ config add README.md $ config commit -m "Add README" $ rm README.md @@ -68,7 +68,7 @@ $ config update-index --skip-worktree README.md If I need to update any of those files, I can do something like: -```bash +```sh $ config update-index --no-skip-worktree README.md $ config checkout -- README.md ``` diff --git a/pages/blog/how-much-ram-is-enough.md b/pages/blog/how-much-ram-is-enough.md @@ -1,68 +0,0 @@ -## I Ran Out of RAM... Again - -[//]: # "I ran out of RAM yesterday. That is, I filled up all 16GB that I have installed in my computer and it became completely unresponsive to the point where I had to press the reset button. Technically, it's completely my fault that it happened." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-04-26 | - <b>Last Updated:</b> 2020-04-26 -</div> - -I ran out of RAM yesterday. That is, I filled up all 16GB that I have installed -in my computer and it became completely unresponsive to the point where I had to -press the reset button. Technically, it's completely my fault that it happened. - -I was running a very RAM-hungry program (a certain well-known game called -Minecraft) and I disabled the out-of-memory program killer that I use, earlyoom, -so that it wouldn't kill my game as I was playing it. The game uses about -10-12GB on its own due to being heavily modded which left little headroom before -earlyoom noticed and killed it for using too much memory. Although I'm able to -play the game while having programs like Riot and Firefox open at the same time, -my RAM utilization sits at a precarious 95%, as it was for most of last night. - -As I was playing though, this thought slowly faded into the back of my mind. -Then, I had the bright idea to watch a video in the background to distract me -while I was performing a few mindless in-game chores. I clicked on a link, the -tab opened, and everything locked up. I glanced at my status bar and saw the RAM -utilization indicator bar completely full; the number next to it read 99%. - -When I was installing my operating system and since I only have a 250GB drive, I -opted to forgo a swap partition thinking that I had enough RAM to spare and that -I'd much rather have the extra gigabytes available for storage. While doing my -regular tasks like browsing the internet, using IRC, email, news reader, and -chat clients, and listening to music, my RAM usage rarely climbs above 30%. -Usually, it's just games or really intensive compilations which use a lot of RAM -but it rarely goes higher than about 70%. On the other hand, however, there are -some games which love to eat RAM. Notably, heavily modded versions of Minecraft, -Rimworld, and Cities Skylines. - -Since I don't have swap, when I run out of RAM my computer locks up because it's -unable to swap the memory currently used by inactive programs out to disk which -means the active programs can't get the memory they need to continue working. -The OOM killer built into the Linux kernel is also very slow to act and -struggles to bring the system back into a usable state to the point where it's -much easier to perform a hard reset than to wait the tens of minutes required -hoping that my system will recover. Running a program like earlyoom or having a -swap file or a swap partition does prevent this from happening except that -running earlyoom wouldn't allow me to play Minecraft for very long before it -gets killed, I can't have a swap file since I'm running btrfs on the 4.19 kernel -(I run Debian stable and support for swap files did not come until kernel 5.0), -and I didn't configure my system with a swap partition when installing and it's -a royal pain in the butt to add one now with my encrypted LVM partition scheme. - -This series of events, which I have experienced at least half a dozen times now, -tempts me to get another 16GB of RAM just so I never have to worry about it -happening again. Is it worth it? Well… no, not really. For the work that I do, -it's kind of overkill to spend another $100-$120 on RAM which will go unused for -about 98% of the time I'm using my computer. Next time, I'll just configure my -system with swap and hopefully the available OOM killer implementations will be -a little more refined so that this rarely happens, if ever, again. - -_This is my second post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/how-to-create-an-rss-feed-for-your-blog-1.md b/pages/blog/how-to-create-an-rss-feed-for-your-blog-1.md @@ -1,124 +0,0 @@ -## How to Create an RSS Feed for Your Blog — 1 — Why? - -[//]: # "If you have a blog then you should be syndicating your posts through an RSS feed. This is part 1 in a series about why you should have an RSS feed and how to do it." - -[//]: # "main.min.css" - -[//]: # "Background; Accessibility; Ease of Use; Privacy and Security; Efficiency; Increasing Readership; Conclusion" - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-18 | - <b>Last Updated:</b> 2020-06-18 -</div> - -If you have a blog or run a website that posts content regularly, then you -should be syndicating your posts through an RSS feed. If you're not using a -platform such as Wordpress or Write.as which create them for you, then you'll -probably have to find a tool to do it or do it yourself. For this blog, I create -all of the RSS feed entries myself (though I have written a script that does it -for me when I publish a new blog post). This is the first post in a series of -posts which will cover the hows and whys of creating your own RSS feed. - -### Background - -Version 1.0 of RSS was released in December, 2000 and quickly grew in popularity -in tandem with the rest of the Internet. In 2002, RSS 2.0 was released and has -been the version in use for nearly two decades now. Atom feeds were created as a -competitor to RSS which supposedly has several advantages, but RSS 2.0 has -remained the dominant format on the Web thanks to its hand in making -podcasts possible. You can read more about [Atom -feeds](https://en.wikipedia.org/wiki/Atom_(Web_standard)) or [RSS -feeds](https://en.wikipedia.org/wiki/RSS) on Wikipedia. - -In recent times, many people have forgotten about RSS feeds as the Web has moved -away from a collection of individual sites onto conglomerate platforms such as -Facebook and Twitter. RSS feeds are great though; they're an easy way to improve -your website and one of the cornerstone technologies of the independent -Internet. Here are several really important reasons why you should have an RSS -feed for your site: - -1. Accessibility -2. Ease of Use -3. Privacy and Security -4. Efficiency -5. Increasing Readership - -### Accessibility - -The number one reason why you should have an RSS feed for your website is -because of accessibility. One of the advantages to using an RSS feed reader to -read the posted content on a website is that users can use whichever feed reader -program they wish and configure it however they wish. Although your website -should already be following the WCAG (Web Content Accessibility Guidelines), -providing an RSS feed would allow, for example, someone who uses a screen reader -to cut away all of the rest of the stuff on a website and focus on the content -or someone with poor eyesight to use a client with super high contrast—even -higher than what you may already have on your site. - -### Ease of Use - -For some, an RSS feed reader is easier to use and fits better into their -workflow than a Web browser. Nowadays, Web browsers are slow, bloated, -privacy-invading platforms which can be difficult to run for those with older -hardware (third-world countries are a thing). RSS feeds are just a single file -which is much easier for those on weaker hardware to work with. - -For someone like me, who tends to spend most of his time on the command line or -in text-based interfaces, a Web browser breaks from the keyboard-driven -environment that I love and, on top of that, checking every site manually is -tedious. Using a command-line RSS feed reader allows me to read articles and -updates from people without disturbing my workflow. I can also set up my reader -to display content just the way I like it (for me that's a large font with a -screen width of 72 characters). - -### Privacy and Security - -Unlike having someone sign up for your mailing list, using an RSS feed allows -someone to periodically download the feed and read it in their feed reader -without the bother of any other Web-related technologies like HTML, Javascript -or cookies. This means that the user doesn't have to worry about being tracked -by whatever invasive analytics platform you might be running on your site and -you can avoid having to put the work in to make sure that you are securely -storing and handling users' contact information because there's no contact -information to store. - -It's a win-win for both you and the user. Also, stop spying on your users. - -### Efficiency - -Viewing a website is expensive. Not necessarily in terms of money, but in terms -of its environmental impact. [Every byte that is sent over the Internet -contributes to global -warming](https://dannyvankooten.com/website-carbon-emissions/). If a user can -check for and read new posts on your website by downloading a simple, easily -cacheable file, you can not only reduce the environmental impact your site has -on the planet, but also potentially reduce monetary costs if you pay for the -amount of bandwidth your site uses. - -### Increasing Readership - -You might be surprised to hear this, but there are millions of people still -using RSS every day. Nowadays it's mostly through apps like Feedly, but the -underlying technology hasn't changed. All of the above reasons to have an RSS -feed culminate in your site being more convenient for your readers to read. The -more convenience and options you provide, the more people you will attract to -your platform. If the only option you have is an email newsletter, you might be -driving away hundreds or thousands of people who don't want to sign up for yet -another newsletter or are privacy-conscious. Not to mention, nobody wants to -have to check every single site they like manually every day for updates. - -### Conclusion - -I hope that's convinced you that you should have an RSS feed for your site. As -you'll see in the upcoming posts, it's not even that difficult to do. - -In the next post, I'll go over the basic structure that your feed should have as -well as some of the content posting decisions you will have to make. In the post -following that, I'll talk about automating updates to your feeds whenever you -publish a new blog post. - -_This is my forty-eighth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/how-to-create-an-rss-feed-for-your-blog-2.md b/pages/blog/how-to-create-an-rss-feed-for-your-blog-2.md @@ -1,149 +0,0 @@ -## How to Create an RSS Feed for Your Blog — 2 — The Basics - -[//]: # "If you have a blog then you should be syndicating your posts through an RSS feed. This is part 2 in a series about why you should have an RSS feed and how to do it." - -[//]: # "main.min.css" - -[//]: # "Beginning; The Basic Format of a Post; How to Link to Your Feed; Conclusion" - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-19 | - <b>Last Updated:</b> 2020-06-19 -</div> - -This is the second part in a series about creating an RSS feed for your website. -[Click here to read the first -part](https://www.paritybit.ca/blog/how-to-create-an-rss-feed-for-your-blog-1) -about why you should have an RSS feed if you don't already have one. In this -part, I'll be describing the basics of creating an RSS feed for your site, what -should it include, how to let people know about it, and how you might want to -syndicate content through it. - -### Beginning - -RSS is written in XML. Therefore, it's a file composed of several tags with -special meaning. The basic structure of an RSS file looks as follows: - -```xml -<?xml version="1.0" encoding="utf-8"?> -<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> - <channel> - <atom:link href="https://example.com/feed.xml" - rel="self" type="application/rss+xml" /> - <title></title> - <link></link> - <description></description> - [ ... ITEMS GO HERE ... ] - </channel> -</rss> -``` - -The first line is a bit of boilerplate which identifies this file as using -version 1 of XML and defines the text encoding that the file uses. - -The next line is a bit of boilerplate which identifies the version of RSS we are -using and "imports" the Atom namespace which allows us to use Atom tags in our -RSS feed. - -The `<channel>` tag is a required bit of boilerplate and there can be only one -per RSS 2.0 file. It encapsulates items and the feed metadata. - -According to -[rssboard.org](https://rssboard.org/rss-profile#namespace-elements-aton), having -an `atom:link` element, as seen on the next line, is highly recommended because -it makes the feed more portable, self-contained, and easier to cache. The URL -specified by the `href` attribute should point to the location of your feed on -the Internet. - -Inside the `<channel>` tag, there must be at least a `<title>` tag containing -the title of your feed (e.g. "example.com's Blog"), a `<link>` tag containing a -link to the site that the feed is for (e.g. `https://www.example.com`), and a -`<description>` tag with a description of the feed (e.g. "The RSS feed for -example.com"). - -After the final required channel element, `<item>` tags can be used to define -individual entries in the RSS feed. - -### The Basic Format of a Post - -Posts are fairly simple to format. They are defined in `<item>` tags which -generally look like this: - -```xml -<item> - <title></title> - <link></link> - <pubDate></pubDate> - <description></description> -</item> -``` - -Most of the tags are straightforward. `<title>` refers to the title of the post -and is what will show up when someone is looking through a list of all items in -the feed, `<link>` is a link to the post on the Internet, `<pubDate>` contains -the date and time which the post was published and should look something like -`Thu, 18 Jun 2020 20:01:46 -0400`, and `<description>` contains either the full -content of the post, or just a description (if you choose to use Atom syntax, -there are separate `<summary>` and `<content>` tags). - -All of those tags are technically optional in the `<item>` tag. In fact, an -`<item>` tag is technically allowed to contain no elements at all so you're free -to pick and choose which bits of information you wish to include. A complete -list of tags and their uses is linked in the Conclusion section of this post. - -Regarding the `<description>` tag, much of the accessibility and ease-of-use -benefits of an RSS feed are realized when the `<description>` contains the full -text of the post. This allows someone to read your posts in their feed reader -which means they don't have to open a Web browser just to get the full version. -It is highly recommended (by me, and many other folks on the internet) to -include the full text of your posts in the `<description>` tag. - -In order to include HTML text in the `<description>` tag, you must either -convert HTML markup to HTML entities (e.g. `&lt;`, `&gt;`), or enclose the -content of the description in a CDATA section which will look like this: - -```xml -<description><![CDATA[<h2>My very interesting post</h2><p>This post contains <a -href="https://www.example.com">a link</a>.]]></description> -``` - -I personally use the CDATA method, as it allows me to easily copy and paste the -HTML of my posts into the `<description>` tags. - -### How to Link to Your Feed - -You may have seen the ubiquitous RSS Icon <img src="/img/feed-icon.png" -width="15" height="15" alt="An image of the RSS Icon"/> around the Web. Its use -is so pervasive that it's become like the floppy disk icon but for RSS feeds. -Make sure that you prominently feature either this icon (or something like it) -where people go to read your blogs, or provide a prominent link to where users -can find your feed. For example, I have the icon on both [my home page](/) and -[my blog page](/blog). - -Another standard that you should incorporate into your site is the use of a -`<link>` element in the `<head>` of your HTML files. It's a standard way to tell -the user's Web browser that an RSS feed is available for this site and where to -find it. The element should look something like this: - -```html -<link rel="alternate" type="application/rss+xml" title="RSS feed" - href="https://www.example.com/feed.xml"> -``` - -### Conclusion - -As you can see, RSS really isn't that complicated. You can get up and running -with a feed for your site in less than a half-hour. It's not even that hard to -write it by hand, though that will get tedious over time. In the next post, I'll -talk about how I automate updates to my RSS feed and show you that it's also -really simple to automate updating the feed. - -To learn more about available tags and what is and is not encouraged in RSS -feeds, see the [RSS Best Practices -Profile](https://www.rssboard.org/rss-profile). - -_This is my forty-ninth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/how-to-create-an-rss-feed-for-your-blog-3.md b/pages/blog/how-to-create-an-rss-feed-for-your-blog-3.md @@ -1,107 +0,0 @@ -## How to Create an RSS Feed for Your Blog — 3 — Automating Updates - -[//]: # "If you have a blog then you should be syndicating your posts through an RSS feed. This is part 3 in a series about why you should have an RSS feed and how to do it." - -[//]: # "main.min.css" - -[//]: # "The General Approach; Conclusion" - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-20 | - <b>Last Updated:</b> 2020-06-20 -</div> - -This is the third part in a series about creating an RSS feed for your website. -[Click here to read the first -part](https://www.paritybit.ca/blog/how-to-create-an-rss-feed-for-your-blog-1) -about why you should have an RSS feed if you don't already have one and [click -here to read the second part](https://www.paritybit.ca/blog/how-to-create-an-rss-feed-for-your-blog-2) about writing a basic feed. In this part, I'll be talking a bit about automating updates to your feed and showing you how I do it. - -### The General Approach - -Once you know what sort of elements you want your feed items to have (e.g. -`<author>`, `<link>`, etc), you can fairly easily script updates to your feed. -Unfortunately, I can't describe exactly how you should do this since it would -differ depending on what operating system you're using and what tools you have -available. If you can leverage something like a static site generator to -generate your feeds for you, then this article is probably not going to be of -much help to you. - -To keep my feed up to date and to generate `<item>`s, I have a POSIX shell -script that I use to publish my posts. You can [view the publish -script](https://git.sr.ht/~jbauer/paritybit.ca/tree/master/http/publish) in its -entirety online, but I've extracted just the bit which updates my feed and -pasted it below: - -```bash -create_rss_entry() -{ - print_info_msg "Creating RSS entry" - - # Opening tag - rssEntry="${rssEntry}<item>" - - # Set <title> - rssEntry="${rssEntry} - <title>$pageTitle</title>" - - # Set <link> and <guid> - rssEntry="${rssEntry} - <link>$baseURL/$fileName</link>" - rssEntry="${rssEntry} - <guid>$baseURL/$fileName</guid>" - - # Set pubDate - rssEntry="${rssEntry} - <pubDate>$date</pubDate>" - - # Fill out content - pageContent=$(cat build/blog/"$fileName"-content.html) - rssEntry="${rssEntry} - <description><![CDATA[$pageContent]]></description>" - - # Close the entry - rssEntry="${rssEntry} - </item>" -} - -update_rss_feed() -{ - print_info_msg "Updating RSS feed" - mv "$mainFeed" "$mainFeed.bak" - head -n 8 "$mainFeed.bak" > "$mainFeed" - echo "$rssEntry" >> "$mainFeed" - tail -n +9 "$mainFeed.bak" >> "$mainFeed" -} -``` - -It's actually fairly easy to generate feed entries through a simple script such -as this one, and the concepts used above could be easily translated into other -scripting languages like Perl or Python if you're more comfortable using those -languages. - -I have the benefit that [the static site generator I -use](https://git.sr.ht/~jbauer/paritybit.ca/tree/master/http/compile) outputs the -HTML of just the post—no HTML `<head>` or `<body>` tags included—as an -intermediate step in the process of compiling a page from Markdown to HTML. This -allows me to easily include the text of the post in the `<description>` tags, -but it would be fairly easy to extract just the HTML inside the `<main>` tag of -your HTML page, should you not have a site generator which does something like -this. - -### Conclusion - -This concludes my simple, 3-part guide on creating an RSS feed for your own -website or blog. It's not very difficult to do and it provides numerous benefits -for your readers. If the process described in this mini-series seems like too -much work or too complicated, there is numerous feed generation software -available online. All that matters is that you create a feed for your site. - -In the future, I'll be looking more into Atom feeds and a series about them may -be coming soon. - -_This is my fiftieth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/how-to-not-make-an-ass-of-yourself-internet-discussions.md b/pages/blog/how-to-not-make-an-ass-of-yourself-internet-discussions.md @@ -1,67 +0,0 @@ -## How to Not Make an Ass of Yourself in Online Discussions - -[//]: # "Here are three rules to not making an ass of yourself when having online or in-person discussions." - -[//]: # "main.min.css" - -[//]: # "Have Sources; Be Respectful; Be Aware of Logical Fallacies; Conclusion" - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-08-08 | - <b>Last Updated:</b> 2020-08-08 -</div> - -Here are three rules to not making an ass of yourself when having online or -in-person discussions. - -### Have Sources - -If you're going to make a claim, any claim, be prepared to back it up with -sources. If you're going to state a fact, you should not only be prepared to -share your sources if asked, but you should probably just go ahead and put the -sources right next to the claim you're making. - -No, "just look it up, you'll see," or "it's common sense," are not valid -sources. In particular, don't rely on someone "just getting it." You might be -surprised at how rarely someone "just gets" what you have to say if you're not -willing to back it up with sources or at least logical reasoning. - -If you're going to make a claim: Provide :clap: Your :clap: Sources :clap: - -### Be Respectful - -Look, people are going to disagree with you. It's normal for someone not to -instantly agree with everything you have to say, but if you're the kind of -person who becomes hostile and tells someone to "go kill themselves" or -something just because they don't agree with you, you're part of the problem. - -It's understandable to be frustrated when people can't see what you mean or -don't want to listen to you, but you do yourself and your ideas a disservice -when you become hostile. If you feel like lashing out, or someone is being -disrespectful to you, walk away from the discussion. Not only is it not worth -it, but people are going to eventually stop listening to you. - -### Be Aware of Logical Fallacies - -Check out this list of [Formal -Fallacies](https://en.wikipedia.org/wiki/Formal_fallacy) and [Informal -Fallacies](https://en.wikipedia.org/wiki/Fallacy#Informal_fallacy) if you really -want to start having better, more well-reasoned discussions. - -Be aware of fallacies both you and your opposition are making. Not only to be -able to call out fallacies when they use them, but also to avoid making stupid -arguments by using them yourself. - -### Conclusion - -So there you go, three simple rules to not making an ass of yourself when having -discussions on the Internet (or in real life). If you do break one of these -rules, don't be afraid to apologize. It's much better to own up to a mistake, -learn, and grow from it than to be one of those people so stuck up you get lost -in bad arguments and poor reasoning just to be right. - -_This is my eighty-eighth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/i-got-more-ram.md b/pages/blog/i-got-more-ram.md @@ -1,77 +0,0 @@ -## I Got More RAM! - -[//]: # "A few days ago, I posted about how I would sometimes run out of RAM while playing heavily modded video games like Minecraft but I think I've solved that problem with an extra 8GB of RAM." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-04-30 | - <b>Last Updated:</b> 2020-04-30 -</div> - -A few days ago, I posted about how I would [sometimes run out of RAM while -playing heavily modded video -games](https://www.paritybit.ca/blog/how-much-ram-is-enough) like Minecraft and -how this would cause my computer to completely lock up, requiring a full -restart. - -Well, some time ago I built and upgraded a couple of computers for a friend and -they gave me their old set of 2x4GB _G.Skill Ripjaws 4_ DIMMs since they didn't -need them anymore and as thanks for helping them. I already have 2x8GB 3200MHz -_G.Skill Ripjaws V_ DIMMs in my computer which I got to run with my _Ryzen 5 -1600_ at 2933MHz; first generation Ryzen is quite finicky when it comes to -getting some memory to run at higher clock speeds and the XMP profile didn't -work. Usually, you either need to choose RAM that your motherboard vendor has -tested and confirmed to work at certain speeds, or you need to spend some time -tinkering to get the best possible results. - -When I first got this RAM, I tried putting it in my computer but was only able -to get it to run stably at a really low speed, something like one step above -2133MHz. I wasn't willing to make that sacrifice for what I thought at the time -was an unnecessary increase in RAM. However, with me constantly running up -against my computers limits, I decided to give it another go. - -I first tried keeping my settings the same and plugging in the two new modules -into the two available slots on my motherboard. As expected, this failed to -boot. Then, I tried a configuration where the two smaller capacity DIMMs were in -the primary memory slots (A2 and B2) and were the only memory modules in the -system. This, surprisingly, worked without any problems; the modules were -running at 2933MHz and I had a total of 8GB of RAM. - -Then, I reset my memory settings and I put the 16GB modules in the remaining -slots (A1 and B1). The computer booted fine, with 24GB of RAM running at a stock -speed of 2133MHz. Slowly, I increased the speed and upped the voltage until my -motherboard threw a tantrum, beeped loudly at me, and reset my settings. I -landed on 2866MHz at 1.25V but there was an instance where the motherboard -failed to boot, but tried again and succeeded which made me up the voltage to -1.35V hoping that it was just a voltage problem. - -So, as I am writing this, I have 24GB of RAM running at 2866MHz at 1.35V. Slots -A2 and B2 are the _Ripjaws 4_ 4GB DIMMs and slots A1 and B1 are the _Ripjaws V_ -8GB DIMMs. I ran a few stress tests using `stress` and did a memory benchmark -and things looked okay. Except that Firefox tabs keep crashing… and now the -`apt` module in polybar is reporting "a corrupt package file or wrong hash". -Hmm… - -Okay, I'm back! I dropped the speed down to 2800MHz at 1.35V and things seem to -be running stable now. I tried dropping the voltage as well to reduce power -consumption and heat generation but anything below 1.35V was not stable either. - -Despite running the RAM 133MHz slower, there is not a noticeable difference in -the responsiveness of my computer or the performance of my games. Then again, -even if there's something like a 5FPS drop in games, it's worth it for the peace -of mind of not running into OOM situations. I'll see in the coming days if the -current speed is causing instabilities and if I'll have to drop it down even -further (the next lowest mark is 2733MHz) but, for now, I'm just enjoying my -extra 8GB of RAM. - -(If you're wondering, I arrived at a maximum voltage of 1.35V because that's the -voltage the XMP profile set and I didn't want to risk going higher than that.) - -_This is my sixth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/i-like-perl.md b/pages/blog/i-like-perl.md @@ -1,67 +0,0 @@ -## I Like Perl - -[//]: # "Perl gets a lot of heat on the Internet, especially when compared to 'modern' languages. I, however, actually really like perl." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-05-27 | - <b>Last Updated:</b> 2020-05-27 -</div> - -There. I said it. - -I don't have years of experience writing Perl, but what I've seen and done so -far makes me like it a lot when I compare it to other languages such as Python. -[The Perl documentation](https://perldoc.perl.org/) is really good, there are a -ton of useful tutorials online since it has been around for so long, I like its -package management (mostly the fact that nearly everything I want is in my -distro's standard repos), there are a ton of high-quality modules available, and -I really like its syntax. - -The official Perl documentation has been the most useful resource as I've been -learning and using the language. The [Perl -tutorials](https://learn.perl.org/tutorials/) also got me up and running really -quickly and explained things clearly. Whenever I have a question about something -in Perl, I can typically find the answer really quickly using the official -documentation or code samples online. - -Perl also has the long-standing CPAN (Comprehensive Perl Archive Network) which -is a repository of Perl modules similar to PyPi or npm. Due to how long Perl has -been around, there are a bunch of high-quality modules available. It also -doesn't have the same problems as npm with things like [malware being -uploaded](https://blog.npmjs.org/post/163723642530/crossenv-malware-on-the-npm-registry), -and it feels easier to use than PyPi. - -I love the fact that Perl uses semi-colons (`;`) and braces (`{}`) unlike Python -which relies on whitespace for differentiating indented code blocks and lines of -code. I'm also really fond of the simple ways to do things in Perl such as -killing the script when something doesn't work with `or die`, and outputting to -stderr with `warn`. - -There's also this indescribable feeling of joy I get whenever I program in Perl -(and, by extension, in shell script). The freedom that I have to solve a -problem and the ability to do it in so many different ways engages my brain in -ways that other languages like Python don't. Perl is still a true-to-its-name -scripting language, and the fact that its available on just about every -platform means that scripts written in Perl are usually portable by default. - -Perl has a reputation for being a write-only language because of the number of -scripts which use esoteric, hard to read, symbol-based syntax. Perl doesn't have -to be written this way though, it simply allows one to do it because Perl -doesn't impose strict "one way to do things" rules like Python does. Clean, -readable Perl can be and is written fairly easily. Using `use strict;` and `use -warnings;` as well as tools like `Perl::Critic` and `Perl::Tidy` also help one -to write clean, readable code. - -Python may be better suited to building larger applications now, but Perl is -still really good for scripts, simpler applications, and is, in my opinion, the -gold standard for advanced text processing. - -_This is my thirty-first post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/i-was-wrong.md b/pages/blog/i-was-wrong.md @@ -1,40 +0,0 @@ -## I Was Wrong - -[//]: # "I was wrong in my last blog post, and I wanted to draw attention to it for those who read that post without the new updates and redactions." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-07-25 | - <b>Last Updated:</b> 2020-07-25 -</div> - -Yesterday I made a post about how I was switching away from St to Alacritty. I -also took the opportunity to talk about the degrees of separation a work has -from its creator such that (if the creator were to do something bad, would the -work still be considered acceptable to enjoy or use?) because some allegations -against the Suckless project made me reconsider using their software. - -Before continuing, if you haven't read the [updates to yesterday's -post](https://www.paritybit.ca//blog/switching-to-alacritty.html) you should go -do that now. - -The insinuation that the Suckless folks were involved in neo-nazi behaviour was -ultimately founded on very circumstantial evidence and I was wrong to jump to -the conclusion that they were without trying harder to seek out responses from -Suckless folk themselves. The discussion on the Fediverse alerted me to this, -and I realized that the position I held was founded on weak ground and I was no -longer even remotely confident that I was right. - -So, even though I updated the previous post, I wanted to write this one in case -anyone read the previous article without seeing the updates and redactions. I -also think it's important to publicly admit when one is wrong; it's behaviour -I like to see in others and I must practice what I preach, as it were. - -_This is my eightieth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/improving-my-blog-post-publishing-script.md b/pages/blog/improving-my-blog-post-publishing-script.md @@ -1,63 +0,0 @@ -## Improving My Blog Post Publishing Script - -[//]: # "Like I previously did for my website compilation script, today I rewrote the script I use to publish posts to my website. It's been made more portable, more maintainable, and cleaner. It also led to improvements in my compilation script." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-11 | - <b>Last Updated:</b> 2020-06-11 -</div> - -Like I [previously did to my website compilation -script](https://www.paritybit.ca/blog/rewriting-my-static-site-generator), today -I rewrote the script I use to publish posts to my website and syndicate those -posts to Mastodon. It was about time since that script was a long list of -commands with no functions, few clear variables, and written in Bash instead of -POSIX shell code. - -Thanks to the work I did for my compilation script, I could copy much of the -structure and some functions over to the new publish script. The lessons I -learned in making the compilation script portable also meant that I already had -the skills and knowledge necessary to make the publish script portable with -little effort. I've tested the publish script on FreeBSD as well as Linux and it -seems to work without any issues. For the most part, since I only wanted to -clean up and organize the script and didn't want to change its behaviour, I -could just copy and paste most of what I already had in the script into -functions with small tweaks here and there. - -The refactored version of the script weighs in at 7070 bytes, 267 lines, and 183 -source lines of code as of the time of writing. This is in comparison to the -previous iteration of the script which weighed in at 4543 bytes, 181 lines, and -106 source lines of code. The new script is definitely larger, but also way -more maintainable and portable. - -As a consequence of this rewrite, I also noticed some undesirable behaviour: -since `publish` calls `compile`, if auto-uploading was enabled in `compile`, the -markdown files changed by `publish` would be uploaded twice. To solve this, and -to make `compile` easier to use in general, I added argument parsing and a few -command line options to the `compile` script. Now that script includes command -line switches to print brief help text and toggle strict markdown compilation -and auto uploading. - -Another addition I made was to include the text of the `<meta name=description>` -tag in my Mastodon status updates. Before I used to just post "New Blog Post:" -with the title of the post and a URL, but now a quick summary of the post will -also be included in the status updates which provides extra context and makes it -easier for people to decide if they care to read the post or not. - -You can [view the updated version of the -script](https://git.sr.ht/~jbauer/paritybit.ca/tree/master/http/publish) in the -repository for this website. It's portable between operating systems but, unlike -`compile`, it wasn't really written for other people to use for their sites. -Therefore, if you wish to adapt it for your own site, there are a few changes -you'll have to make and you should go through the entire file and make sure -things like hard-coded paths and such are set for your environment. - -_This is my forty-second post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/interesting-things-for-today.md b/pages/blog/interesting-things-for-today.md @@ -1,30 +0,0 @@ -## Some Interesting Things For Today - -[//]: # "I don't have anything particularly interesting to talk about today so here are a few links to some interesting things I've seen around the internet recently..." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-04-29 | - <b>Last Updated:</b> 2020-04-29 -</div> - -I don't have anything particularly interesting to talk about today so here are a -few links to some interesting things I've seen around the internet recently: - -* [Notes on a Nightmare #6: Against Newspapers](https://www.currentaffairs.org/2020/04/notes-on-a-nightmare-6-against-newspapers) -* [7 Years at Mozilla](https://j.vehent.org/blog/index.php?post/2020/04/28/7-years-at-Mozilla) -* [True Descriptions of Languages](https://old.reddit.com/r/ProgrammerHumor/comments/4mo21b/true_descriptions_of_languages/) -* [Atomic Shrimp YouTube Channel](https://www.youtube.com/user/AtomicShrimp) -* [I Took A COBOL Course and it Wasn't the Worst](https://www.hackernoon.com/i-took-a-cobol-course-and-it-wasnt-the-worst-z1ba3yrp) -* [The First Two Statements of Your Bash Script Should Be...](https://ashishb.net/all/the-first-two-statements-of-your-bash-script-should-be/) - -Stay safe. - -_This is my fifth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/it-doesnt-have-to-be-perfect.md b/pages/blog/it-doesnt-have-to-be-perfect.md @@ -1,36 +0,0 @@ -## It Doesn't Have to Be Perfect - -[//]: # "The software you create doesn't have to be perfect, it just matters that you get it out there..." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-05-31 | - <b>Last Updated:</b> 2020-05-31 -</div> - -I've been putting off working on Gopherizer, the script to convert an HTML file -to Gopher-compatible syntax, for a couple days now. I think the main reason is -that I feel like I'm unfamiliar with how to solve the problem and don't know -where to begin. I'm also worried about writing a script, having it work, but -then it being a mess of spaghetti code which I wouldn't want to release to the -public (since I actually intend for others to use this). - -Really though, if I don't start working on it, I'm never going to figure out how -to solve the problem. If I don't bother to program it, nobody can even use it -anyways. Procrastinating on it isn't going to solve those problems or ease my -concerns. Instead, I should just get stuck in and write. If I try doing things -one way and that doesn't work out, then I can just try different things. If the -code is messy or inefficient, that can be improved later on by either myself or -others. - -There really is no point procrastinating. It doesn't have to be perfect. I -should just do it. - -_This is my thirty-fourth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/logo-redesign.md b/pages/blog/logo-redesign.md @@ -1,81 +0,0 @@ -## Redesigning My Website's Logo - -[//]: # "I got tired of the way my old logo looked so when my website redesign was complete I endeavoured to completely redesign my logo. I wanted a logo that was simple and clean looking..." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-02-28 | - <b>Last Updated:</b> 2020-02-28 -</div> - -I got tired of the way my old logo looked so when my website redesign was -complete I endeavoured to completely redesign my logo. I wanted a logo that was -simple and clean looking but also supported being extended through adding -different symbols which represent whichever paritybit site one is visiting. I -also wanted it to be simple and clear enough that it could be recognizable at -many different sizes which is important for a logo which will also be used as a -favicon. A simple logo is also easier to print on mugs and t-shirts ;) - -I used [Inkscape](https://inkscape.org/) to create my logo. Inkscape is a -cross-platform, FLOSS vector graphics editor which I found to be intuitive to -use. It was important that the master copy of my logo be in SVG format so that -it can be scaled to many sizes without becoming pixellated. - -After some work, trials, and revisions, I arrived at the following base logo -design: -<figure> - <a href="/img/logo-256.png"><img src="/img/logo-256.png" - alt="The new logo's base design."/></a> -</figure> -Compare that to the old logo: -<figure> - <a href="/img/old-logo.png"><img src="/img/old-logo.png" - alt="The old paritybit.ca logo."/></a> -</figure> -I liked the colour scheme from my old logo so I decided to keep that. The yellow -circle part of the base design is the spot where I put symbols or emblems to -differentiate one paritybit.ca site or service from another. Take a look below -at the logos for this website and [git.paritybit.ca](https://git.paritybit.ca) -respectively: -<figure> - <a href="/img/logo-main-256.png"><img src="/img/logo-main-256.png" - alt="The new logo design for this website."/></a> -</figure> -<figure> - <a href="/img/logo-git-256.png"><img src="/img/logo-git-256.png" - alt="The new logo design for git.paritybit.ca."/></a> -</figure> -It took me a long time to decide on an appropriate symbol to represent my -website as a whole. I tried some designs related to parity bits similar to my -old logo but none of them felt right. While doing something completely -unrelated, the [glider emblem](http://www.catb.org/hacker-emblem/faqs.html) -popped into my mind and I immediately felt that it would be the perfect symbol -to incorporate into my site's logo. I feel this "hacker emblem" represents the -general values that I want this site to encourage and promote. Particularly, the -values of collaboration and openness. - -In addition, this logo doesn't just represent paritybit.ca; I also use the logo -with the glider as my profile picture across the Internet. It's become a -personal emblem that represents me _and_ my website. - -Luckily, coming up with a design for the git.paritybit.ca logo was much easier. -The licensing information of the Git Logo and the place from where I obtained it -are all detailed in the README of the [paritybit.ca git -repository](https://git.sr.ht/~jbauer/paritybit.ca) -([mirror](https://git.paritybit.ca/paritybit.ca)). The SVG files for these logos -are also in the repository under the `build/` directory. - -Finally, in order to make sure that my logo looked good on every platform, I -used a service called [Real Favicon -Generator](https://realfavicongenerator.net/) which takes a logo and generates -the required files, sizes, and formats to make the image appear properly on -every platform. This way, my logo will look good in the browser, on the home -screen of an Android or iOS phone, and even on a MacBook Pro's touch bar. I -highly recommend this service for checking and generating favicons for every -platform. It saved a lot of manual work. - -Happy hacking! diff --git a/pages/blog/machine-hostnames.md b/pages/blog/machine-hostnames.md @@ -1,48 +0,0 @@ -## Machine Hostnames - -[//]: # "How I name my various computers and VMs." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-07-12 | - <b>Last Updated:</b> 2020-07-12 -</div> - -Some sysadmins choose to name their machines using strict alphanumeric schemes -which contain information like operating system, service, number, or location. -Others choose to give their machines pet-like names which follow a certain theme -or mean something to them. - -I am of the latter camp since I don't have many machines and my environment -isn't complex enough that I have to worry about losing track of which machine is -which. I tend to name my machines after elements of the Greek Underworld -mythology because it's cool. Below is a table of hostnames that belong to my -currently-running machines: - -<table> <thead> -<tr><th>Name</th> <th>Description</th> <th>Current Use</th></tr> -</thead> </tbody> -<tr><td>Acheron</td> <td>River of pain</td> <td>Router/Firewall</td></tr> -<tr><td>Lethe</td> <td>River of forgetfullness</td> <td>Git server</td></tr> -<tr><td>Oceanus</td> <td>River that encircles the world, marks edge of Underworld</td> <td>Dell Venue Tablet</td></tr> -<tr><td>Curae</td> <td>Anxiety</td> <td>Matrix Server</td></tr> -<tr><td>Geras</td> <td>Old Age</td> <td>Thinkpad T420s</td></tr> -<tr><td>Eris</td> <td>Discord</td> <td>Mastodon Instance</td></tr> -<tr><td>Charon</td> <td>The ferryman of the dead</td> <td>Nginx Web Server/Reverse Proxy</td></tr> -<tr><td>Cerberus</td> <td>Guardian of the gates to the Underworld</td> <td>Proxmox VE</td></tr> -<tr><td>Minos</td> <td>Judge of the final vote</td> <td>Monitoring Server</td></tr> -<tr><td>Hades</td> <td>God of the Underworld</td> <td>Desktop Computer</td></tr> -<tr><td>Tartarus</td> <td>Pits of oblivion, dungeon of torment and suffering</td> <td>Mail Server</td></tr> -</tbody> </table> - -This used to be a page on my wiki and will now become part of my [Uses](/uses) -page. - -_This is my sixty-seventh post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/making-my-site-easier-to-read.md b/pages/blog/making-my-site-easier-to-read.md @@ -1,55 +0,0 @@ -## Making My Site Easier to Read - -[//]: # "Kev Quirk recently posted an article about improving his website's design which sparked me to review my own site's typography and design." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-12 | - <b>Last Updated:</b> 2020-06-24 -</div> - -Kev Quirk recently posted an [article about improving his website's -design](https://kevq.uk/whats-in-a-font-researching-website-typography/) which -sparked me to review my own site's typography and design. During my [previous -site redesign](https://www.paritybit.ca/blog/website-redesign), I tried to make -sure that things were as readable as possible but it never hurts to review -things. There may be something I like more now or something I missed the first -time. - -There were a few things in his article which caught my eye and made me -reconsider if I was doing all I could regarding typography. For one, I had my -line height set at `1.4em` which I've lowered to `1.3em` and I also increased -the spacing between paragraph headers and the paragraph above so that individual -paragraphs or sections feel more like a single unit. This made text- and -section-heavy pages like blog posts and essays much nicer to read. - -I also played around with different fonts and line widths, but nothing other -than what I currently have looked good to me. I've also considered adding a -light theme back to my website via a `@media` query because it's supposedly -easier to read, but I originally got rid of it because I didn't like the look of -the light theme that I had, despite my best efforts to tweak it. I do also -personally prefer dark themes, so I think I'll just stick with what I have for -now. - -_**Update**: I decreased the width of the site from 50rem to 40rem so each line -of text has roughly 60-80 characters making the site much more pleasant to -read._ - -There was one thing I disagree with Kev about: font sizes. I laid out my -[thoughts regarding font -sizes](https://www.paritybit.ca/blog/a-quick-rant-about-web-font-sizes) in a -previous blog post, but to summarize: font sizes should not be specified in -`px`, they should be specified using some relative measurement like `rem`s or -`%`s. - -Other than that (😉), I think it's an excellent post and I hope it influences -others to make their websites more readable. Thanks Kev! - -_This is my forty-third post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/mastodon-to-pleroma-1-setting-up-a-pleroma-server.md b/pages/blog/mastodon-to-pleroma-1-setting-up-a-pleroma-server.md @@ -1,107 +0,0 @@ -## Mastodon to Pleroma — 1 — Setting up a Pleroma Server - -[//]: # "Unfortunately, I've been unable to resolve my Mastodon issues so I'm deciding to ditch it in favour of self-hosting Pleroma. In this post I detail why I want to host Pleroma instead and what I did to self-host it." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-07-21 | - <b>Last Updated:</b> 2020-07-21 -</div> - -<p class="note">Since this is a Mastodon to Pleroma conversion, followers will -not auto-migrate. You should [follow me on Pleroma -here](https://pleroma.paritybit.ca/jbauer) and unfollow me on Mastodon.</p> - -Unfortunately, I have been unable to resolve [my Mastodon -troubles](https://www.paritybit.ca/blog/my-attempts-to-fix-my-mastodon-instance) -and migrating my instance to a fresh install didn't work so I'm giving up on -self-hosting Mastodon. Luckily, I don't have to give up on the Fediverse because -there's an alternative called Pleroma. - -Pleroma is another social media/microblogging platform similar to Mastodon. It -also interoperates with the rest of the Fediverse using ActivityPub so it still -allows me to follow people who use Mastodon, just like Mastodon allowed me to -follow people who use Pleroma. However, there are a number of advantages that -Pleroma brings to the table over Mastodon. - -For one, Pleroma requires far, far fewer resources to run than Mastodon due to -its technology stack. Pleroma is built on Elixir, a functional programming -language which runs on the Erlang virtual machine as opposed to Mastodon which -is built with Ruby, Node.js, and a React.js frontend. When I was running -Mastodon, I gave my VM 3GB of RAM and it would use close to 1.5GB, sometimes -creeping up closer to 2GB of RAM during periods of high activity. I didn't -notice Mastodon using excessive amounts of CPU power, but then again it was a -one-person instance incomparable to an instance like Fosstodon with its 10.5k -people (I'm curious how many resources Fosstodon requires). - -Another advantage, also related to the tech stack, is that Pleroma feels and -looks like it will be a lot easier to perform maintenance on and troubleshoot -errors with. If you read my previous blog post about troubleshooting my Mastodon -troubles or followed my rants on social.paritybit.ca, you'll know that the tech -stack Mastodon uses feels (to me, anyways) like a bunch of things loosely -connected together where it can be very difficult to figure out what's going -wrong and why unless you have a strong familiarity with the tech stack or the -software. - -The other thing I've noticed about Pleroma is that it's far more customizable -and hackable than Mastodon. Both the front-end in styling and the back-end in -the number of settings you can change on your server give a sense of having a -lot more freedom in making an instance _your instance_. For example, through -adding resources to a customizations directory called the "static directory", I -am able to add custom themes to the frontend that ships with Pleroma, and change -the background, favicon, and logo site-wide (as opposed to just my profile -background and avatar). One can also use different frontends with Pleroma; it -notably ships with a version of the Mastodon frontend in addition to the default -Pleroma frontend. - -So, now that you know why I wanted to switch to Pleroma, let's look at -installing a server: - -Unfortunately, I was unable to get the [Mastodon->Pleroma migration -script](https://gitlab.com/soapbox-pub/migrator) working on my system (probably -due to something wrong with my environment or the Masto VM), so I have to create -a new profile on Pleroma and notify people that I've moved because, unlike a -Mastodon->Mastodon transfer, I can't bring my followers with me to Pleroma. If -you are considering moving from self-hosting Mastodon to self-hosting Pleroma, -try that script first and see if you can get it working for you because it makes -the whole process a lot easier. [Masto->Pleroma follower migration may be coming -in the -future](https://git.pleroma.social/pleroma/pleroma/-/merge_requests/2773), but -it wasn't available when I moved. - -I chose to install using an OTP release as that seemed like the better choice -for a production server than installing from source. I stood up a VM with 1 CPU -and 512 MB of RAM on my extremely super powerful server (it's a laptop from -2012), pretty much just followed the [instructions in the -documentation](https://docs.pleroma.social/backend/installation/otp_en/), and -everything worked without hassle. I did modify the nginx config, removing the -SSL bits and the first server block, since I am serving it from behind a reverse -proxy which handles SSL for all the servers behind it. - -I chose to host the new server at -[pleroma.paritybit.ca](https://pleroma.paritybit.ca) so that I could still have -Mastodon running concurrently at -social.paritybit.ca which would allow me to -pester my followers to go follow me over at my new instance. If I instead -deleted and replaced my Mastodon instance with Pleroma, I would disappear off -the face of the Fediverse for many people and would be dropped from their -following list. - -So far, the Pleroma server is running just fine with one virtual CPU and only -512MB of RAM. As of writing this blog post, my Pleroma server is sitting at -300/483M RAM usage, 196/510M swap usage, and about 16% CPU usage. My Mastodon -server is sitting at 1.33/2.93G RAM usage, 40.7M/2.0G swap usage, and about 15% -CPU usage. - -After a few weeks and once at least most of my followers have realized I've -moved, I'll be decommissioning my Mastodon server and sticking with Pleroma -full-time. It seems to have been a worthwhile switch so far. - -_This is my seventy-sixth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/mastodon-to-pleroma-2-customizing-my-instance.md b/pages/blog/mastodon-to-pleroma-2-customizing-my-instance.md @@ -1,102 +0,0 @@ -## Mastodon to Pleroma — 2 — Customizing My Instance - -[//]: # "Now that I have a Pleroma instance up and running with an account, it's time to make that instance my own through backend and frontend customizations." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-07-23 | - <b>Last Updated:</b> 2020-07-24 -</div> - -<p class="note">Since this is a Mastodon to Pleroma conversion, followers will -not auto-migrate. You should [follow me on Pleroma -here](https://pleroma.paritybit.ca/jbauer) and unfollow me on Mastodon.</p> - -Now that I have a Pleroma instance up and running with an account, it's time to -make that instance my own through backend and frontend customizations. - -Pleroma provides so many customization options, it took me a while to go through -all of them and customize my instance to my liking. That is by no means a bad -thing; it was a really enjoyable process and it makes it feel like it's social -media but for hackers (not the Hollywood kind). - -There weren't many backend customizations I wanted to do. For one, the default -character limit of 5000 is more than enough for me, and far less restrictive -feeling than Mastodon's unchangeable 500. I turned off the chat room (which I do -think is a really cool feature) and closed registrations because I didn't need -those features on my single-person instance. I was pretty much satisfied with -the rest of the defaults. I want to point out that I found it really cool to see -an option for [exposing my instance over -Tor](https://docs.pleroma.social/backend/configuration/onion_federation/) as a -hidden service as well as an option to expose my instance over the Gopher -protocol. That's rare to see for a web application, and really makes me like -Pleroma a lot more (even if I don't end up using those features). - -As far as customizing the frontend, well, this is where it got fun and -interesting. I could change pretty much anything I wanted about the instance's -frontend down to the UI itself (though I stuck with the default Pleroma frontend -because I actually quite like it). I changed the favicon of the site (something -I couldn't do at all with Mastodon), the background for the entire instance, the -logo for the site as it appears at the top-center of the page, and even the -default theme for the UI. - -I created a new logo for my Pleroma instance just like I did with my Mastodon -instance: - -<figure> - <a href="/img/logo-pleroma-512.png"><img src="/img/logo-pleroma-128.png" - alt="My Pleroma instance's logo: A black circle around a dark red circle all - encircling a yellow circle which has a black coloured Pleroma logo in the - centre."/></a> -</figure> - -I also set the background of both my profile and my Pleroma instance to a 1 -pixel by 1 pixel solid colour image. I liked the background colour that I used -for my profile banner on Mastodon and wanted to keep it for this new instance. -The colour is: <span -style="colour:#fff;background-color:#282c37">#282c37</span>, in case you're -curious. - -Finally, for the theme, I landed on the Vulpes One theme created by <a -href="https://pleroma.paritybit.ca/users/9xJeso1U3l4rBr2o4W">@Feuerfuchs@fedi.vulpes.one</a> -which I found via [plthemes.vulpes.one](https://plthemes.vulpes.one/), and added -it to my instance by following the [Pleroma documentation on adding -themes](https://docs-develop.pleroma.social/backend/configuration/howto_theming_your_instance/). -I think it's a great theme that complements the colour scheme I went for well. - -As far as emoji packs, just like with Mastodon one can also add custom emoji to -Pleroma instances. I'm not a big user of emoji though, so I <del>didn't really -bother for my instance</del> have now installed a couple of blobcat emoji packs -(because they're adorable) thanks to [Puniko's emoji -repository](https://fedi.absturztau.be/emoji-packs/). - -Except for profile-specific settings, all of the above customizations were -accomplished by putting files into the "static directory", a place the Pleroma -server looks to serve custom resources. I set mine at `/var/lib/pleroma/static` -because that's what the installation instructions used and I didn't have a -reason to change it. - -Some other minor changes I made were: setting the default page to show -non-logged-in users (i.e. anyone who isn't me but is visiting -pleroma.paritybit.ca in their browser) my profile page, turned off showing the -instance-specific panel, and updating the About page for the instance. - -The more I use Pleroma, the more I like it. It allows me to customize so much -that I can truly make an instance feel like my own rather than yet another -instance using the same software. The plethora of tunables and customizables -from things like the number of options one can add to a poll to even being able -to turn off federation all-together, really make it feel like the hacker's -version of Mastodon. - -_Disclaimer: I am in no way trying to disparage the effort's of the Mastodon -folk, I just really like Pleroma and I am realizing it's the better choice for -me._ - -_This is my seventy-seventh post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/mastodon-to-pleroma-3-shutting-down-mastodon.md b/pages/blog/mastodon-to-pleroma-3-shutting-down-mastodon.md @@ -1,98 +0,0 @@ -## Mastodon to Pleroma — 3 — Shutting Down Mastodon - -[//]: # "The follower migration is underway, now it's time to begin the shutdown procedure for social.paritybit.ca. This is how I automated the announcements and what I'm doing to shut it down." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-07-25 | - <b>Last Updated:</b> 2020-07-25 -</div> - -Now that I've settled into Pleroma, I'm going to decommission my Mastodon -instance. I was originally planning to do it on 2020-08-08, but now that a -majority of my followers have followed the new account, I figure it's time to -take Mastodon off of life support and shut down the instance. - -To make sure that everyone has been notified about the account switch and nobody -will be left wondering where I went, I have decided to turn my old account -(@jbauer@social.paritybit.ca) into a bot which will post an announcement every -30 minutes until the death of the server. - -<figure> - <a href="/img/mastodon-status-announcement.png"><img - src="/img/mastodon-status-announcement.png" alt="A screenshot of one of the - announcements on my Mastodon instance. Announcing that the instance is - shutting down and that followers should follow me on Pleroma instead."/></a> -</figure> - -<p>I tried to tweak the script I'm using to post a friendlier link to my profile -(in the form of @jbauer@pleroma.paritybit.ca) which would have been better for -mobile users, but for some reason unknown to me, Mastodon refuses to federate -with instances using LAN addresses and this caused it to give me an HTTP error -422 when trying to link to my Pleroma instance. I really don't know why but -[this behaviour annoyed me a -lot](https://pleroma.paritybit.ca/notice/9xSKKyy9huLG3WXfcG).</p> - -Anyways, I got the idea to do the automated posting from [a post by Alex -Gleason](https://gleasonator.com/notice/9xMfeRlpcqrSkFv9nM) on the Fediverse and -this is the script that I wrote to make the posts: - -```bash -#!/bin/sh - -TTD=$(cat /tmp/ttd) - -printf "ANNOUNCEMENT: I have moved accounts from Mastodon to Pleroma. - -Followers will NOT auto-migrate. You must manually follow my new account at -https://pleroma.paritybit.ca/jbauer (@jbauer @pleroma.paritybit.ca) and you -should unfollow this account. (Sorry mobile users, I can't generate an @link to -the new profile.) - -social.paritybit.ca will be shutting down in >> $TTD hours\n - -This account is now a bot. This status will repeat every 30 minutes until the -instance is destroyed." > /tmp/status.txt - -accessToken="haha no" -resp="$(curl -s -S -i -X POST \ - -H "Authorization: Bearer $accessToken" \ - -F status="$(cat /tmp/status.txt)" \ - -F visibility=public \ - https://social.paritybit.ca/api/v1/statuses)" -httpCode="$(echo "$resp" | grep HTTP/ | awk '{print $2}')" - -if [ "$httpCode" = "200" ]; then - echo "Successfully posted status update" -else - echo "ERROR: Failed to post status update" - echo "$resp" -fi - -echo "$TTD-0.5" | bc -ql > /tmp/ttd -``` - -The script is run with the following cron job: - -``` -*/30 * * * * /home/jbauer/masto-last-hours.sh -``` - -I calculated the number of hours from the time I started the script to -2020-07-27 at noon using this [time calculator](https://datayze.com/time-until) -and put the value in `/tmp/ttd`. As the script runs, it will keep decrementing -this value until the instance is terminated. Using the `at` command, I have -scheduled a shutdown so that, once the time hits 12:00 on 2020-07-27, my -Mastodon instance will go offline for the final time. - -Friendship ended with Mastodon, now Pleroma is my best friend ([meme -reference](https://knowyourmeme.com/memes/friendship-ended-with-mudasir)). - -_This is my eighty-first post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/migrating-my-wiki-off-of-mediawiki.md b/pages/blog/migrating-my-wiki-off-of-mediawiki.md @@ -1,36 +0,0 @@ -## Migrating My Wiki Off of MediaWiki - -[//]: # "MediaWiki is a cool bit of software (it powers Wikipedia, after all), but after using it as my wiki software for a few months, I've come to the conclusion that it's not a good solution for me." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-07-09 | - <b>Last Updated:</b> 2020-07-09 -</div> - -MediaWiki is a cool bit of software (it powers Wikipedia, after all), but after -using it as my wiki software for a few months, I've come to the conclusion that -it's not a good solution for me. - -It's quite pretty, built to do wiki things well, and is very easy to use but, -like with most other things I cut out of my life, it comes with a lot of -unnecessary complexity and inefficiency for what I'm doing with it. For example, -it's really designed as a collaborative editing platform but I'm the only one -who makes changes and creates pages because it's a personal wiki. - -I have decided instead to migrate all of my wiki pages off of MediaWiki and back -onto my website, which is what I was using before MediaWiki. This way I can use -my regular workflow to add and update pages and I can get rid of a service that -no longer gets much use. I will be moving things over slowly and I will be -reviewing, updating, expanding on and releasing the pages I move over as blog -posts since my blog has a search function and I think some pages might make -interesting posts. - -_This is my sixty-fifth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/my-attempts-to-fix-my-mastodon-instance.md b/pages/blog/my-attempts-to-fix-my-mastodon-instance.md @@ -1,73 +0,0 @@ -## My Attempts to Fix My Mastodon Instance - -[//]: # "I've been having strange issues with my Mastodon instance but every attempt to diagnose, fix, or understand the issue has been met with failure. Here are the issues I've encountered and what I've tried to fix them." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-07-17 | - <b>Last Updated:</b> 2020-07-17 -</div> - -Self-hosting Mastodon was going so well until about a month-and-a-half ago when, -seemingly out of nowhere, I started getting HTTP error 422 in response to any -action I took to update my profile or instance from the web UI. I could still -update things like my profile description using the Tusky mobile app, yet it -wouldn't work in the web interface. I also couldn't even log out, as clicking -the log out button gave me the exact same error page and HTTP response: - -<figure> - <a href="/img/mastodon-error.png"><img src="/img/mastodon-error-thumb.png" - alt="A mastodon error page with the text 'Security verification failed. Are - you blocking cookies?'."/></a> -</figure> - -I tried fiddling with the server, re-compiling the UI pages, updating it and its -dependencies, all to no avail. Just today I spent about 4 hours (mostly just -waiting for things to backup, copy, transfer, etc) standing up a new mastodon -server and migrating the database over but, although the back-end seemed to work -just fine, the front-end kept giving me webpack errors that I have no idea how -to fix: - -``` -Jul 18 02:03:31 eris bundle[901]: [f0b3cdd5-a423-43ac-beba-9484b5100b10] method=GET path=/ format=html controller=HomeController action=index status=302 duration=22.14 view=0.00 db=17.60 location=https://social.paritybit.ca/@jbauer -Jul 18 02:03:31 eris bundle[902]: [7187785d-5345-413e-a08a-3854c43a0e94] method=GET path=/@jbauer format=html controller=AccountsController action=show status=500 error='ActionView::Template::Error: Webpacker can't find public.js in /home/mastodon/live/public/packs/manifest.json. Possible causes: -Jul 18 02:03:31 eris bundle[902]: 1. You want to set webpacker.yml value of compile to true for your environment -Jul 18 02:03:31 eris bundle[902]: unless you are using the `webpack -w` or the webpack-dev-server. -Jul 18 02:03:31 eris bundle[902]: 2. webpack has not yet re-run to reflect updates. -Jul 18 02:03:31 eris bundle[902]: 3. You have misconfigured Webpacker's config/webpacker.yml file. -Jul 18 02:03:31 eris bundle[902]: 4. Your webpack configuration is not creating a manifest. -Jul 18 02:03:31 eris bundle[902]: Your manifest contains: -Jul 18 02:03:31 eris bundle[902]: { -Jul 18 02:03:31 eris bundle[902]: } -Jul 18 02:03:31 eris bundle[902]: ' duration=233.72 view=0.00 db=9.78 -Jul 18 02:03:31 eris bundle[902]: [7187785d-5345-413e-a08a-3854c43a0e94] -``` - -I've tried re-compiling the front-end assets, checking the content of the stated -`webpacker.yml` and the `manifest.json` files (they looked fine to my untrained -eye and contained the things Webpacker says it can't find), and even things like -what was suggested [here on -StackOverflow](https://stackoverflow.com/questions/58520418). Nothing worked. - -I'm kind of getting fed up with the technologies used by Mastodon. Not only does -my server eat RAM because of the use of things like Ruby and Node.js, it feels -very duct-taped together and difficult to diagnose without being intimately -familiar with either Mastodon's workings or Ruby environments in general. I -appreciate the efforts of the Mastodon developers in creating this software, but -I don't think the technologies used are particularly good. - -For this reason, unless I can figure out how to solve the above problems, I will -be standing up a Pleroma instance (it's basically like Mastodon but doesn't eat -as much RAM and only externally requires a database, as opposed to a whole suite -of web technologies, among other things). The migration won't be quick and I'll -probably lose a few followers along the way, but I think it'll be worth it in -the end to move to a platform that won't be as frustrating to diagnose or fix. - -_This is my seventy-fourth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/my-first-ctf.md b/pages/blog/my-first-ctf.md @@ -1,37 +0,0 @@ -## My First CTF - -[//]: # "Today I completed my first ever CTF. It was long but very, very fun and was a great learning experience." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-27 | - <b>Last Updated:</b> 2020-06-27 -</div> - -Today I completed my first ever capture the flag (CTF) event; the GeekSeek CTF -hosted by the [Canadian Centre for Cyber Security](https://cyber.gc.ca/en/). I -was worried about how well I would do since I didn't get much sleep the night -before and, unfortunately, the two people my friend and I were paired up with -did not show up to the event but, despite that, we placed 7th out of 50 teams -and even managed to hold 3rd place for a bit at one point! - -The CTF was a ton of fun. I both practiced the skills I already had and learned -about a whole bunch of new things. Every time I got an answer right was a rush -of dopamine and a boost to keep solving more problems. There were a couple -problems that kicked me in the butt because of my unfamiliarity with the tools -or languages, but that just highlights areas where I can improve and learn more. - -I highly recommend participating in CTFs if you're interested in the world of -infosec/cracking. They're a ton of fun, a good way to meet people, and a great -way to learn and practice new skills. - -The CTF lasted from 10:00 to 22:00, so I'm going to go to bed now... - -_This is my fifty-sixth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/my-preferred-fediverse-mobile-client.md b/pages/blog/my-preferred-fediverse-mobile-client.md @@ -1,47 +0,0 @@ -## My Preferred Fediverse Mobile Client - -[//]: # "After switching to Pleroma, the Tusky app felt too Mastodon-like and was missing some of the features that Pleroma brings to the table. Luckily @a1batross@expired.mentality.rip came to the rescue by forking Tusky to create Husky." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-08-10 | - <b>Last Updated:</b> 2020-08-10 -</div> - -After switching to Pleroma, the Tusky app felt too Mastodon-like and was missing -some of the features that Pleroma brings to the table. Luckily -[a1batross@expired.mentality.rip](https://expired.mentality.rip/users/a1batross) -came to the rescue by forking Tusky to create Husky, a client that behaves just -like Tusky, but with more Pleroma features and a more Pleroma-like appearance. - -<figure> - <a href="/img/husky-screenshot.png"><img - src="/img/husky-screenshot-thumb.png"/></a> - <figcaption>A screenshot of the Husky app.</figcaption> -</figure> - -Some of the additional features I've noticed Husky adds over Tusky are things -such as Markdown/HTML/BBCode formatting for statuses, emoji reaction support, -and no attachment limits. All of these features are present in Pleroma but not -in Mastodon, so they were missing from Tusky. Furthermore, the Pleroma theming -makes it feel like I'm using a Pleroma app instead of a Mastodon app, even if -they work exactly the same on the back-end. - -Otherwise, the apps are quite similar and the Husky fork hasn't differed much -from Tusky. Both still offer scheduled toots, bookmarks, lists, the ability to -edit basic profile information, and so on. I definitely recommend the Husky app -if you're on a Pleroma instance and looking for the exact same experience as -Tusky but with more of a Pleroma feel and the extra Pleroma features. - -[View the Husky source code here](https://github.com/FWGS/Husky). The -application can be [downloaded for Android from -F-Droid](https://f-droid.org/en/packages/su.xash.husky/). - -_This is my ninetieth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/my-top-10-most-used-commands.md b/pages/blog/my-top-10-most-used-commands.md @@ -1,58 +0,0 @@ -## My Top 10 Most Used Commands - -[//]: # "A fun thing I came across today while browsing r\/linux: What are your top 10 most used CLI commands?" - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-08-21 | - <b>Last Updated:</b> 2020-08-21 -</div> - -Another fun thing I came across recently, this time on r/linux: [What are your -top 10 most used CLI -commands?](https://old.reddit.com/r/linux/comments/idrfo3/for_fun_what_are_your_top_10_most_used_cli/). -I know I should stop browsing Reddit... it's just such a good time-waster. - -I was curious to see which commands I run most often so I ran the following on -my main desktop: - -```bash -history | awk '{print $2}' | sort | uniq -c | sort -nr | head -n 10 -``` - -It came up with the following: - -``` -1080 ls -832 git -769 vi -708 cd -452 sudo -280 ./compile -259 rm -215 ssh -110 config -109 mv -``` - -You can probably guess what I do most with my computer... - -Most of them are standard commands except for `./compile` and `config`. -`./compile` is what I run when I compile anything for my website (like this blog -post you're reading, for example) and `config` is the alias I have to work with -the [git repository I have for my -dotifles](https://www.paritybit.ca/blog/how-i-manage-my-dotfiles). - -I'm curious what your most commonly used CLI commands are. Let me know in [this -thread on the Fediverse](https://pleroma.paritybit.ca/notice/9yMX21YNjbElElYgUq) -(or [by email](mailto:jbauer@paritybit.ca), if you want). - -_This is my ninety-fifth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100DaysToOffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ - diff --git a/pages/blog/new-desktop-checklist.md b/pages/blog/new-desktop-checklist.md @@ -1,37 +0,0 @@ -## New Desktop Checklist - -[//]: # "Detailing what I do when I'm setting up a new desktop or laptop system." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-07-13 | - <b>Last Updated:</b> 2020-07-13 -</div> - -Similar to [the list of things I need to do to set up a -server](/blog/new-server-checklist), setting up a desktop system is relatively -simple (especially now that I've created a script that does a lot of it for me). -Below is a list of basic things I do when setting up a new Debian system on one -of my laptop or desktop computers: - -<input type="checkbox" id="1"><label for="1">Install git: `sudo apt install git`</label><br> -<input type="checkbox" id="2"><label for="2">Get the deployment script: `git clone https://git.sr.ht/~jbauer/deploy-system`</label><br> -<input type="checkbox" id="3"><label for="3">Run the deployment script: `./deploy-system/deploy-system.sh`</label><br> -<input type="checkbox" id="4"><label for="4">Customize slstatus to the hardware of the system, re-install and restart slstatus.</label><br> -<input type="checkbox" id="5"><label for="5">Copy in KeepassXC databases and configure KeepassXC.</label><br> -<input type="checkbox" id="6"><label for="6">Customize Firefox with extensions and activate KeepassXC-browser.</label><br> -<input type="checkbox" id="7"><label for="7">Install microcode/firmware for processor/wifi chip if needed.</label><br> - -Unfortunately the setup script which does the hard work for me doesn't work for -non-Debian systems, but right now Debian is the only distribution I use -full-time. If I switch to Alpine or Gentoo then I'll make and post scripts for -those too. - -_This is my sixty-ninth (nice!) post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/new-server-checklist.md b/pages/blog/new-server-checklist.md @@ -1,80 +0,0 @@ -## New Server Checklist - -[//]: # "Detailing what I do when I'm setting up a new server." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-07-12 | - <b>Last Updated:</b> 2020-07-12 -</div> - -Setting up a new server is a really simple and straightforward process for me. -As of right now, I pretty much exclusively use Debian servers for their -stability, readily-available support, and package availability and this is what -I do to set up a new server: - -### Checklist - -<input type="checkbox" id="1"><label for="1">Copy ssh public key to server with `ssh-copy-id`</label><br> -<input type="checkbox" id="2"><label for="2">Disable SSH password authentication and root login</label><br> -<input type="checkbox" id="3"><label for="3">Set SSH port to 56022</label><br> -<input type="checkbox" id="4"><label for="4">Set desired mirrors in `/etc/apt/sources.list`</label><br> -<input type="checkbox" id="5"><label for="5">Set a static IP in `/etc/network/interfaces` (see Static IP Example)</label><br> -<input type="checkbox" id="6"><label for="6">Run the following (leave out `qemu-quest-agent` if not VM):</label><br> - -```bash -sudo apt update && sudo apt -y upgrade && sudo apt install \ - tmux htop vim postfix qemu-guest-agent unattended-upgrades nftables \ - && sudo apt --purge autoremove vim-tiny nano iptables -``` - -<input type="checkbox" id="7"><label for="7">Configure unattended upgrades with "origin=*", remove unused dependencies, automatic reboot at 02:00</label><br> -<input type="checkbox" id="8"><label for="8">Configure nftables firewall (see Base nftables Configuration)</label><br> -<input type="checkbox" id="9"><label for="9">Reboot</label><br> - -### Static IP Example - -``` -allow-hotplug <interface> -iface <interface> inet static - address 10.0.0.{2..254} - netmask 255.255.255.0 - gateway 10.0.0.1 -``` - -### Base nftables Configuration - -``` -#!/usr/sbin/nft -f - -flush ruleset - -table inet filter { - chain INPUT { - type filter hook input priority 0; policy drop; - ct state { established, related } accept - ct state invalid drop - iif "lo" accept - tcp dport {56022} accept - ip protocol icmp limit rate 1/second accept - counter packets 0 bytes 0 drop - } - chain OUTPUT { - type filter hook output priority 0; policy accept; - counter packets 0 bytes 0 accept - } - chain FORWARD { - type filter hook forward priority 0; policy drop; - counter packets 0 bytes 0 drop - } -} -``` - -_This is my sixty-eighth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/nope-back-to-st.md b/pages/blog/nope-back-to-st.md @@ -1,71 +0,0 @@ -## Nope, Back to st - -[//]: # "After using Alacritty for a month, I think it's time to switch back to st." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-08-27 | - <b>Last Updated:</b> 2020-08-27 -</div> - -I've been using Alacritty for about a month since I [switched to it from -st](https://www.paritybit.ca/blog/switching-to-alacritty) back at the end of -July. It's been a solid terminal, but it has one major drawback and one minor -annoyance which have drawn me once again back to st. - -In the blog post I linked above, I mentioned that Alacritty uses a lot more RAM -compared to st. Granted, Alacritty does have a lot of features compared to st, -but it's not like I made any use of them nor can it really justify RAM usage -that is this high: - -``` - 22.0 MiB + 25.2 MiB = 47.2 MiB st (4) - 59.1 MiB + 84.4 MiB = 143.6 MiB alacritty (4) -``` - -RAM usage was measured with `ps_mem`. Yep, that's four st windows open and four -Alacritty windows open. One of those st windows is the terminal in which I'm -writing this blog post, and I also ran `ps_mem` in an st window. All of the -terminals were freshly opened. - -It's not uncommon for me to have multiple terminal windows open like this. I'll -often have `newsboat`, `aerc`, `weechat`, two or more development terminals, and -a scratchpad terminal all open at once. I also tend to jump between what I'm -working on so I'll frequently have something like four terminal windows open -just for development as I'm working on two or three separate things at once. I -might have 24GB of RAM on my desktop machine, but I'd still rather not have -0.5-1.0GB taken up by just terminal windows (this can easily happen when they -have a lot of lines in their scrollback buffers). - -My minor gripe with Alacritty is that it's configured in YAML. Sure, I'm not -changing my configuration often, but I still dislike it and prefer the method of -configuring st over writing YAML. Besides, the two issues that I noted about -st: crashing when displaying colour emoji and the delete key not working right -in SSH sessions, are easy to work around. - -The emoji problem is simply solved by either installing the `libxft-bgra` -package, a patched version of libxft which [can be -found](https://gitlab.freedesktop.org/xorg/lib/libxft/-/merge_requests/1) as a -`.deb` package or in the Arch User Repositories, or by installing the Symbola -font (`ttf-symbola` for Arch or `fonts-symbola` for Debian) which will be used -as the font for rendering emoji and works just fine without `libxft-bgra`. - -Regarding the delete key, I was already using `set enable-keypad on` in my -`.inputrc` which fixes the problem locally, but in an SSH session all that is -required is to run `tput smkx` and the delete key works on the remote server -normally. Given how rarely I'm using the delete key on a remote server, this is -not a big deal. - -With all that Alacritty has to offer, I just haven't realized any benefit over -using st. st is very nice to both use and configure and I simply don't need the -features Alacritty has. I haven't noticed it being any faster than st, it's -noticeably slower to launch than st, and it uses a lot more RAM than st. - -_This is my ninety-seventh post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100DaysToOffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/posting-statuses-on-pleroma-with-a-shell-script.md b/pages/blog/posting-statuses-on-pleroma-with-a-shell-script.md @@ -1,58 +0,0 @@ -## Posting Statuses on Pleroma with a Shell Script - -[//]: # "With the help of @alex@gleasonator.com I was able to figure out how to get an access token through just making API calls so that I could once again automate posting statuses for new blog posts." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-08-09 | - <b>Last Updated:</b> 2020-08-09 -</div> - -With the help of [alex@gleasonator.com](https://gleasonator.com/@alex), I was -able to figure out finally how to get an OAuth access token so that I could post -status updates whenever I publish a new blog post just like I used to do when I -was running Mastodon. In reality it was actually very simple to do, but I was -missing something that could be done because it was undocumented. - -Everything that I tried is [documented in the issue on the Pleroma -GitLab](https://git.pleroma.social/pleroma/pleroma/-/issues/2031) in case you're -curious. - -The right way to do what I wanted to do was, after creating an app with -something like: - -```bash -curl -s -S -i -X POST \ - -F client_name="Blog Post Publishing Script" \ - -F redirect_uris="urn:ietf:wg:oauth:2.0:oob" \ - -F scopes="read write" \ - https://pleroma.paritybit.ca/api/v1/apps -``` - -Do the following to get an access token: - -```bash -curl -s -S -i -X POST \ - -F client_id="LjLZPKhnDnwwrleqa85ODJXzhOubLF9bSi6TDyW602A" \ - -F client_secret="<secret>" \ - -F redirect_uri="urn:ietf:wg:oauth:2.0:oob" \ - -F scope="read,write" \ - -F grant_type="password" \ - -F username="jbauer" \ - -F password="<account_password>" \ - https://pleroma.paritybit.ca/oauth/token -``` - -As opposed to everything else that I was trying to do with visiting the webpage -and whatnot. It really is this simple. Now I just put this access token into my -[publish script](https://git.paritybit.ca/paritybit.ca/tree/http/publish) and it will -automatically post a status update whenever I publish a new blog post. - -_This is my eighty-ninth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/preparing-to-self-host-email.md b/pages/blog/preparing-to-self-host-email.md @@ -1,88 +0,0 @@ -## Preparing to Self-Host Email - -[//]: # "Email is one of the oldest and most fundamental underpinnings of the Inernet as a whole. Unfortunately, it has a reputation of being very difficult to self-host, let alone self-host correctly. I want to try hosting it myself though, so here's what I'm doing to prepare." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-05-15 | - <b>Last Updated:</b> 2020-11-01 -</div> - -Email is one of the oldest and most fundamental underpinnings of the Inernet as -a whole. Unfortunately, it has a reputation of being very difficult to -self-host, let alone self-host correctly. I've seen many online talk about the -issues they've run into getting their mail past the spam filters of Big Mail -Corps or keeping their servers safe against the onslaught of crackers trying to -gain access which eventually leads them to give up on self-hosting email and -return to using proprietary services from the likes of Google or Microsoft. - -Despite all this, I think self-hosting email is one of the best ways to take -control of your data and become digitally independent. Regardless of which email -provider you choose, there is always the possibility that they could shut down, -analyze your emails and sell that data to advertisers, or block you from using -their service. If you're dependent on email (which I'm sure many of us are to a -certain extent), this is something to be concerned about. - -I am currently with ProtonMail. My only complaint, now that they've open-sourced -all of their client applications, is that I have to use the ProtonMail Bridge, -and therefore be a paying user, in order to be able to interact with my email -using open, standard protocols like IMAP and SMTP. It's also somewhat annoying -that I have to have a separate (electron-based) application running any time I -wanted to send or receive email. I understand why they do it, but it's still -something I wish I didn't have to deal with. Besides, I'm also coming to terms -with the fact that email is almost a completely public form of communication; -the only way that I can be sure that my communications are secure is by using -PGP-based encryption with my emails, or a separate secure messaging system like -Matrix. With nearly every email passing through servers belonging to Google or -Microsoft and being stored unencrypted in most others' mailboxes, it seems an -unavoidable truth. - -This is the first time I'll attempt to properly self-host email. I've previously -set up mail communication inside my LAN and I have experience with SPF, DKIM, -and DMARC, but I've never set up proper mail from scratch. I plan to run -OpenBSD, OpenSMTPD, Dovecot, and Rspamd; OpenBSD because of its reputation for -taking security *very* seriously and because I want to become more familiar with -the BSD ecosystem, OpenSMTPD because it seems very easy to configure when -compared with Postfix or Sendmail (though I know Postfix isn't that hard from -experience), Dovecot because right now it seems to be the best software -available for doing what it does, and Rspamd because it's what seems to be -recommended the most alongside the other options I've listed. - -I plan to run my mailserver using a hosted VPS because I don't have a static IP -at my house and I need more reliable infrastructure for a service as critical as -email. Although this somewhat lessens my digital independence, since the VPS -provider could theoretically shut down or ban me, I think it's the best solution -given my circumstances right now. I chose to go with Vultr because they've been -highly recommended to me, they have good hosting rates, and they offer -deployment of OpenBSD VPSes. Here is a [referral -link](https://www.vultr.com/?ref=8575855-6G) if you'd like to give them a try -while supporting me. That link will give you a 30-day, $100 credit (if, for -whatever reason, the link above doesn't work, here is an [alternative referral -link](https://www.vultr.com/?ref=8575845) which won't give you a credit but does -still reward me). - -As the final component, I plan to first trial a setup using a spare domain which -I own: `jbauer.ca`, just in case things don't work out well. I wouldn't want to -lose access to my current email by messing up my first time self-hosting. I am -also considering using that domain permanently for personal mail if things work -out since it's slightly easier than spelling out `paritybit.ca` for people, but -we'll see. - -Also, here are some of the resources I've been reading to prepare for self-hosting -email, in case you also want to give it a go: - -* [Yarmo's Blog - Selfhost email](https://yarmo.eu/blog/selfhost-email) -* [Setting up a mail server with OpenSMTPD, Dovecot and Rspamd](https://poolp.org/posts/2019-09-14/setting-up-a-mail-server-with-opensmtpd-dovecot-and-rspamd/) -* [You should not run your mail server because mail is hard](https://poolp.org/posts/2019-08-30/you-should-not-run-your-mail-server-because-mail-is-hard/) -* [Decentralised SMTP is for the greater good](https://poolp.org/posts/2019-12-15/decentralised-smtp-is-for-the-greater-good/) -* [Vultr - OpenBSD mail server with OpenSMTPD, Dovecot, Rspamd, and Rainloop](https://www.vultr.com/docs/an-openbsd-e-mail-server-using-opensmtpd-dovecot-rspamd-and-rainloop) -* [Setting Up Your Own Email Server With OpenBSD](https://codedharma.com/posts/openbsd_email_1/) - -_This is my twentieth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/reflecting-on-50-days-of-blogging.md b/pages/blog/reflecting-on-50-days-of-blogging.md @@ -1,49 +0,0 @@ -## Reflecting on 50 Days of Blogging - -[//]: # "I've blogged for a near-continuous 50 days now so I want to reflect back on completing half of the 100DaysToOffload challenge." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-21 | - <b>Last Updated:</b> 2020-06-21 -</div> - -I'm glad I decided to take part in this challenge when I saw Kev Quirk's toot -some three months ago. It's given me the push I needed to stop keeping my post -ideas and drafts on paper and just publish what I want to talk about. I've -blogged for a near-continuous 50 days now so I want to reflect back on -completing half of the 100DaysToOffload challenge. - -At first, I was very much concerned with keeping the one post per day cadence -but, as the challenge went on, I became more concerned with making sure what I -put out was actually what I wanted to put out rather than feeling like I was -forced to write something, anything, just to get my post in for the day. This is -exactly what Kev noted on the [100DaysToOffload -site](https://100daystooffload.com); it's not about posting literally every day, -just about getting more people to blog more regularly. I've taken breaks when I -felt like I wasn't up to writing a new post and I think I've been all the better -for it. - -So far, aside from two posts early on, I think I've been happy with what I've -been posting nearly every day. Through the challenge, I've been sharing thoughts -and experiences on things like Vim, email, programming, computing, and general -technology which is exactly what I wanted this blog to be about. I've also -received emails from people thanking me for the things I've posted on my site -and I've had great discussions with folks on Mastodon about the things I've -posted. - -Participating in the challenge has been great for not only increasing the number -of people who read what I write, but also for giving me that push to put my -thoughts and opinions out into the world. It's helped me improve my writing -skills, introduced me to cool, new people on the internet, and provided me an -almost daily dopamine boost whenever I hit publish on a new post. The 100 day -mark doesn't even seem so far away now... - -_This is my fifty-first post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/setting-up-a-status-page.md b/pages/blog/setting-up-a-status-page.md @@ -1,67 +0,0 @@ -## Setting Up a Status Page - -[//]: # "Setting up the UptimeRobot service to provide a public status page for my services." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-09 | - <b>Last Updated:</b> 2020-06-10 -</div> - -_**Update**: Fix up some grammar errors and improve wording._ - -I've wanted to have a status page for my services for a while so that others and -I can get a quick look at which of them are experiencing downtime. Ideally, I -would also receive notifications when unexpected downtime is expected. - -I figured I would use something like SmokePing or a simple set of scripts and a -basic webpage but in either case I'd have to spend another $3.50-$5.00 per month -on a VPS so that I'd have a unique host from which to monitor all the rest. I -didn't particularly fancy spending that much just to ping my servers, so when I -found out about [UptimeRobot](https://uptimerobot.com/), I was very intrigued. - -They provide status monitoring with various notification options and a hosted -webpage with either a free or paid plan. The free plan allows one to receive -email alerts, set up 50 monitors, and update each monitor as fast as once every -5 minutes. They appear to make their money off of providing the paid plan which -allows monitoring an increased number of hosts as fast as once every minute -among other things. - -After having a read through their Privacy Policy and deciding it seemed quite -reasonable, I decided to make an account and try it out. I plan to stick with -the free plan since I don't need any of the features that the paid plan is -offering. - -The configuration panel on the site is very simple (in a good way). Everything -is clearly laid out and very easy to navigate and interact with. Two factor -authentication is offered and was painless to set up, and adding new hosts is -very easy as is setting up the web page which displays a summary of your -statistics. I set up my monitoring page at -[status.paritybit.ca](https://status.paritybit.ca). - -I looked around at this status page and noticed that it only transfers ~73KB of -data with a cold cache which is quite good. This is with Google fonts blocked -since I noticed that the site was making requests to the following URLs: - -``` -fonts.gstatic.com -fonts.googleapis.com -``` - -As much as I'd prefer if the site didn't make these third party requests, they -are easy enough to blog using DNS filtering like PiHole or with uBlock Origin's -custom filters. - -So far, my experience using the service has been very good. I like that both the -service and configuration are simple and the web page it generates is not super -heavy. I may, in future, roll my own status page but this seems like a -sufficient solution for now. - -_This is my fortieth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/setting-up-gpg-keys-from-scratch.md b/pages/blog/setting-up-gpg-keys-from-scratch.md @@ -1,221 +0,0 @@ -## Setting Up GPG Keys from Scratch - -[//]: # "How I set up my GPG keys from scratch and how I manage them." - -[//]: # "main.min.css" - -[//]: # "Introduction; Generating the Master Key; Generating a Revocation Certificate; Generating Subkeys; Going Backup Crazy; Uploading My Keys to a Keyserver; Configuring GPG and GPG-Agent; Deleting My Master Key; Conclusion" - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-05-17 | - <b>Last Updated:</b> 2020-05-17 -</div> - -### Introduction - -_**Disclaimer:** This isn't really supposed to be a comprehensive guide on how -you should set up GPG, it's more a record of what I did and why. This post will -inevitably become outdated in the future so please use good judgement when it -comes to your security._ - -Now that I'm self-hosting mail and moving off of ProtonMail, I figured I need to -actually properly figure out GPG so I can send and receive encrypted emails. It -will also be essential as I get further involved in free and open source -software development since GPG is commonly used to sign software releases, among -other things. - -GPG is notorious for being quite complicated and not user-friendly. To assist in -my GPG adventures, I enlisted the help of the Internet; mainly [the Arch -wiki](https://wiki.archlinux.org/index.php/GnuPG). - -I previously played around with GPG so I could use it for encrypting local -backups and for signing git commits. I wasn't using it seriously in any other -respect so I began by `rm -rf`ing my `~/.gnupg` directory for a fresh start. I -also set the `GNUPGHOME` environment variable to a directory on the SD card -which I use specifically to store key data. On this SD card are key files, SSH -keys, and now GPG keys all under LUKS encryption (don't worry, I keep many -copies of this SD card on other cards, USB sticks, and hard drives). Having a -separate portable medium for my keys makes it so that I only have to worry about -updating what's on the card instead of what's on all of the machines on which I -am using GPG. It's also technically a lot easier to hide or destroy, but I don't -see myself realistically needing to do that. - -### Generating the Master Key - -Generating the master key is pretty straightforward. - -```bash -$ gpg --full-gen-key --expert -``` - -`--expert` is required because I wanted to use [Elliptic Curve -Cryptography](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography) -(`ed25519` keys in particular) instead of RSA since ECC keys are smaller for a -similar level of security. From the article linked above: "a 256-bit elliptic -curve public key should provide comparable security to a 3072-bit RSA public -key". This will make typing in the key a lot easier and less error-prone should -I have to restore it from paper backups. It's also fewer bits to send over the -Internet when sharing my public keys. - -### Generating a Revocation Certificate - -It's very important to have a revocation certificate since it's what one -publishes if their key is ever compromised or otherwise needs to be revoked. -It's essentially a way for one to tell the world "under no circumstances should -you use or trust this key." Unlike with subkeys, revoking a master key is much -more significant since, once that becomes compromised or lost, one has to start -again from scratch. - -```bash -$ gpg --gen-revoke --armor --output=revocation-certificate.asc <user-id> -``` - -Where `<user-id>` in this case is the email I specified when generating my key: -`jbauer@paritybit.ca`. - -### Generating Subkeys - -Typically, one shouldn't be using their master key for every-day use. That's -because one's master key is used for signing others' keys, issuing new keys, and -it's the ultimate representation of one's GPG identity. Instead, one should use -subkeys as it's far easier to revoke them and issue new ones in the case that -they become compromised. - -I generated one subkey specifically for signing and one subkey specifically for -encryption: - -```bash -$ gpg --edit-key --expert jbauer@paritybit.ca ->addkey -``` - -I also set a one month expiry on both of those subkeys. While I think having an -expiring master key is overkill for my uses and would be too much hassle, having -subkeys expire is useful in the case that access to those subkeys is lost. This -allows me to be less neurotic about backing up my subkeys compared to backing up -my master key. - -I chose a length of one month because it will keep me coming back to GPG -regularly. This way, I can both make sure that my master key backups have not -become corrupted without my knowledge and that I keep my GPG skills honed. It -also gets me in the habit of doing monthly maintenance on my keyring. - -### Going Backup Crazy - -To make sure that my master key and revocation certificate stay as private as -possible and to minimize the risk of me ever losing access to them, I went a -little bit crazy with the number of backup copies I made. - -It's extremely important to have physical copies of both because digital media -can fail over time in ways that are hard to detect until one needs to access the -data. I printed my revocation certificate directly since it's just a short bit -of ascii text and I printed out my master key using `paperkey`. Both of these -pieces of paper went into my fire- and water-proof storage bag. - -```bash -$ gpg --export-secret-key jbauer@paritybit.ca > privkey.gpg -$ paperkey --secret-key privkey.gpg --output printed.txt -$ lpr printed.txt -$ rm privkey.gpg printed.txt -``` - -I also made several digital copies of my private key. First, I exported my -master key using: - -```bash -$ gpg --export-secret-keys --armor jbauer@paritybit.ca > master.asc -``` - -Then, using GPG's symmetric encryption capabilities, I encrypted both it and my -revocation certificate using a completely new, randomly generated passphrase: - -```bash -$ gpg -c master.asc -$ gpg -c revocation-certificate.asc -$ rm master.asc revocation-certificate.asc -``` - -I then put both of the new encrypted files: `master.asc.gpg` and -`revocation-certificate.asc.gpg` onto two separate CDs—one went into my -fireproof bag—and onto a floppy disk which also went into my fireproof bag. As -soon as I have a free USB key, I'll be making a copy on that too. - -### Uploading My Keys to a Keyserver - -Using a keyserver allows for both easier access to my public keys for others as -well as convenient offsite storage for the public part of my master key which is -required to restore the private part of my master key using `paperkey`. A while -back, [an attack on the SKS keyserver network was -discovered](https://gist.github.com/rjhansen/67ab921ffb4084c865b3618d6955275f) -which caused many to become apprehensive about using keyservers. A solution -proposed in the linked article was to use -[keys.openpgp.org](https://keys.openpgp.org) which is a new keyserver designed -to mitigate the issues with the old keyservers. Following the [given -instructions](https://keys.openpgp.org/about/usage), I uploaded my public keys -so others should now be able to find me by searching for my email. Any time I -need to use my master key (e.g. to sign another's key or renew my subkeys), I -can re-sync my public keys with the keyserver so they always stay up to date in -others' keyrings. - -### Configuring GPG and GPG-Agent - -This is pretty simple and straightforward. Taking a few notes from the Arch wiki -and setting options that I wanted to avoid having to type each time I ran `gpg`, -I came up with the following configuration files: - -``` -gpg.conf --------- -keyserver hkps://keys.openpgp.org -keyid-format long -with-fingerprint -with-subkey-fingerprint -personal-digest-preferences SHA512 -cert-digest-algo SHA512 -default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed -``` - -``` -gpg-agent.conf --------------- -# Cache for a day -max-cache-ttl 86400 -default-cache-ttl 86400 -# Use curses-based pinentry program -pinentry-program /usr/bin/pinentry-curses -``` - -### Deleting My Master Key - -All of that backing up and making offline copies of my master key is so that I -can do daily tasks with just my subkeys. To make this make sense, I have to -delete my master key out of my keyring so it only exists offline until I need to -use it. Since GnuPGv2.1, this is fairly straightforward: - -```bash -$ gpg --list-keys --with-keygrip -$ rm /media/jbauer/keys/gpg/private-keys-v1.d/<keygrip>.key -``` - -After decrypting it from one of my backups, I can then later restore this key -(which I'll have to do at least once a month) by re-importing it with: - -```bash -$ gpg --import master.asc -``` - -### Conclusion - -Without a doubt, using GPG is quite complicated. There are a variety of -decisions that one can make depending on their desired level of security or -anonymity which can be overwhelming if one doesn't have much experience. I've -spent probably 3 or 4 hours making sure that my processes are sound and making -sure I'm doing everything right. To be honest, since I'm relatively new to using -GPG seriously, I won't be 100% sure I'm doing things right until I can -experience using it in the real world. - -_This is my twenty-second post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/setting-up-weechat-again.md b/pages/blog/setting-up-weechat-again.md @@ -1,101 +0,0 @@ -## Setting Up WeeChat Again with weechat-matrix - -[//]: # "I used to have WeeChat set up and configured for IRC, but I really don't have much of a reason to use IRC. If I'm getting more into FOSS development though, I'd want to have my preferred client up and running again..." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-08-22 | - <b>Last Updated:</b> 2020-08-22 -</div> - -I used to have WeeChat set up and configured for IRC, but I really don't have -much of a reason to use IRC. If I'm getting more into FOSS development though, -I'd want to have my preferred client up and running again. Plus, if I want to -access support resources offered through IRC or get into communicating more with -the communities present on IRC—since those tend to be quite technical and are -filled with people I think I might enjoy associating with—I'd want to be able to -jump in quickly with a client already set up. - -I used to use irssi, but found WeeChat to have saner defaults out of the box and -be easier to work with in general. Plus, I can use plugins like weechat-matrix -to be able to use the Matrix protocol in WeeChat without needing to use a -bloated, slow, memory-hungry electron app like Element. - -I already have a Freenode account from my previous IRC adventures so I set it up -in WeeChat with: - -``` -/server add freenode chat.freenode.net/6697 -ssl -/set irc.server.freenode.nicks "jbauer" -/set irc.server.freenode.command "/msg NickServ identify <my_password>" -``` - -I also made a couple of customizations to the look and feel of WeeChat: - -``` -/set weechat.bar.status.color_bg 235 -/set weechat.bar.title.color_bg 235 -/set weechat.color.separator grey -/set weechat.color.chat_nick_self _blue -/set weechat.color.status_time *white -/set buflist.format.buffer_current "${color:,236}${format_buffer}" -/alias add b /buffer -``` - -In addition to that, I installed the -[weechat-notify-send](https://github.com/s3rvac/weechat-notify-send) plugin -which allows me to receive desktop notifications when I get a new message in -WeeChat. - -Another thing I wanted to try was -[weechat-matrix](https://github.com/poljar/weechat-matrix), a set of Python -scripts which allows one to use a Matrix server in WeeChat. Following the -instructions in the Git repository made installation easy enough. Adding my -Matrix server and logging in was also easy. However, I've come across three -issues which I want to highlight in case anybody else is thinking of using -weechat-matrix: - -The Matrix client I normally use (Element) supports device cross-signing. This -means that if I add a new device to my list of devices, I can verify that device -using one of my other devices which have already been set up. This allows me to -add as many devices I want, mark them as trusted from my own devices, and other -people won't need to individually verify each of the devices that I add. -weechat-matrix doesn't have this which means I pretty much have to do a `/olm -verify * *` unless I want to sit there for an hour verifying everyone's devices -individually. - -Furthermore, it seems that the connection to my Matrix server randomly drops out -about every dozen minutes or so. It always reconnects in about 10 seconds but -it's a bit annoying when you're sending a series of messages and all of a sudden -you can't. It seems that to fix this I'd have to [enable HTTP/2 connections on -my Matrix server and reverse -proxy](https://github.com/poljar/weechat-matrix/issues/123) which I don't -particularly care to do. Instead, I fixed this with: `/set -matrix.server.paritybit.ca.autoreconnect_delay 1`. A lazy solution... but it -works I guess? - -Also, uploading and downloading files is a huge pain in the butt. It has to be -done through helper scripts which is far less convenient than just seeing the -file or being able to type a quick command such as `upload ~/image.png` or -`download secret_codes.txt` from within the WeeChat window. - -Anyhow, a complete rewrite of weechat-matrix is coming in the form of -[weechat-matrix-rs](https://github.com/poljar/weechat-matrix-rs), a Rust -implementation as a WeeChat _plugin_ instead of a series of WeeChat _scripts_. -This will allow much better integration and much more powerful stuff like device -cross-signing to be done. - -For now, I'm definitely glad I got it up and running again for use with IRC, but -I'm not 100% sure I'll stick with using it for Matrix. As much as I would prefer -to use a nice CLI application instead of an Electron one, the current state of -it seems to be more hassle than it's worth. I may go back to using Element and -just wait for the Rust rewrite to be ready :/ - -_This is my ninety-sixth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100DaysToOffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/switching-to-alacritty-removals.md b/pages/blog/switching-to-alacritty-removals.md @@ -1,87 +0,0 @@ -## Switching to Alacritty Removals - -[//]: # "The removals from the switching to alacritty blog post so that post becomes readable." - -[//]: # "main.min.css" - -[//]: # - -<p class="note">Below are the outtakes from my [switching to alacritty -blogpost](/blog/switching-to-alacritty) which I decided to split off into its -own page because all the strikethrough text made the original post difficult to -read. In case anyone is interested in what was removed, here it all is:</p> - -From the responses in the Fediverse and Lobste.rs threads, I can no longer say -that the Suckless folk were espousing far-right rhetoric or partaking in -neo-nazi-like activities. As it turns out, at least from the responses in that -thread, there was nothing political behind the torch march and the use of -"Cultural Marxism" was taken out of context and the word was probably misused. - -We can still call out the use of "Wolfsschanze" as the name of the mail server -is in bad taste and is offensive considering [where the term comes -from](https://en.wikipedia.org/wiki/Wolf's_Lair), but it is hardly evidence that -they are "literal neo-Nazis." - -The people who responded on the Fediverse I think were ultimately right, the -evidence here is largely circumstantial and I was mistaken in drawing the -conclusions that I did. I am sorry for that. - ---- - -I've been a pretty happy user of St, the Simple Terminal from Suckless for quite -a few months now. However, as I was scrolling through my Fediverse timeline -this afternoon, I noticed a discussion about the attitudes of prominent software -contributors in the FOSS community which made me re-think my software -choices. - -It's no secret that a lot of people in FOSS can be abrasive, hard to deal with, -and/or unaware of common social norms to the point where it can seriously harm a -project's image, as it did, for example, with the Linux kernel in the time -before Linus Torvalds took some leave to learn how to control his aggression. -It's another story, however, when a group of people use and spread far-right -rhetoric or partake in neo-nazi-like activities as I've recently learned -prominent people from the Suckless group have done. - -Here are the resources that were shared with me: - -* [Twitter thread 1](https://twitter.com/kuschku/status/1156488420413362177) -* [Twitter thread 2](https://twitter.com/pid_eins/status/1113738764797534208) -* [Cat-v ≠ Suckless](https://harmful.neocities.org/) - -From this, I can say that even if the Suckless team just has a really screwed -up sense of humour, it's not a group I'd want to promote or ever associate -with. - -This issue once again stirs up the debate about the separation of a piece of -work from the creators of the work. Do we stop using or shun something that -someone has created, even if it was previously loved, because of the actions of -the creator? There's no black-and-white or one-size-fits-all answer to that -question. Some works are easier to separate from the creator, like the -[ReiserFS](https://en.wikipedia.org/wiki/ReiserFS) filesystem for example, -because there are far more people than just Hans Resier (who, by the way, -murdered his wife) developing it. On the other hand, other works have the -creator's personality strewn through it like, for example, the Harry Potter -novels (if you didn't know, J.K. Rowling [is transphobic and is also an asshole -about it](https://www.scotsman.com/arts-and-culture/books/jk-rowling-twitter-why-harry-potter-author-has-been-accused-transphobia-2877977)). - -In the future, I will definitely avoid recommending Suckless' software and I'll -be far more hesitant to consider them when evaluating tools to use. For now, one -thing that I know I can switch from with little friction and with an actual -technical benefit is St. - -As for the other suckless programs I use, if I am to switch I'd need to find -suitable replacements for dwm, slstatus, and dmenu. That's a little harder than -switching from St because, not only do I have no technical issues with that -software, there is also dwm's window swallowing patch which I consider to be a -killer feature and which is lacking from pretty much every other window manager -(I don't want to go back to bspwm). - -Ultimately, this is a tricky thing. How closely tied should we consider -Suckless' software from the Suckless people themselves? It would be easy enough -to fork it and maintain it under a different group and wantonly throwing away -software which is objectively useful because the creators are bad seems a little -extreme given that fact (look at what happened to ReiserFS). I will absolutely -not be recommending them anymore, but, in terms of switching off of something -that works really well for me, I really don't know. I'm curious what you think, -[send me an email](mailto:jbauer@paritybit.ca) or reply to [this post in the -Fediverse](https://pleroma.paritybit.ca/notice/9xQZNCVzQRiZdtxoeG). diff --git a/pages/blog/switching-to-alacritty.md b/pages/blog/switching-to-alacritty.md @@ -1,70 +0,0 @@ -## Switching From St to Alacritty - -[//]: # "I've been a pretty happy user of St for quite a few months now. However, I'll be ditching it in favour of Alacritty to solve a few annoyances that I have with St." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-07-24 | - <b>Last Updated:</b> 2020-07-31 -</div> - -<p class="note">This post was originally also about separating creators from -their work but, thanks to [the discussion on the -Fediverse](https://pleroma.paritybit.ca/notice/9xQZNCVzQRiZdtxoeG), I was -alerted to the following Lobste.rs thread containing [responses from one of the -Suckless folk](https://lobste.rs/s/kpuj8p/why_i_use_suckless_tools#c_4g2lqi) -(username "FRIGN").<br><br>I have since moved the redacted text to its own page -so you can view what I was wrong about on this [page of -removals](/blog/switching-to-alacritty-removals). I decided to move the stuff -because it was making this post hard to read and, since none of the -non-technical stuff was true, this post should just be about the technical -reasons for my switch.</p> - -I've been a pretty happy user of St, the Simple Terminal from Suckless for quite -a few months now but a few annoying issues with it have tempted me to switch. - -I've been eyeing Alacritty as an alternative if I ever got tired of St because -it seems to also be lightweight, fast, and supportive of the [features I left -urxvt for](https://www.paritybit.ca/blog/urxvt-to-st). It also still has a -scrollback buffer, zooming in and out, clickable URLS, and it seems a Vi mode is -also coming in the next release which I am very excited for. The only thing I -didn't really like about it was the YAML configuration and its size in RAM. - -I did give some alternatives a shot. I tried Termite but found it to be too big -a pain in the butt to compile because of the need to also compile vte-ng which -itself was a pain, Kitty felt like it took too long to load coming from St's -~100ms launch time, and other terminals like xfce4-terminal or konsole wanted to -bring in extra libraries and dependencies which I didn't want. - -The only things I've noticed that I would consider inferior about Alacritty is -that each terminal window uses about 30-40M of RAM (RES minus SHR) compared to -St's 4-5M and it still feels noticeably slower to launch. I'd estimate it -takes Alacritty about twice as long to launch as St (somewhere in the ballpark -of 200-300ms) but I don't have a great way of measuring it. The size of the -Alacritty binary is 41M whereas the size of the St binary is 104K—a significant -increase, but ultimately meaningless when you consider the size of contemporary -storage. Also, Alacritty is configured with YAML which is a very annoying -configuration format because it's white space sensitive (like Python). - -The technical advantages Alacritty does have over St is its support of colour -eomji without the [libxft-bgra -patch](https://gitlab.freedesktop.org/xorg/lib/libxft/-/merge_requests/1) and -the ability to properly make use of the `Delete` key without needing to set `set -enable-keypad on` in my `inputrc` (which didn't even work on remote machines -over SSH). Both of these workarounds are needed because Suckless refuses to -patch what are technically flaws in different programs—libxft and bash -respectively (and I could never get St to behave with the Delete key even after -trying some patches). - -As always, my dotfiles can be found in the [dotfiles git -repository](https://git.sr.ht/~jbauer/dotfiles) -([mirror](https://git.paritybit.ca/dotfiles)). - -_This is my seventy-ninth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/switching-to-debian-sid.md b/pages/blog/switching-to-debian-sid.md @@ -1,59 +0,0 @@ -## Switching to Debian Sid - -[//]: # "I've been running Debian 10 Buster on all of my computers since it released almost a year ago. Now that things are starting to feel dated, I felt it was a good time to update." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-23 | - <b>Last Updated:</b> 2020-06-23 -</div> - -I've been running Debian 10 Buster on all of my computers since it was released -almost a year ago (July 6, 2019). The packages becoming ever so slightly out of -date over time didn't really bother me too much until recently when I started to -find newer features of some software alluring. Software like KeepassXC and -Firefox which have had many improvements in the past year now feel quite dated -compared to what I got when [I tried out -Gentoo](https://www.paritybit.ca/blog/my-beginnings-with-gentoo) a few days -back. - -One of my favourite things about running Debian stable on everything is that it -really does live up to its namesake. It is _super_ stable. The only package -updates I have to perform are the odd security update here and there and, even -then, I could use my computer for weeks without actually ever needing to reboot. -The downside is, of course, that things start to feel old for a desktop system -the farther away one gets from release. - -I wanted newer packages and a newer kernel (yay more btrfs stuff) and since I'm -not really that comfortable with Gentoo yet as a system for me to do my work on, -I decided I would switch to Debian's rolling release option called Sid. This is -as simple as changing the word `buster` to `sid` in `/etc/apt/sources.list` and -running an `apt update && apt full-upgrade`. Note that Debian sid is not really -the _intended_ way to run Debian, but it is still available and one just has to -be completely aware of what they're updating in case there's a known bug that -might mess something up. That means I have to break my `sudo apt update && sudo -apt -y upgrade` habit. - -In switching to Debian Sid, I also wanted to do complete re-installs on all of -my computers. Over time they've become full of programs I tried once and forgot -about, files I no longer really need, and, though they haven't become slow or -anything, it feels good to have a fresh start and get properly organized again. -To make deploying a new Debian desktop system on all of my computers a lot -easier and more hands-off, I created a [deploy-system -script](https://git.sr.ht/~jbauer/deploy-system) which does pretty much -everything I'd otherwise have to do manually when setting up a Debian desktop. - -In addition to re-organizing my files, I'm also going to start using Syncthing -to synchronize certain files between all of my computers. No more moving -KeepassXC databases around with USB sticks for me. I'll also have a cleaner home -directory, and a re-organized file hierarchy that feels better. Reinstalling is -fun. - -_This is my fifty-third post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/the-marble-man.md b/pages/blog/the-marble-man.md @@ -1,31 +0,0 @@ -## The Marble Man - -[//]: # "Today I learned about a really interesting and fun YouTube channel all about marble sporting events." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-08-11 | - <b>Last Updated:</b> 2020-08-11 -</div> - -A shorter blog post for today, but something I wanted to share. Today, a friend -introduced me to [Jelle's Marble -Runs](https://www.youtube.com/c/JellesMarbleRuns/), a YouTube channel dedicated -to casting marble sporting events. - -There are MarbleLympics, Marbula One, a Marble League, and more! There also -seems to be a pretty sizeable fanbase around it with a [marble -wiki](https://jellesmarbleruns.fandom.com/wiki/Marble_League_Wiki) and a [marble -subreddit](https://old.reddit.com/r/JellesMarbleRuns). - -The production quality is very good and the sports casting is amazing. If you -want a good way to pass the time, I highly recommend giving it a shot! - -_This is my ninety-first post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/trying-out-aerc.md b/pages/blog/trying-out-aerc.md @@ -1,56 +0,0 @@ -## Trying Out aerc - -[//]: # "A brief first look at the new terminal-based email client called aerc." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-05-18 | - <b>Last Updated:</b> 2020-05-18 -</div> - -[aerc](https://aerc-mail.org/) is a new terminal-based email client created by -Drew DeVault that aims to offer a highly efficient and extensible mail -experience. I decided to take a look at it after hearing quite a few good -reviews of it and its capabilities in the Fediverse. - -I currently use [NeoMutt](https://neomutt.org/), a fork of Mutt, which is also a -powerful, terminal-based email client. However, I've found it a little clunky to -use at times and the sheer amount of configuration that must be done to make it -usable (in my opinion) is crazy. It's still a perfectly capable email client -which has served me well, but my search for simpler, more "minimal", software -has led me to try aerc. (Some other mail clients which I may also try in the -future are [S-nail](https://wiki.archlinux.org/index.php/S-nail) and -[meli](https://git.meli.delivery/meli/meli.git).) - -To get aerc up and running on my system, I cloned [the git -repository](https://git.sr.ht/~sircmpwn/aerc) and checked out the `0.3.0` -branch. I installed `scdoc` and `go-1.14` to build the software from source -using `make install`. Upon running aerc with the `aerc` command, I was presented -with a straightforward setup process which got me up and running with my mail -account configured. - -Most of the controls were immediately intuitive. `j` and `k` for scrolling, `J` -and `K` for switching folders, `D` for deleting mail, `Enter` for opening mail, -and so on. It also seems like aerc has far better support for multiple email -accounts. Using multiple accounts in NeoMutt feels unintuitive and hacky by -comparison. Another thing that I really appreciate about aerc is that it puts -its configuration files in `~/.config/aerc/` by default instead of dumping them -in a folder like `~/.aerc`. - -Something of note which may be useful to others is that I needed to install -`dante-client` to get the default `text/html` filter to work because it relies -on the `socksify` command to run `w3m` sandboxed for viewing HTML emails. - -I'll be playing around with aerc for the next little while to decide if I'm -going to fully switch to it from NeoMutt. Expect configuration files to appear -in [my dotfiles repository](https://git.sr.ht/~jbauer/dotfiles) and a much more -comprehensive look in the future. - -_This is my twenty-third post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/trying-out-dwm.md b/pages/blog/trying-out-dwm.md @@ -1,113 +0,0 @@ -## Trying Out dwm - -[//]: # "I've been using bspwm for a while now and haven't really felt the need to change. Seeing that dwm supports window swallowing sold me on trying it out." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-06-11 | - <b>Last Updated:</b> 2020-06-11 -</div> - -I've been using the [Simple Terminal](https://st.suckless.org/) (st) by -[suckless](https://suckless.org/) for two^W three^W four months now (damn, it's -already June) and I've been enjoying it thoroughly. By "enjoying it thoroughly" -I mean it gets out of my way and hasn't caused any problems. I haven't had to -recompile it either after I first set it up since I created the configuration -and keybindings that I like and I've stuck with them since. - -[dwm](https://dwm.suckless.org/) has been on my radar for a while from content -that I've seen on the Internet (mostly from the popular Linux YouTubers: -DistroTube, Luke Smith, and Mental Outlaw). I like the minimalism of suckless -software and I enjoy the paradigm where one compiles software to suit their -needs and desired features, but the window manager that I currently use (bspwm) -is really [comfortable](https://www.urbandictionary.com/define.php?term=Comfy). - -However, I came across this [video by Luke -Smith](https://www.youtube.com/watch?v=92uo5OBOKfY) ([invidious -link](https://www.invidio.us/watch?v=92uo5OBOKfY)) which sold me on trying out -dwm. Window swallowing (the topic of the video), is something that I instantly -knew I wanted when I saw it. According to the patch page, it's a feature taken -from Plan9's windowing system; yet another thing they got right. - -Since I've been planning to re-install the OS on my laptop, I figured I'd take -the opportunity to destroy my existing environment and set up dwm so I'd have it -all ready for the new OS. Setting up dwm is as easy as setting up other suckless -tools: clone the git repo, choose which patches I want, apply the patches, -configure my settings, and compile. All-in-all a fairly straightforward process. -Since I don't use many patches, I didn't have to spend a lot of time manually -patching; just a few lines here and there. - -The default statusbar that ships with dwm is quite spartan. It's configured by -using `xsetroot -name <string>` where `<string>` is the content of the bar (CPU -usage, RAM usage, etc). It's possible to do all this yourself with a bash script -that you call from your `xinitrc` or through your crontab, but I chose to use -[slstatus](https://tools.suckless.org/slstatus/) since it comes with a bunch of -modules ready to go and does the whole `xsetroot` thing itself. If there are any -custom thing I want to add to the bar, I can use slstatus to call a script for -me. - -One thing I made sure to do for this new environment was to compile all of -dmenu, dwm, and st with their corresponding Xresources patches so that I can -define colours, fonts, and more in my Xresources file. This allows me to update -the colourscheme and whatnot without needing to recompile. I also noticed that -vanilla dwm, straight out of the box, is actually completely usable. It comes -with sane keybindings and settings and looks great (in my opinion, of course). -The only thing I had to get used to was the master and stack layout that dwm -uses compared to bspwm's fibonacci layout. With dwm, there is no moving left and -right between windows, just up and down the stack. It makes sense given the way -dwm's layout works and I found it easy to work with once I got used to it. - -Anyways, here's a picture of my desktop: - -<figure> - <a href="/img/dwm-laptop.png"><img src="/img/dwm-laptop-thumb.png" - alt="dwm as it appears on my laptop. A screen is open and floating showing - the output of the neofetch command"/></a> -</figure> - -I've implemented things like taking screenshots, changing brightness, new update -notifications, and battery charge status notifications through scripts which are -called either by using shortcuts in dwm or by cron. I've also decided that I'm -going to change from using the status bar to using my notification daemon dunst -for brightness and audio level indicators with the help of this [Arch wiki -article](https://wiki.archlinux.org/index.php/Dunst#Using_dunstify_as_volume/brightness_level_indicator). - -Now, I know this doesn't really matter given the size of sotrage devices -nowadays, but the size of my dwm setup is also _way_ lower compared to my bspwm -setup. bspwm, plus its necessary tools bspc and sxhkd, weigh in at 324,200 -bytes or 316.60 KiB whereas dwm is only 77,936 bytes or 76.11 KiB. - -If I tally up the entire environment I was using when I first started -(bspwm+components, urxvt, nitrogen, rofi, polybar) compared to what I'm using -now (dwm, st, feh, dmenu, slstatus), that's 138,276,704 bytes (131.87 **MiB**) -versus only 463,432 bytes (452.57 KiB); a huge savings which no doubt also -increased how much RAM my system has available for doing other things. Also, -letting my system idle with nothing but a terminal window open, I let my system -load average settle and measured it once every 5 seconds with a while loop. -After a 15 minute interval passed, it was reading 0.00/0.00/0.00 consistently. - -My final verdict is that dwm is great. It's starting to feel as comfy as bspwm -with the added benefit of the software feeling like it's custom built and -tailored for my needs (which it is). It's also really fun to use because of [how -much I love scripting](/blog/scripting-my-way-to-success). - -You can view the scripts I use as well as other configuration information in [my -dotfiles repo](https://git.sr.ht/~jbauer/dotfiles-legacy). My custom builds for -each of the suckless tools I use are contained in the `custom` branch of each -tool's repository: [dwm](https://git.sr.ht/~jbauer/dwm), -[st](https://git.sr.ht/~jbauer/st), -[slstatus](https://git.sr.ht/~jbauer/slstatus), and -[dmenu](https://git.sr.ht/~jbauer/dmenu). The patches I chose to apply are in -the `patches` folder in each repository. Please note that the dotfiles repo is -going to be retired to `dotfiles-legacy` as I switch over to using dwm full time -on all of my machines. I am keeping the `dotfiles-legacy` repository around so -others can view and use my configuration for things like `bspwm` and `neomutt`. - -_This is my forty-first post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/tweaking-some-css.md b/pages/blog/tweaking-some-css.md @@ -1,38 +0,0 @@ -## Tweaking Some CSS - -[//]: # "Taking inspiration from different site themes that I've seen around the internet, I decided to make a few tweaks to the way my website looks." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-04-27 | - <b>Last Updated:</b> 2020-04-27 -</div> - -Today is a work day so I didn't do much that I can talk about in a blog post. I -was also not really browsing the internet today so I don't have interesting -things to share. However, I did do a little bit of fiddling with the look of my -website. - -Taking inspiration from different site themes that I've seen around the -internet, I decided to make a few tweaks. I made the backgrounds a little bit -brighter, gave them a slight blue tinge to match with the link colours, and I -also made a few elements like the table of contents and code tags have rounded -corners. Using the Firefox accessibility tools and sites like [Tanaguru Contrast -Finder](https://contrast-finder.tanaguru.com/) and [WebAIM: Contrast -Checker](https://webaim.org/resources/contrastchecker/), I made sure that these -new colours had enough contrast so that there weren't accessibility issues with -the new scheme. - -I also did a little bit of code cleanup in the CSS file. I removed colours and -elements that I no longer use on the site such as the `danger` colour and `kbd` -element styling and I consolidated some often-used values like `font-size` into -variables. This shrunk the size of my unminified CSS file from 4.7K to 3.6K. - -_This is my third post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/two-truths-and-a-lie.md b/pages/blog/two-truths-and-a-lie.md @@ -1,38 +0,0 @@ -## Two Truths and a Lie - -[//]: # "@mike@fosstodon.org played two truths and a lie in one of his recent blog posts. I thought it would be fun to do the same so here we go! Respond to this post with your guess." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-07-23 | - <b>Last Updated:</b> 2020-07-23 -</div> - -<a -href="https://pleroma.paritybit.ca/users/9xGSHOgIKTF2WNt4LY">@mike@fosstodon.org</a> -played two truths and a lie in one of [his recent blog -posts](https://mikestone.me/two-truths-and-a-lie). Since I currently don't feel -like writing about anything else and this seems like a fun idea, let's give it a -shot! - -I'll be using the same format as he did: No technicalities and give me your -guess by responding to [the post on the -Fediverse](https://pleroma.paritybit.ca/notice/9xOnIFvbDVvSOpjoWm) ([follow me -here](https://pleroma.paritybit.ca/jbauer)). - -Here are the two truths and the lie, guess which one is the lie: - -1. I am red-green colourblind. -2. I've only been into computers/programming for three years. -3. I've never been on an airplane. - -I'll be responding to the post with the answer in ~24 hours. - -_This is my seventy-eighth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/unsure-what-to-write.md b/pages/blog/unsure-what-to-write.md @@ -1,38 +0,0 @@ -## Unsure What To Write - -[//]: # "I'm unsure what to write about today. I looked through the list of topics I have written down but none of them really sparked inspiration." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-05-07 | - <b>Last Updated:</b> 2020-05-07 -</div> - -_**Note**: This post is pretty much just filler and doesn't contain anything -really important, it was written to keep up with #100DaysToOffload before I -decided it would be better if I just refrained from posting if I didn't have -anything I wanted to talk about._ - -I'm unsure what to write about today. I looked through the list of topics I have -written down but none of them really sparked inspiration. - -My days have been mostly work, cooking, writing these blog posts, and slacking -off enjoying content online like streams and videos. I haven't felt much of a -drive to play video games or solve problems. I'm hoping to get started on a -project I've wanted to start for a while now in the coming days and I want to -rewrite the script used to build the pages for this site. The existing one has -become quite the mess and I would like to switch to using `pandoc` instead of -`markdown` since `pandoc` seems to handle converting markdown to HTML much -better than the `markdown` tool... despite that tool being explicitly designed -to do that. I'll post about my experience when I make that change. - -That's all for today, thanks for reading. - -_This is my thirteenth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/use-xterm-256color-with-alacritty.md b/pages/blog/use-xterm-256color-with-alacritty.md @@ -1,55 +0,0 @@ -## Use xterm-256color With Alacritty For Better ls Output - -[//]: # "Solving a little quirk I came across when using Alacritty with its default TERM variable 'alacritty' when 'xterm-256color' is set in .profile." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-08-05 | - <b>Last Updated:</b> 2020-08-05 -</div> - -In [switching to -alacritty](https://www.paritybit.ca/blog/switching-to-alacritty), I noticed -something off about my `ls` output. Previously, when I was using st, ls would -highlight different files in different colours. For example, image files would -be bold and purple and other files like `.deb.` or `.zip` files would be bold -and red. Here is an example: - -<figure> - <a href="/img/ls-highlights.png"><img src="/img/ls-highlights.png" alt="A - screenshot of a terminal where ls shows media files highlighted in purple - and .deb files in red."/></a> -</figure> - -As opposed to what I was encountering: - -<figure> - <a href="/img/ls-no-highlights.png"><img src="/img/ls-no-highlights.png" alt="A - screenshot of a terminal where ls shows every non-folder and non-executable - with default colours (i.e. non-bold white)"/></a> -</figure> - -Which is what you get if you use a `TERM` variable set to `alacritty` in your -`alacritty.yml` while you have another `TERM` variable set in `.profile`. Since -changing that variable in my `alacritty.yml` file to `xterm-256color` and -removing it entirely from my `.profile`, the highlights have returned. - -It would seem that the terminfo for alacritty is not in the default -installations for any of the systems I use (Debian and OpenBSD, at the moment) -nor is it included in the `.deb` package I grabbed from their GitHub releases -page. Therefore, setting the `TERM` variable to `alacritty` in `alacritty.yml` -without having anything in `.profile` actually results in an almost completely -broken terminal experience where there are no colours by default and SSH -sessions do not behave well unless I `export TERM=xterm-256color` beforehand. - -Also, [Alacritty 0.5 is out](https://github.com/alacritty/alacritty/releases) -which includes a new Vi mode! - -_This is my eighty-fifth post for the -[#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload) -challenge. You can learn more about this challenge over at -[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/blog/website-redesign.md b/pages/blog/website-redesign.md @@ -1,91 +0,0 @@ -## Making My Website More Accessible - -[//]: # "For about one and a half months now I've been working on redesigning paritybit.ca to make it more accessible. In that time I've completely overhauled the design of the website to make it scale better on different screen sizes and make use of as many accessibility features as I can." - -[//]: # "main.min.css" - -[//]: # - -<div class="byline"> -<b>Written By:</b> Jake Bauer | - <b>Posted:</b> 2020-02-06 | - <b>Last Updated:</b> 2020-02-13 -</div> - -_**Update**: Added more links to helpful validators and resources at the bottom -of the page._ - -For about one and a half months now I've been working on redesigning -paritybit.ca to make it more accessible. In that time I've completely overhauled -the design of the website to make it scale better on different screen sizes and -make use of as many accessibility features as I can. I've gone from this: - -<figure> - <a href="/img/website-before.png"><img src="/img/website-before-thumb.png" - alt="My website before the redesign."/></a> -</figure> - -To this: - -<figure> - <a href="/img/website-after.png"><img src="/img/website-after-thumb.png" - alt="My website after the redesign."/></a> -</figure> - -Which I think also looks a lot better and cleaner in addition to being much -better in terms of accessibility. - -To make my website more accessible, I've added page landmarks using `<header>`, -`<nav>`, `<main>`, `<footer>`, and `<section>` tags to make it easier for those -with screen readers to navigate throughout the macro-structure of the page, I -re-designed the link styling to make differing between regular text and links -easier, I shrunk the width of the page to keep the text within a reasonable -field of view so that you don't have to move side to side while reading, I -increased the font size, and I made heavy use of a contrast checker to make sure -that my colours had a bare minimum contrast ratio of 4.5:1 (WCAG AA) with an -ideal goal of 7:1 (WCAG AAA) for regular text. I also ran my colour scheme -through the Toptal Colour Blind Filter website to make sure that the different -colours I chose didn't cause critical issues with understanding page content for -the (quite sizeable) population with a form of colourblindness. - -I also tested my website using Firefox's built-in accessibility tools which -notified me of anything that I may have missed with other tools and helped me -realize that I was being dumb with the way I added internal page links for pages -with a table of contents. - -As the ultimate test, I used the Orca screen reader software so that I could -experience my website as someone who actually needs to use screen reader -software would experience it. - -In terms of page content, I made sure that all of my images have `alt` text, all -of my links are descriptive instead of just reading "click here" or "this", and -all of my `<input>` elements have a `label` tag. - -In addition to accessibility for those with disabilities, I also made my website -more accessible to those with slower internet connections by attempting to -optimize page loading times by shrinking images and keeping requests down to a -minimum. The only thing I didn't do was embed images, no matter how small, into -my HTML because that would needlessly increase page sizes for those who browse -using browsers that don't render images or display favicons. I tried to make my -website look good with any browser, no matter how old. - -I also took this opportunity to add a light-mode theme to the website by making -use of the `@media` query `prefers-color-scheme: light`. If you are using a -light OS theme, you should be able to see my website in a light colour scheme. - -Below is a list of resources that I used in redesigning my website: - -* [Tanaguru Contrast Finder](https://contrast-finder.tanaguru.com/) -* [Toptal Colour Blind Filter](https://www.toptal.com/designers/colorfilter) -* [Viewable with Any Browser](https://anybrowser.org/campaign/) -* [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) -* [Website Accessibility Checklist](http://romeo.elsevier.com/accessibility_checklist/) -* [W3 Introduction to Accesibility](https://www.w3.org/WAI/fundamentals/accessibility-intro/) -* [W3 Page Structure Explanation](https://www.w3.org/WAI/tutorials/page-structure/regions/) -* [W3 Schools CSS Reference](https://www.w3schools.com/css) -* [WAVE Web Accessibility Validation Tool](https://wave.webaim.org/) -* [EXPERTE Web Accessibility Checking Tool](https://www.experte.com/accessibility) -* [Google's PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/) -* [Inclusively Hidden (a blog post about hiding things accessibly)](https://www.scottohara.me/blog/2017/04/14/inclusively-hidden.html) -* [WebPageTest](https://www.webpagetest.org/) -* [WebPageTest's Lighthouse Test (run Lighthouse without Google Chrome)](https://www.webpagetest.org/lighthouse) diff --git a/pages/blog/why-i-hate-the-term-modern.md b/pages/blog/why-i-hate-the-term-modern.md @@ -78,9 +78,9 @@ companies doesn't make it automatically bad. ¬□("Modern" = "Good"). Text editors like Vim and Emacs, email clients like NeoMutt, Alpine, mu4e, or aerc, development practices like the Git email workflow, and even web browsers such as Lynx and w3m allow people to get work done in a way that is efficient -for them. Please don't shun something based on first looks or some mistaken -notion of what constitutes modernity; evaluate things based upon their merit -at least after considering them or giving them a try. +for them. Don't shun something based on first looks or some mistaken notion of +what constitutes modernity; evaluate things based upon their merit at least +after considering them or giving them a try. _This is my seventy-third post for the [#100DaysToOffload](https://pleroma.paritybit.ca/tag/100daystooffload)