RSS Atom Add a new post titled:

FreedomBox Calendar

Created by Steven Baltakatei Sandoval on 2021-03-10T22:45Z under a CC BY-SA 4.0 license and last updated on 2021-03-12T01:50Z.

Summary

I decided to try the Radicale CalDAV software available as a FreedomBox app. My motivation for doing so was to be less reliant upon Google Calendar, the calendar and task server I have been using for years.

Background

When I first started using computer calendars, it was when I was attending university. I had barely started using Email via Gmail in my last year of high school. I remember using the calendar software in the iMac my father purchased for me; the software was very useful in helping me to keep track of when all my classes were in the fast-paced Stanford quarter system. Later, I used mostly Microsoft Outlook because my employer used it for internal meeting scheduling and correspondance. After I read Free Software, Free Society by Richard Stallman, I grew a desire to use free and open-source software whenever it was available.

To that end, one of the first major changes I made was to switch from Microsoft's Windows and (at the time) Apple's OS X to GNU/Linux Debian. I quickly learned that dual-booting was more hassle than it was worth. I found Debian was a viable substitute for every major computing activity of mine except for gaming. Therefore, I purchased a dedicated GNU/Linux machine from Think Penguin and ran Debian on that. I have been satisfied ever since.

However, some computing activities I did not switch over because I had not been using them as often. I haven't been maintaining a personal calendar because either:

  1. An scheduleable event will involve my employer so I'd default to what they require.

  2. Scheduleable events were so infrequent that I didn't think I needed to bother with even Google Calendar.

For years I have neglected to maintain a personal calendar. However, I believe it is a useful activity, especially when planning tasks for myself. I have played with Org Mode but I haven't caught on to using its task management functionality (i.e. "TODO") which appears very robust. Org Mode attempts to do as much as it can in the GNU Emacs text editor. However, I have yet to see a Emacs calendar synchronization function that I like. I'm sure one exists, but in discussion threads about what people use Emacs for, I haven't noticed such an Emacs package. So, even though I'd like to maintain a calendar and task list, Org Mode hasn't really caught my attention. That's where my experiment with FreedomBox comes in.

FreedomBox is a free and open-source project to make server software available and usable to non-sysadmin people. Although I have some experience in crafting my own Bash) scripts and messing with Debian system services via systemd commands, I have been averse to messing with web server software such as Apache. That changed after I purchased a FreedomBox device from Olimex; the device is a small ARM computer about the size of a deck of playing cards which I purchased from Olimex (the "Pioneer Edition Freedombox Home Server Kit"). It contains a set of apps, which includes a calendar server called "Radicale". It stores calendar, journal, and task data that remote clients can synchronize with; this synchornization action can occur over the public internet since FreedomBox software has been designed to provide all its apps with the ability to securely communicate using a user's own public domain name (e.g. reboil.com for this blog). This means that I can activate the Radicale app, initialize a calendar, copy the provided synchronization URL into my smartphone or computer's calendar app, and then, as a result, be able to update the calendar while I am away from home (specifically, away from the FreedomBox located there). None of this process requires that I save any data with a commercial 3rd party such as Google or Apple. With the FreedomBox, I am my own server.

Setup

The setup instructions for Radicale can be found here in the Debian wiki for the FreedomBox. Basically, the steps are:

  1. Setup the FreedomBox (Let's Encrypt certificate, Dynamic DNS if applicable, a username/password to push/pull CalDAV data)
  2. Install Radicale app (the CalDAV server) on the FreedomBox's system web interface.
  3. Login to Radicale as a FreedomBox user and create a calendar/journal/task repository (?) via the Radicale web interface.
  4. Copy the repository's (?) CalDAV URL into a client device (e.g. smartphone) app (e.g. DAVx5 for Android), Thunderbird for GNU/Linux Debian). Provide the client app with the password for a FreedomBox user.

After following the steps described in the wiki for my Android phone and my work machine's Thunderbird instances, I found I was able to successfully push a calendar event from Thunderbird and a task from Android. Now I don't have to use Google Calendar!

Summary

Using FreedomBox and Radicale, I set up my own personal digital calendar server without needing to involve Google Calendar at any step.

Posted 2021-03-10T23:56:08+0000

Personal Text Logger

Created by Steven Baltakatei Sandoval on 2021-03-09T06:11Z under a CC BY-SA 4.0 license and last updated on 2021-03-10T02:46Z.

Summary

I wrote a bash script a while ago for compressing and encrypting log text streams produced by other scripts. I call it bklog. A static copy (version 0.1.33) is available here but I version track it in an environmental sensor script repository here.

Background

Born from desire to record my surroundings

I wanted a program to write to disk the observations captured by environmental sensor data loggers. I wanted such a program to permit me to also encrypt captured sensor data against a public key in case I have it capturing sensitive data (e.g. my personal smartphone's location data) and may need to transfer the data in shared spaces (e.g. a cloud service provider or someone's computer.

The reason I wanted this program was to be able to do something with data produced by Raspberry Pi devices I have been tinkering with. I could see myself generating temperature, air pressure, location, and other trendable data. At first, I started making an adhoc bash script to record each of these items but I decided to make a general script that could compress and encrypt any text stream via stdin.

Encrypted with age

I had seen age recommended as a command line encryption tool whose main feature was that it had fewer configuration options than gnupg, a tool often used for encrypting files. I was attracted to age because it accepted input data in the form of stdin and its public keys took the form of 63-char strings. Also, the key generation process was all done in the command line. Here, secretkey.txt is an example of what a private key in age beta1 looks like:

baltakatei@mycomputer:~$ age-keygen
# created: 2021-03-09T06:32:52Z
# public key: age14a65znxam4k45kd4xg0lc8uu0yvlpyj376kap970mcxf066wycqq57xzqd
AGE-SECRET-KEY-1VEDW7UEKRCE6P2NUDEDXZF0RJ23QTND5PZP97SHHD5TG6Z7CL70Q09A4D5

As of 2021-03-09, age is in beta7. The current version of bklog, 0.1.33 assumes use of beta2.

Recently useful for recording uptime statistics

I haven't recently touched bklog in a while after getting it to work successfully in recording temperature and location data with a set of Raspberry Pi Zero W devices I played with during the 2020 COVID-19 restrictions. However, recently I did find a use for it when I decided to try and collect some uptime, bandwidth, and system process data from the server that runs this blog. I was pleased that past-me had decided to include usage information for the many options I made in the program. I wrote some bash scripts whose only purpose was to output a single stream of data continuously. For example, here's the simple script named uptime_continuous.sh for producing uptime data:

#!/bin/bash
# Desc: Outputs `uptime` every 15 seconds

while true; do
    uptime &
    sleep 15;
done;

Such a script produces output like this:

07:13:47 up  1:30,  1 user,  load average: 0.36, 0.38, 0.37
07:14:02 up  1:30,  1 user,  load average: 0.42, 0.40, 0.37
07:14:17 up  1:31,  1 user,  load average: 0.40, 0.39, 0.37

A separate bash script to be run by cron would pipe the output of this initial stream into bklog which would take care of the job of compressing, encrypting, and writing the data to disk. Because bklog was intended to run on small GNU/Linux systems such as Raspberry Pi devices that use SD cards (flash memory with a limited number of writes), it collects a buffer for a period of time (default: 10 minutes) before compressing, encrypting, and writing a separate file to a memory-only directory (default: /dev/shm). Then, this file is appended to a time-stamped output tar file (default: one tar file per day). I provided several option flags that allow on to adjust time zone, output file name patterns, time periods, etc. An example use of uptime_continuous.sh without encryption is here:

# Desc: Logs system statistics
# Note: Run at boot or every day at midnight UTC
# Depends: bklog, ifstat, top, uptime

~/.local/bin/uptime_continuous.sh | /usr/local/sbin/bklog -v -e \
  -r age14a65znxam4k45kd4xg0lc8uu0yvlpyj376kap970mcxf066wycqq57xzqd \
  -o "/home/admin/logs" -l "uptime" -w ".log" -c -z "UTC" -b "600" -B "day" \
  1>~/$(date +%s)..uptime_logger.log 2>&1 &

Here is usage information that can be obtained by running $ bklog --help:

USAGE:
    cmd | bklog [ options ]

OPTIONS:
    -h, --help
            Display help information.
    --version
            Display script version.
    -v, --verbose
            Display debugging info.
    -e, --encrypt
            Encrypt output.
    -r, --recipient [ string pubkey ]
            Specify recipient. May be age or ssh pubkey.
            May be specified multiple times for multiple pubkeys.
            See https://github.com/FiloSottile/age
    -o, --output [ path dir ]
            Specify output directory to save logs. This option is required
            to save log data.
    -p, --process-string [ filter command ] [ output file extension] 
            Specify how to create and name a processed version of the stdin.
            For example, if stdin is 'nmea' location data:

            -p "gpsbabel -i nmea -f - -o gpx -F - " ".gpx"

            This option would cause the stdin to 'bklog' to be piped into
            the 'gpsbabel' command, interpreted as 'nmea' data, converted
            into 'gpx' format, and then appended to the output tar file
            as a file with a '.gpx' extension.
            This option may be specified multiple times in order to output
            results of multiple different processing methods.
    -l, --label [ string ]
            Specify a label to be included in all output file names.
            Ex: 'location' if stdin is location data.
    -w, --store-raw [ file extension ]
            Specify file extension of file within output tar that contains
            raw stdin data. The default behavior is to always save raw stdin
            data in a '.stdin' file. Example usage when 'bklog' receives
            'nmea' data from 'gpspipe -r':

            -w ".nmea"

            Stdin data is saved in a '.nmea' file within the output tar.
    -W, --no-store-raw
            Do not store raw stdin in output tar.
    -c, --compress
            Compress output with gzip (before encryption if enabled).
    -z, --time-zone
            Specify time zone. (ex: "America/New_York")
    -t, --temp-dir [path dir]
            Specify parent directory for temporary working directory.
            Default: "/dev/shm"
    -R, --recipient-dir [path dir]
            Specify directory containing files whose first lines are
            to be interpreted as pubkey strings (see '-r' option). Only
            one directory may be specified.
    -b, --buffer-ttl [integer]
            Specify custom buffer period in seconds (default: 300 seconds)
    -B, --script-ttl [time element string]
            Specify custom script time-to-live in seconds (default: "day")
            Valid values: "day", "hour"

Here, bklog is located within /usr/local/sbin/. The output directory is specified to be /logs. Each file saved in the output tar archive contains "uptime" and ends with .log. The time zone is specified to be "UTC" (what my server uses and will be useful since I am programming the cron job to run at midnight every day). Files are written by 600 seconds. The verbose diagnostic output (optional; 1>) and any error messages (2>&1) is written to a time-stamped (UNIX epoch seconds) file in the home folder ($(date +%s)..uptime_logger.log). Files are encrypted against the age public key defined by the string "age14a65znxam4k45kd4xg0lc8uu0yvlpyj376kap970mcxf066wycqq57xzqd".

The result is a tar file named 20210309..mycomputer_uptime.gz.age.tar. The hostname mycomputer is included by default. The file's contents after about an hour are:

$ tar --list -f 20210309..mycomputer_uptime.gz.age.tar
20210309T090729+0000..VERSION
20210309T090726+0000--PT2M45S..mycomputer_uptime.log.gz.age
20210309T091011+0000--PT10M0S..mycomputer_uptime.log.gz.age
20210309T092011+0000--PT10M1S..mycomputer_uptime.log.gz.age
20210309T093012+0000--PT10M0S..mycomputer_uptime.log.gz.age
20210309T094012+0000--PT10M1S..mycomputer_uptime.log.gz.age
20210309T095013+0000--PT10M0S..mycomputer_uptime.log.gz.age
20210309T100013+0000--PT10M0S..mycomputer_uptime.log.gz.age
20210309T101013+0000--PT10M1S..mycomputer_uptime.log.gz.age
20210309T102014+0000--PT10M0S..mycomputer_uptime.log.gz.age

Each file's name includes an ISO 8601 time period before the ... I make use of the PT separator which indicates a time period. -- is a recommended by the standard as a replacement for / since / causes problems when used within UNIX file names.

VERSION files contain the version of bklog and age used as well as some other metadata useful for someone interpreting the archive.

Other scripts and commands can be used to automatically extract and reconstitute a continuous uptime file but the stream of uptime data produced by uptime_continuous.sh is all saved.

Some example commands that can decrypt the files are:

$ tar -xf 20210309..mycomputer_uptime.gz.age.tar  # extract files
$ for file in ./*.age; do
  age -d -i ~/secretkey.txt "$file" | gunzip > "${file%.gz.age}";
done;

Where secretkey.txt is the same file generated by age-keygen described earlier.

Conclusion

I found that an older script I wrote for for recording environmental sensor data was also useful in recording system statistics. I described how uptime data could be regularly produced by a custom script uptime_continuous.sh and piped into bklog for compression, encryption, and writing.

Posted 2021-03-09T11:07:19+0000

Final Fantasy Pray Lyrics Spanish in TeXmacs

Created by Steven Baltakatei Sandoval on 2021-03-08T11:50Z under a CC BY-SA 4.0 license and last updated on 2021-03-08T12:03Z.

I exported the spanish translation of the Final Fantasy Pray song I did last year into TeXmacs format for publication on my TeXmacs article list. I did this to test its website generator's capability to display and render Japanese characters. The resulting .xhtml and .pdf files show the content adequately.

Posted 2021-03-08T11:58:02+0000

TeXmacs Static Website

Created by Steven Baltakatei Sandoval on 2021-03-04T04:26Z under a CC BY-SA 4.0 license and last updated on 2021-03-04T06:06Z.

Summary

I created a static website using TeXmacs. It can be found here.

Background

I rewrote an older blog post about a distance-bounding protocol that I authored in markdown with MathML tags. The math typesetting features of TeXmacs along with its static website generator and default CSS settings made for a much nicer-looking site.

I used the Notes on TeXmacs blog as a template for some features, although I didn't use all the Schema features (that other blog automatically updates an ATOM feed among other things). Redirecting from index.html to another page was a feature I used. I may adopt the Schema macros and some CSS, but even with just the bare TeXmacs website generator settings, it looks pretty good!

Posted 2021-03-04T05:48:45+0000

Freedombox Static Website Research

Created by Steven Baltakatei Sandoval on 2021-02-17T22:32Z under a CC BY-SA 4.0 license and last updated on 2021-02-18T00:02Z.

Background

I have been investigating other possible methods for publishing content accessible under my reboil.com domain. Currently, this ikiwiki blog is accessible via: https://reboil.com/ikiwiki/blog/ . However, the potential for formatting is not great; I would not use this alone when publishing mathematical equations, for example (i.e. texmacs).

The Freedombox I own and run this blog off of has been great for introducing me to the concepts of securing my own personal webpages served by Apache. It permits me to publish wiki and blog content via Mediawiki or Ikiwiki. Although I am familiar with the wikitext markup of Mediawiki thanks to some time I have spent editing Wikipedia pages, I prefer simpler solutions that don't involve accepting public input in the form of comments or account registration. I just want to be able to publish my own works.

Investigations

I recently investigated how I could use org mode (a note organization application within Emacs) to automatically render HTML pages for serving within an Ikiwiki blog. However, I ultimately decided that none of the org mode plugins for Ikiwiki were suitable for me.

I later investigated the possibility of using a mathematical typesetting program called TeXmacs to render a static website using its own WYSIWYG interface. The disadvantage of authoring webpages in TeXmacs is that authoring the source files (file extension .tm) properly requires running the graphical WYSIWYG interface in order to immediately see the typesetting results. Markdown, by contrast, is a format in which the source is also the text. TeXmacs itself has a static website generator function that takes a source directory full of .tm files and outputs rendered .xhtml files viewable by a web browser; CSS preferences are set in the TeXmacs Preferences settings. Some built-in CSS preferences make the resulting webpage appear quite nice. The disadvantage of this method is that quick authoring of blog posts requires firing up TeXmacs to render new a new .tm source file for each blog post I compose.

I also saw that FreedomBox developers have decided to add Wordpress as an app alongside Ikiwiki as part of their 2021 Roadmap. A discussion on the forum indicates this decision was made due to user feedback that publishing a website on the FreedomBox still requires some technical know-how regarding GNU/Linux file permissions and modifying configuration files via the command line interface through an ssh connection. I'm reminded of my time messing with Ikiwiki's /var/lib/ikiwiki/blog.setup configuration files in order to enable or disable built-in plugins. I am wary of using Wordpress, since popular plugins for it have been a regular source of security breaches according to my time listening to the Security Now podcast I have been following for years.

Proposal

So, for now, I think I will stick to using Ikiwiki for composing simple text-only blog posts in org mode and then converting them to markdown for Ikiwiki to process. However, if ever images or mathematical equations need to be published, I think I will create a static website using TeXmacs and serve it under my reboil.com Freedombox via a root cron job that git pull's a repo containing the TeXmacs site generator output and rsync's select parts of the repository to the FreedomBox's /var/www/html/ directory.

blog seems appropriate for the Ikiwiki site I have since it implies a "log", a stream of ideas that don't necessarily contain essential structured information. However, the TeXmacs pages I make will, by their nature, be capable of much more custom formatting thanks to TeXmac's deep MathML support and pleasant typesetting features (headers, equation numbering, image linking, etc.). Therefore, also calling the TeXmacs static web site a "blog" seems inappropriate. "Notes", "Articles", "Analects", or "Documents" seem more appropriate to describe what TeXmacs produces when rendering source .tm files. I like "Articles", since it invoke the idea of "newspaper articles" or "column articles"; basically, relatively independent parts of a larger typeset publication. This 1913 definition from the Webster dictionary highlights the meaning I'd like to emphasize:

Article \Ar"ti*cle\, n. [F., fr. L. articulus, dim. of artus joint, akin to Gr. ?, fr. a root ar to join, fit. See {Art}, n.]

  1. A distinct portion of an instrument, discourse, literary work, or any other writing, consisting of two or more particulars, or treating of various topics; as, an article in the Constitution. Hence: A clause in a contract, system of regulations, treaty, or the like; a term, condition, or stipulation in a contract; a concise statement; as, articles of agreement. [1913 Webster]

  2. A literary composition, forming an independent portion of a magazine, newspaper, or cyclopedia. [1913 Webster]

Project code update

Here is a set of project codes related to my reboil.com static website.

BK-2020-08: Ikiwiki blog

BK-2020-08-2: Ikiwiki blog binary blobs

BK-2020-08-3: TeXmacs articles

BK-2020-08-4: TeXmacs articles binary blobs

  • Git repository
  • Note: a submodule of the BK-2020-08-3 git repository.

Conclusion

I think I will call my TeXmacs-powered static website articles, as in "articles of a newspaper" or, more ambitiously "articles of an academic journal". I will host it at reboil.com/articles/, probably using a cron job in my Freedombox to automatically rsync article files rendered and committed to a git repository.

Posted 2021-02-18T12:11:29+0000

Citation Needed Hunt

Created by Steven Baltakatei Sandoval on 2019-07-16T14:23Z under a CC BY-SA 4.0 license and last updated on 2020-12-22T19:10Z.

Citation Hunt

A tool for looking up random sentences with {{citation needed}} tags in Wikipedia is Citation Hunt.

This can be used to help find a random place to start improving Wikipedia.

It is not an efficient method for improving Wikipedia (given how easy for an editor to add a {{citation needed}} tag compared to how difficult it is to understand and locate an appropriate source). However, I think it is more useful than clicking Wikipedia's "Random article" link since it can help focus your mind on a single sentence claim; when I open a random wikipedia article and see dozens of reference tags and paragraphs of text the phrase "Where do I even start?" comes to mind.

References


This work by Steven Baltakatei Sandoval is licensed under CC BY-SA 4.0

Posted 2021-02-17T16:18:01+0000

Russian Roulette

Created by Steven Baltakatei Sandoval on 2019-07-18T05:04Z under a CC BY-SA 4.0 license and last updated on 2020-12-23T00:52Z.

Background

I took it upon myself to review a {{citation needed}} tag on the Russian roulette page on Wikipedia.

I found a reference that cited the Oxford English Dictionary which itself cited a 1937-01-30 issue of Collier's, a magazine containing short stories. The issue conatined a short story named "Russian Roulette" by a person named Georges Surdez. I found a source for the document here and here.

It's interesting to me that a the Oxford English Dictionary cites a document that is rather obscure. It makes me wonder what a library filled with every source that the Oxford English Dictionary cites would look like. It seems like an ambitious project that would be necessary to preserve the english language's history in a technically satisfying manner. Something to think about.

Wikipedia edit

The wikipedia article containing the updated information as of 2019-07-16T22:54:07 is here:

I had removed usage of "Russian Poker" from a description of a 2019-01 incident in which a police officer shot another police officer in what the New York Times describes as "Russian Roulette" but which no source (which I could find) reporting on the incident described as "Russian Poker". I think using that particular phrase to describe an incident that no source describes as such would be creating information out of nothing ("original research"). In this case, the information created is the strengthening of the link between the phrase "Russian Poker" and the concept of pulling the trigger on a possibly-loaded firearm while aimed at another person. I said as much in my descriptions of the edits.

I confirmed that the Collier's quote is partially referenced in a printed copy of the OED2 (page 295) in my local library. The relevant sections are:

> `REVOLUTION` *sb*. `I I`; **Russian roulette**, an act of
bravado in which a person loads (usu.) one
chamber of a revolver, spins the cylinder, holds
the barrel to his head, and pulls the trigger; also
*fig*.;

> Revolution had never taken place. **1937** `G. SURDEZ` in
*Collier's* 30 Jan. 16 ‘Did you ever hear of Russian roulette?’
…With the Russian army in Rumania, around 1917,…some
officer would suddenly pull out his revolver,…remove a
cartridge from the cylinder, spin the cylinder, snap it back in
place, put it to his head and pull the trigger.

Citation Hunt

I had originally found this page to edit via a Citation Hunt webpage that looks up random {{citation needed}} tags in Wikipedia articles and presents them to the user for consideration. URL is here.

I'm also considering using markdown to format text but it hurts legibility if I'm using vanilla emacs. (edit(2020-12-22T19:22Z): I rewrote this article in markdown.)


This work by Steven Baltakatei Sandoval is licensed under CC BY-SA 4.0

Posted 2021-02-17T16:18:01+0000

Kyoani Arson Attack

Created by Steven Baltakatei Sandoval on 2019-07-18T23:21Z under a CC BY-SA 4.0 license and last updated on 2020-12-23T00:53Z.

Wikipedia article

I helped to proofread references on the wikipedia article for the Kyoto Animation arson attack.

33 dead. Attack occured at KyoAni's Studio 1 facility where normally about 70 people work.


This work by Steven Baltakatei Sandoval is licensed under CC BY-SA 4.0

Posted 2021-02-17T16:18:01+0000

Markup formats

Written on 002019-07-28T19:48Z by baltakatei

Wikitext

Since I use emacs as my editor I thought I'd see if there was a set of emacs tools designed to facilitate editing wikitext (what you edit when you click the "edit source" tab on the top of any Wikipedia article).

One tool I wish that existed is the ability to automatically format default in-line references into a format more visible for human eyes. Here is an example from the wikitext for the Kyoto Animation arson attack article:

<ref>{{Cite web|url=https://www3.nhk.or.jp/nhkworld/en/news/20190727_02/|title=Nearly 6 million dollars donated after Kyoto blaze {{!}} NHK WORLD-JAPAN News|website=NHK WORLD|language=en|access-date=2019-07-27}}</ref>

I want a tool that can convert that text into this:

<ref>{{Cite web
|url          = https://www3.nhk.or.jp/nhkworld/en/news/20190727_02/
|title        = Nearly 6 million dollars donated after Kyoto blaze {{!}} NHK WORLD-JAPAN News
|website      = NHK WORLD
|language     = en
|access-date  = 2019-07-27
}}</ref>

I have been reading up on how the Emacs Lisp language works so I can write my own custom function to perform this formatting automatically on a region of text I select in emacs (I prefer to edit article source in emacs since I really like the keyboard shortcuts). I'm currently learning the basics.

LaTeX

I also had some curiosity about possibly using emacs for composing documents using the LaTeX markdup language. I imagine that would be useful for producing documents for explaining mathematical concepts in general.

This blog post located at dated 2010-05-13, and titled Emacs as the Ultimate LaTeX Editor seems promising. It recommends the use of the AUCTeX package available in the debian repository (wikipedia page). It had a followup post which explained how LaTeX equation previous could be seen within the emacs GUI editor.

Markdown

I also decided I'd try and write this page using Markdown and the M-x markdown-preview function (which converts the markdown markup into an HTML file which it has my browser open).

I figured out I can use the markdown package to convert markdown files into HTML via:

$ markdown mytestfile.md > mytestfile.html

It looks better than raw text files, in any case. Maybe one day I'll get fancy and use texinfo or something from which I can auto-generate a static HTML website. For now, though, I'll focus on getting stuff written.

:: :: :: ::

Posted 2021-02-17T16:18:01+0000

2019-08-09T18:14:36Z; baltakatei>

Updated: 2021-03-12T01:47Z (spelling correction)

Four Freedoms and Three Purposes

Below are some notes regarding my thoughts on how to identify a purpose for one's actions after you have discovered that there is no built-in purpose engraved into the laws of physics. See existential nihilism. Skip to the

Four Freedoms

Source: Free Software Free Society (PDF)

Description: The Four Freedoms answer the question: "What abilities must a software programmer have in order to have control over computer programs they create?"

0. The freedom to run the program as you wish, for any purpose.

1. The freedom to study how the program works, and change it so it does your computing as you wish. Access to the source code is a precondition for this.

2. The freedom to redistribute copies so you can help your neighbor.

3. The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

I believe these principles can be generalized to cover any apparatus constructed of matter (including the human body and augmentations to human capabilities). As of 2019, I am unaware of these principles being applied in any significant scale to machinery required to sustain the current human population on planet Earth. Mechanical fabrication prints, P&IDs, PFDs, and industry consensus standards for machines involved in water purification, food production, waste processing, and other technologies required to sustain the current earthbound human population are mostly "closed-source". I imagine the four freedoms are not being applied to improvements in such technologies due to the fact that currently new improvements occur frequently. These improvements are protected by copyright and patent laws designed to accelerate creation of such improvements by granting patent owners temporary government-enforced monopolies in the manufacture of machines utilizing such improvements.

However, if new industrial machinery improvements are developed and released under "copyleft" licenses (ex: "Creative Commons") then collaborative efforts may outcompete the temporary government-enforced monopoly model (patents). For comparison, I direct you to the emergence of "free/libre, and open source software" (FLOSS, a.k.a. FOSS) development as the source of software used in most production environments (ex: GNU/Linux). This would mean that a person in a future where complex technology beyond the median human's understanding is required simply for basic human survival would at least have the option of "opting out" from having to agree to a license agreement in order to not die.

In in other words, the Free Software Foundation lacks an industrial arm to ensure people can choose to rely on freedom-respecting industrial machinery they need to survive. I think such an arm needs to be created, the sooner the better.

In order to control over one's existence, all tools one uses to survive must satisfy the four freedoms.

Four freedoms (generalized)

Redefine "program" to include "any machine" and "source code" to include "technical documentation and source code required to fabricate the machine".

Note: For generalization across all baryonic matter, include in definition of "machine": "atomically precise molecular assembler".

One problem I see in the four freedoms is that there is no explicit provision addressing use of software to destroy or inflict physical harm. I imagine this omission is an artifact of the fact that software requires hardware to interact with physical reality. Physical hardware capable of causing energy or matter to flow is needed to inflict physical harm. Most weapons work by dumping sufficient energy into a small enough volume of space (ex: bullets) or causing certain types of disruptive material to flow (ex: poison). A computer control program does not directly cause harm; the final control element does (a hammer strikes a firing pin; an actuator opens a valve on a poison canister; a metal switch completes an electrical circuit). This raises the question: "How does one apply the four freedoms to hardware that may be used to kill someone?". Traditional agriculture tools such as scythes, sickles, pitchforks, horses, shovels, and sledgehammers all can be used to create food or to kill and destroy.

The question becomes one of purpose and motive. In general, I understand the purpose of a nation-state government to be the holder of a monopoly on violence. Therefore, a nation-state should be interested in controlling the production and possession of weapons and tools which can be used as weapons. A nation-state with strong gun control actively profiles users of potentially lethal tools for past misbehavior and statistical likelihood misuse. In other words, gun control laws restricts freedom globally in order to reduce the number of individuals who may possess lethal tools giving them power to cause physical harm at scale since infliction of lethal physical harm itself deprives victims of all freedom.

Freedom is being able to make decisions that affect mainly you; power is being able to make decisions that affect others more than you. If we confuse power with freedom, we will fail to uphold real freedom. (Free Software, Free Society, v3, Ch. 46, Pg. 257)

The resriction of freedom for lethal tool imposed by a nation-state upon users may come in the form of punishment for possession in certain areas. It may also come in the form of complete prohibition of sale or possession of certain lethal tools.

However, nation-states come and go on the timescale of human generations. What principles should an existential nihilist follow when not even the laws of physics endorse any particular creed or moral code? If I want to help implement the four freedoms for hardware I should be prepared to explain the problem even to someone who doesn't necessarily share my value system.

This next section is going to be one huge tangent but it led to some interesting thoughts that I thought I'd make public.

Purpose for existence in a purposeless cosmos

A rational observer should conclude that there is no all-powerful God or intrinsic meaning to existence. Nation-states historically have been built around shared hallucinations of religion, humanism, or money. If negociations must be made with a group of inscrutable aliens or foreigners, what purposes for existing drive their value system? What purposes may already be shared in common between your familiar group and the foreign group prior to first contact? If coexisting with such foreigners is unavoidable and they share/possess lethal technologies without regard to your local government regulations, how can such common purposes be used to reestablish trade restrictions or to reevaluate the efficacy of existing restrictions?

These are thoughts that come to mind when I try to answer the question "What universal purposes might we share with foreigners whom we have never met?". The simple answer of "loving and supporting your family" comes to mind from my time working to open conversations with strangers as a missionary for the Mormon church. However, I want to define such a phrase methodically. What value and problems come from prioritizing resource allocation towards blood family members who may act irrationally as opposed to allocation towards non-blood friends who do act rationally?

An analogy to solving reaction rate kinetics

One strategy I have found useful when tackling a difficult question is to produce a set of answers, each element of which addresses a specific aspect of the original question. For example, when answering the question "What governs the amount of heat in a plastic polymerization reactor?", I would be inclined to answer with a rate equation composed of multiple terms added together. Usually it would be of the form:

(rate in) - (rate out) + (rate of generation) = (rate of accumulation)

The rates might be energy flows and/or mass flows. There may be multiple equations, one for each type of material present within the reactor. Two types of material might go in and therefore have positive rate in terms in their equations. If it is a steady-state reactor, the rate of accumulation term should be set to zero. The rate of generation might be the generation of heat that must be dissipated by convection, diffusion, and radiation processes. Concentrations of material might be invovled. Each rate may be a function of chemical concentrations of various combiantions of elements according to a separate set of rate governing equations. See https://che.engin.umich.edu/people/scott-fogler/ .

However, my point is that a seemingly unsolvable problem can be made usefully solvable by splitting the problem into simpler component processes.

Components of 42

With this in mind, I thought it might be useful to split up the question "What is a common purpose for existing that any sentient being might share with me?" (a stand-in for Douglas Adams' more ambitious and vague question "What is the answer to Life, the Universe, and Everything" to which the answer is famously, "42") into a set of "purposes" which a sentient (read: thinking) being made of matter might set as its purpose for living. Obviously, the amount of possible purposes and permutations of purposes makes the assembly of an exhaustive list impossible. But by aiming to reduce the number of purposes to the minimum required to generate all purposes, then perhaps a set of fundamental "meanings of existence" might be reached.

Each "purpose" that on could dedicate their life to is an action. "To make lots of money" might be one but what is money for and why not something like seashells or gold? "To support my family" is a common one I think many in family-oriented religions would agree is their purpose for existing but is there a more general way of describing what a family is that could also describe other human relationship configurations like mentorship or slavery or even money? If I could define such a system then I would have a minimum moral code that I could reasonably expect another rational observer of reality to have adopted already. Like weathermen who never met one another yet still able to share stories with useful information based the fact that they have been observing the same givens, perhaps I can use this minimum set of purposes as a communication tool for my friends and strangers we meet in the future. Ideas such as the four freedoms described above require a definition for "free/libre" which I may be able to describe within this system.

The end result of these ruminations are a set of four actions which I've converted into pairs of words in the style of english legal doublets (ex: cease and desist, free and clear, null and void, terms and conditions, aid and abet). I am calling three of them "self-evident purposes" since they are living processes that should be based only upon what other sentient beings can be expected to share in common with us. A fourth action is an implied aspect for the three self-evident purposes but isn't a purpose by itself ("Destroy and Forget"). However, it is a self-evident action present in every other process which deserves identification. After that, I proceed to define actions that can be described as permutations of the self-evident purpose-actions but which I do not necessarily believe may be shared among even humans on earth as purposes, much less all sentient entities. Some of the derived actions may be life purposes.

Self-evident system of purpose

Self-evident purposes

Source: introspection

These actions are answers to the question: "What common purposes for existence are we likely to share with any stranger we encounter?"

The question, in other words: "What are members of the smallest set of actions that you will likely share with any alien/stranger?"

  1. 👁 Observe and Discover - To see reality as it really is. To take in new givens.

  2. 📚 Integrate and Correlate - To create stories explaining what you see. To record history. To correlate givens with other givens.

  3. 🖧 Reticulate and Network - To trade stories with entities different from yourself. To form relationship networks with others.

Self-evident actions

  • 💣 Destroy and Forget - To nullify an action.

Note on Destroy and Forget

This is a weird one since I have a hard time imagining a sentient being whose nature is Destruction but it is a fundamental action required to derive many other actions. It feels like the concept of "zero" in math. Multiplying by 0 is not useful when performed in isolation but is required when part of a process of selectively ignoring aspects of a signal for the purpose of amplifying useful signals. Part of the act of creation is the removal of the construction waste. Observe and Discover involves collecting data; part of integrating and correlating information is the ignoring of many observed data points in favor of highlighting certain data points that promote/accelerate all activities. Likewise, if only creation and strengthening of relationships was permitted with no ability to dissolve/unlink relationships then new relationships would be inhibited if material resources must be dedicated to maintain each relationship; Destruction of old relationships (chemical bonds or social ties) is necessary.

However, Destroy and Forget isn't really a useful "purpose to live" unless used in combination with the other self-evident actions. Likewise, to Observe and Discover isn't really useful if data is not correlated or shared. Sharing of data can happen unwillingly (forced reticulation) as can destruction (unwilling destruction).

Derived Actions

Below are other actions defined in terms of the above self-evident common actions:

  • Touch - To form relationships (Reticulation) mediated by physical forces (electron-election repulsion, photon emission/absorption).

  • Create - To simultaneously Integrate and Touch.

  • Defend - To secure integrity of other actions via Touch.

  • Replicate - To Create copies of Observers in order to increase the number of points of view from which reality can be Observed or to Defend against Destruction.

  • Expand - To increase spatial scope of Observation or Reticulation activities.

  • Control - To selectively Destroy actions (Observation, Integration, Reticulation, and all permutations of such).

  • Conquer - To Control in order to Expand.

  • Separate - To selectively Destroy undesired relationships between certain entities.

  • Control - To form a relationship

  • Liberate - To Destroy Control.

  • (etc.)

Comments

I am not completely committed to there being only three self-evident purposes. Perhaps another can be added but I think there should be a small number for this system to be useful.

One idea that amuses me is for a society that divides itself into different factions, each with certain principle actions guiding faction members.

A person of an Observe and Discover faction might primarily be involved with activities that expand the scope of what a civilization knows. This might include radio astronomy telescopes and cosmology. It might also have subfactions dedicated towards more introspective observations such as internal surveillance of a civilization's activities. Researchers would be primarily focused on developing tools that allow them to see farther.

A person of an Integrate and Correlate faction would primarily be involved in fact-checking and using observations from O&D to update abstract models of the civilization's internal state, the civilization's impact on external reality, and creating predictions of possible future problems based on history.

A person of a Reticulate and Network faction would primarily be involved in forming communication channels between nodes within and without of the civilization in order to collect useful information from internal and foreign I&C factions.

Many other actions such as Defend or Separate or Conquer or Liberate could become focal points of many factions. However, any civilization, local or foreign, would be guaranteed to have the factions of O&D, I&C, and R&N. As effects of the ongoing heat death of the cosmos continue, these self-evident purposes will persist into deep time. Members of civilizations that nullify these common actions will handicap themselves.

  • Nullification of Observe and Discover causes blindness.

  • Nullification of Integrate and Correlate causes madness.

  • Nullification of Reticulate and Network causes ignorance.

Application to the Four Freedoms

How does this system of belief help me to apply the Four Freedoms in a more general context that includes everything from factories to molecular assemblers? I'm not sure. One thing I do know is that my butt is tired from all this typing while sitting.

I made this tangent into self-evident purposes for existence with the hope that I could identify a way to explain to someone the value of applying the Four Freedoms even to potentially lethal machinery. The dream I have been trying to find a way towards is one in which every person has the option to manufacture their own life support equipment in an uninhabitable environment such as the vacuum of space, any future human space colony, even the surface of planet Earth itself if exponential population growth continues, or even a virtual environment where all humans are forced to live as non-biological emulated brains in a completely artificial substrate in machine cities. I went on a tangent because I wanted to explore a belief system that might survive even in places where people might live under even in combinations of such inhospitable environments. As of the year 2019, most humans would die if they switched to hunter-gatherer mode instead of relying upon machines to feed, clothe, and shelter them.

So what does these self-evident purposes buy me regarding applying the Four Freedoms to all hardware?

I think relevant questions for people concerned about losing their own freedoms caused by application of the Four Freedoms to all machines are:

  • What happens when anyone can print a fission bomb from raw materials in hours?

  • What happens when anyone can print a firearm on a whim in minutes?

The O&D and I&C factions must step up to the plate and keep up with manufacturing technology advances in order to search for signatures of uranium refining and other signs that advanced weaponry are being fabricated. R&N factions must quickly share information to track patterns of material movement. Human fragility must be buttressed by brain emulation backup and/or clone bodies that can withstand disasterse. Law enforcement I&C factions must augment themselves to track and prosecute crimes as fast as new techniques are developed.

The pattern I am seeing here as I talk myself through the problem of Four Freedom lethal machines is speed and complexity. The faster a threat can be developed, the faster society-approved local law enforcement must be able to act and neutralize such threats. If the risk of physical harm is too high then physical redundancies must be planned and implemented to minimize damage. The benefits of Four Freedom manufacturing hardware must outweigh the new threats with increased capabilities offered to people who will defend their access to blueprints despite the increase in personal risk. Automobiles are lethal machines that are a significant cause of deaths in the United States but users defend their rights to use them because of the benefits of personal mobility they offer. Licenses and law enforcement mitigate the risk of misuse but do not eliminate it.

Firearms cause massacres in the United States regularly yet there is a cultural inertia among lawmakers and people that vote for such lawmakers that causes them to refuse to ban firearms. There is no perceivable economic benefit to firearm ownership. The perceived benefit seems to me to be primarily imaginary: "Owning this gun gives me the power to defend myself with lethal force and that makes me feel safe."

Given that firearm ownership is something that remains fiercely defended in the United States, I imagine that at least one nation-state will permit Four Freedom machines to exist and become part of the local culture. The fact that no significant population actively promotes Four Freedom philosophy for manufacturing is probably because the population of "programmers" (ex: engineers on industry consensus standard technical committees) is low and they do not perceive any urgency for free/libre machinery.

Possible fertile ground for the idea of Four Freedom machines are discussions of "Right to Repair" and disgust about planned obselescence. For example, several news stories discussed how farmers were pirating software required to operate John Deere agricultural equipment which apparently uses an expensive license model completely at odds with how farm equipment has traditionally been maintained.

One argument that is coalescing in my mind as I write these thoughts is that if Four Freedoms aren't applied to industrial consensus standards and fabrication blueprints, then a larger and larger fraction of living humans will be priced out of the ability to participate in society. More and more of their resources will be required to buy licenses for services required to maintain employment and the certifications employers require.

Additionally, even "middle class" citizens of an industrialized nation will be vulnerable to actions of the relatively small number of licensors of life support technologies where a Four Freedom machine equivalent option is not available. As manufacturing processes become more centralized for sake of efficiency, repair of "turn key" services such as automobile packages, municipal water treatment equipment, road maintenance equipment, material transport equipment (piping), and other infrastructure products will become more and more subject to license and service agreements. Already I know variable speed drive water pumps come equipped with bluetooth tranceivers that can only be configured via an app and bluetooth device that can cost significant amounts of money with. The pump manufacturer could charge money for the app and the closed source nature of the app makes the pump vulnerable to cyberattack. Problems that the Free Software Foundation argued its Four Freedoms were protecting people from in the realm of software will become more problematic in realms of industrial equipment as the equipment becomes more "smart". This will especially apply to a future where local 3D printing of industrial equipment becomes commonplace. If the digital programs fed to "matter compilers" (MCs) do not come from design "manufacturers" with the source code (today, the equivalent of P&IDs, instrumentation diagrams, mechanical drawigns, control philosophy, etc.), then the MC owners are subject to the designer's will similar to how Microsoft strongarmed its users to use Internet Explorer instead of competing web browsers. Hardware manufacturing can be more free but there has to be an active force for freedom. Otherwise the path of least resistance is centralized control by a small number of licensors.

Conclusion

I'll end this rather lengthy rambling blog post with a short summary. The Four Freedoms applied to the realm of industrial machinery will force civilization to augment its speed and detection capabilities for lethal tool fabrication. Lethal tool fabrication increases risk of loss of your individual freedom if that tool is used against you. In a tangent I discussed a recurring thought I had regarding a universal set of purposes for living that may help any person to build communciation bridges with foreigners unlike yourself who may think Four Freedom machines are a pipe dream. I conclude by discussing the recent appearance of the Right to Repair idea and how it may be a fertile ground for discussing Four Freedom industrial machinery. I close discussing the value of Four Freedom machinery and potential negative consequences of failing to use Four Freedom machinery (loss of freedom).

baltakatei 🅭🅯🄎 4.0

Creative Commons License

Posted 2021-02-17T16:18:01+0000

This blog is powered by ikiwiki.

Text is available under the Creative Commons Attribution-ShareAlike license; additional terms may apply.