commit a0f882a426345ebbafd196dfe799c7a1c6dde17c parent 25d99bfe7a33755e6c1259840546f0a3e9118816 Author: Jake Bauer <jbauer@paritybit.ca> Date: Fri, 5 May 2023 14:55:26 -0400 Change class=note to only be for <div>s not <p>s Diffstat:
21 files changed, 152 insertions(+), 354 deletions(-)
diff --git a/content/a-critique-of-free-software.md b/content/a-critique-of-free-software.md @@ -7,9 +7,10 @@ Summary: Free Software fundamentally misses the point. It fails on a practical, **Written By:** [%author] | **Posted:** [%date] -<p class="note">This essay was not authored by me. It is licensed under the <a +<div class="note"><p>This essay was not authored by me. It is licensed +under the <a href="https://creativecommons.org/share-your-work/public-domain/cc0">CC0 -license</a> (i.e. it is effectively in the public domain).</p> +license</a> (i.e. it is effectively in the public domain).</p></div> Free Software fundamentally misses the point. It fails on a practical, ideological, economic, and political level. diff --git a/content/blog/choosing-a-self-hosted-git-service.md b/content/blog/choosing-a-self-hosted-git-service.md @@ -227,11 +227,11 @@ lightweight. ## My Choices -<p class="note">I have since changed what I use to cgit. I outline why in a more -recent blog post: <a +<div class="note"><p>I have since changed what I use to cgit. I outline +why in a more recent blog post: <a href="/blog/switching-to-cgit">Switching to cgit</a></p> -<p class="note">Actually, I'm now using stagit.</p> +<p>Actually, I'm now using stagit.</p></div> When looking for a self-hosted git service, I was looking for a service that fulfilled the following criteria: diff --git a/content/blog/choosing-an-investment-brokerage.md b/content/blog/choosing-an-investment-brokerage.md @@ -7,15 +7,15 @@ Summary: Now that my time at university is coming to an end, I'm starting to loo **Author:** [%author] | **Published:** [%date] -<p class="note">None of this is intended to be financial or investment -advice.</p> - -Now that my time at university is coming to an end, I'm starting to look forward -into the future at what kind of saving and investing I will need to do to -achieve my life goals. My first step is to find a brokerage which meets my needs -as a Canadian investor. There are so many options to choose from and so many -criteria to consider that I did the only sensible thing a Computer Scientist -could do: I made a spreadsheet. +<div class="note"><p>None of this is intended to be financial or +investment advice.</p></div> + +Now that my time at university is coming to an end, I'm starting to look +forward into the future at what kind of saving and investing I will need +to do to achieve my life goals. My first step is to find a brokerage +which meets my needs as a Canadian investor. There are so many options +to choose from and so many criteria to consider that I did the only +sensible thing a Computer Scientist could do: I made a spreadsheet. <figure> <a href="/img/brokerage-comparison.png"><img src="/img/brokerage-comparison-thumb.png"/></a> diff --git a/content/blog/debian-with-btrfs.md b/content/blog/debian-with-btrfs.md @@ -93,10 +93,10 @@ have created `@`, `@home`, and `@snapshots`. Following this, mount the root subvolume to `/target` like so: `mount -o noatime,compress=lzo,space_cache,subvol=@ BTRFS_VOLUME /target`. -<p class="note">There are quite a few compression algorithms available for use -with btrfs now; learn more on [the btrfs -wiki](https://btrfs.wiki.kernel.org/index.php/Compression). I personally use -zstd.</p> +<div class="note"><p>There are quite a few compression algorithms +available for use with btrfs now; learn more on [the btrfs +wiki](https://btrfs.wiki.kernel.org/index.php/Compression). I personally +use zstd.</p></div> Now we want to `mkdir -p /target/etc` and copy `/mnt/etc/fstab` (and `/mnt/etc/crypttab` if you are using encrypted LVM volumes) into `/target/etc`. diff --git a/content/blog/ethical-investing.md b/content/blog/ethical-investing.md @@ -7,8 +7,8 @@ Summary: The next step after choosing an investment platform is choosing where I **Author:** [%author] | **Published:** [%date] -<p class="note">None of this is intended to be financial or investment -advice.</p> +<div class="note"><p>None of this is intended to be financial or +investment advice.</p></div> The next step after [choosing an investment brokerage](/blog/choosing-an-investment-brokerage) or diff --git a/content/blog/free-software-is-an-abject-failure.md b/content/blog/free-software-is-an-abject-failure.md @@ -7,27 +7,42 @@ Summary: Free Software is an abject failure. It may sound like a good concept on **Author:** [%author] | **Published:** [%date] -<p class="note">I want to preface this by saying that I used to be a staunch -software freedom evangelist. I used to license all my works GPLv3-or-later and -CC-BY-SA wherever I could and I used to believe quite strongly in the words of -Richard Stallman. I have since started to think more about the real effects of -the Free Software movement and have changed the way I write and license my -software as a result. I implore you to genuinely consider what I have written in -this post and to approach it with an open mind. Your knee-jerk reaction may be -to reject what I am saying as anti-freedom or pro-corporation but that is not -the case. In this post, I use the term "Free Software" to explicitly -differentiate it from "Open Source" software (which is what the FSF and Co. -also do). I believe FOSS as a concept is still very important, however I simply -no longer believe in the Free Software movement.</p> - -Free Software is an abject failure. It may sound like a good concept on its -face—especially with the kind of language often used to describe the movement -and its opponents—but, when put under scrutiny, the institutions and practices -that make up the Free Software movement fundamentally fail at their stated -goals. Free Software is an ideological mess, Free Software hampers -collaboration, Free Software is legally ineffective, Free Software makes the -lives of developers harder, and Free Software fundamentally gets in the way of a -thriving software ecosystem. +<div class="note"><p>I want to preface this by saying that I used to be +a staunch software freedom evangelist. I used to license all my works +GPLv3-or-later and CC-BY-SA wherever I could and I used to believe quite +strongly in the words of Richard Stallman. I have since started to think +more about the real effects of the Free Software movement and have +changed the way I write and license my software as a result. I implore +you to genuinely consider what I have written in this post and to +approach it with an open mind. Your knee-jerk reaction may be to reject +what I am saying as anti-freedom or pro-corporation but that is not the +case.</p> + +<p>I'd also appreciate that if you disagree with what I write that you +criticise the ideas that I've presented, rather than assuming things +about my character or level of experience and insulting me or my work. +If you disagree with me, either in part or fully, that's fine. I don't +set out to "religiously convert" people to my point of view. +I appreciate having good faith discussions, and would hope that you'd +also give me the benefit of the doubt.</p></div> + +<div class="note"><p>In this post, I use the term "Free Software" to +mean software licensed with Copyleft licenses (mainly the GPL-family of +licenses), and to explicitly differentiate it from "Open Source" +software (which is what the FSF and Co. also do). I believe FOSS as +a concept is still very important, however I simply no longer believe in +the Free Software movement.</p></div> + + +Free Software is an abject failure. It may sound like a good concept on +its face—especially with the kind of language often used to describe the +movement and its opponents—but, when put under scrutiny, the +institutions and practices that make up the Free Software movement +fundamentally fail at their stated goals. Free Software is an +ideological mess, Free Software hampers collaboration, Free Software is +legally ineffective, Free Software makes the lives of developers harder, +and Free Software fundamentally gets in the way of a thriving software +ecosystem. ## The Failure of the Free Software Ideology @@ -518,14 +533,17 @@ In reality, by licensing your project under the GPL and participating in Free Software culture, instead of limiting the harms that corporations inflict, you end up limiting the good that the rest of us can do. Free Software has failed. -<p class="note">If this post intrigued you and made you want to learn more, -consider checking out <a +<div class="note"><p>If this post intrigued you and made you want to +learn more, consider checking out <a href="https://unixsheikh.com/articles/the-problems-with-the-gpl.html">The -problems with the GPL</a> and <a href="/a-critique-of-free-software">A Critique -of Free Software</a> (both of which inspired this post), as well as <a -href="https://adrian.geek.nz/fossbros">On FOSSBros</a>, <a -href="https://j3s.sh/thought/drones-run-linux-free-software-isnt-enough.html">drones run linux: the free software movement isn't enough</a>, and <a href="https://changelog.com/gotime/263">GoTime Podcast: Who owns our code? Part 2</a>.</p> - -<p class="note">You may also be interested in reading the <a -href="https://lobste.rs/s/dmh7qx/free_software_is_abject_failure">discussion on -Lobste.rs</a>.</p> +problems with the GPL</a> and <a href="/a-critique-of-free-software">A +Critique of Free Software</a> (both of which inspired this post), as +well as <a href="https://adrian.geek.nz/fossbros">On FOSSBros</a>, <a +href="https://j3s.sh/thought/drones-run-linux-free-software-isnt-enough.html">drones +run linux: the free software movement isn't enough</a>, and <a +href="https://changelog.com/gotime/263">GoTime Podcast: Who owns our +code? Part 2</a>.</p> + +<p>You may also be interested in reading the <a +href="https://lobste.rs/s/dmh7qx/free_software_is_abject_failure">discussion +on Lobste.rs</a>.</p></div> diff --git a/content/blog/how-i-keep-my-home-directory-clean.md b/content/blog/how-i-keep-my-home-directory-clean.md @@ -7,15 +7,16 @@ Summary: I am one of those people who likes to keep files organized and director **Author:** [%author] | **Published:** [%date] -<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> +<div class="note"><p>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></div> _**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._ +[rehome](https://github.com/lpar/rehome). Also added a screenshot +showing the current state of my home directory._ I am one of those people who likes to keep files organized and directories clean. Unfortunately, it seems many software developers don't care about this diff --git a/content/blog/improving-blog-searching.md b/content/blog/improving-blog-searching.md @@ -74,7 +74,9 @@ into this form and they will be sent to a DuckDuckGo page with the results. This still improves the UX while keeping the page small and using features supported in browsers like Lynx and w3m. -<p class="note">Since writing this post, I've switched to using <a href="https://cblgh.org/lieu/">Lieu</a> as the search engine. HTML examples are on the linked page.</p> +<div class="note"><p>Since writing this post, I've switched to using <a +href="https://cblgh.org/lieu/">Lieu</a> as the search engine. HTML +examples are on the linked page.</p></div> _This is my sixty-second post for the #100DaysToOffload challenge. You can learn more about this challenge over at diff --git a/content/blog/laptops-suck-why-i-might-get-a-macbook-air.md b/content/blog/laptops-suck-why-i-might-get-a-macbook-air.md @@ -7,11 +7,11 @@ Summary: PC Laptops are trash and I'm considering getting a MacBook. Here's why. **Author:** [%author] | **Published:** [%date] -<p class="note">TL;DR: Watch this <a +<div class="note"> <p>TL;DR: Watch this <a href="https://www.youtube.com/watch?v=X0DIHlnD_S0">video by Wolfgang's Channel</a>. It covers just about everything I talk about in this post, including the negative aspects of the M1 MacBook Air, minus the personal -context and rant about modern laptops.</p> +context and rant about modern laptops.</p></div> If you've been a part of the computing industry in almost any aspect for a while, you'll no doubt know about the trend of laptops becoming worse as time diff --git a/content/blog/mastodon-is-dead-long-live-misskey.md b/content/blog/mastodon-is-dead-long-live-misskey.md @@ -7,15 +7,16 @@ Summary: Okay, so, Mastodon isn't _actually_ dead, but some recent happenings an **Author:** [%author] | **Published:** [%date] -<p class="note">This article is pretty old and the landscape of Fedi has changed -a bit. There is now a fork of Pleroma called <a -href="https://akkoma.dev/AkkomaGang/akkoma/">Akkoma</a> and forks of Misskey -called <a href="https://akkoma.dev/FoundKeyGang/FoundKey">FoundKey</a> and <a -href="https://codeberg.org/thatonecalculator/calckey">CalcKey</a> which all seek -to solve various technical and social shortcomings with their respective -projects. The server I am on right now uses <a +<div class="note"><p>This article is pretty old and the landscape of +Fedi has changed a bit. There is now a fork of Pleroma called <a +href="https://akkoma.dev/AkkomaGang/akkoma/">Akkoma</a> and forks of +Misskey called <a +href="https://akkoma.dev/FoundKeyGang/FoundKey">FoundKey</a> and <a +href="https://codeberg.org/thatonecalculator/calckey">CalcKey</a> which +all seek to solve various technical and social shortcomings with their +respective projects. The server I am on right now uses <a href="https://github.com/hometown-fork/hometown">Hometown</a>, a fork of -Mastodon.</p> +Mastodon.</p></div> Okay, so, Mastodon isn't _actually_ dead, but some recent happenings and a long-standing trend of the lead developer ignoring features beneficial to diff --git a/content/blog/migrating-from-nginx-to-openbsd-httpd-and-relayd.md b/content/blog/migrating-from-nginx-to-openbsd-httpd-and-relayd.md @@ -12,10 +12,10 @@ Summary: Detailing how I migrated my Debian 10 server running nginx to OpenBSD w <figcaption>This logo is subject to the license at: <a href="https://www.openbsd.org/art4.html">openbsd.org</a></figcaption> </figure></center> -<p class="note">The configuration specified in this blog post is out of date. -Please refer to <a +<div class="note"><p>The configuration specified in this blog post is +out of date. Please refer to <a href="/garden/arboretum/knowledge/sysadmin/openbsd-server-details.html">OpenBSD -Server Details</a> for my updated configuration.</p> +Server Details</a> for my updated configuration.</p></div> Having set up my mail server on OpenBSD, I've been very satisfied with the cohesiveness of the operating system; it has been a breeze to administrate. diff --git a/content/blog/paying-for-software.md b/content/blog/paying-for-software.md @@ -49,10 +49,11 @@ services either. Now that I am self-hosting, I plan to donate $20 CAD to [the creator of OpenSMTPD](https://poolp.org/) which is a core part of that infrastructure. -<p class="note">I no longer donate to Wikipedia after seeing how much their -executives and board members make. It's no longer some grassroots foundation -running on a shoestring budget. Like with almost every other profitable -organization, there's too much money going to the top.</a></p> +<div class="note"><p>I no longer donate to Wikipedia after seeing how +much their executives and board members make. It's no longer some +grassroots foundation running on a shoestring budget. Like with almost +every other profitable organization, there's too much money going to the +top.</a></p></div> Depending on your financial situation, it may not be viable to donate or pay a lot and that is totally okay. Being a student, I am very cautious with my money diff --git a/content/blog/setting-up-a-gopher-site.md b/content/blog/setting-up-a-gopher-site.md @@ -13,8 +13,9 @@ Summary: Detailing the simple process of setting up a Gopher server and accessin browser on the paritybit.ca Gopher homepage."/></a> </figure> -<p class="note">I no longer run a Gopher site, but I'm leaving this post up -because I think it might be of some use to someone who is looking to do so.</p> +<div class="note"><p>I no longer run a Gopher site, but I'm leaving this +post up because it might be of some use to someone who is looking to do +so.</p></div> Today I made my website available over the <a href="https://en.wikipedia.org/wiki/Gopher_(protocol)">Gopher protocol</a>! You diff --git a/content/blog/why-irc-is-still-good.md b/content/blog/why-irc-is-still-good.md @@ -49,11 +49,11 @@ as RocketChat, Mattermost, Slack, or Matrix, even if they have to use an IRC bouncer or a screen/tmux session on a remote server to not miss things if their connection is that spotty. -<p class="note">Did you know, <a -href="https://twitter.com/JobSnijders/status/1300068892719697920">IRC played a -critical role in getting networks back up</a> during the <a +<div class="note"><p>Did you know, <a +href="https://twitter.com/JobSnijders/status/1300068892719697920">IRC +played a critical role in getting networks back up</a> during the <a href="https://www.businessinsider.com/centurylink-internet-outage-takes-amazon-xbox-live-hulu-cloudflare-down-2020-8">recent -CenturyLink outage</a>?</p> +CenturyLink outage</a>?</p></div> One of the biggest flaws I see people discuss when talking about IRC is that chat history is not saved by the server. This means that, if you want a record diff --git a/content/garden/make.md b/content/garden/make.md @@ -3,30 +3,32 @@ Summary: Make # [%title] -Make is a build system that was created to ease the pain of building larger -software projects. It is useful for building different parts of a project in -parallel so that it builds faster, and it allows you to change small parts of -your project at a time without needing to recompile the whole project to test -your changes. +Make is a build system that was created to ease the pain of building +larger software projects. It is useful for building different parts of +a project in parallel so that it builds faster, and it allows you to +change small parts of your project at a time without needing to +recompile the whole project to test your changes. -<p class="note">Depending on what you're doing, a POSIX shell script that calls -build tools directly might be preferable to a makefile. It's certainly simpler -and generally more portable.</p> +<div class="note"><p>Depending on what you're doing, a POSIX shell +script that calls build tools directly might be preferable to +a makefile. It's certainly simpler and generally more +portable.</p></div> -The `make` command will look for a file called `makefile` to find rules. If -that file is not found, then it will look for `Makefile`. +The `make` command will look for a file called `makefile` to find rules. +If that file is not found, then it will look for `Makefile`. -It is also common to have most variable declarations in a `config.mk` file so -that the makefile contains only rules for building the software. +It is also common to have most variable declarations in a `config.mk` +file so that the makefile contains only rules for building the software. A lot of Makefile syntax is unfortunately not standard. This is probably -because the standard is extremely limited. This has led to different operating -systems having different syntax and conventions, depending on which version of -`make` they use by default. The three major implementations that you'll likely -need to concern yourself with is BSD make syntax, GNU make syntax, and Windows -make syntax. The different BSDs do have their own extensions, but they're -usually not major. If you're on a BSD, GNU make is usually called `gmake`. -Likewise, if you're on Linux, BSD make is usually called `bmake`. +because the standard is extremely limited. This has led to different +operating systems having different syntax and conventions, depending on +which version of `make` they use by default. The three major +implementations that you'll likely need to concern yourself with is BSD +make syntax, GNU make syntax, and Windows make syntax. The different +BSDs do have their own extensions, but they're usually not major. If +you're on a BSD, GNU make is usually called `gmake`. Likewise, if you're +on Linux, BSD make is usually called `bmake`. These differences and limitations are what spawned large scripts that generate makefiles (e.g. the autoconf program or `configure` scripts) and other build diff --git a/content/garden/philosophy-software-development.md b/content/garden/philosophy-software-development.md @@ -1,234 +0,0 @@ -Title: DRAFT: A Philosophy of Software Development -Summary: DRAFT: A Philosophy of Software Development - -# [%title] - -This post needs to be broken up into separate posts: - -* Building software for a community -* Building specifications, not apps -* Vendor your dependencies - -<p class="note">This blog post is related to the previous: <em><a -href="/blog/free-software-is-an-abject-failure">Free Software is an Abject -Failure</a></em>.</p> - -I believe that the way we are building software today is fundamentally flawed. -I'm not talking in terms of language, architecture, design choices, licensing -choices, or anything along those lines. Instead, I'm talking about something -that neither the Free Software nor the Open Source movements have been able to -solve: community. I believe the mindset behind why we create software, who we -are writing it for, and what purpose it is serving is wrong. - -The way we build software today creates and emphasizes a producer-consumer -relationship between the developers of software and the users of that software -instead of a more holistic environment in which they are one and the same. It -creates people who become dependent on those who write the software they use -instead of empowering them to create or mold computer software to fit their -needs. Software should instead be made the same way we used to make most things -before the age of computing: as robust tools built for one purpose, with only -as much complexity as needed to do its job, and to last a long -time[postapocalyptic]. This is only possible when it serves the needs of the -user-developer, not those of developers vying for the highest market share or -ever-increasing profits. - -Today our lives are dominated by gargantuan software projects which ultimately -control how we can use our computers. Think Google and the Chrome web browser -ecosystem. Think Apple and their entire ecosystem. Think GNU and gcc or even -the entire Linux kernel. It doesn't matter if the software was written by -a company or by FOSS contributors, the end result is the same: complicated, -buggy, hard-to-understand software that individual users or communities cannot -realistically mold to fit their needs, except in limited cases where allowed by -the producers of that software. - -I'm sure we've all been in situations like when your favourite browser decides -that it's more important to introduce built-in colour themes with great fanfare -and excitement while stripping out usability features like menu icons[firefox] -or severely handicapping adblocking[manifestv3]. When your favourite messaging -app decides that sticker integration is more important than reliable message -delivery and robust server and client software[matrix]. When an important -feature is stripped from an artistic program because the company who owns the -software is having a childish feud with the company who "owns -colours"[lttcolor]. Or when your favourite desktop environment decides that -it's time to redesign everything from the ground up[gnome, kde4]. I could go on -and on, but I'm sure you see the problem. - -Any software aiming to attract the widest userbase, either to make more money, -gain more funding, or just have more people using "objectively better software" -will always be a race to the bottom. When the developers of software try to -cater to every user, to every use case, the software can only head in one -direction: into becoming a bloated, buggy, unmaintainable mess. Good luck -trying to remove some functionality that 99% of your users don't need, but -which a tiny subset do and will complain loudly about if it's removed (why do -you think Windows has become such a monstrous mess) [xkcd1172]. - -So, what would a different software landscape look like? - -Well, to start, the fact of the matter is that as a civilization we simply do -not need massive kernels which handle absolutely everything in a system, web -browsers which have morphed into de-facto operating systems, or messaging apps -which have become social media platforms. Creations like these are a result of -the current software development ecosystem in which a team of developers, -a company, or a single person has virtually complete control over the direction -and featureset of that piece of software. Those who come to depend on that -software are at the mercy of those developers and have no choice but to suffer -when those developers inevitably add extra features which introduce more bugs -and more issues and change the experience of using the software. This is an -ecosystem in which software has owners and users of the software must either - -It would mean writing software to be as hackable as possible. Allowing for both -extensibility and core modifications. It means writing software in a way that -is easy to read, understand, and maintain not only for yourself but also for -others. - -> “Debugging is twice as hard as writing the code in the first place. -Therefore, if you write the code as cleverly as possible, you are, by -definition, not smart enough to debug it.” > -- Brian Kernighan - -By all accounts this is not a new idea; aspects of this philosophy have existed -since the early days of programming and are observed by other disciplines. For -example, it's well understood in the gaming industry, that it is impossible to -make a game for everybody. The more features are added with the goal of -appeasing every person's preferences, the harder the game is to understand and -the more of a muddy, confusing mess it becomes for players. Others have also -come up with similar manifestos and philosophies. Edsger Dijkstra spoke about -this very thing in his 1972 ACM Turing Award Lecture _The Humble -Programmer_[CITE]. Both the Malleable Systems[malleablesystems] and Trivial -Technologies[trivialtechnologies] manifestos espouse similar ideals. Trivial -Technology: - -> is a new way of doing FOSS, whose goal is to maximally empower the individual by providing a stepping stone for whatever they may wish to build. - -And the Malleable Systems philosophy is: - -> Software must be as easy to change as it is to use it. > All layers, from the -user interface through functionality to the data within, must support arbitrary -recombination and reuse in new environments. > Tools should strive to be easy -to begin working with but still have lots of open-ended potential. > People of -all experience levels must be able to retain ownership and control. -> Recombined workflows and experiences must be freely shareable with others. -> Modifying a system should happen in the context of use, rather than through -some separate development toolchain and skill set. > Computing should be -a thoughtfully crafted, fun, and empowering experience. - -Not doing this causes struggles which even the IETF has noticed. One development group simply cannot take into account the needs of all users of the technology they develop. - -[https://datatracker.ietf.org/doc/html/rfc8890#section-4](https://datatracker.ietf.org/doc/html/rfc8890#section-4) - - -In fact, abstraction is the wrong word to refer to libraries as they are used -today since most libraries are treated as black boxes; as services which -someone else wrote for you that you don't have to think about at all. When it -boils down to it, libraries and web APIs aren't really that different in terms -of how they are used by software developers. You have allowed someone else to -think about the details of whatever the library does and deferred not only that -burden to them, but also a great deal of knowledge about how that library -influences and shapes your program and control over that aspect of your -program. vendor libraries, you should be responsible for maintaining a library -someone made if you use it in your program, it is a utility, not an API. - -This ties in with the notion that software should be simple and perform one -task or one logical grouping of tasks well. Writing the tool you want to -fulfill just your needs ensures that the software remains simple and easy for -one person to grasp. It should be simple enough that a single human can hold -all the code in their head and know exactly which parts do what. Failing that, -it should be broken up into a base system with an API/ABI and a set of -plugins/modules/extensions such that each part can be understood on its own, -like a lamp can be understood independently of the electrical grid. This is -called human scale software.[humanscale] - -Also, in open source you are not beholden to the people for whom you create -things. Just because there are people who use your software doesn't mean you -automatically become a slave to their wants and desires. [need to talk more -about this philosophy and how FOSS doesn't solve it] - -[https://lucumr.pocoo.org/2022/7/9/congratulations/](https://lucumr.pocoo.org/2022/7/9/congratulations/) - -[https://www.b-list.org/weblog/2022/jul/11/pypi/](https://www.b-list.org/weblog/2022/jul/11/pypi/) - - -This results in simpler software that is easier to maintain, learn, and -develop. Simpler software means fewer security holes and fewer things that can -break (minimizes the “this is broken for no reason!” moments). - -Computer software should be generally single-purpose. Objects which have -computers in them but for which the computer is not the totality should have -special, purpose-built software, not general purpose kernels or software stacks -treated like black boxes. Not only does this make such a stack likely simpler -to capture in the brain, but also should limit maintenance burden in the future -due to minimal dependencies and a simpler, smaller codebase. Yes, this does -have a much higher upfront cost, but the long run is a more diverse, healthier -software ecosystem where more people are empowered to mold their computers to -fit their needs. The goal of this philosophy is to make software simpler, -easier to understand and manage, and more approachable for everyone. - -You should build tools yourself that suits your needs. These days, this is most -commonly seen with many hackers who have their own personal websites. Many, -such as myself, don't feel like existing static site generators or content -management systems fit their needs so we build our own. In my case, my static -site generator is built to do only what I need out of my site, and nothing -else. Because it is a shell script of a couple hundred lines long with very -clear workings, it's easy for someone to take my static site generator, tear -out the parts they don't need, and shove in some new functionality they do -need. Perhaps they want to add automatic Gemini→Gopher & HTML generation. They -absolutely could do that, and there's no need for me to write a large program -to accommodate needs I don't have. Here are some great examples of people who -have done something similar: [My Website is One Binary -— j3s.sh](https://j3s.sh/thought/my-website-is-one-binary.html), [Oscean -- wiki.xxiivv.com](https://wiki.xxiivv.com/site/oscean.html). - -In conclusion, the overarching theme of this philosophy is that you, as -a developer or a user of software, should create or modify software to fits -your needs or the needs of your community, and not anyone else. That means not -taking feature requests that don’t align with your intended vision, not adding -features that you don't need but someone else wants, and making it as easy as -possible to fork and modify your software so that others can do the same -without needing to come to you. Let those other people fork your project and do -the work to make the software fit their needs, instead of trying to fit their -needs into your software. When possible, design from the ground up. You can -reuse existing code or make libraries out of the things you write, but don’t -rely on abstractions to take care of absolutely everything for you. Expose the -inner workings of your programs to developers wherever possible. Keep the human -in the loop. - -[https://actsofvolition.com/2004/04/theriseof/](https://actsofvolition.com/2004/04/theriseof/) - -^ this talks a lot about what I do in this post... and it's from 2004 - -[https://www.softwaremaxims.com/blog/not-a-supplier](https://www.softwaremaxims.com/blog/not-a-supplier) - - -^ All about the software supply chain again - -> this is a great example of why I think domain specific languages are great. What Alex needs for his project is not what Josh needs for his is not what I need for mine. If we tried to make one thing that did everything, you would get YAML and it is okay at everything, but not good at anything. - -Lifted quote from Milo Fultz on Fedi, need to incorporate somehow - -[https://merveilles.town/@milofultz/109515789142359902](https://merveilles.town/@milofultz/109515789142359902) - - -## Further Reading - -* [Slow Software Development](https://robinwinslow.uk/slow-software-development) -* [Waking up from the Dream](https://systemstack.dev/2022/05/waking-up/) -* [There is no "software supply chain"](https://iliana.fyi/blog/software-supply-chain/) -* [The Idealism and Practicality of Software You Can Love - Loris Cro - Software You Can Love 2022](https://www.youtube.com/watch?v=aYtAdWASGzg) -* [XKCD #1987: Python Environment](https://xkcd.com/1987/) -* [Why Modern Software Is Slow](https://randomascii.wordpress.com/2022/09/29/why-modern-software-is-slow-windows-voice-recorder/) -* [The Changelog Podcast Ep. 521: Don't Sleep on Ruby & Rails (contains a discussion about enterprise needs bleeding into Open Source)](https://changelog.com/podcast/521) - -## Footnotes - -[manifestv3]: [Chrome Users Beware: Manifest V3 is Deceitful and Threatening](https://www.eff.org/deeplinks/2021/12/chrome-users-beware-manifest-v3-deceitful-and-threatening) -[lttcolor]: [I Have to Pirate COLOURS Now?? — Linus Tech Tips](https://www.youtube.com/watch?v=qMWAY8Cdsz0) -[postapocalyptic]: [Unusual Scrapyard Finds! Repair-A-Thon! — The Post Apocalyptic Inventor](https://www.youtube.com/watch?v=Jzt2Fuy-_ts) -[xkcd1172]: XKCD #1172: Workflow](https://xkcd.com/1172/) -[malleablesystems]: [Malleable Systems](https://malleable.systems/mission/#principles) -[trivialtechnology]: [Trivial Technology](https://trivial.technology/) -[humanscale]: [Human Scale Software](https://permacomputing.net/human-scale/) - -[Vibe Driven Development](https://www.robinrendle.com/notes/vibe-driven-development/) - -[Alan Kay - The Computer Revolution Hasn't Happened Yet](https://www.youtube.com/watch?v=oKg1hTOQXoY) - -[Simplicity and Ecosystems](https://orib.dev/simplicity.html) diff --git a/content/garden/programming-style.md b/content/garden/programming-style.md @@ -282,7 +282,8 @@ if (condition) { ``` it is far more readable in general to put opening braces on a new line, -([Allman Style](https://en.wikipedia.org/wiki/Indentation_style#Allman_style)): +([Allman +Style](https://en.wikipedia.org/wiki/Indentation_style#Allman_style)): ``` if (condition) @@ -652,7 +653,7 @@ Different programming languages have different conventions or best-practices that are dependent on the syntax and usage of that language. Here are some notes on various languages: -<p class="note">I am still expanding this section</p> +<div class="note"><p>I am still expanding this section</p></div> ### C diff --git a/content/garden/software-licenses.md b/content/garden/software-licenses.md @@ -3,7 +3,8 @@ Summary: Software Licenses # [%title] -<p class="note">I am not a lawyer. None of this is legal advice.</p> +<div class="note"><p>I am not a lawyer. None of this is legal +advice.</p></div> Licenses which are simple, easy to understand for everyone, and don't place undue burden on developers or users should be prefered over ones that make @@ -69,9 +70,9 @@ unnecessary language. ### A Calm and Collected Rant About the ISC License "Controversy" -<p class="note">This section is somewhat inflammatory, but it's so frustrating -to witness so much incompetence I think it's only appropriate that you read my -unfiltered thoughts.</p> +<div class="note"><p>This section is somewhat inflammatory, but it's so +frustrating to witness so much incompetence I think it's only +appropriate that you read my unfiltered thoughts.</p></div> The ISC license states: @@ -132,9 +133,9 @@ my stance. ## Ethical Licenses -<p class="note">Much of what I write here is a counter to <a +<div class="note"><p>Much of what I write here is a counter to <a href="https://medium.com/hackernoon/6-myths-about-ethical-open-source-licenses-3bfbd042b1dc">6 -myths about “ethical” open source licenses</a>.</p> +myths about “ethical” open source licenses</a>.</p></div> These are licenses that attempt to control how one can use software based on the particular prejudices of the author(s). They say things like "this must not @@ -164,14 +165,15 @@ examples of this to strengthen this argument.] This is the issue that permissive licenses avoid, and one of the stronger arguments for using such licenses instead. -<p class="note">While I'm very much against software monocultures, I also don't -particularly want to see a world where there are five different implementations -of a "SQL database", for example, that all call purport to implement the SQL -specification yet have <a +<div class="note"><p>While I'm very much against software monocultures, +I also don't particularly want to see a world where there are five +different implementations of a "SQL database", for example, that all +call purport to implement the SQL specification yet have <a href="https://en.wikipedia.org/wiki/SQL#Interoperability_and_standardization">different -quirks and incompatibilities between them</a> such that you can't, for example, -migrate from a proprietary SQL database to a PostgreSQL database without -rewriting the SQL statements used in your code.</p> +quirks and incompatibilities between them</a> such that you can't, for +example, migrate from a proprietary SQL database to a PostgreSQL +database without rewriting the SQL statements used in your +code.</p></div> Not to mention that it's usually difficult, if not impossible, to actually comply with many Ethical licenses. While some are written well such that it's diff --git a/content/meta.md b/content/meta.md @@ -67,7 +67,9 @@ A page for testing the stylesheet. <p>This is text inside the details block with <b>bold</b>, <i>italic</i>, <code>code</code>, and <a href="/meta.html">a link</a>.</p> </details> -<p class="note">This is a note paragraph with <b>bold</b>, <i>italic</i>, <code>code</code>, and <a href="/meta.html">a link</a>.</p> +<div class="note"><p>This is a note div containing a paragraph with <b>bold</b>, <i>italic</i>, <code>code</code>, and <a href="/meta.html">a link</a>.</p> +<p>As well as a second paragraph.</p> +</div> <blockquote> This is a quote block, with <b>bold</b>, <i>italic</i>, <code>code</code> and <a href="/meta.html">a link</a>. diff --git a/content/software.md b/content/software.md @@ -3,8 +3,8 @@ Summary: A breakdown of the software I use. # [%title] -<p class="note">NOTE: This page is out of date, see the current <a -href="/uses">uses page</a> for updated information.</p> +<div class="note"><p>NOTE: This page is out of date, see the current <a +href="/uses">uses page</a> for updated information.</p></div> <figure> <a href="/img/desktop.png"><img src="/img/desktop-thumb.png" alt="A picture diff --git a/templates/header.html b/templates/header.html @@ -7,7 +7,7 @@ <link rel="alternate" type="application/rss+xml" title="RSS feed" href="/feed.xml"> <link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABX1BMVEUAAAABAAAAAAAAAAAAAAAAAAAAAAC7amoAAABlPz8AAAAAAAAGAwMAAAAAAAAAAAC7d3cKBwe7d3e7d3eWX1/ny4+WX18CAQGHVlaTXl4BAAApGhpiPj7ny4/ny4/oy4/ozI/qz5Ona2u7d3d4TEzny48MCAhlQEC7d3e7d3cAAAAAAAC7d3e8d3cAAAC8d3fnzI+8dnYAAADpzJC9eHjny4+WX1+TXV13S0u7d3fny492S0vnzI/ny4+EU1PnzI8mFxe7d3cjFhZgPT3ny5AAAAC7d3fny4+7d3cAAADozJC6d3e7d3cAAADozI/my5Dny44AAAAAAAC7d3e4d3fkx5DpzY69c3O7d3eoamroy4+FVVWEVFR0Skq7d3e7d3e8d3cAAAC6eHi7eHi7eHi8dna8dnYAAADozJAAAADkyY28eXnqyJHqzY63eHi/dXXny48AAAC7d3e5dXW2dHSjLYEdAAAAcHRSTlMA9cj58gYaBOrflhjq44MI/ePbaP348u/u6Oba1sW+oosL/Pbv7ejnyLuXlI54RkM8Oy4iG/v38efl4ODf2tfT09LQz87FwbeimJeJf397ZUlIRTQvGxYP9/Xv4ODZz86yk4JxYlRQSjctJiYlJCAYM3tXUgAAAg1JREFUOMttk1V3ImEQRO8MQ3CChACBIHF3l427+7q7Tjfz/88+sNhk67Vuf3K6CuryXo2Yfo/HbwYnvDxW25EldVnBNpfdHjVErO2dJ9nsk51tS8SItreMmyLxV46qakxVndW4iNl0yExEjHxFEyfTcz7f3PT7La0EDInM1PxQRMJZTSQbE5OvtbNLuv6d0W5K1zM99DXf6RvTnrCY1XdExcjqKcD9RbFQKF7cAyS105AoQJsheT0EyqWUbdu2badKZeBEA2KFgCOJVxI+uNu169q9A4YqAxIEryWr+hnKG3aTNsowrX2S9vJFLGcLOLZbdAwMO4ZMMCKbegq/5luB+VlIak6CmJLXGzi3XTqHOQ2IiV9e6gMU3EABeJoRPx7p7AXW3cA6kOgQTw1YcwNrNcAvL/QBut1AN9CbET+m5PUWSm6gBH90UEyCsqnjMOUGvsJHzckoV2I4Q8BBq38AvHUMucZryZJOwmx/s98/C7exPkl7YUTilTc+mHre5E8Bw5UBGa2uO6BjwPf6T7p/AuM6WF03UTEWNQlwWVxJpVaKlwCfYgseOatFLtyjYy2RYzzWE5Y9byO0izo02bBv9nUhXA9tNfaBiu5/+OED3+/ksFYGPRL55irOkqOqy8sxVadvQGQv9Kh6Ri6Q6ejIBHKGiHXmLnAomG6UNz0a+k+/vRPBav3fXTdN/wUXrszXABeiEwAAAABJRU5ErkJggg=="> <title></title> -<style>body{background-color:#fcfcfc;color:#111;line-height:1.4em;max-width:38em;margin:auto;padding-bottom:3em;font-family:"IBM Plex Serif", serif}header{text-align:center;margin:0.7em;font-size:2em;font-weight:bold}h1{font-style:oblique;margin-bottom:0;font-size:1.7em}h2,h3,h4,h5,h6{margin:1.5em 0 -0.3em;line-height:1.1em}nav{text-align:center}nav a{padding:0 0.5em;font-size:1.1em;font-weight:bold;text-decoration:none}nav a:hover{text-decoration:underline}a,nav a:visited{color:#134799}a:hover{text-decoration:none}a:visited{color:#551a8b}article a[href^="http"]:where(:not([href*="paritybit.ca/"]))::after{content:"︎↗"}figure a::after{content:""!important}img,video{max-width:100%}figcaption{text-align:center}blockquote{border-left:3px solid #134799;padding-left:0.5em}summary:hover{cursor:pointer;background-color:#ddd}table{width:100%;text-align:left}table,td,th{border-collapse:collapse;border:1px solid #ddd;margin-top:1em;padding:2px 4px;vertical-align: top}th{background-color:#ddd}tr:nth-child(even){background-color:#eee}pre{background-color:#ddd;overflow:auto;padding:0.5em;border:1px black solid}code{background-color:#ddd;font-family:"IBM Plex Mono", monospace;font-size:0.9em}.note{border:3px solid #134799;padding:10px 15px}figcaption,.date{font-size:smaller;color:#565151}#icons{float:right}@media print{pre{white-space:pre-wrap}nav{display:none}}@media only screen and (max-width: 700px){body{max-width:90%}#icons{float:none}}</style> +<style>body{background-color:#fcfcfc;color:#111;line-height:1.4em;max-width:38em;margin:auto;padding-bottom:3em;font-family:"IBM Plex Serif", serif}header{text-align:center;margin:0.7em;font-size:2em;font-weight:bold}h1{font-style:oblique;margin-bottom:0;font-size:1.7em}h2,h3,h4,h5,h6{margin:1.5em 0 -0.3em;line-height:1.1em}nav{text-align:center}nav a{padding:0 0.5em;font-size:1.1em;font-weight:bold;text-decoration:none}nav a:hover{text-decoration:underline}a,nav a:visited{color:#134799}a:hover{text-decoration:none}a:visited{color:#551a8b}article a[href^="http"]:where(:not([href*="paritybit.ca/"]))::after{content:"︎↗"}figure a::after{content:""!important}img,video{max-width:100%}figcaption{text-align:center}blockquote{border-left:3px solid #134799;padding-left:0.5em}summary:hover{cursor:pointer;background-color:#ddd}table{width:100%;text-align:left}table,td,th{border-collapse:collapse;border:1px solid #ddd;margin-top:1em;padding:2px 4px;vertical-align: top}th{background-color:#ddd}tr:nth-child(even){background-color:#eee}pre{background-color:#ddd;overflow:auto;padding:0.5em;border:1px black solid}code{background-color:#ddd;font-family:"IBM Plex Mono", monospace;font-size:0.9em}.note{border:3px solid #134799;padding:0px 15px;margin-bottom:10px}.note p{margin:10px 0px}figcaption,.date{font-size:smaller;color:#565151}#icons{float:right}@media print{pre{white-space:pre-wrap}nav{display:none}}@media only screen and (max-width: 700px){body{max-width:90%}#icons{float:none}}</style> </head> <body> <header>paritybit.ca</header>