* __PUBLISH__ 24.03.2023 Installed bpytop to look at the temperature of rosa Cut one of the fans that was making a lot of noise Temperature today with one fan: 35 degrees 28 October 2022 At Constant, Rue du Fort with Mara, Wendy, and Michael 6 October 2022 trying to fix etherpump! $ cd /srv/etherpump/ $ sudo service etherpump status error while running sh cron.sh Traceback (most recent call last): File "/srv/etherpump/venv/bin/etherpump", line 8, in sys.exit(main()) File "/srv/etherpump/venv/lib/python3.9/site-packages/etherpump/__init__.py", line 93, in main cmdmod.main(args) File "/srv/etherpump/venv/lib/python3.9/site-packages/etherpump/commands/pull.py", line 585, in main trio.run(handle_pads, args) File "/srv/etherpump/venv/lib/python3.9/site-packages/trio/_core/_run.py", line 1928, in run raise runner.main_task_outcome.error File "/srv/etherpump/venv/lib/python3.9/site-packages/etherpump/commands/pull.py", line 567, in handle_ nursery.start_soon( File "/srv/etherpump/venv/lib/python3.9/site-packages/trio/_core/_run.py", line 815, in __aexit__ raise combined_error_from_nursery File "/srv/etherpump/venv/lib/python3.9/site-packages/etherpump/commands/pull.py", line 223, in handle_ meta.update(json.loads(contents)) File "/usr/lib/python3.9/json/__init__.py", line 346, in loads return _default_decoder.decode(s) File "/usr/lib/python3.9/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python3.9/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) We renamed the folder /srv/etherpump/pads/ to /srv/etherpump/pads.bak/, to force etherpump to download all the pads again. This made the error go away. We ran the etherpump cron.sh script again, and it did work now! So for next time: removing the "pads" folder is a work around for this error. With one error though... ... [x] chapter-soft-structure (saved, magic words: __PUBLISH__) Failed to download https://hub.vvvvvvaria.org/rosa/pad/api/1.2.9/getHTML?apikey=1e2f010c05add6041059c0b380b3cbc3c32566faffc1a8ae0db2878994490bbc&padID=agreement&startRev=0, saw Traceback (most recent call last): File "/srv/etherpump/venv/bin/etherpump", line 8, in sys.exit(main()) File "/srv/etherpump/venv/lib/python3.9/site-packages/etherpump/__init__.py", line 93, in main cmdmod.main(args) File "/srv/etherpump/venv/lib/python3.9/site-packages/etherpump/commands/pull.py", line 585, in main trio.run(handle_pads, args) File "/srv/etherpump/venv/lib/python3.9/site-packages/trio/_core/_run.py", line 1928, in run raise runner.main_task_outcome.error File "/srv/etherpump/venv/lib/python3.9/site-packages/etherpump/commands/pull.py", line 567, in handle_pads nursery.start_soon( File "/srv/etherpump/venv/lib/python3.9/site-packages/trio/_core/_run.py", line 815, in __aexit__ raise combined_error_from_nursery File "/srv/etherpump/venv/lib/python3.9/site-packages/etherpump/commands/pull.py", line 493, in handle_pad async with await trio.open_file(ver["path"], "w") as f: KeyError: 'path' Building the etherpump index... current meta.json pad: pads/FHM_Athens_DAY1_Publishing.meta.json ... We think it is because the Etherpad API is overloaded with the amount of requests that are being made to the API. Things that are using the Etherpad API: etherpump, foldbot. The index works again though! We also checked how often etherpump is running in the crontab: $ sudo su friend $ crontab -e */5 * * * * cd /srv/etherpump && sh cron.sh > cron.log 2>&1 */5 * * * * cd /srv/distribusi && sh cron.sh > cron.log 2>&1 # */45 * * * * cat /home/friend/broadcast.txt | wall Etherpump is running every 5 minutes, which is maybe a bit too much. We changed the timing of both etherpump and distribusi to run every 60 minutes. During events we can change this timing if needed. We also check how often the foldbot is running. $ cd /srv/folds/ $ nano folding.py At the bottom, there is a sleep(60), which means it runs every 60 seconds. We changed it to 3600, meaning it will run every hour from now on. 1 October 2022 etherpump is not working (already since Feminist Hack Meetings) 10th June 2022 we couldn't get rosa to speak but if it could (we could!), -- sound card not working out of the box -- wy installed ? alsa-... -- sound interface ? become root $ sudo su $ cat /proc/asound/cards 0 [ALSA ]: bcm2835_alsa - bcm2835 ALSA bcm2835 ALSA 1 [vc4hdmi0 ]: vc4-hdmi - vc4-hdmi-0 vc4-hdmi-0 2 [vc4hdmi1 ]: vc4-hdmi - vc4-hdmi-1 vc4-hdmi-1 List the audio devices. You will see the internal audio device ( audio card for mini Jack + hdmi) $ aplay -L // from then list of audio cards after you run then aply command, we chose plughw:CARD=ALSA,DEV=0 --> you have to include aplay -D plughw:CARD=ALSA,DEV=0 in a pipe to have sound on rosa in the current set-up $ espeak 192.168.1.1 --stdout | aplay // this probaly does not work An example to read out loud the syslog $ sudo cat /var/log/syslog | espeak --stdout | aplay -D plughw:CARD=ALSA,DEV=0 If you want to add your personal user to the audio group (so you don't have to be root to play) $ sudo adduser audio To make it work login and logout!! $ espeak 192.168.1.121 --stdout | aplay -D plughw:CARD=ALSA,DEV=0 $ cat /var/log/syslog | espeak --stdout | aplay -D plughw:CARD=ALSA,DEV=0 //Rosa reading a log Espeak can have different ways of talking .e. $ espeak --stdout -ven+f3 "we are the borg" | aplay -D plughw:CARD=ALSA,DEV=0 // so called female voice $ espeak --stdout -vfr+f2 -g50 -p99 "Rosa @ 192.168.1.122" | aplay -D plughw:CARD=ALSA,DEV=0 // in French, femal voice 2, slowed down with gaps between words -p higher pitch http://espeak.sourceforge.net/languages.html espeak --voices=variant gender [] This attribute is only a label for use in voice selection. It doesn't change the sound of the voice. may be male, female, or unknown. * is optional and gives an age in years. there was this script below that would figure out if there is an ip address, then the idea was to speak it out so as to help this moment of local discovery #!/bin/bash while : do ip=$(hostname -I | awk '{print $1}') if [ -z "$ip" ] then echo "we are not ip" else echo "we are ip: $ip" fi sleep 2 done Let's try to do a choral - and all play at the same time the script sh /home/decentral1se/ipspeak if you wanna run a choir but you're alone, use parallel: parallel sh ::: ipspeak ipwhisper chatting locally sudo apt install inspircd weechat anyone can type weechat /server add localhost 127.0.0.1 (only one time) /connect localhost /join #thecafe then you can chat wit whoever is in /quit to leave how to send a mail to other people mail -t ls /home to see the usernames ctrl-d on an empty line to finish the email where to customise the messages that the etherpad shows /srv/etherpad-lite/src/locales/... for instance, if you want to change the messages in english: sudo nano en.json change the messages that are written in between the "" friend@rosa:/srv/etherpad-lite/src$ grep -iR "WHAT IS TIME" . ./templates/pad.html: WHAT IS TIME.... ./locales/en.json: "pad.loading": "WHAT IS TIME", ./locales/en-gb.json: "pad.loading": "WHAT IS TIME...", Custom 404 and 50x pages Changed the 404 and 50x pages by adding custom_404.html and custom_50x.html here: /usr/share/nginx/html/ This is added to the nginx config file which is here = /etc/nginx/sites-enabled/default error_page 404 /custom_404.html; location = /custom_404.html { root /usr/share/nginx/html; internal; } error_page 500 502 503 504 /custom_50x.html; location = /custom_50x.html { root /usr/share/nginx/html; internal; } Only later realised that there was also a custom 404 already in /var/www/htnl for instance unavailable.html and lol.html Tested if the config file parses correctly with: sudo nginx -t Restarted nginx: sudo service nginx reload Installed: alsa, oss, pulseaudio LOGGING INTO ROSA To log into Rosa, there are two ways, a simple one and a more complex one. The simple one gives you access to the Rosa server while you are on the same network (so only when you are in Varia or in the next physical location of Rosa), and the more complex one gives you access on any network you find yourself on. The simple version: What is ssh > https://project.xpub.nl/img/xpub_logo_2020.svg SSH is a command that gives you access to another computer from the terminal. Open your terminal and run: $ ssh friend@ Ask the key holders at the table for the password. To find out the ip, someone who is logged in runs: $ sudo ifconfig In esc: 192.168.123.121 To scan the local network sudo arp-scan --interface= --localnet For the moment Rosa is an unknown device The more complex version: you will first need to either have to generate an rsa key. To do this, run: $ ssh-keygen (only if you don't hava an rsa key already, or if you want to make a new rsa key) - skip the filename $ cd ~/.ssh/ $ cat ~/.ssh/id_rsa.pub Copy the output and ask one of the key holders at the table to add your public rsa key to the Varia server. email the key to alice.strt@gmail.com Edit the following file ~/.ssh/config using nano to include: $ nano ~/.ssh/config host varia_hub Hostname vvvvvvaria.org User jump Port 12345 ForwardAgent yes IdentityFile ~/.ssh/id_rsa host rosa Hostname 10.5.1.2 User friend Port 22 ForwardAgent yes ProxyJump varia_hub N.B. that the key path/name should be made specific to your own situation With the above config you can now do run the following command: $ ssh rosa Changing the maximum upload size for the Tiny File Manager on Rosa: Filesize limit is 1mb! Make sure your images are smaller. ERROR / 413 error Request entity too large ... we edited the max upload value in /var/www/html/files.php we tried to change the file /etc/php/7.4/fpm/php.ini ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 20M and then we restarted php /etc/php/7.4/fpm what was missing: edit /etc/nginx/nginx.conf: $ sudo nano /etc/nginx/nginx.conf to include: "client_max_body_size 100M;" in the html section NOW IT WORKS!!!! login welcome messages change messages: randomized welcome message/ Message Of The Day (MOTD) $ sudo nano /etc/update-motd.d/00-welcome message when ssh $ nano ~/.bashrc message when you access rpi with a monitor: $ sudo nano /etc/issue May 25th Tried again to fix the file manager, followed the commands documented by ccl and Sergiu: IT WORKS! sudo chmod +rwx /var/www/html/files.php sudo service nginx reload sudo service php7.4-fpm restart April 14 To update the distribusi folders (which visualises the files on the server which you can see on the bottom of the main rosa site), go to /srv/distribusi/distribusi-go and run sudo ./distribusi -p /var/www/html/chapters/ Backup exploration Systerserver uses borg and backs up /etc /root /opt /var We could do similar and add /home ezn and ccl are adapting the systerserver borg configs for rosa: https://git.bleu255.com/stagit/file/scripts/README.html ========================== install Borg -- Borg needs to be installed on both servers sudo apt install borgbackup ========================== create borguser -- create a borguser user && group as root useradd borguser -- add borguser to sudoers usermod -aG sudo borguser -- to have run.sh script owned by borguser [user and group] chown borguser:borguser /etc/backups/run.sh -- to make sure borguser can execute a borg create command in run.sh script without needing a password we created a borguser file in sudoers.d directory touch /etc/sudoers.d/borguser vi /etc/sudoers.d/borguser borguser ALL=(ALL) NOPASSWD: /bin/bash /etc/backups/run.sh chmod 0440 /etc/sudoers.d/borguser -- for a borguser to have access to a remote backup server create an ssh key pair and copy a public key contents to ~/.ssh/authorized_keys file on a remote server ssh-keygen ========================== initiate Borg repo -- we can initiate borg repo on leverburns either locally or remotely from adele. we chose the latter borg init --encryption=repokey ssh://ccl@:portnumber/home/ccl/rosabackup ========================== automate Borg backups -- we've made a backups dir in etc on adele. created a backup script run.sh inside the backups dir. mkdir /etc/backups we modified the following run.sh script #!/bin/bash -ue sleep 5 set -e PASSWORD_FILE=/etc/backups/.borgpwd # # Script configuration # # This is the location of the Borg repository TARGET=ssh://ccl@:portnumber/home/ccl/rosabackup # Archive name schema DATE=$(date --iso-8601)-$(hostname) # # Create backups # BORG_BASE_DIR="/etc/backups" #BORG_CACHE_DIR="/.cache/borg" BORG_FILES_CACHE_TTL=60 # Options for borg create #BORG_OPTS="--stats --progress --compression lz4 --checkpoint-interval 86400" BORG_OPTS="--stats --progress --compression lz4 --checkpoint-interval 300 --remote-ratelimit 8000" # Options for borg create BORG_OPTS="--stats --progress --compression lz4 --checkpoint-interval 86400" # Set BORG_PASSPHRASE or BORG_PASSCOMMAND somewhere around here, using export, # if encryption is used. export BORG_PASSPHRASE=$(cat $PASSWORD_FILE) # No one can answer if Borg asks these questions, it is better to just fail quickly # instead of hanging. export BORG_RELOCATED_REPO_ACCESS_IS_OK=no export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=no # Log Borg version borg --version echo "Starting backup for $DATE" # This is just an example, change it however you see fit borg create $BORG_OPTS $TARGET::$DATE-$$ /home/ /etc/ /root/ /var/ -- to make run.sh executable: chmod +x run.sh -- to automate the backups, we created a timer and service files with the same name in /lib/systemd/system/ directory touch automatic-backup.service touch automatic-backup.timer -- automatic-backup.service executes a run.sh script once [Service] Type=oneshot ExecStart=/bin/bash /etc/backups/run.sh [Install] WantedBy=multi-user.target -- and automatic-backup.timer triggers automatic-backup.service once a day at 4 am [Unit] Description=Run borgbackup daily at 4 am [Timer] OnCalendar=04:00 Unit=automatic-backup.service [Install] WantedBy=timers.target -- to activate the changes when editing or creating a service file systemctl daemon-reload -- you only need to enable and start automatic-backup.timer systemctl enable --now automatic-backup.timer -- to check the status sudo journalctl -fu automatic-backup or sudo systemctl status automatic-backup ========================== Borg action -- our run.sh script does the backups once a day at 4 am and saves each iteration by this template $(date --iso-8601)-$(hostname)-$$. for example: 2021-11-29-adele.mur.at-14087. -- we can check the contents of this archive by running the following command: sudo borg list /home/leverburns/peertube-backup/::2021-11-29-adele.mur.at-14087 -- to see a list of all archives of the repo sudo borg list /home/leverburns/peertube-backup/ -- to extract 2021-11-29-adele.mur.at-14087 archive in your current dir, run: sudo borg extract /home/leverburns/peertube-backup/::2021-11-29-adele.mur.at-14087 -- to delete the repo: sudo borg delete /home/leverburns/peertube-backup/ -- similarly, we can delete a particular archive sudo borg delete /home/leverburns/peertube-backup/::2021-11-29-adele.mur.at-14087 ========================== Cache time To run it manually sudo /bin/bash /etc/backups/run.sh April 13 Fixing the Tiny File Manager Sergiu and ccl somehow fix it but don't know how... Some commands that were run sudo chmod +rwx /var/www/html/files.php sudo service nginx reload sudo service php7.4-fpm restart April 6 Uploading files in the file manager does not work Changing the ownership of the files resolved this. $ cd /var/www/html/ $ sudo chown friend:www-data -R * Does the fold bot still work? And if yes, how often does it work? Yes it works, but it would be good to keep an eye on it, to understand if the bot does not have too much impact on the etherpads. Currently there are multiple tools relying on the etherpad: * us using etherpads * octomode uses 2 etherpads for each environment + makes 2 etherpad requests to render the HTML or PDF view * the etherpump index makes multiple requests to the etherpad: * 1 request to list all the pads * 6 requests for each pad, to get all the versions and metadata * the folding bot makes 1 request for each pad every 60 seconds (see below how to change this rhythm) + if there is a new chat message, it makes 1 more request for this pad To see this activity, you can run: $ sudo tail -f /var/log/nginx/access.log And to see which requests fail, because there are too many requests being made at the same time: $ sudo tail -f /var/log/nginx/error.log To adjust the rhythm of the folding bot: As user friend: $ sudo su friend (or log in as friend) $ cd /srv/folds/ $ nano folding.py Then restart the folding bot: $ sudo service folds restart March 25 Changing the time of Rosa to the current timezone $ date $ timedatectl $ timedatectl --help $ timedatectl list-timezones $ timedatectl list-timezones | grep Amsterdam Europe/Amsterdam $ timedatectl set-timezone Europe/Amsterdam Authentication is required to set the system timezone. Multiple identities can be used for authentication: 1. alice,27,, (strt) 2. cristina,777,, (ccl) 3. ,,, (mb) 4. pickles,665,, (p_p) 5. julia,,, (ju_ju) 6. friend,666,, (friend) Choose identity to authenticate as (1-6): $ sudo timedatectl set-timezone Europe/Amsterdam $ date Fri 25 Mar 2022 01:18:31 PM CET Nice it worked Etherpump async (agetjson) returns Failed to download the api request `createDiffHTML` bumps into "failed to download" Failed to download https://hub.vvvvvvaria.org/rosa/pad/api/1.2.15/createDiffHTML?apikey=XXX&padID=rosa-log&startRev=0, saw Is there an API limit that can be changed? Trying... $ sudo nano /srv/etherpad-lite/settings.json Hmm, no. Stuck. Installing nload to be close to Rosa's capacities, specifically their network bandwith: $ sudo apt install nload To use it: $ nload Struggling with missing trailing slashes in distribusi With `try_files $uri $uri/index.html $uri =404;`: https://hub.vvvvvvaria.org/rosa/chapters --> https://hub.vvvvvvaria.org/rosa/chapters/index.html (works) https://hub.vvvvvvaria.org/rosa/chapters/varia --> https://hub.vvvvvvaria.org/rosa/varia (breaks) The links break because the `try_files` does not rewrite the URL to add a trailing slash, but it just loads the page... Can `try_files` be combined with `rewrite`? This looked promising: https://stackoverflow.com/questions/40264617/using-try-files-alongside-rewrite-in-nginx-location-block location ~ ^/photos { try_files $uri $uri/index.html $uri @rewrites; } location @rewrites { rewrite ^([^.]*[^/])$ $1/ permanent; } But does not work... Installing distribusi with pip3 and edit the code does not work: installation breaks on pillow dependency. Installing distribusi from the git and edit the code does not work: installation breaks on pillow dependency. Opened an issue in the distribusi-go repo: https://git.vvvvvvaria.org/decentral1se/distribusi-go/issues/16 Maybe rewrite can be used to add "index.html" to the uri? ... hmm no In the end, adding one trailing slash to distribusi-go did the job. Recompiled distribusi-go, and now it works! Submitted the change on the issue tracker: https://git.vvvvvvaria.org/decentral1se/distribusi-go/issues/16 Scary attempt: change the distribusi-go code From: https://git.vvvvvvaria.org/decentral1se/distribusi-go Install go "You'll need Go >= 1.11 installed." https://go.dev/ $ cd /srv/distribusi/ $ wget https://go.dev/dl/go1.18.linux-arm64.tar.gz https://go.dev/doc/install $ sudo tar -C /usr/local -xzf go1.18.linux-arm64.tar.gz $ export PATH=$PATH:/usr/local/go/bin $ nano $HOME/.profile if [ -d "/usr/local/go/bin" ] ; then PATH="$PATH:/usr/local/go/bin" fi $ go version go version go1.18 linux/arm64 Install distribusi-go $ git clone https://git.vvvvvvaria.org/decentral1se/distribusi-go.git "Run make to build a new ./distribusi executable." $ cd distribusi-go $ make go: downloading github.com/Gurpartap/logrus-stack v0.0.0-20170710170904-89c00d8a28f4 go: downloading github.com/barasher/go-exiftool v1.7.0 go: downloading github.com/disintegration/imaging v1.6.2 ... Where is the code? $ nano distribusi.go Oh, found the template here! An option B is to hack the trailing slash with javascript...... But first, where can the trailing slash be added to all links in the code? if root != fpath { href := "../" div, err := mkDiv(c, "os/directory", href, "menu", false) if err != nil { return err } html = append(html, div) } And here: href := fmt.Sprintf("%s/", fname, fname) Running make to generate a new distribusi executable $ make Testing if it works $ ./distribusi -p /var/www/html/chapters/ --debug Works!!! A custom 404 message While trying out all sorts of try_files `$uri $uri/index.html $uri/` combinations, i bumped into a way to set a custom 404 page! location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a custom 404. try_files $uri/index.html $uri/ $uri /unavailable.html; } There is a custom 404 page now here: $ nano /var/www/html/unavailable.html To see it, visit a link does not exist, such as this one: https://hub.vvvvvvaria.org/rosa/rrrrr March 24 Distribusi does not add a trailing slash to links... This breaks the URL with the hub setup See if the trailing slash issue can be resolved in the nginx setup... It seems to work by adding: rewrite ^([^.]*[^/])$ $1/ permanent; to Varia's nginx config of the hub. Ths breaks pads now... Adding it to the /chapters/ links only... In the nginx config: $ sudo nano /etc/nginx/sites-enabled/default location ^~ /chapters/ { # Add trailing slashes to all requests rewrite ^([^.]*[^/])$ $1/ permanent; } This does not work... Hmm... This is helpful to understand the regex used in the nginx config: https://regex101.com/r/vP4cA4/1 Trying another way to add a trailing slash: location ^~ /chapters/ { try_files $uri $uri/index.html $uri/ =404; } Works for https://hub.vvvvvvaria.org/rosa/chapters/varia but rewrites "varia" in the URL for links to subfolders... Being confused by etherpump... Since we added diffhtml to the etherpump index, it raises an error: Failed to download https://hub.vvvvvvaria.org/rosa/pad/api/1.2.9/createDiffHTML?apikey=1e2f010c05add6041059c0b380b3cbc3c32566faffc1a8ae0db2878994490bbc&padID=rosa&startRev=0, saw The error disappeared The error appears again sometimes Confusing! Changing the color scheme of the pads The stylesheet of the etherpads is here: $ sudo nano /srv/etherpad-lite/src/static/skins/colibris/pad.css Making sure that etherpad does not install dependencies at each restart Many etherpad sessions were running.... Stopping all the processes of the etherpad-lite user. $ sudo killall -u etherpad-lite It made us suspicious if etherpad is not running multiple times... And well, actually yes! In this folder: $ cd /etc/systemd/system/ There is both etherpad-lite.service and etherpad.service Merging these two files into one, using the server.js and not the run.js: ``` [Unit] Description=etherpad-lite (real-time collaborative document editing) After=syslog.target network.target [Service] Type=simple User=etherpad-lite Group=etherpad-lite WorkingDirectory=/srv/etherpad-lite Environment=NODE_ENV=production ExecStart=/usr/bin/node /srv/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js Restart=always [Install] WantedBy=multi-user.target ``` After changing a .service file, reload the deamon. $ sudo systemctl daemon-reload Installing the headless/command line version of paged.js To add a "save" function to octomode, saving a PDF to the system directly. https://pagedjs.org/documentation/2-getting-started-with-paged.js/#command-line-version To install it: $ sudo npm install -g pagedjs-cli pagedjs Error: The chromium binary is not available for arm64. 1001 error If you are on Ubuntu, you can install with: 1001 error 1001 error sudo apt install chromium 1001 error 1001 error 1001 error sudo apt install chromium-browser 1001 error 1001 error /usr/lib/node_modules/pagedjs-cli/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserFetcher.js:115 1001 error throw new Error(); 1001 error ^ 1001 error 1001 error Error 1001 error at /usr/lib/node_modules/pagedjs-cli/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserFetcher.js:115:27 1001 error at FSReqCallback.oncomplete (node:fs:198:21) 1002 verbose exit 1 Following the suggestions: $ sudo apt install chromium "After this operation, 506 MB of additional disk space will be used." $ sudo apt install chromium-browser "E: Package 'chromium-browser' has no installation candidate" Trying to install pagedjs again: $ sudo npm install -g pagedjs-cli pagedjs npm WARN deprecated @babel/polyfill@7.12.1: 🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information. npm WARN deprecated puppeteer@10.4.0: Version no longer supported. Upgrade to @latest npm WARN deprecated core-js@2.6.12: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js. added 166 packages, and audited 167 packages in 19s 17 packages are looking for funding run `npm fund` for details 2 high severity vulnerabilities To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details. Trying to install the latest version of puppeteer, but npm is a totally new environment, so it's a bit like moving around blindly... $ sudo npm i -g puppeteer@latest Returns: `npm WARN deprecated puppeteer@10.4.0: Version no longer supported. Upgrade to @latest` So nothing changed, stuck here. March 23 Install etherpad plugin for headers/fonts/colors https://www.npmjs.com/package/ep_headings2 How to install plugins? https://github.com/ether/etherpad-lite/wiki/Available-Plugins First become the etherpad-lite user $ sudo su -s /bin/bash etherpad-lite Then go to the folder where etherpad is installed: $ cd /srv/etherpad-lite Then install the plugin with $ npm i ep_headings2 ... The plugin seems to break etherpad. Mar 23 12:56:35 rosa sh[4105]: #033[31m[2022-03-23 12:56:35.569] [ERROR] server - #033[39mError: Command exited with code 1: npm ls --long --json --depth=0 --no-production │·························· Mar 23 12:56:35 rosa sh[4105]: at exports (/srv/etherpad-lite/src/node/utils/run_cmd.js:119:25) │·························· Mar 23 12:56:35 rosa sh[4105]: at Object.exports.getPackages (/srv/etherpad-lite/src/static/js/pluginfw/plugins.js:112:48) │·························· Mar 23 12:56:35 rosa sh[4105]: at Object.exports.update (/srv/etherpad-lite/src/static/js/pluginfw/plugins.js:86:34) │·························· Mar 23 12:56:35 rosa sh[4105]: at Object.exports.start (/srv/etherpad-lite/src/node/server.js:143:19) │·························· Mar 23 12:56:35 rosa sh[4105]: at processTicksAndRejections (node:internal/process/task_queues:96:5) It would be nice to learn how to read logs better... Log reading resonates somehow quite a lot with the listening workshop we will do on Sunday. How to practice reading each others logs? As the user etherpad-lite... $ sudo su -s /bin/bash etherpad-lite running the initial install script... $ /bin/sh /srv/etherpad-lite/src/bin/run.sh to see if the responses will give any more info. ... no, same error. Found a recommondation in the etherpad-lite issue tracker to run $ npm install --no-save --legacy-peer-deps Restarting etherpad again with the run.sh command.... ... Hmm... no. Let's uninstall the plugin. $ npm uninstall ep_headings2 Instead, maybe we can use a monospace font on the etherpad? Install fan controller for pi Following this tutorial: https://howchoo.com/g/ote2mjkzzta/control-raspberry-pi-fan-temperature-python git clone https://github.com/Howchoo/pi-fan-controller.git running sudo pip3 install -r pi-fan-controller/requirements.txt <<-- runs into errors so I installed the requirements separately sudo pip3 install RPi.GPIO sudo pip3 install gpiozero cd pi-fan-controller/script run ./install cd back run python3 fancontrol.py <<-- gives the following error RuntimeError: Mmap of GPIO registers failed stuck here making aliases for commands we use a lot - available for one user only to make a new alias, change to user friend sudo su friend to add a new alias into the file sudo nano .bash_aliases after you save and close, run begin to make your alias available for the user friend March 22 ccl digs to find some refs on feminist publishing: https://femme-type.com/radical-feminist-publishing-interview-with-co-conspirator-press/ https://womeninprint.wordpress.com/ https://www.dropbox.com/s/3tw7fjgk8y9tc3j/a_press_of_our_own_barbara_smith.pdf?dl=0 https://arena-attachments.s3.amazonaws.com/1368913/ccf42e4faa915f90010bd7a2880e8b42.pdf?1508993458 http://www.sinisterwisdom.org/archive https://futuress.org/ https://discovery.ucl.ac.uk/id/eprint/1348866/1/327545.pdf March 21 Made changes to octomode + etherpump: you can open pads "in octomode" now. Octomode does not make pads with an extension anymore, it just keeps the filename. Also installed https://git.vvvvvvaria.org/decentral1se/distribusi-go at /srv/distribusi + added it to the crontab of user friend, updates every 5 min. To edit the crontab: 1. become the friend user: $ sudo su friend 2. edit the crontab: $ crontab -e Also added an iframe to the main rosa page: (as friend) $ nano /srv/etherpump/templates/index.html The iframe points to: https://hub.vvvvvvaria.org/rosa/chapters/ However, distribusi seems not to be able to run recursively? This means that new folders in the chapter folder are not turned into distribusi pages... hmm. Opened an issue about this: https://git.vvvvvvaria.org/decentral1se/distribusi-go/issues/14 Another issue is that distribusi creates links without trailing slash.... which makes links break because of the /rosa/ setup...... Next step: install the regular distribusi (not the go version) to work recursively + see if the trailing slash issue can be resolved in the nginx setup... Update: distribusi does run recursively actually, it was the URL issue that breaks the links... Next step: look into the trailing slash situation March 17 2022 - finish buzzbot (renamed to folding.py) - make changes to octomode that we discussed yesterday folds bot .service details [Unit] Description=Resonance bot After=network.target [Service] User=friend WorkingDirectory=/srv/folds ExecStart=/srv/folds/.venv/bin/python folding.py Restart=always [Install] WantedBy=multi-user.target March 16 2022 - installing etherpump https://git.vvvvvvaria.org/varia/etherpump Install pip first. $ sudo apt install python3-pip Make a virtual environment. $ mkdir /srv/etherpump $ python3 -m venv venv $ source venv/bin/activate $ pip3 install etherpump Try running etherpump $ etherpump init Returns: ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/srv/etherpump/venv/lib/python3.9/site-packages/markupsafe/__ init __.py) To resolve this, downgrade markupsafe $ pip3 install markupsafe==2.0.1 Try to run etherpump again $ etherpump init works! Copying the cron.sh file to make a script for etherpump to run every 10 minutes https://git.vvvvvvaria.org/varia/etherpump/src/branch/main/cron.sh This cron.sh script is used to generate the etherpump index. The index is saved to /var/www/html/index.html. March 15 - installing etherpad plugin linkify Oh.... spotted in the settings.json that we're running etherpad with dirty.db, which "should only be used for testing and development"!! Switching to mysql/mariadb... Install mysql https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/ $ sudo apt update $ sudo apt install wget -y $ wget https://dev.mysql.com/get/mysql-apt-config_0.8.18-1_all.deb $ sudo dpkg -i mysql-apt-config_0.8.18-1_all.deb $ sudo apt install mysql-server Adding the gpg of the mysql apt repo: https://techglimpse.com/update-gpg-key-mysql-repo-debian-ubuntu/ $ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 467B942D3A79BD29 Installing mysql/mariadb https://github.com/Tob1asDocker/rpi-mariadb $ sudo apt install mariadb-server Make a "friend" user $ sudo mysql > CREATE USER 'friend'@'localhost' IDENTIFIED BY 'moonwalk'; Make a database for the etherpad > CREATE DATABASE etherpad_lite_db; Give permissions to the user friend to write to this db > use etherpad_lite_db; > GRANT ALL ON *.* TO 'friend'@'localhost' WITH GRANT OPTION; Close mysql > exit; Hmm.... Switching to a sqlite database, as that is what is used by the varia server... $ sudo apt install sqlite3 $ cd /srv/etherpad-lite/src/ $ sudo npm install sqlite3 In settings.json "dbType": "sqlite", "dbSettings": { "filename": "var/sqlite.db" }, Not sure which database is the best to use and why? Would be interesting to learn about this, conversations around such questions are hard to find online. ------ How to install an etherpad plugin? https://github.com/ether/etherpad-lite/wiki/Available-Plugins 1. Enable Admin interface (edit settings.json) 2. Login in to admin interface (yourpad.com/admin) 3. Use admin interface http://youretherpad/admin/plugins Installed: linkify2 for the [[anotherpad]] internal link function! (we should test if it works) --> it breaks the etherpad installation. March 13 2022 thinking about storage options OPTIONS - https://github.com/coderaiser/cloudcmd file manager + editor + console - https://github.com/filebrowser/filebrowser file manager + editor + console - https://github.com/prasathmani/tinyfilemanager file manager (demo https://tinyfilemanager.github.io/demo/) - https://github.com/redhog/ep_fileupload etherpad plugin for built-in file upload NOTES - something torrent based? (because downloading/uploading eats bandwidth of the rpi!!) - something p2p? (to not make rosa the only central node, and stimulate promicuous file exchange?) - wild thought: what if file uploads go through a chat environment + logbot? https://relearn2021.vvvvvvaria.org/ - federated file sharing? one folder hosted at rosa, shared/synces/mirrored/??? at a few other servers? (TINC can be used to safely exchange files automatically) - wow bittorrents + rss feeds!?! https://en.wikipedia.org/wiki/Broadcatching - an atnofs network of webtorrents! https://webtorrent.io/ https://btorrent.xyz/ trying filebrowser https://filebrowser.org/installation $ cd /var/www/html/ $ curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash $ filebrowser -r . Installation worked, but the application did not load. trying tinyfilemanager https://github.com/prasathmani/tinyfilemanager needs php so first: install php https://linuxize.com/post/how-to-install-php-on-debian-10/ $ sudo apt install php php-fpm add this to the nginx config: location ~ \.php$ { include snippets/fastcgi-php.conf; listen = 127.0.0.1:9000 } Also edit the php config file $ sudo nano /etc/php/7.4/fpm/pool.d/www.conf comment this line out with a ";": ;listen = /run/php/php7.4-fpm.sock add this line listen = 127.0.0.1:9000 and reload nginx + restart phttps://hub.vvvvvvaria.org/rosa/octomode/publication_Rosa/pad/hp $ sudo service nginx reload $ sudo service php7.4-fpm restart then try tinyfilemanager https://hub.vvvvvvaria.org/rosa/files.php?p= -- hmm, redirects during use to https://hub.vvvvvvaria.org/files.php?p= ....... -- and does not correctly links to files...... trying cloudcmd https://github.com/coderaiser/cloudcmd $ npm i cloudcmd -g to run it $ cloudcmd Now it runs at port 8000 config file: /home/mb/.cloudcmd.json http://192.168.178.58:8000/ works https://hub.vvvvvvaria.org/rosa/files/ works but css links are broken... Going for tinyfilemanager in the end. $ npm uninstall cloudcmd -g March 10 installing octomode Step 1 Download the octomode code from the Varia git. First go to the location where you want to install octomode. This should be outside of the public webserver folders, as we will have to save an API key of the etherpad at some point, and you don't want to share that key in public. Also, switch to the root user for this step. `$ cd /srv/` `$ sudo su` `# git clone https://git.vvvvvvaria.org/varia/octomode.git` Step 2 We will make an "octomode" user on the server to run octomode with this user. In this way we can restrict the access of this user to the rest of the server. It's a way to make sure that the pads in octomode cannot be used to write code in a specific way, that it can be executed on the server. Make a system user called "octomode". `# useradd --system --no-create-home --shell=/sbin/nologin octomode` Give read and write access + ownership to the `/srv/octomode` folder to the octomode user. `# chown -R octomode:octomode /srv/octomode` `# chmod -R u+rw /srv/octomode` To handle the limited folder access, i'm not sure what to do. Maybe a so called `chroot` can be used? Asking for advice here: https://git.vvvvvvaria.org/varia/octomode/issues/2#issuecomment-757 Step 3 Install the dependencies that octomode uses. First make sure that `pip3` and `pandoc` is installed. On debian you can install it by running: `$ sudo apt install python3-venv pandoc` There is a Makefile in the octomode folder, which can be used to install the dependencies. First navigate to the octomode folder and then run `make setup`. `# cd /srv/octomode` `# make setup` Change the ownership of the installed dependencies to octomode. `# chown -R octomode:octomode .venv` Step 4 Get the API key of the etherpad you want to use. This can be a local one which is running on the same server, or an etherpad that is running somewhere else. `# cat /srv/etherpad-lite/APIKEY.txt` Copy the key and save it in the file `/srv/octomode/config.py` as "PAD_API_KEY". `# cd /srv/octomode/` `# nano config.py` Also change the "PAD_URL" and "PAD_API_URL". You can also change the "PORTNUMBER", this is the port at which octomode will be running. You can change it to any port number that is not used yet on the server. Close and save the `config.py` file with `[CTRL+X]`, `[Y]`, `[ENTER]`. Step 5 Try to run octomode, to see if it works! `# make run` If you are currently in the same local network as rosa, you can visit rosa's ip address on port 5001. http://192.168.178.58:5001 Try to visit all the different "modes": `pad`, `stylesheet`, `html` and `pdf`, to make sure that they all work. You can stop the application with [CTRL+C]. Step 6 Run octomode as a background service. Octomode is written in Flask, a python library to make web applications. It needs to run all the time in order to be available for people to use. We will make a system d `.service` file for this. https://blog.miguelgrinberg.com/post/running-a-flask-application-as-a-service-with-systemd Make a `.service` file for octomode: # nano /etc/systemd/system/octomode.service Paste the following configurations in the file: [Unit] Description=Collective PDF rendering environment After=network.target [Service] User=octomode WorkingDirectory=/srv/octomode ExecStart=/srv/octomode/.venv/bin/python octomode.py Restart=always [Install] WantedBy=multi-user.target Reload the systemd daemon: # systemctl daemon-reload And start the octomode service. # systemctl start octomode Check if it works by visiting http://192.168.178.58:5001/ again! Step 7 Connect octomode to an URL. To access octomode through an URL, like https://rosa.vvvvvvaria.org/octomode/, a mapping is needed to route octomode's port 5001 to the URL that will be used. In nginx, we can use a proxy_jump for this. Open the nginx configuration file. # cd /etc/nginx/sites-enabled # nano default Add the following setting to the nginx file. location /octomode { proxy_pass http://127.0.0.1:5001; } # Serve the /static/ folder nginx (instead of Flask) # as this Flask installation runs outside the root URL location ^~ /static/ { alias /srv/octomode/static/; } Change the permissions of the `/srv/octomode/static/` folder, as this folder will be served by nginx. # chown -R www-data:www-data /srv/octomode/static/ # chmod -R g+w /srv/octomode/static/ Check if you configuarion is oke. # nginx -t If so, then reload nginx. # service nginx reload See if it works by visiting http://192.168.178.58/octomode/ or https://rosa.vvvvvvaria.org/octomode/pad/. (because https://rosa.vvvvvvaria.org/octomode/ gets redirected currently, but that is work in progress). Thursday 24 FEB (evening) layers, logging, resonance, disguise About publishing as layering: Could publishing be like a texture? Is the persistent flow of human and non-human writing that travels into and out of our devices, like an ambient background noise, the flow of real-time feeds and streams that operate almost like an atmospheric state—is this a new paradigm? Today, and perhaps more so in the near future, we need to understand publishing as less breaking and more layering—a rhizomatic carpet, laying on top of everything else, without edges. In the “smooth flow” of the new publishing, the substrate isn’t clear. It might be invisible, or even unknowable—code written into distant servers, below a natural language interface. Algorithms that work under the hood, writing records that remain out of sight. Paul Soulellis https://soulellis.com/writing/nov2017/ About questioning the act of layering: With this collection of computational ROCKS, The Underground Division gets closer to the unstable stories of particular ROCKS as told through scientific, poetic, public and technological discourse. Recognising that ROCKS have their own lively forces and relationalities, the Division studies ROCKS' 3D imaginings, the softwares and hardwares that ROCKS intervene on and builds new glossaries on the go. These studies operate as a chipping away at what limits the collective resistance and reparative capacities of and with ROCKS. However, a great deal of stony patience is required to resist and repair the damages from the very practices which bring ore and its energies to the surface of the earth. The Underground Division (Femke Snelting, Jara Rocha, Helen Pritchard) http://ddivision.xyz/rockrepo/ In relation to resonance and imagining forms non-romantic togetherness, to speculate on infrastructures that are based on various modes of relation: Other Geometries is an invitation to reflect on, re-imagine and train for togetherness with difference. It is a collaborative research-kit, a porous collection of trans*femininist renderings, eccentric imagery and recombinatory vocabularies. The kit is part of an ongoing conversation with activist collectives which rely on concepts such as ‘sovereignity’, ‘freedom’, ‘independence’ and ‘autonomy’ to ideologically motivate work on tools, networks and infrastructures we need and want. But by sticking to modes of separation rather than relation, we continue to evoke utopias elsewhere, instead of developing ways to stay with the trouble that we are already entangled in. Other Geometries proposes ‘complex collectivity’ as a tentative framework to think with for example, non-normative human constellations, or collectives where participants with radically different needs, backgrounds and agencies come together. ‘complex collectivity’ can be self-chosen, or be the result of structural forces such as laws, racism, technology, wars, austerity, queerphobia and ecological conditions. Many of the items included in the kit modify existing concepts by introducing dynamic tension. In the workshop we will extend this method to the way we relay stories of complex collectivities or the kind of geometries we invent for them. We will try to be attentive to generative vibrations between ontologies and cosmologies and speculate with ‘infrastructures’ that could hold more than one form of togetherness together. What non-utopian models can we design to interface with multiple collectivities? How can we do that without making their intersections dependent on the rigidifying assumptions of sameness and reciprocity? Femke Snelting https://possiblebodies.constantvzw.org/geometries/othergeometries.pdf homework from p_p there is a typo in the Hackers & Designers book of 'Dialog'. I appreciated this as an in between of Dialogue and the logging mb was mentioning what is a dialogue between logs? Can this connect to the bots in the pads that we discussed today? using conversation as cross referencing, also like [[padname]] could avoid layers becoming hierarchical or linear can this be involved with attachments, with touch? also like the instructional pages at the back of the H&D publicaiton that gives detailed information if you were curious to know more. is this a kind of layer too? like layers for different types of curiousity, different focuses and desires? disguise is hard to think about how to implement inside a computer, but I'm thinking about if the small changes we are doing are moving toward some kind of character - if a workshop on alias making could be a place to implement a 'disguise' in a character? - different layers of meaning that can come out from all the different interpretations when reading homework from strt Thinking of layers in what it brings up in my mind - can be positive, like warm layers of clothing or layers of ingredients in a sandwich, and also less positive like layers of dust over forgotten or untouched objects, a layer of mould growing in a jar of jam, layers of bureaucracy that are hard to untangle. Yesterday we talked about alternatives to layers, which are linear - piles? A bundle? A bundle wrapped in layers of fabric. The layers of communication/insight we give when writing on a pad, represented in a friendly bot sharing a short summary of whatt you can encounter in that pad. Disguise in the form a surprises? Wednesday 23 FEB (infrastructure day) Poll for license: https://framadate.org/jScMDwqQnLRIk1PY Port 80 - webserver (for everything on the web) Port 22 - ssh into the server p - to select a port cd [enter] - get home To add your own computer's key to Rosa, so you don't need to write your password when you log in. First you need to generate a ssh key on your own computer: $ ssh-keygen This generates two keys: a public one and a private one $ ssh-copy-id username@45.83.233.82 -p 1508 how to make a config file to connect to rosa: ls [means listing files] la [means long list] ls / cat[space+filename] = to display what is in a file nano config [opens a txt file] then you can write: Host rosa Hostname 45.83.233.82 User [write your username] Port 150822 IdentityFile ~/.ssh/id_rsa save it by exiting [control x] and saying Yes [by pressing enter] notes from conversation: space for each chapter (notes from last time - Welcome pack: A place to document what is there to see at the different locations, a tour guide, a map? restaurants? local recipes? travel suggestions? speech to text tools?) concept of consent, in relation to sharing, publishing, access, rights, touch, invasion welcoming environment touch is a command consent to: - publish - alter (open license is consent to reuse) - touch - ... Adding another language to the server's mode of address around permissions. CC4R Amy: We did a workshop with Elodie around the CC4R license at APASS. We were reading Glissant: nothing is yours. you are an accumilation to a bunch of other things. we had to write about an artwork that we liked. and we had to write a license to say how we would like this work to be reused. the license is trying to do this i think, to be aware of minorities and the sources that you take from, but also to not be so protective about what you make. Constant refigured the Free Art License and made it more complicated. Installing tmux to work in a shared terminal session $ sudo apt install tmux https://tmuxcheatsheet.com/ First we all switch to the friend user $ sudo su friend One of us makes a new session $ tmux new -s nameofsession[etherpadinstallsession] Attach to new session $ tmux attach-session -t etherpadinstallsession Installing etherpad How? Is there documentation close to us that we can use? remember: rosa uses debian bullseye https://etherpad.org/doc/v1.8.16/ https://github.com/ether/etherpad-lite#installation curl = downloading something from the internet Rosa doesn't have curl and git, so we will install it first: $ sudo apt install curl $ sudo apt install git Then we follow the quick install: $ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - $ sudo apt install -y nodejs $ git clone --branch master https://github.com/ether/etherpad-lite.git $ cd etherpad-lite $ src/bin/run.sh Now we need to connect the port where Etherpad is 9001. https://gist.github.com/aaronpk/7307172 On XPUB1's Soupboat, an etherpad is installed in the same way as we need it: https://hub.xpub.nl/soupboat/pad/ location ^~ /pad/ { proxy_pass http://localhost:9001/; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_redirect off; proxy_buffering off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; } We can add this to the nginx config file $ sudo nano /etc/nginx/sites-enabled/default We add the config above. Then we save it with CTRL+X and Y and [enter]. Then we test if the configs were oke syntaxwise. $ sudo nginx -t And then we reload the nginx service. $ sudo service nginx reload Oke.... Then we run the etherpad run.sh script again: cd ~/etherpad-lite/ src/bin/run.sh And we go to http://45.83.233.82/pad/ I reinstalled etherpad-lite fixing the error Error: The module at "ep_etherpad-lite/static/js/rjquery" does not exist. src/bin/run.sh was failing to install the node modules running separately npm install ep_etherpad-lite getting the error that python is not found, so installing python and running again tried changing the nginx configuration from here https://stackoverflow.com/questions/70651975/nginx-with-etherpad-in-a-subdirectory no luck... perhaps trying to downgrade to an older version of etherpad next --- 04.03 tried to install again using below instructions, no luck so far http://eth.leverburns.blue/p/--alice-- getting this error npm WARN old lockfile at async Array. (/usr/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:743:9) { npm WARN old lockfile code: 'EACCES', npm WARN old lockfile errno: 'EACCES', npm WARN old lockfile syscall: 'mkdir', npm WARN old lockfile path: '/srv/etherpad', npm WARN old lockfile type: 'system' npm WARN old lockfile } npm ERR! code EACCES npm ERR! syscall mkdir npm ERR! path /srv/etherpad npm ERR! errno -13 npm ERR! Error: EACCES: permission denied, mkdir '/srv/etherpad' npm ERR! [Error: EACCES: permission denied, mkdir '/srv/etherpad'] { npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'mkdir', npm ERR! path: '/srv/etherpad' npm ERR! } npm ERR! npm ERR! The operation was rejected by your operating system. npm ERR! It is likely you do not have the permissions to access this file as the current user npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the npm ERR! permissions of the file and its containing directories, or try running npm ERR! the command again as root/Administrator. Can we change the background image of the pads? YES!!! https://vvvvvvaria.org:5281/upload/LIwFmOt8z6SrSxXX/rpi.jpeg $ cd /srv/etherpad-lite/src/static/skins/colibris/images $ curl https://vvvvvvaria.org/images/rosa.jpg --output fond.jpg Run etherpad all the time in the background as a "service": "debian bullseye how to run etherpad-lite as service" https://github.com/ether/etherpad-lite/wiki/How-to-deploy-Etherpad-Lite-as-a-service#debian-8-jessie--systemd 1. Create a user called etherpad-lite adduser --system --home=/srv/etherpad-lite --group etherpad-lite 2. Ensure the etherpad-lite user has full access to the etherpad-lite source $ sudo chown -R etherpad-lite:etherpad-lite /srv/etherpad-lite 3. Create a new file etherpad-lite.service in /etc/systemd/system/ $ sudo touch /etc/systemd/system/etherpad-lite.service $ sudo nano /etc/systemd/system/etherpad-lite.service Paste the following: [Unit] Description=etherpad-lite (real-time collaborative document editing) After=syslog.target network.target [Service] Type=simpleUser=etherpad-lite User=etherpad-lite Group=etherpad-lite Environment=NODE_ENV=production ExecStart=/srv/etherpad-lite/src/bin/run.sh [Install] WantedBy=multi-user.target 4. Run systemctl enable etherpad-lite to enable the service on boot. 5. Run systemctl start etherpad-lite to start the service. NB: might need to change "/srv/etherpad-lite/bin/run.sh" with "/bin/sh /srv/etherpad-lite/bin/run.sh" according to configuration If you change the etherpad.service file, you need to reload the systemd deamon to make the changes. $ sudo systemctl daemon-reload tried to get the latest version on git Next time - make aliases https://linuxize.com/post/how-to-create-bash-aliases/ Notes for Session 17 FEB Feminist publishing infrastructure imaginations mb leaving a trail of thought around a possible feminist publishing infrastructure (FPI, to make it easier to repeat this long name): When the term "feminist server" enters the room, it feels like a point of attraction, something to cluster around, an idea that triggers. A desire to imagine and discuss what a feminist server could be, clusters us. We come together because different people in the networks-of-networks are curious to think together with others in the networks. Without having a single center, a networks-of-networks gathers throughout time in parallel, crossed, async and/or sync ways. A networks-of-networks does not operate in consensus, there are probably many things to disagree on, and it consists of different situated knowledges and lived experiences. This is not to say that a networks-of-networks are very divers in different ways, even though there are differences of course, but it's more an attempt to think about this constallation as a topological shape. A networks-of-networks. I was browsing through a document written in 2007 around the question "What is an open organisation?"[3], which could be helpful to understand a networks-of-networks. "we sum up the three types here without getting too much going into details about it, and described from the position of the actor: - as a small shrimp executing pre-defined tasks (hierarchical) - taking part in the decision process what and how to do things (consensus) - automomous and free to perceive, react, create, enter/leave (open)" And it feels that a networks-of-networks topology is operating as the third option: as an "automomous and free to perceive, react, create, enter/leave (open)". (we don't fully agree on things but there is a certain trust) How can a FPI value such networked constallation? How can it sustain it? And feed it? Could such FPI operate as a "federation protocol for enabling interoperability"[1] between networks-of-networks? What does interoperability mean in that case? In what way do we want to inter-operate with each other? How can we do that in a free form and soft structuring way?(as opposed to a template)[2] What if we cross-link[4] each others documentation/materials? (also like weaving) What if we develop methods to read/write/listen across each others documentation/materials? What if we find a way to stimulate conversation around each others documentation/materials? [1] from https://forgefed.peers.community/ [2] inspired by https://march.international/becoming-sponge-sustaining-practice-through-protocols-of-web-publishing/ [3] "SOME THOUGHTS ON THE THEME = What is an open organisation and some examples?" (Bratislava, 2007) https://societyofalgorithm.org/B22F/01/openorganisations.txt, linked at https://societyofalgorithm.org/B22F/01/index.html found on Monoskop.org [4] Instead of "crossing" we could also think in "attachments", inspired by SA Smythe in Logic 15 Beacons: "Let’s put it this way: gender is a series of attachments, much like belonging—which is probably why this relates to your question. So technology, perhaps if I can try to make a real quick but rough analogy, not as a process or a series of mech- anisms through which you manage labor, bodies, time, and all of these sorts of constructs, but actually as a way of deepening attachments. I’d like to think of “trans” when I think about transnational politics and even transdisciplinary scholarship as a moving across borders drawing from how trans theorist Eva Hayward talks about trans being a series of attachments and modes of relating as opposed to across, because grammatically, trans is supposed to be across and then cis would be on the same side. Instead of crossing a border or staying on the same side of a border, of gender, of geography, and so on, it could instead be a series of attachments to that very otherwise set of possibilities that we’re trying to mobilize." > You can be attached to something and loose that attachment again > You can have an attachment for something or someone for specific parts of it, but not by the whole thing. This creates space for nuances > When i am thinking about gender, i think of it as a detachment, not an attachment. > Can you be attached to being detached? ;) > When you attach to gender, is it an attachment to a form of aesthetics? > interesting in relation to the "crossing" and the FPI. like logbot is a shared memory, a way of keeping trace. what do we want the FPI to nourish? > i can connect to attachments, i collect weird shit all the time. i retrieve them for my practice. material in relation to attachments would help decide what to add to the publication > there is also something in the food that we eat > we are attached to these evenings ;) > Changing Rosa's messages changes the way the computer speaks to you, it makes me attached differently to the system. > i have that blackboard, i'm attached to the idea of having this next to my desk to hang things but i haven't done it at all. attached to a platform even if i don't use it > When making notebooks, i always start a new one with a specific idea, and then i only use it for one page, because i don't want to ruin the possibility of the next page > incognito mode, what for? you want do something but in disguise > i don't know how you publish in disguise > Can each person arrange the publication as they wish? Everyone makes elements, > What can soft structuring be, practically speaking? > Maybe it's about who can change a system? + in terms of content, the following snippets are helpful to imagine what will be there: From the cosf pad: - Each chapter has their publication chapter ready by October 2022 that contains - intro text describing their theme for the 2 days - material used during the session - documentation of their chapter - any other things you would like from p_p maybe too old, binary and obvious a reference, https://hub.vvvvvvaria.org/rosa/octomode/publication_Rosa/pad/ut I have been reading Sadie Plant, The Future Looms, and there are some terms and passages that I find helpful for thinking about what feminist technologies might be / what is feminist them. - an interface is something that we want for display, but it also hides - we make technologies to be our messenger, for a possibility of communication. - In FPI how do you show gratitude to the messenger? "Indeed, if woman is[they are] anything, she is[they are] the very possibility of mimesis, the one who weaves her[their] own disguises. The veil is her[their] oppression, but "she[they] may still draw from from it what she[they] needs to mark the folds, seams, and dress making of her[their] garments and dissimulations." (Irigaray 1991, p116) ... she is[they are] more than which she[they] imitate. Woman[Oppressed people], like the computer, appears at different times as whatever man requires of her[them]. She[they] learns how to imitate; she[they] learns simulation. And, like the computer, she[they] become very good at it, so good, in fact, that she[they] too, can mimic any function. As Irigaray suggests: "Truth and appearances, and reality, power... she is[they are] - through her[their] inexhaustible aptitude for mimicry - the living foundation for the whole staging of the world." materiality of textiles a computer as unknown space, when you think of it as space that is "folded in" I think this problem goes back to the first software engineer, Ada Lovelace. She looked at the automated looms and felt that they could be improved by Babbage's technology, which could go forward as well as backward through cards. If she had instead looked at how handweavers work, she'd have realised that computing could greatly benefit from weaving, rather than vice-versa. Software engineers have been making the same mistake ever since, in thinking they have something new, and not respecting these ancient crafts as the highly developed computational technologies that they are. https://wg.criticalcodestudies.com/index.php?p=/discussion/113/week-2-of-textiles-and-technology-discussion-starter - what is rosa wearing? - does rosa have a costume? - is rosa singular? "Software, in other words, has its screens as well: it too has a user-friendly face it turns to [the client]man, and for it, as for [the worker]woman, this is only its camouflage." - camouflage, FPI that allows you to share in disguise - FPI that has options to conceal, to de-publish > different layers of visibility and privacy, and that the users can change this for themselves > making space for speculative/fiction, "disguise in untruth" "There is for Irigaray another side to the screens which "already moves beyond and stops short of appearance, and has no veil. It wafts out, like a harmony that sub-tends, envelopes and subtly 'fills' everything seen, before the caesura of its forms and in time to a movement other than scansion of syncopations. Continuity from which the veil itself will borrow the matter-foundation of its fabric."(Irigary, 1991, p116) This fabric, and its fabrication is the virtual materiality of the feminine; home to no-one and no thing, the passage into the virtual is nevertheless not a return to the void. This affirmation is "without subject or object", but "does not, for all that, go to the abyss." The blind immateriality of the black hole was simply projected by man, who had to believe that there was nothingness and lack behind the veil." - think about how to undo binary ideas such as 0 1 - find it helpful to think about performative aspect of screens, they frame an activity to which you give attention. what questions of framing enter FPI? I imagine a feminist infrastructure: - as the corner shop in your neighborhood - you kinda depend on them - to get fresh eggs, milk and tomatos - you also know when they are open or close - so you go there when it’s good for both - and you know that one day - they might get sick or something - and because you go there every other day - and make conversation while picking lemons from the basket - you and them are sort of friends - maybe not bffs - but friendly enough - to care - and help out - whenever necessary - however you can - maybe ask what’s up - offer some soup or to look out for the kids for a while - or call some other neighbor - cuz you know maybe you are not skilled to solve everything - and that’s fine - there are others like you - and different than you - and together you can make it work again - maybe not fully - not same - but open again and shared - with oranges for all of you around it - and that might meant you get less flour one day - and a lots of coffee beans some others - it might depend on the weather - or on the providers - that are also other neighbors - like you with the ropes and shoe laces - and sometimes other things come from a far - and that’s also nice - cuz you can try berries you didn’t know - and make uses you didn’t think of before - sometimes things are send away too - or someone travels - or both - and as things and knowledges are helpful elsewhere - when back - they might bring new ones - maybe partnerships are build this way - in these comes and go’s - so the neighborhood feels a bit bigger - expanded - kinda flexible - diverse - supported - and connected - in a way - as you rely on the shop - y’all rely on each other - knowing that nothing is permanent - or perfect - or stable - but it’s there while it’s there - and that’s good knowing We're making a way to collect materials & make them visible to each other Are we making categories? Maybe something softer. logging as a way to collect materials before you forget them https://vvvvvvaria.org/logs/atnofs-varia/ logs work in chronological order "this happened this happened this happened this happened this happened" logs are difficult to read, logs are unedited objects what if we see the log as something that operates in parallel with another text you never read a log from top to bottom, you search for something specific and filter it alt text workshops - https://alt-text-as-poetry.net/ how could logging work for everyone, practically speaking? for relearn we used the browser can we cross protocols? to not force people to use our tools? RSS can be our shared protocol: Mastodon and logbot both "speak" RSS marks as tools to layer the logs: certain marks will allow a post to go to the publication layering the logs: what kind of layers can we add to the logs? how can we connect the logs with the texts? 10 FEB Publishing infrastructure documentation of different traces of the project Amy: something instruction based for others to be able to pick up, evening meeting Julia shares Sara Ahmed "I make arguments by listening for resonances; the book thus involves repeating words, sometimes over and over again; words like shatter, words like snap. The repetition is the scene of a feminist instruction.(...) A feminist instruction: if we start with our experiences of becoming feminists not only might we have another way of generating feminist ideas, but we might generate new ideas about feminism. Feminist ideas are what we come up with to make sense of what persists. We have to persist in or by coming up with feminist ideas. Already in this idea is a different idea about ideas. Ideas would not be something generating through distance, a way of abstracting something from something, but from our involvement in a world that often leaves us, frankly, bewildered. Ideas might be how we work with as well as on our hunches, those senses that something is amiss, not quite right, which are part of ordinary living and a starting point for so much critical work. (Living a Feminist Life, page 12)" > DRY (Don't Repeat Yourself) is a principle of software development. Why? When you write code that performs the same tasks over and over again, any modification of one task requires the same change to be made to every single instance of that task! > resonance as a bouncy gesture, to use words over and over again to see one word in different aspects and sides In response to this quote, Cristina mentions a Katherine McKittrick's position to work with what we have in order to reach liberation (this is super paraphrased, would be nice to have a quote here?) "Sara Ahmed makes the very smart observation that citation practices are gendered and racialized. Citation decisions are a political project for Ahmed because, she argues, absenting white men (from our bibliographies, references, footnotes) reorganizes our feminist knowledge worlds. By excluding white men from her (our) bibliographies she (we) can generate new ideas and chip away at, and possibly break down, the walls of patriarchy that have excluded and refuse feminist ways of knowing. Decentering the citations, and thus the experiences, of white men unmakes a scholarly system that champions and normalizes white patriarchal scholarly traditions. I struggle with the outcome of this citation project. I wonder how it inadvertently turns on impossible foreclosures: What does it mean to read Jacques Derrida and abandon Derrida and retain Derrida’s spirit (or specter!)? Do we unlearn whom we do not cite? And what of our teaching practice? Do we teach refusal? Can we not teach our students to engage with various authors and narratives, critically, while also asking them to raise up the work of black women and other scholars, writers, artists, interviewees, teachers, who go unrecognized? How do we teach each other to read (disapprove, evaluate, critique, use, forget, abandon, remember) “white men” or other powerful scholars? Or is the critique (uncitation) to enact erasure? The project of erasure, too, often unfolds as an affirmation of racial privilege: here I recall (mostly white) feminists sparklingly shouting with a kind of breathy desperation that they, too, have been overciting and venerating white male scholarship, and that Ahmed has discovered a brand-­new way to recognize and credit and legitimize the ideas of the marginalized; this leads these breathy speakers to hail the work of — mostly nonblack, mostly white feminist, mostly academic — privileged scholars! That aside, Ahmed’s citation project matters to me because it asks that we think about the epistemological grounds through which we theorize and imagine and name liberation in our referencing practices. Citation points to method and how we come to write what we know. Citation is important because it frames and supports (legitimizes) our argument. This also shows that if we begin with Michel Foucault as our primary methodological and theoretical frame — if Foucault is our referential scaffolding — we will, most certainly, draw Foucauldian conclusions. There is nothing at all wrong with a Foucauldian project and Foucauldian conclusions, of course — to suggest so would be remiss and skirt around the work of citations I am seeking to address. This example simply centralizes the importance of how referential beginnings and referential scaffoldings shape conclusions." Cristina shares this web page in which the word "resonance" is mentioned in relation to publishing, by Stevphen Shukaitis: https://transversal.at/transversal/0614/shukaitis/en "1. “One publishes to find comrades!” (1997: 52) This declaration by Andre Breton is a fitting place as any to begin discussing what an insurrection of the published means, or could mean. For what Breton says here is not a facile declaration, but really something that is worth reflecting on to consider changes in the current and shifting relationship between publishing, politics, and cultural labor more generally. For what Breton says here is not that one publishes to propagate and spread an already conceived an absolute: this is not a publishing of revelation or of bringing consciousness to an already imagined fixed audience. Rather Breton is describing something that might be called a publishing of resonance. That is, not a publishing practice that is intent on necessarily intent on trying to convince anyone of anything, but rather is working towards establishing conditions for the co-production of meaning. Thus publishing is not something that occurs at the end of a process of thought, a bringing forth of artistic and intellectual labor, but rather establishes a social process where this may further develop and unfold." > "a publishing of resonance" seems to be a way to see publishing as part of "shaping a social process". So in this understanding, it could still happen at the end of a research/project. In that way, we have been working with "resonant publishing" in a bit of a different way, where we use it to refer to publishing-on-the-go. > Would this also come from an understanding of the authority of a published object? In terms of tone that is used, but also as an object itself. > antonyms: publishing of revelation, publishing of bringing consciousness to an already imagined fixed audience > The impact of published objects on history is big. We are trained to relate to printed objects as something that carries knowledge and is precious. How would you shift that relationship while publishing? But also in relation to the receiver of the object that is published? "2. In this sense the organization of the productive process of publishing could itself be thought to be as important as what is produced. How is that? It follows logically from the idea that one publishes in order to animate new forms of social relationships, which are made possible through the extension and development of publishing, through the social relationships animated by it. Publishing calls forth into itself, and through itself, certain skills of social cooperation that are valuable and worthy, even if what is produced as an end product perhaps is not an exalted outcome. Perhaps that is not so important at all. In short publishing is the initiation of a process where embodied processes of knowing and understanding are produced and reproduced, rather then the creation of fixed objects where complete understanding are fixed and contained. The production of the community of shared meaning and collaboration, the production of a public, contains within it a wealth that is often greater then a single text. The production of the text can only be valuable because of the social relationships it is embedded with and produces meaning through." > makes me think of katherine mckittrick, but also of the phrase "making publics" (rather than making public) > the embodied part is also interesting Manetta leaves some snippets here for 10 February, this one felt useful for us in regards to positioning towards receiving funding. I found this in the Glossary of Undisciplined Design book that i borrowed from Cristina: "The funding we were able to obtain from various European institutions and foundations in order to finance the GUD Symposium and handbook speaks volumes about the kind of access we have to educational and cultural institutions, and to the kinds of legitimization and visibility they produce." > privileges - https://www.youtube.com/watch?v=2ozEgz1vH_Y amy's thoughts on feminist publishing leaves some snippets too from the introduction of Information Activism, A Queer History of Lesbian Media Technologies that I shared in xmpp and then finally started to read when julia said it was good! although more focused on a historical moment of transition to digital technologies, could be useful in positioning ourselves "“Formed by grassroots feminists, the ­Women’s Information Exchange is dedicated to putting information technology to use in facilitating outreach, networking, and resource sharing among ­women.... gathered radical feminist resources from publications and community groups and added them to a computer database or­ga­nized by “area of interest.” Subscribers to the ser­vice mailed in surveys in which they chose fields for “the areas of interest that affect your working self, your po­liti­cal self, and your social self... promoted a burgeoning feminist data politics based on user control and transparency about how and why information about individuals would be collected and stored > woman could bring any kind of information that they felt was relevant to bring > cyberfeminist index by mindy seu. it's super nice but it feels like it's made from a distance to these groups. she gets a lot of visibility for this, but at the same time, for a lot of people it's a great resource to learn with > contradiction that making an index can also make you very vulnerable but also, index as a form of accessibility, entrance to whisper networks > this was in the US ... Information activism describes a range of materials and pro­cesses constituting the collective, often unspectacular labor that sustains social movements... As Susan Leigh Star put it, “Feminist, antiracist, and multicultural theory, and our collective experience in ­these domains is one of the richest places for which to understand ­these core prob­lems in information systems design: how to preserve the integrity of information without a priori standardization and its attendant vio­lence.” > something to keep in mind while making the templates ;) having thoughts that it could be exciting to focus in on this difficulty in the work we do, it feels aparent in all levels - our collaboration, server set up, documentation, publishing - how to organise together while keeping a space for emergent possibilities. thinking about options to hide, conceal, alter, shift, chance encounter .. getting too poetic here. (not at all!!) > we like it > "poetry is not a luxury" :) > how to make a system that needs to be functional and allowing for errors? functional while we are not there > also because we will not be around all the time when it is used > would be nice to embrace this friction between system and sudden alterations/errors/etc amy's thoughts about intersectional feminism? Kimberlé Crenshaw on Intersectionality: https://www.youtube.com/watch?v=ViDtnfQ9FHc and reading from bell hooks, Ain't I a Woman The Combahee River Collective published "A Black Feminist Statement” to explain their group’s focus. In their opening paragraph they declared: We are a collective of black feminists who have been meeting together since 1974. During that time we have been involved in the process of defining and clarifying our politics, while at the same time doing political work within our own group and in coalition with other progressive organizations and movements. The most general state­ ment of our politics at the present time would be that we are actively committed to struggling against racial, sexual, heterosexual, and class oppression and see as our particular task the development of integrated analysis and practice based upon the fact that the major systems of oppression are interlocking. The synthesis of these oppressions creates the conditions of our lives. As black women we see black feminism as the logical political movement to combat the manifold and simultaneous oppression that all women of color face. nb. you cannot be racist and a feminist. you cannot be anti-abortion and a feminist. you cannot be capitalist and a feminist. if you are a feminist you cannot condone or participate in one form of oppression while fighting another. > who has the authority to say what is feminism? You're still telling someone how to behave if you do so... bell hooks says it's important to keep saying what feminism is, because now people are forgetting, young women say they are not feminist because that is too intense. There is a danger there I think too. Being an educator is having authority yes, but don't you think it's ok when those who want to learn grant it to you? > Concerned about the glorification of feminism... as if feminism cannot go wrong. Some people are feminist and capitalist, these do not go against each other, there are multiple feminisms, and they contradict each other The way I understand it: capitalism is anti-feminist because it exists through the oppression and exploitation of someone else (and possibly yourself) Feminism is against all form of oppression and exploitation. bell hooks said this phrase 'you cannot be anti-abortion and feminist' because to disallow another persons choice over their own body (particularly female reproduction) is an oppression to that person. That is an anti-feminist act. > It's also important to not make feminism a commodity, to not only use it as a label. > side note, on Dutch colonialism: https://www.youtube.com/watch?v=aMwgzK9LGeM (this can be home work ;)) amy's links for permacomputing https://wiki.xxiivv.com/site/permacomputing.html http://viznut.fi/texts-en/permacomputing_update_2021.html https://github.com/civboot/civboot/commit/4e0710c72037826d4c6cb532a6d2a2bbff8c253b Manetta's thoughts about feminist publishing: "One publishes to find comrades" { Andre Breton—Eva Weinmayr } "Publications are “not necessarily the end product trying to convince anyone of anything” but rather they are about “working towards establishing conditions for the co-production of meaning”47" { Eva Weinmayr—[page with footnote 47 is blocked by google books]—Art, Politics and the Pamphleteer, by Jane Torney and Gillian Whiteley } + Something that is on my mind these days is to think about the overlap and difference between: "networked publishing" {?} (blurring a technical understanding of networks with a social one), "promiscuous publishing" { Constant—Femke Snelting https://constantvzw.org/wefts/webpublications.en.html } “A promiscuous publication is NOT like parallel, hybrid, or cross-media publishing. It is a multi-headed and polycentric form of making public. It enjoys its various forms, and embraces their idiosyncracies. As a multi-headed publication it is NOT obsessed with providing uniform outcomes across diverse media. Having many centers, it can produce new focal points and obfuscate its origins. It explores playfully a spectral diversity with sibling outcomes and bastard children that operate out of sync or tune.” (Christoph Haag, make make do in: The Techno-Galactic Guide to Software Observation, 2016) (where inputs and outputs are processed by multiplicity of tools and processes), and "resonant publishing" { ? } (where editorial roles are blurred + publishing happens while-we-go)... And thoughts about feminist infrastructure, from Underneath and on the sidelines: Sustaining feminist infrastructures using speculative fiction by Spideralex: "Feminist infrastructure is similar to the community infrastructure outlined above, but it comes from other places and has other motivations." "“adequate technology and also appropriate, copied, obtained. [...] describes those technologies best suited to the environmental, cultural and economic context; requiring few resources; implying the least costs; with a low environmental impact; low levels of maintenance; created using local skills, tools and materials; and that can be locally repaired, modified and transformed. At the end of the day, which community does not need technology to be efficient, understandable and adapted to its own environmental, cultural and economic context?”" { De las tecnologías apropiadas a las Tecnologías Re-Apropiadas, by Elleflâne, Soberanía Tecnológica, Volumen 2, 2018, Available at: https://www.ritimo.org/IMG/pdf/sobtech2-es-with-covers-web-150dpi-2018-01-13-v2.pdf } https://iterations.space/uploads/iterations-spideralex-underneath-and-on-the-sidelines.pdf > claim for reclaiming technologies so that we can live with them: electricity, water, poo, piss, sewage, housing, waste, food and drinks (basic necessities) <3 > reading about use of tech in communities with disabilities: tech is not consumed; these people see themselves as the actual hackers of the world, living with technologies means something different to them as to people fighting for open source for example. The article is "disability" by A > ref to https://catalystjournal.org/index.php/catalyst > and Cristina shows https://www.mapping-access.com/ as a ref to accessibility work in design > podcast on art and tech disability visibility https://open.spotify.com/episode/3hjMpfti0hwFyF1gMWskZi?si=bAldqTd0SK23SPnzagEv2w And about (intersectional, even though this word is not used) feminism by Susan Leigh Star in Misplaced Concretism and Concrete Situations: Feminism, Method, and Information Technology (1994): (this author also cited in first book I brought in) "Thus we evolved the deconstruction of gender, the centering of gender/sexual ambiguity and multiplicity, the fight for erasure of gender differences under some circumstances, the interlocking nature of race, class, and gender oppression, and the honoring of historical and cultural traditions of masculinity and femininity in various ethnic cultures: all at once. I hold that it is the all at once-ness that is at the core of feminist survival, and as a consequence at the core of our relationship to science and technology. The power to hold multiple, contradictory views in a moral collective (?) is necessary in shaping the divergence between Big Brother and a positive, cyborg-inhabited multiverse. One way to think of this is in understanding feminism as a method and as a methodology. In this sense, only methods—not positions, systems, or artifacts—have a chance to go all the way." > feminism as method and methodology, not as system or artifacts > there is friction with feminism as method too, in the way that a method is something that you generalise in order to re-use it. Does this mean that a method can be used regardless of what context? > dictionary definition of method: "a particular procedure to approaching something, especially an established or systematic one" > this sounds like a system of indoctrination....... > resonates with sara ahmed's quote on repetition > can the method be mutable? [we are reading very fast from here on] ... she continues to further unpack feminism as a method, which is a snippet that i encountered through the Vernaculars come to matter book where Michael Murtaugh referred to it in his text on vernacular software. So again the following words are from Susan Leigh Star: "Feminism as a method thus creates robust findings through the articulation of multiplicity, contradiction, and partiality, while standing in a politically situated, moral collective." > what the hell is a moral collective? "Considered formally, then, the attributes of feminist method that are particularly important are: 1. experiential and collective basis; 2. processual nature; 3. honoring contradiction and partialness; > this is very nice 4. situated historicity with great attention to detail and specificity; and 5. the simultaneous application of all of these points." > this list can be very helpful when we come back to making our approach to the infra > for these specificities to be changeable too, it's important to leave that space for the others cristina's links to discuss in the meeting on feminist publishing not an example per se, but this conference i bookmarked a year ago https://www.feministandaccessiblepublishingandtechnology.com/p/schedule-of-events.html > a lot of it is very US based > it's not super feminist in the sense that it chose only famous people to speak > but it can be a good reminder to step out and bring a experimental mode of publishing again > i tuned too much towards traditional forms of publishing while thinking of feminist publishing > and seeing this made me think of publishing again in a it more expanded way (making bots, publishing on federated media, ...) on intersectional feminism Lola Olufemi - Feminism, Interrupte "I knew I had to choose what kind of feminism would form the basis of my understanding. My experiences had taught me that nothing should be taken for granted; there was no coherence or consensus on accepted principles in the feminist movement. If anything, it was defined by conflict. The decision to practice a radical feminism was crucial because I became aware of how it separated those wanting to create a new vision for the world from those merely wanting to climb the rungs of power." "‘Feminist work is justice work.’ When I heard this phrase at a university event, something changed. It came to define how I think about feminism and its goals. The phrase stuck with me because it was different to what I saw in the mainstream. ‘Feminist work is justice work’ proposes that feminism has a purpose beyond just highlighting the ways women are ‘discrimi- nated’ against. It taught me that feminism’s task is to remedy the consequences of gendered oppression through organising and by proposing new ways to think about our potential as human beings. For me, ‘justice work’ involves reimagining the world we live in and working towards a liberated future for all. But how do we begin to reimagine? We refuse to remain silent about how our lives are limited by heterosexist, racist, capitalist patriarchy. We invest in a political education that seeks above all, to make injustice impossible to ignore. We ensure that nobody is allowed to suffer in silence, that no one’s pain goes unseen." "Cultural conversations about feminism have a purpose; they can do the work of bringing the problem to attention. Artistic creations provide an avenue for reflection on the dynamics that govern our lives. They bolster what Gramsci called ‘optimism of the will,’ having the courage to believe that a more dignified world is possible, reinvigorating movements that have lost their energy. Pop culture and mainstream narratives can democratise feminist theory, remove it from the realm of the academic and shine a light on important grassroots struggle, reminding us that feminism belongs to no one." "Imagine this: A world where the quality of your life is not determined by how much money you have. You do not have to sell your labour to survive. Labour is not tied to capitalism, profit or wage. Borders do not exist; we are free to move without consequence. The nuclear family does not exist; children are raised collectively; reproduction takes on new meanings. In this world, the way we carry out dull domestic labour is transformed and nobody is forced to rely on their partner eco- nomically to survive. The principles of transformative justice are used to rectify harm. Critical and comprehensive sex edu- cation exists for all from an early age. We are liberated from the gender binary’s strangling grip and the demands it places on our bodies. Sex work does not exist because work does not exist. Education and transport are free, from cradle to grave. We are forced to reckon with and rectify histories of imperialism, colonial exploitation, and warfare collectively. We have freedom to, not just freedom from. Specialist mental health services and community care are integral to our societies. There is no ‘state’ as we know it; nobody dies in ‘suspicious circumstances’ at its hands; no person has to navigate sexism, racism, disabilism or homophobia to survive. Detention centres do not exist. Prisons do not exist, nor do the police. The military and their weapons are disbanded across nations. Resources are reorganised to ade- quately address climate catastrophe. No person is without a home or loving community. We love one another, without pos- session or exploitation or extraction. We all have enough to eat well due to redistribution of wealth and resource. We all have the means and the environment to make art, if we so wish. All cultural gatekeepers are destroyed. Now imagine this vision not as utopian, but as something well within our reach. The vision I have presented has its limitations. There are gaps, contradictions and things that have been omitted. But without the capacity to imagine in this way, feminism is purposeless. Let us fight over a vision because our demands must spring from somewhere. This is the task handed down to us and we must approach it with the urgency it demands. We must rise to the challenge with a revolutionary and collective sense of determi- nation; knowing that if we do not see this world, someone else will." > resonates with spideralex' workshop on speculative technologies > It would be nice to do a speculative technologies workshop together (next Thursday evening session?) to imagine together a feminist publishing infrastructure. What features do we want it to have? How would it work in relation to our bodies? We could use drawing as a way to visualise our ideas. [server time now!!] STEP 1 $ sudo nano /etc/ssh/sshd_config > uncomment #Port 22 > replace 22 with 1508 (arbitrary number) > change it $ sudo service --status-all > shows all the services it has running > + shows that it's running, - is not running $ sudo service ssh start > made it start! Now from the laptop: $ ssh mb@rosa > returns: "ssh: connect to host rosa port 22: Connection refused" but! $ ssh mb@rosa.local -p 1508 > works STEP 2 Opening the ports on the router Log into the router. On the browser: http://192.168.178.1/ We opened port 1508 on the router and mapped it to rosa's port 1508. NOW We prepare the "friend" account for Roel so he can login to rosa for the STEP 3 $ cd /etc/nginx/sites-available make copy of an existing config file: $ sudo cp radio.poel.casa.conf rosa.poel.casa.conf make a symlink between this file above and its omolog in sites-enabled: $ sudo ln -s ../sites-available/rosa.poel.casa.conf . edit the file: $ sudo nano rosa.poel.casa.conf server { listen 80; server_name rosa.poel.casa rosa.poel.local; return 301 https://$server_name$request_uri; #will always redirect http to https } server{ listen 443 ssl; server_name rosa.poel.casa rosa.poel.local; ssl_certificate /etc/letsencrypt/live/poel.casa/fullchain.pem; #these certify that your server is who it says it is; ready for the handshake ssl_certificate_key /etc/letsencrypt/live/poel.casa/privkey.pem; location / { proxy_pass http://192.168.178.58; #the ip address of the rosa machine } } $ sudo nginx -t $ sudo service nginx reload https://rosa.poel.casa/ works! But we don't have a web server running on Rosa yet ;). STEP 4 We need to install nginx on the rosa server! $ sudo apt install nginx $ sudo systemctl status nginx it runs! We will make a small web page for Rosa now. $ cd /var/www/html $ sudo nano index.html And now we change permission of the /var/www/html folder, so we all can write in this folder $ sudo chmod -R g+w /var/www/html $ sudo chown -R www-data:www-data /var/www/html And we add ourselves to the www-data group, so we can all edit the page. $ sudo addgroup USERNAME www-data Rosa has a web page!! https://rosa.poel.casa/ STEP 5 Close the laptop! STEP 6 (next day) Port 1508 does not work anymore: $ ssh user@rosa -p 1508 returns: "ssh: connect to host rosa port 1508: Connection refused" It seems that the ssh service is not started after a reboot. Apparantly, debian runs two ssh services: one for handling general ssh sessions, and another one for custom configurations of the ssh connections. This is made like this, so you can restart the ssh service without loosing your ssh session. Also, when you have errors in your ssh config file, this means that you still can ssh into your machine... (if there would have been one one ssh service you would have lost all access to the machine). To enable this, run: $ sudo systemctl enable ssh ... Hmm, when trying to use the port 1508 now, it returns: "ssh_exchange_identification: read: Connection reset by peer" And with the default port 22 is returns: "ssh: connect to host rosa port 22: Connection refused" ... An online source advices to reboot Rosa. https://phoenixnap.com/kb/fix-connection-reset-by-peer-ssh-error but... $ ssh user@rosa -p 1508 ssh: connect to host rosa port 1508: Connection refused $ ssh user@rosa works again, so it seems that the "enable" command did not work. Another attempt: maybe it helps to first start the service... and then enable it? $ sudo service ssh start $ sudo systemctl enable ssh $ sudo reboot No. So.... how can we start the ssh service when we reboot Rosa? ... Maybe these logs can help us out... $ tail -f /var/log/auth.log | grep ssh When keeping that open in a second terminal... and log out from the first terminal, and trying to log in again using port 1508... The terminal returns: "ssh_exchange_identification: read: Connection reset by peer" The log returns: "fatal: Missing privilege separation directory: /run/sshd" Following this: http://realtechtalk.com/Linux_Ubuntu_Debian_Missing_privilege_separation_directory_varrunsshd-2236-articles $ mkdir -p /run/sshd Would make this directory $ ssh user@rosa -p 1508 Oh it works now! STEP 6 -- AGAIN On March 10 we bumped into the same error. Suddenly we could not login with ssh anymore, as the ssh.service had stopped running. After starting it, we ended up in the same loop as above... Once someone opened a second ssh connection to rosa, the ssh configs somehow got reverted. All ssh connections are blocked, both on port 22 and 1508... So i did a manual reboot by unplugging and replugging rosa. I searched again online to see if there are more clues out there why this happens, and found this, describing exactly our situation: https://unix.stackexchange.com/questions/675370/why-ssh-service-doesn-t-start-automatically-during-boot-despite-being-enabled-by Following this reply to the first answer, might work for us too: "Indeed, there is a ssh.socket unit implemented, with a line Conflicts=ssh.service inside the definition file. So I disabled this unit, rebooted, then my sshd.service started automatically as expected. Thanks for pointing me to the culprit." But hmm... what does it mean to "disable this unit"... Let's go back to the default port 22..... $ sudo nano /etc/ssh/sshd_config Comment out the line: Port 1508 Save the file. Reboot the server. STEP 7 Disable root login $ sudo vim /etc/ssh/sshd_config PermitRootLogin no $ sudo systemctl restart ssh STEP 8 resolve the locales error https://discuss.freedombox.org/t/solved-pam-env-cron-session-unable-to-open-env-file-etc-default-locale-no-such-file-or-directory/1088/2 $ sudo apt policy locales $ sudo apt install locales "Locales are a framework to switch between multiple languages and allow users to use their language, country, characters, collation order, date and time, etc. Make sure you set locales generating UTF-8 locales. Other character sets can be set for backwards compatibility with older systems and software." https://www.cyberciti.biz/faq/perl-warning-setting-locale-failed-in-debian-ubuntu/ $ locale To set the locale to US English and UTF-8 $ sudo locale-gen en_US.UTF-8 This seem to have resolved it. Session 3 February think about our questions: what kind of publishing infrastructure are we making? are we starting from scratch or from the middle (by using something that we already have, or that already exists)? what are the options in case we want to use something we have? pad2pdf/octomode? multifeeder... (maybe, what we're working on that for the newsletter now) how strict do we want the template to be? what should the template include? would it gather raw or selected documentation? who does it speak to? other self-organised groups what do we want to 'publish', for who? from the application, it was mentioned that the building of a network is an important element. Do we want to continue with this? if the public is small organisations that want to work with these questions, how can we reach them in the best way? is it priorily about knowledge sharing? if we produce the content of the Varia chapter during the event, how can we do this? can we prepare activities that could generate material for the publication? how can we continue with the idea of "resonant publishing"? how does the aspect of travelling influece the publication? can we activate cross-linking between chapters with the publishing system? how does the travelling server relate to the idea of resonant publishing? do we want music? what are we doing on the 25th and 26th March? what activity are we hosting? for who? workshops to explore feminist publishing infrastructure turn the small moments we have into larger moments in the 25th and 26th, ie. the lecture message 'we started doing this and then we met this' base our workshops around the narrative of the server another thing we could do is to annotate the feminist server manifesto together feminist server feminist documentation feminist content feminist publishing turning the server into an oracle? less linear more playfull? https://solarpunk.cool/zines/map-is-the-territory/cast-the-circle.html what is the difference between a feminist server and a shared/community server? taking care of feminist digital material language matters the identities who take care syster server who does not apologise https://iterations.space/uploads/iterations-spideralex-underneath-and-on-the-sidelines.pdf shared admin ? what is resonant publishing? how can you publish from the middle? how can you publish a process/conversation? how is this a feminist practice? why do you publish? and for whom? the act of listening and sending out information? knowledge sharing a re-edit of something that is out there, is that publishing in the middle?