You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

283 lines
11 KiB
Django/Jinja

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, viewport-fit=cover">
<meta name="format-detection" content="telephone=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon" sizes="180x180" href="">
<meta name="author" content="html makers">
<meta name="description" content="">
<meta name="keywords" content="">
<meta property="og:type" content="">
<meta property="og:title" content="A log book of {{now}} from OG">
<meta property="og:image" content="">
<meta property="og:description" content="">
<meta property="og:url" content="">
<link rel="stylesheet" href="print.css">
<title>A log book of {{now}}</title>
</head>
<body>
{% macro log_output(logs) -%}
{% if logs|length > 0 %}
<ul>
{% for item in logs %}
<li>{{ item }}</li>
{% endfor %}
</ul>
{% endif %}
{%- endmacro %}
<article>
<h1>Preface</h1>
<p>
TL;DR researches ways to make sense of the hidden labour that goes on in a feminist server through log files and
unlogged activity.
</p>
<p>
The unlogged activity of a server includes the physical labour, the decisions about shared spaces, the different
knowledges that depend on each other for the network to exis
</p>
<p>
Activity that is logged, is often compiled in inaccessible log files that track the work a server performs as
data. They're both hard to retrieve, hard to decipher, and have a bias towards the technological ecology,
prioritizing the labour of machines.
</p>
<p>
Chopchop is a a Raspberry Pi that is configured, maintained and used as a community server by XPUB1
</p>
<p>
This EPUB is a generated compilation of logs with annotations that provide context to the situatedness of this
technology. With one book a day, a diary of chopchop is kept, stored and shared.
</p>
</article>
<article>
<h1>The state of chopchop on {{now}}</h1>
<hr />
<p><em>tldr@chopchop:~ $</em>whoami</p>
<p>{{ device_info if device_info else '' }}</p>
<p>{{ hostname if hostname else '' }}</p>
<p>{{ ip_address if ip_address else '' }}</p>
<mark>
XPUB 1 users use chopchop as a shared community server.
chopchop is usually located in the Piet Zwart Wijnhaven building. It moves around from time to time, too. For the occassion of SI23, it is resting on the
shelf below this e-reader.
</mark>
{% if since_last_boot %}
<p><em>tldr@chopchop:~ $</em>uptime -s</p>
<mark>
Uptime is the amount of time a server has been up, available, running, working, executing. This is time that is
not spent idle, but time spent busy serving.
</mark>
<p>{{ since_last_boot }}</p>
<mark>
{% if days_since_last_boot|int > 14 %}This uptime is unusual, we are used to our server crashing quite often, especially
when we are all sharing the space and editing at the same time. Our server, chopchop, chops up time into small
bits of surprise in which we learn that the technologies we rely on are never just up and running on their own.
They require people to care for them, to put in the time and the mindspace to figure out how to keep them running
and available.
{% else %}This short of an uptime is common, the fragility of these machines are more prominent than
any cloud user expects. Partially because of scale, partially because a lot of labour that happens in datacenters
just escapes us all when we want to just upload an image, or just send a message, or just open a webpage.
{% endif %}
</mark>
{% endif %}
{% if users_created_today is defined %}
<p><em>tldr@chopchop:~ $</em>sudo journalctl -S today _COMM=useradd -r</p>
<mark>
Users are assigned to groups, which allow them rights to read or edit files, run commands or apply infrastructural
changes.
</mark>
{% if 2 == range(1,3) | random %}
<mark>
For chopchop, we all have 'sudo rights': the ability to perform any command, including the more sensitive
ones. Sudo is a command that's short for 'superuser do', with it, a user has more privileges, like installing or
updating a package or performing a restart.
</mark>
{% endif %}
{{ log_output(users_created_today) }}
{% if users_created_today|length > 0 %}
<mark> <code>{{ last_user_added_name | replace(", ", "") }}</code> user was added, and the network of trust grew ever so slightly. Users will be trusted with not just the keys and passwords to the "house" which is the server, but with a portion of responsibility to keep it afloat and contribute to what makes it a community of practices (and network of knowledge and dependence).</mark>
{% else %}
<mark>No new users were created today. The trust network remains the same size.</mark>
{% endif %}
{% endif %}
<p><em>tldr@chopchop:~ $</em> grep 'install' /var/log/dpkg.log</p>
<mark>
Packages are often installed to use different software or coding languages or build alternative tools. Often
users have to talk about and consider which packages they need and why, as well as how much storage they take up
and how they will change their interactions with and on their shared server.
</mark>
{{ log_output(list_package_installs) }}
{% if list_package_installs|length == 0 %}
<mark>
Today, no new packages were installed...
</mark>
{% endif %}
<p><em>tldr@chopchop:~ $</em> grep 'upgrade' /var/log/dpkg.log</p>
{% if list_package_upgrade|length > 0 %}
<mark>
Out of the existing packages, these were upgraded:
</mark>
{{ log_output(list_package_upgrade) }}
<mark>
Packages are upgraded to fix previous bugs they had, or allow new options for usage they did not have prior.
</mark>
{% else %}
<mark> No existing packages were upgraded today.</mark>
{% endif %}
<p><em>tldr@chopchop:~ $</em> grep 'remove' /var/log/dpkg.log</p>
{% if list_package_remove|length > 0 %}
<mark>
These package were removed today:
</mark>
{{ log_output(list_package_remove) }}
<mark>
Packages could be removed because of the limited storage on chopchop, by not being used by the people who share the
server, or by being no longer secure. It is often good practice to 'do some spring cleaning' every now and
then and remove the packages that no longer serve you any purpose.
</mark>
{% else %}
<mark>
No packages were removed today.
</mark>
{% endif %}
<mark>
These actions are only a portion of the work... There's also the relationships of the people who care for
the server enough to maintain it... The hours they put into meeting each other, discussing and deciding on
how to move forward... They are sharing a digital landscape in which there are no hierarchies of landlords
and renters... So, they find different ways to make a space for learning and co-habitation... This list is
not exhaustive.
</mark>
<p><em>tldr@chopchop:~ $</em>sudo journalctl _COMM=systemd-login --output-fields=MESSAGE -S today -g "New
session" | grep -v 'Boot'</p>
<mark>
Users can login to the server using the SSH (secure shell) protocol. This allows a user to explore files,
make changes, run commands and speak to the server from their own machine. This is useful when working
remotely, and also to allow multiple users logging into the server simultaneously.
</mark>
{% if 2 == range(1,3) | random %}
<mark>
There are chopchop users for current XPUB1 students, as well as for their tutors. Additionally, there are some users not associated with a person, like our shared user 'chipchip' and users for running specific processes or creating projects.
</mark>
{% endif %}
{% if logins_today is defined %}
{{ log_output(logins_today) }}
{% if logins_today|length > 0 %}
<mark>
These users have logged into our shared server chopchop, during the course of this day.
</mark>
{% if 2 == range(1,3) | random %}
<mark>
Usernames are often not the real names of the users, but often pseudonymns. This creates a sense of customization to your experience. In bigger groups this might also result in anonimity, which can be (un)desirable and potentially confusing.
</mark>
{% endif %}
{% else %}
<mark>It was quiet today, no users logged in. However, that does not mean the server just sits idle!</mark>
{% endif %}
{% endif %}
{% if groups_created|length > 0 %}
<p><em>tldr@chopchop:~ $</em>sudo journalctl _COMM=groupadd -r --output-fields=MESSAGE</p>
{{ log_output(groups_created) }}
<mark>
These new working groups were added today. They might be used for creating new projects, maintaining or
managing parts of the server, or for organizational purposes.
</mark>
{% endif %}
{% if groups_removed|length > 0 %}
<p><em>tldr@chopchop:~ $</em>sudo journalctl _COMM=grouPremove -r --output-fields=MES</p>
{{ log_output(groups_removed) }}
<mark>
These new groups were removed today. Most likely they were no longer relevant or purposeful.
</mark>
{% endif %}
{% if user_modified|length > 0 %}
<p><em>tldr@chopchop:~ $</em>sudo journalctl _COMM=usermod -r</p>
{{ log_output(user_modified) }}
<mark>
These users have been modified. Probably because someone changed their password, keys, or other
settings, or given new permissions.
</mark>
{% endif %}
{% if user_deleted|length > 0 %}
<p><em>tldr@chopchop:~ $</em>sudo journalctl _COMM=userdel -r</p>
{{ log_output(user_deleted) }}
<mark>
It seems that a user was removed. This doesn't happen too often... It could be that they have done
something to lose the trust of the community. The circle of trust shrunk ever so slightly.
</mark>
{% endif %}
{% if list_active_services %}
<p><em>tldr@chopchop:~ $</em>sudo service --status-all</p>
<mark>
These are all of the services that are active, running, working to execute requests that enable everything
on the server. They are marked with an [+].
The rest, marked with a [-], are idle, not running, or waiting to be activating upon sending a request.
</mark>
{{ log_output(list_active_services) }}
{% endif %}
{% if kitchen_prints %}
<p><em>tldr@chopchop:~ $</em>grep -E {date} /var/log/cups/access_log</p>
{{ log_output(kitchen_prints) }}
<mark>
The kitchen has called for {{kitchen_prints|length}} prints.
</mark>
{% endif %}
<script type="text/javascript" src="script.js"></script>
</body>
</html>