<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://lug.mtu.edu/w/index.php?action=history&amp;feed=atom&amp;title=Minutes_2025-10-09</id>
	<title>Minutes 2025-10-09 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://lug.mtu.edu/w/index.php?action=history&amp;feed=atom&amp;title=Minutes_2025-10-09"/>
	<link rel="alternate" type="text/html" href="https://lug.mtu.edu/w/index.php?title=Minutes_2025-10-09&amp;action=history"/>
	<updated>2026-04-29T17:47:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://lug.mtu.edu/w/index.php?title=Minutes_2025-10-09&amp;diff=7964&amp;oldid=prev</id>
		<title>D2wn at 21:19, 10 October 2025</title>
		<link rel="alternate" type="text/html" href="https://lug.mtu.edu/w/index.php?title=Minutes_2025-10-09&amp;diff=7964&amp;oldid=prev"/>
		<updated>2025-10-10T21:19:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:19, 10 October 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 49:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 49:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;### &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; just takes from stdin&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;### &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; just takes from stdin&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#### If you run &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; without providing a filename, you can just type into it to have strings recognized&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#### If you run &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; without providing a filename, you can just type into it to have strings recognized&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#### &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; doesn&#039;t &#039;&#039;know&#039;&#039; we&#039;re typing its input, it just &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;received&lt;/del&gt; it through stdin&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#### &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; doesn&#039;t &#039;&#039;know&#039;&#039; we&#039;re typing its input, it just &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;receives&lt;/ins&gt; it through stdin&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#### The developers didn&#039;t have to do anything special to enable this to happen&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#### The developers didn&#039;t have to do anything special to enable this to happen&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pipe&lt;/del&gt;()&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;pipe&lt;/ins&gt;()&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;### Pipe just takes in an array of integers&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;### Pipe just takes in an array of integers&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;### Populated the array with two file description&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;### Populated the array with two file description&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 83:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 83:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;### Multiple processes can interact with it because it&#039;s just a file&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;### Multiple processes can interact with it because it&#039;s just a file&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Questions&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## Questions&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;### How does &amp;lt;code&amp;gt;popen()&amp;lt;/code&amp;gt; handle the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;input&lt;/del&gt; command?&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;### How does &amp;lt;code&amp;gt;popen()&amp;lt;/code&amp;gt; handle the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;inputted&lt;/ins&gt; command?&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#### Ron checked the manpage&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#### Ron checked the manpage&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#### Apparently just passes it to: &amp;lt;code&amp;gt;/bin/sh -c &amp;lt;arg&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#### Apparently just passes it to: &amp;lt;code&amp;gt;/bin/sh -c &amp;lt;arg&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>D2wn</name></author>
	</entry>
	<entry>
		<id>https://lug.mtu.edu/w/index.php?title=Minutes_2025-10-09&amp;diff=7960&amp;oldid=prev</id>
		<title>D2wn: initial commit</title>
		<link rel="alternate" type="text/html" href="https://lug.mtu.edu/w/index.php?title=Minutes_2025-10-09&amp;diff=7960&amp;oldid=prev"/>
		<updated>2025-10-10T00:30:20Z</updated>

		<summary type="html">&lt;p&gt;initial commit&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;# We have two presentations today!&lt;br /&gt;
# First, a Computer Rescue Idea by [https://www.mtu.edu/humanities/department/faculty-staff/faculty/keirnan/ Professor Kiernan]!&lt;br /&gt;
## Who is Professor Kiernan?&lt;br /&gt;
### Worked at Ford&lt;br /&gt;
### Designed features for vehicles&lt;br /&gt;
### How users would interact with them&lt;br /&gt;
### Used Linux since 2007&lt;br /&gt;
#### Linux Mint really impressed him&lt;br /&gt;
#### But driver support was really bad&lt;br /&gt;
### Saw the potential&lt;br /&gt;
#### Kept checking in on the state of Linux back every year&lt;br /&gt;
#### Eventually things got really good&lt;br /&gt;
### Teaches some humanities courses at Tech&lt;br /&gt;
### Been speaking at MTU since 2002&lt;br /&gt;
## Hobby is giving friends&amp;#039; older computers a new life with Linux Mint/ZorinOS&lt;br /&gt;
### They don&amp;#039;t know how to flash installer images onto a USB drive, but he can do that part&lt;br /&gt;
### Then, using the computer is simple enough and they can handle the rest&lt;br /&gt;
## Has an older MacBook Air with ZorinOS on it&lt;br /&gt;
## Prescient book from 1960&lt;br /&gt;
### Ahead of its time, predicted a lot&lt;br /&gt;
### coined &amp;quot;Planned Obsolescence&amp;quot;&lt;br /&gt;
## Apple devices getting worse and worse nowadays&lt;br /&gt;
### absurdly thin&lt;br /&gt;
### non-repairable&lt;br /&gt;
## Throw sand in their gears!&lt;br /&gt;
### &amp;#039;Computer rescue&amp;#039; akin to a &amp;#039;pet rescue&amp;#039;&lt;br /&gt;
### Save old machines from recycling and landfills&lt;br /&gt;
## B.A.S.I.C. group&lt;br /&gt;
### Run by Professors Steelman (Human Factors) and Wallace&lt;br /&gt;
### Seems to have been disrupted by the pandemic&lt;br /&gt;
## So many Windows 7/10 machines around that can&amp;#039;t easily upgrade to Windows 11&lt;br /&gt;
## Plenty of Intel Mac&amp;#039;s still around, can&amp;#039;t run more recent versions of macOS&lt;br /&gt;
## Talk about how we might rescue Copper Country computers with Linux&lt;br /&gt;
## Help out a region he loves to keep computers out of the trash&lt;br /&gt;
# For our second presentation, Pipes by Ron!&lt;br /&gt;
## How water gets around your house&lt;br /&gt;
### and Super Mario&lt;br /&gt;
## But seriously, pipes are used to send the output of one program to the input of another program&lt;br /&gt;
### Allow two processes to communicate with each other&lt;br /&gt;
### &amp;lt;code&amp;gt;prog1 | prog2&amp;lt;/code&amp;gt;&lt;br /&gt;
## Can pipe &amp;lt;code&amp;gt;cat&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; (though you shouldn&amp;#039;t do that), etc&lt;br /&gt;
## Subtleties&lt;br /&gt;
### Programs run in a pipe are run concurrently&lt;br /&gt;
### Demonstrated by running &amp;lt;code&amp;gt;yes | less&amp;lt;/code&amp;gt;&lt;br /&gt;
### Can see that &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; receives input while &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; is still running&lt;br /&gt;
### &amp;lt;code&amp;gt;ps&amp;lt;/code&amp;gt; shows yes and less are still both running&lt;br /&gt;
## Programs are unaware of the pipe&lt;br /&gt;
### Means we can just use our normal I/O functions without any special considerations&lt;br /&gt;
### &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; just takes from stdin&lt;br /&gt;
#### If you run &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; without providing a filename, you can just type into it to have strings recognized&lt;br /&gt;
#### &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; doesn&amp;#039;t &amp;#039;&amp;#039;know&amp;#039;&amp;#039; we&amp;#039;re typing its input, it just received it through stdin&lt;br /&gt;
#### The developers didn&amp;#039;t have to do anything special to enable this to happen&lt;br /&gt;
## Pipe()&lt;br /&gt;
### Pipe just takes in an array of integers&lt;br /&gt;
### Populated the array with two file description&lt;br /&gt;
#### &amp;lt;code&amp;gt;fd[0]&amp;lt;/code&amp;gt; (read)&lt;br /&gt;
#### &amp;lt;code&amp;gt;fd[1]&amp;lt;/code&amp;gt; (write)&lt;br /&gt;
### This works because pipes are always unidirectional&lt;br /&gt;
### Ties into UNIX &amp;quot;everything is a file&amp;quot;&lt;br /&gt;
#### Pipes are just two file descriptors&lt;br /&gt;
#### Interact with them as normal files&lt;br /&gt;
## Using pipes between processes&lt;br /&gt;
### Fork the child process&lt;br /&gt;
### Will block reading from the pipe until it is ready &lt;br /&gt;
## Making this work with stdin/out&lt;br /&gt;
### &amp;lt;code&amp;gt;dup2()&amp;lt;/code&amp;gt; allows duplicating file descriptors&lt;br /&gt;
### Have one file description (&amp;lt;code&amp;gt;oldfd&amp;lt;/code&amp;gt;) pretend to be another file descriptor (&amp;lt;code&amp;gt;newfd&amp;lt;/code&amp;gt;)&lt;br /&gt;
### Program that thinks it is writing to stdout is actually writing to the &amp;#039;inside&amp;#039; of the pipe for another program to receive&lt;br /&gt;
## Adding in &amp;lt;code&amp;gt;exec()&amp;lt;/code&amp;gt;&lt;br /&gt;
### Lets us wipe and replace the child&amp;#039;s process in memory with a new process&lt;br /&gt;
### Forked copy gets copy of all file descriptors&lt;br /&gt;
## Example with a program that runs &amp;lt;code&amp;gt;ls -al&amp;lt;/code&amp;gt; but modifies the output before printing to stdout&lt;br /&gt;
### &amp;lt;code&amp;gt;exec()&amp;lt;/code&amp;gt; needs an array with each element being an argument of the command you want to run&lt;br /&gt;
### last element needs to be &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt;&lt;br /&gt;
### &amp;lt;code&amp;gt;execvp()&amp;lt;/code&amp;gt; = uses path, that&amp;#039;s what the &amp;#039;p&amp;#039; is for&lt;br /&gt;
## &amp;lt;code&amp;gt;pipe()&amp;lt;/code&amp;gt;-&amp;lt;code&amp;gt;form()&amp;lt;/code&amp;gt;-&amp;lt;code&amp;gt;dup()&amp;lt;/code&amp;gt;-&amp;lt;code&amp;gt;exec()&amp;lt;/code&amp;gt; pattern is so common there&amp;#039;s a C library to do it more easily&lt;br /&gt;
### &amp;lt;code&amp;gt;popen()&amp;lt;/code&amp;gt;&lt;br /&gt;
## Takes either &amp;quot;r&amp;quot; or &amp;quot;w&amp;quot; to define which end of the pipe it is supposed to be.&lt;br /&gt;
## Named pipes&lt;br /&gt;
### Literally files&lt;br /&gt;
### &amp;lt;code&amp;gt;mkfifo&amp;lt;/code&amp;gt;&lt;br /&gt;
### creates a file in &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt;&lt;br /&gt;
### Multiple processes can interact with it because it&amp;#039;s just a file&lt;br /&gt;
## Questions&lt;br /&gt;
### How does &amp;lt;code&amp;gt;popen()&amp;lt;/code&amp;gt; handle the input command?&lt;br /&gt;
#### Ron checked the manpage&lt;br /&gt;
#### Apparently just passes it to: &amp;lt;code&amp;gt;/bin/sh -c &amp;lt;arg&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
### What &amp;lt;code&amp;gt;popen()&amp;lt;/code&amp;gt; (&amp;#039;r&amp;#039; or &amp;#039;w&amp;#039;) do you start first?&lt;br /&gt;
#### Left side (input) of pipe is the &amp;quot;write&amp;quot; side, and is what you create first&lt;br /&gt;
#### Right side (output) is the &amp;quot;read&amp;quot; side, and is created second&lt;br /&gt;
### Freya got clickbaited, still doesn&amp;#039;t know how to fix her sink&lt;br /&gt;
### A lot of things in Linux/UNIX &amp;#039;pretend&amp;#039; to be files&lt;br /&gt;
#### Plant can turn off her GPU by &amp;lt;code&amp;gt;echo 0 &amp;gt; /proc/&amp;lt;some_thing&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#### KVM pretends to be a file you interact with through &amp;lt;code&amp;gt;ioctl&amp;lt;/code&amp;gt;&amp;#039;s&lt;br /&gt;
### Windows named pipes are in &amp;lt;code&amp;gt;\\?&amp;lt;thing&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#### Related to how NFS is &amp;lt;code&amp;gt;\\&amp;lt;share_name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Chris swung by just to shill XCP-NG&lt;br /&gt;
## Proxmox has its... &amp;#039;issues&amp;#039;&lt;br /&gt;
## LUG Proxmox incident earlier today&lt;br /&gt;
## Went down in #general in the LUG discord&lt;br /&gt;
## Three &amp;quot;Proxmox moments&amp;quot; in a row&lt;br /&gt;
### Random disk I/O lockup on node, VMs froze on all r/w operations&lt;br /&gt;
### Rebooting that node made the cluster lose quorum since two nodes were already offline&lt;br /&gt;
#### All nodes webUI unavailable&lt;br /&gt;
#### After a while, quorum was finally restored&lt;br /&gt;
## Wiki VM got migrated to a node that didn&amp;#039;t have its VM storage image, then failed to start&lt;br /&gt;
### Required manual intervention&lt;br /&gt;
## Then finally after all that &amp;#039;&amp;#039;cluster&amp;#039;&amp;#039;fuck everything is back online&lt;br /&gt;
# October 8th, 2025 6:55PM: The LUG AI incident&lt;br /&gt;
## Anti-AI versus Pro-AI forces in the LUG discord&lt;br /&gt;
## Sarten X misquoted something, came off as calling someone &amp;quot;princess&amp;quot;&lt;br /&gt;
### It all went downhill from there  &lt;br /&gt;
## Simone submitting an essay on favorite digital space&lt;br /&gt;
### Chose LUG Discord&lt;br /&gt;
### Said &amp;quot;ultimately a place where people can put aside their differences&amp;quot;&lt;br /&gt;
### Then the AI incident happened&lt;br /&gt;
### Needs to append essay with &amp;quot;except in matters of Artificial Intelligence&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Category:Meeting Minutes]]&lt;/div&gt;</summary>
		<author><name>D2wn</name></author>
	</entry>
</feed>