From 65a975753a3506ec8a499d91fe24c9ded5e4beac Mon Sep 17 00:00:00 2001 From: Ken Fallon Date: Thu, 24 Aug 2023 09:46:16 +0200 Subject: [PATCH] 2023-08-24_07-46-16Z_Thursday database changed --- sql/hpr.sql | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/sql/hpr.sql b/sql/hpr.sql index aa83094..dbeb282 100644 --- a/sql/hpr.sql +++ b/sql/hpr.sql @@ -11806,6 +11806,24 @@ INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`, (3882,'hpr3882.flac','flac',54360165,'e60818c0a46437e1179d93996eb74d7271fb8a29','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 136909306 samples'), (3882,'hpr3882.opus','opus',6727905,'9be328c07dbe2b1d64aaaf6f4cff328e3f05e613','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'), (3882,'hpr3882.wav','wav',273820004,'6fdc5731efabab479eb01e8c2586024df7f41dc2','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'), +(3944,'hpr3944.wav','wav',394726012,'53400c703fc6d1b219d76eeb9152a9f69902a837','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'), +(3944,'hpr3944.opus','opus',9686010,'280cf0112a78797c1084f7607122a5198416caa6','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'), +(3944,'hpr3944.flac','flac',72945857,'040dfe89121b3b3f54d7505c2909cf9b966c8477','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 197362299 samples'), +(3944,'hpr3944.spx','spx',3882989,'8ddf3620e662e58b3d4b91b985872c56db6d6b1e','audio/ogg; charset=binary','setgid Ogg data, Speex audio'), +(3944,'hpr3944.ogg','ogg',9685742,'a7c08faf1678aae6149c041b6238afcf1d62ab30','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'), +(3944,'hpr3944.mp3','mp3',8225391,'a87303d2e03a521f9fafc3210ddad4e6f2ca1bc0','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'), +(3971,'hpr3971.opus','opus',20384303,'ea1b96bc390de9cb3acc6077a8d17a39fc8d9d24','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'), +(3971,'hpr3971.wav','wav',862020550,'f7b68f67ee863074766d2cb236edf714d70aa855','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'), +(3971,'hpr3971.flac','flac',174518436,'50a96efd45199233e5ac4dd3a6810f6e0e4fab9b','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 431009550 samples'), +(3971,'hpr3971.spx','spx',8479334,'fd65876a65400ddaa6993feeb16b9ae2237457be','audio/ogg; charset=binary','setgid Ogg data, Speex audio'), +(3971,'hpr3971.ogg','ogg',20383999,'6fd9088912c95b54f04960b5145e02e47a816178','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'), +(3971,'hpr3971.mp3','mp3',17960787,'729233910d8dd981b40f38be876c3e8c5935cb5c','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'), +(3932,'hpr3932.wav','wav',198798264,'5817a307d3febe06b200dfff92d2b50d8fe5ac25','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'), +(3932,'hpr3932.opus','opus',3968561,'00f8af0fc8b3065fb9dde925ec1b76e048b77558','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'), +(3932,'hpr3932.flac','flac',36827801,'571ab6a047efebfabb728c5b90f0e2e3f0b40c89','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 99398431 samples'), +(3932,'hpr3932.spx','spx',1955882,'0abd8853875f92de0dbf987cba8b05a3a613c027','audio/ogg; charset=binary','setgid Ogg data, Speex audio'), +(3932,'hpr3932.ogg','ogg',3968305,'a1a8387ee9569082189ee8452b773b59cbb4bce3','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'), +(3932,'hpr3932.mp3','mp3',4143459,'7ed5642df83b7dc48c9f63266c1db7b156933885','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'), (3951,'hpr3951.wav','wav',691761706,'2efdc9f6da0e16a6566f2ae147d462a905114b80','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'), (3951,'hpr3951.opus','opus',16689261,'c6bd2939323c65d179a045c676e9e7e6366b9775','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'), (3951,'hpr3951.flac','flac',113070772,'2c1607f13d72225908a59f75bcaad444ef178cbb','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 345880146 samples'), @@ -11818,8 +11836,8 @@ INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`, (3929,'hpr3929.flac','flac',42307647,'23433f9e6e308187cb0b5ec577ed27d3183a862d','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 128286459 samples'), (3929,'hpr3929.spx','spx',2524111,'be9bebc74d2de6c0282c09e64662ad4601f4771d','audio/ogg; charset=binary','setgid Ogg data, Speex audio'), (3929,'hpr3929.ogg','ogg',5787231,'198e03bc83cd615dcea8de9a185be48acd28df46','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'), -(3929,'hpr3929.mp3','mp3',5347109,'c9473b6880d22550d1ebde7fdb2f3d77cd9e8b0f','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'), -(3928,'hpr3928.wav','wav',594289860,'7dd203d6ec7375187e1e696a7d5ed00489ab52c2','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'), +(3929,'hpr3929.mp3','mp3',5347109,'c9473b6880d22550d1ebde7fdb2f3d77cd9e8b0f','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'); +INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`, `mime_type`, `file_type`) VALUES (3928,'hpr3928.wav','wav',594289860,'7dd203d6ec7375187e1e696a7d5ed00489ab52c2','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'), (3928,'hpr3928.opus','opus',14811435,'b7cca64f2d5afff0deca1ded3a9dc700493421e0','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'), (3928,'hpr3928.flac','flac',122090659,'9d3694e84c9c0aa6e374e278c1d3d495b178214e','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 297144229 samples'), (3928,'hpr3928.spx','spx',5845891,'667e89fa9e5d5215adf46965132064a297b3cc31','audio/ogg; charset=binary','setgid Ogg data, Speex audio'), @@ -11836,8 +11854,8 @@ INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`, (3961,'hpr3961.spx','spx',9728761,'e182795070da9f6dbf8f0d1e9cc8cd40694b76be','audio/ogg; charset=binary','setgid Ogg data, Speex audio'), (3961,'hpr3961.flac','flac',194474219,'4f2cb71c2158a12dd451d333b056340b796d41e9','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 494523442 samples'), (3961,'hpr3961.ogg','ogg',24712698,'f2eb443599205b0ef0175d45f589eeb1259c0dff','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'), -(3961,'hpr3961.mp3','mp3',20607113,'06a95538511c18e320241f16c3dfb39657ea418e','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'); -INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`, `mime_type`, `file_type`) VALUES (3926,'hpr3926.wav','wav',1070297664,'d88d67a85425920ed439e3015acc58d6e482bb28','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'), +(3961,'hpr3961.mp3','mp3',20607113,'06a95538511c18e320241f16c3dfb39657ea418e','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'), +(3926,'hpr3926.wav','wav',1070297664,'d88d67a85425920ed439e3015acc58d6e482bb28','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'), (3926,'hpr3926.opus','opus',21888687,'50fa212f4ace336d01a79e2fd270b026aacd165d','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'), (3926,'hpr3926.flac','flac',242761638,'efc30d288f20e0d7bd8081b530a91b8e7e8adf51','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 535148117 samples'), (3926,'hpr3926.spx','spx',10527899,'bd2bde94334fd3316edf2698948306728742c288','audio/ogg; charset=binary','setgid Ogg data, Speex audio'), @@ -12368,7 +12386,7 @@ CREATE TABLE `comments` ( `last_changed` datetime NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `comments_eps_id_idx` (`eps_id`) -) ENGINE=MyISAM AUTO_INCREMENT=3797 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='New comments table populated from c5t_* tables'; +) ENGINE=MyISAM AUTO_INCREMENT=3802 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='New comments table populated from c5t_* tables'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -16168,7 +16186,12 @@ INSERT INTO `comments` (`id`, `eps_id`, `comment_timestamp`, `comment_author_nam (3793,3922,'2023-08-16 14:59:41','thelovebug','My condolences','I\'m sorry to hear of Michael KV4YD\'s passing. Everyone in the amateur radio community mourns his passing. It\'s never nice to hear of new silent keys. Thank you for looking after the administration of his records.\r\n\r\n73 de Dave M7TLB','2023-08-16 16:00:33'), (3794,3921,'2023-08-16 18:11:07','Kevin O\'Brien','Hearing 5150','It was a pleasant surprise to her 5150 again. He was a good friend even though I only saw him at conferences. I miss him. And did he say he had invited Tracy Holz to join the Audio Book Club? Tracy is a good guy too.','2023-08-16 19:50:59'), (3795,3855,'2023-08-16 21:24:28','Windigo','Secrets','Thanks for the episode! It feels like SSH escape sequence are secret commands, and I feel cooler for knowing about them.','2023-08-16 21:35:08'), -(3796,3917,'2023-08-21 12:06:52','one_of_spoons','breaking the spell','I look forward to including responses to some of the points you made, into future episodes.\r\nTaxation can compel efforts to satisfy state orders by acceding to employment, but the extent to which a private citizen can refuse legal tender, is a measure of their freedom. \r\nA lot of trigger words in there of course.\r\nTo avoid collapsing back into money talk for a while though, I aim to report on some accessible tools.','2023-08-21 12:29:59'); +(3796,3917,'2023-08-21 12:06:52','one_of_spoons','breaking the spell','I look forward to including responses to some of the points you made, into future episodes.\r\nTaxation can compel efforts to satisfy state orders by acceding to employment, but the extent to which a private citizen can refuse legal tender, is a measure of their freedom. \r\nA lot of trigger words in there of course.\r\nTo avoid collapsing back into money talk for a while though, I aim to report on some accessible tools.','2023-08-21 12:29:59'), +(3797,3917,'2023-08-23 02:07:25','dnt','re: breaking the spell','Looking forward to it! In the interim, I shall procure a grandfather clock.','2023-08-23 08:56:11'), +(3798,3919,'2023-08-23 02:17:03','dnt','hacking your voice','This was amazing and completely unknown to me! Also thanks for sharing that youtube channel. Thanks!','2023-08-23 08:56:11'), +(3799,3896,'2023-08-23 05:07:17','Windigo','Intriguing show topic','Not only did I enjoy your episode, but I think the concept behind it is worth exploring. We have HPR hosts across the globe, and surely each of us lives near something worth an episode.','2023-08-23 08:56:12'), +(3800,3926,'2023-08-23 13:10:15','Trey','Thank you for sharing.','A long time ago (As a young adult) I studied Taekwondo (TKD) for many years, eventually earning my brown belt. It taught me discipline and forced me to develop a level of physical precision I had been lacking.\r\n\r\nSadly, life events intervened, and I discontinued my training. A couple decades later, I tried Isshinryu karate, but I struggled to \"unlearn\" stances and techniques which were still ingrained in my muscle memory. \r\n\r\nFor fun, I tries to work through some of the TKD poomsae (Forms or the equivalent of Kata), and I remembered several of them! Time to get these old bones moving again.\r\n\r\nThank you, again for sharing.','2023-08-23 13:59:45'), +(3801,3928,'2023-08-23 13:22:50','Trey','Good Heavens!!','Thanks for sharing this awesome show. Always good to see how different people approach similar tasks.','2023-08-23 13:59:45'); /*!40000 ALTER TABLE `comments` ENABLE KEYS */; UNLOCK TABLES; /*!50003 SET @saved_cs_client = @@character_set_client */ ; @@ -19919,7 +19942,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti (3665,'2022-08-19','UNIX Is Sublime',3586,'I talk about all of the reasons I love UNIX','

UNIX is sublime

\n
Or, \"how to use a computer without hating yourself for it in the morning\"
\n
Or, \"Unix is basically a simple operating system . . .\"
\n
Or, \"My weariness and disdain for computers grow with each additional unit of knowledge\"
\n
Or, \"Worse is better\"
\n

Origins

\n

UNIX is not Multics

\n

Multics = Multiplexed Information and Computer Service

\n

UNIX = Uniplexed Information and Computing Service

\n

The name \'UNIX\' is a pun on the name \'Multics\'. Multics was entirely too large and complicated to be useful so the boys at Bell Labs cooked up something smaller, less complicated, and easier to use.

\n
\n

Ancient emulation interlude

\n

How to run Multics in 2022.

\n

This wiki helped me emulate UNIXv5.

\n

And this one helped me emulate UNIXv7.

\n

These guys host ancient systems accessible via guest accounts over ssh.

\n
\n

\"Cool, but useless.\"

\n
\n
\n

I know almost nothing about Multics and I\'m not sure if it\'s even worth learning. This is about UNIX, not Multics. Maybe I\'ll come back to it.

\n

Philosophy, implementations, ducks

\n

When I think of \"UNIX\", I do not think of the trademark. Instead, I think of the Unix philosophy. and the general design principles, interface, and behavior of a UNIX system.

\n

A better way of thinking about \"UNIX\" is as something \"POSIX-like\" rather than \"AT&T\'s commercial UNIX\". Example: although Linux and GNU are overly complicated, they pass the duck test for being a UNIX. Pedigree or not, you know a nix when you see one.

\n

Also, when I say \"UNIX\", I mean \"Free UNIX\". I have no interest in proprietary implementations that only exist for the purpose of restricting users and disempowering/discouraging sysadmins from becoming self-reliant.

\n

So what is the philosophy?

\n\n

And additionally:

\n\n

Design

\n

10,000 Ft View

\n

UNIX is a multiuser time sharing networked operating system, running as an always online service. A UNIX system is a single mainframe computer running an operating system designed for multiple users to access concurrently over the network, equally (depending on implementation) sharing resources amongst the active users.

\n

In a traditional network setup, there is one mainframe UNIX machine with multiple dumb terminals connected to it over the network. None of the users touch the mainframe physically. Instead, they interact with it exclusively through their own dumb terms. These dumb terminals have minimal or no computing power of their own because all of the actual computation takes place on the mainframe. Built in networking is a given.

\n

As for the actual software running on the mainframe, it\'s quite simple to visualize. A Unix system is a flexible but organized stack of concepts, each depending on the concept below, all working together for the sole purpose of enabling the end user to play video games and watch videos online.

\n
       / user applications \\\n      /       shells        \\\n     /        daemons        \\\n    /       file systems      \\\n   /        kmods/drivers      \\\n  /           syscalls          \\\n /             kernel            \\\n/             hardware            \\\n
\n

In order to fully explain why UNIX is sublime, I will start from the bottom and work my way upward. Before I discuss the shell, I will explain the multiuser aspects of the system. Then, after a long arduous journey of verbosity, explain how to actually use the thing.

\n

Kernel

\n

The kernel is something the user rarely interacts with. It abstracts all the hard parts away from the user. No more poking random memory addresses to load a program from tape.

\n

Multitasking

\n

In order to support multiple users, resource sharing was implemented. When a user\'s process requests CPU time, it\'s put into a rotational queue along with the other requests for CPU time. Round robin style concurrency is one of the easiest to implement but most modern systems use a weighted model that prioritizes processes owned by specific users. Memory and disk space are typically assigned hard limits to prevent system crashes. \"Ask your sysadmin if you need more resources.\"

\n

Virtual Memory

\n

Abstracting memory management from users is almost necessary in a multitasking system. The kernel must be the arbiter of all. The most interesting thing about virtual memory is that it doesn\'t actually need to be a RAM stick, but can be a swap partition on a disk or even a remote cloud provider if you\'ve actually lost your mind. This type of flexibility improves system stability. Instead of a kernel panic when memory runs out, the kernel can de-prioritize nonessential or idle processes by sending them to swap space.

\n

Paged Memory (logical memory)

\n

No more fragmented memories! The kernel maintains a page table that maps logical locations to physical locations. Instead one continuous chunk of memory, the kernel divides memory into small sections called \"pages\". When allocating memory, the kernel might not give a process continuous pages. The advantage of a paged memory scheme further enables multiuser computing. Example: When you have a large program like a web browser open, the pages that contains the unfocused tabs can be swapped out to disk without stalling the entire browser.

\n

Programming Interface pt. 0 (syscalls, kmods, drivers)

\n

When a process requests a resource, it sends a syscall to the kernel. The kernel then responds to the system call. This allows for privilege separation. Does your web browser need direct access to all memory? What about all files? Do we even want to write assembly every time we want to access a file? Syscalls are dual purpose: abstraction and security.

\n

Kernel modules are dynamic \"extensions\" that give the kernel new features (typically hardware support). The ability to dynamically load/unload modules as hardware changes increases uptime because it means a new kernel doesn\'t need to be compiled, installed, and booted into every time we plug in a different peripheral.

\n

Filesystem

\n

Hierarchical structure

\n

A UNIX filesystem is hierarchical. Each directory contains files or other directories, each with a specific purpose. This type of organization makes it very easy to navigate and manage a system. Each child directory inherits ownership and permissions unless otherwise specified (see Access Control).

\n

In order to visualize this, I imagine a tree-like structure descending from the root directory, /. The tree(1) program shows this type of hierarchy.

\n

Virtual Filesystems (logical filesystem)

\n

The idea behind virtual filesystems is, again, abstraction. Using the concept of a virtual file system, multiple disks can be presented to the user and programmer as a single unified filesystem. This means mounted local disks, NFS shares, and even the contents of a CDROM are presented as if the files contained therein are \"just on the big hard drive\".

\n

Additionally, using bind mounts, a directory can be mounted onto another directory as if it were just another filesystem.

\n

The final interesting thing about virtual filesystems is the concept of a ramdisk: mounting a section of memory so that it can be used as if it was an ordinary directory. <--Shoot foot here.

\n

Everything is a file

\n

Well, almost everything is presented as if it were a file. This greatly simplifies programming.

\n

Prime example: /dev/urandom is a random entropy generator presented as a file, making it very simple for a programmer to implement seeded RNG in a program.

\n

Another example: The kernel translates mouse input into a data stream that can be opened as a file. The programmer only needs to read from /dev/mouse0 instead of writing hundreds of mouse drivers for a clicky GUI.

\n

Exercise 1: Try running this command then wiggling your mouse:

\n
# Linux\n$ sudo cat /dev/input/mouse0\n\n# FreeBSD\n$ sudo cat /dev/sysmouse\n
\n

Yet another example: the TTY is just a file. You can even print it to a text file using setterm(1) on Linux.

\n

Exercise 2:

\n
[user@fedora ~]$ sudo setterm --dump 3\n[user@fedora ~]$ cat screen.dump\n\nFedora Linux 36 (Workstation Edition)\nKernel 5.18.5-200.fc36.x86_64 on an x86_64 (tty3)\n\nfedora login: root\nPassword:\nLast login: Sat Jul 30 14:34:20 on tty3\n[root@fedora ~]# /opt/pfetch/pfetch\n        ,'''''.   root@fedora\n       |   ,.  |  os     Fedora Linux 36 (Workstation Edition)\n       |  |  '_'  host   XXXXXXXXXX ThinkPad T490\n  ,....|  |..     kernel 5.18.5-200.fc36.x86_64\n.'  ,_;|   ..'    uptime 20d 22h 40m\n|  |   |  |       pkgs   3910\n|  ',_,'  |       memory 6522M / 15521M\n '.     ,'\n   '''''\n\n[root@fedora ~]#\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n[user@fedora ~]$\n
\n

Links

\n

Yet another way of \"mounting\" a file or directory to another file or directory is linking. There are two types of links: hard links and symbolic links.

\n

On UNIX, files are indexed by inodes (index nodes). Using links, we can make \"shortcuts\" to files.

\n

Hard linking adds a \"new index\" to a file. They share an inode. If the original file is removed, the file persists in storage because the secondary file created by a hard link still exists. Think \"different name, same file\"

\n

Symlinks are like pointers. A symlink points to the original file instead of the inode. If you remove the original file, the symlink breaks because it points to a file that points to an inode rather than simply pointing to an inode.

\n

Using links, we can make files more convenient to access as if we are \"copying\" files without actually copying files.

\n

Filename extensions

\n

On a UNIX system, file extensions are arbitrary. UNIX determines file type by reading the file headers. The file tells you exactly what type of file it is (just read it). The entire system does not break when a file extension doesn\'t match the expected contents of the file.

\n

Extensions only matter when you wilfully associate with the microsoft users leaving issues on your software repos. \"Not my OS, not my issue, it\'s open source so fork it if you don\'t like it\"

\n

Multiuser (timesharing)

\n

See also: Multitasking.

\n

Exercise 3: attempt to use Windows like a multiuser operating system and get back to me when you have realized that any and all claims made by microsoft about how their \"multi user enterprise system\" is in any way capable of competing with a genuine multi-user UNIX system are false advertising.

\n

Users, Groups

\n

A multiuser system needs a way to manage users and categorize them for access control purposes. Every user has a single user account and belongs to 0 or more groups. Sorting users into groups at the time of account creation makes is significantly easier than granting/revoking permissions user-by-user. Additionally, using something like rctl(8) on FreeBSD allows a systems administrator to allocate resources to specific users, groups, or login classes (like groups).

\n

Daemons (services)

\n

On a UNIX system, every process is owned by a user. In the case of a service, the process is owned by a daemon account. Daemon accounts have limited permissions and make it possible to run persistent services as a non-root user.

\n

Access Control

\n

Since UNIX was designed to be a multiuser system, access control is required. We know about users, we know about groups, but what about permissions?

\n

There are three types of operations that can be done to a file: read, write, and execute. Who can the admin grant these permissions to? The Owner, the Group, and the Other (all). This type of access control is called discretionary access control because the owner of the file can modify files at their own discretion.

\n

Actually using the thing

\n

Programming interface Pt. 1 (data streams)

\n

All UNIX utilities worth using use 3 data streams:

\n\n

Shell

\n

The shell is how a user actually interacts with a UNIX system. It\'s a familiar interface that allows a human user to interact with a computer using real human language.

\n

Explicitly telling the computer to do is infinitely less agonizing than dealing with a computer that tries to do what it thinks you want it to do by interpreting input from a poorly designed, overly engineered interface.

\n

The shell, in addition to being an interactive interface, is also scriptable. Although math is a struggle, shell scripting is a fairly simple way of automating tasks. Taping together interoperable commands you already know makes everything easier. My favorite aspect about writing POSIX shell scripts is knowing that shell is a strongly, statically typed language where the only datatype is string.

\n

Problem that are difficult or messy to solve in shell usually mean it\'s time to write another small C program for your specific needs. Adding the new program into the shell pipeline is trivial.

\n

Pipes

\n

Pipes, the concept that makes UNIX so scriptable. A shell utility that follows the UNIX philosophy will have a non-captive interface, write uncluttered data to stdout, read from stdin, and error to stderr. The | pipe character instructs programs to send their stdout to the next stdin in the pipeline instead of printing to the terminal.

\n

All standard command line utilities are interoperable and can be easily attached like building blocks. \"Meta programming\" has never been easier.

\n

Pipes make it so that every UNIX program is essentially a filter. Sure, you could just use awk, but I prefer shell.

\n

Bonus:

\n\n

Summary:

\n

UNIX is a non-simple modular operating system designed for 1970s big iron mainframes but we love it too much to let it go. Compared to minimal hobbyist operating systems, UNIX is BIG. Compared to commercial operating systems, free UNIX is small. Maybe slightly more than minimum viable but the papercuts are mild enough to forgive.

\n

See Also:

\n

The UNIX-HATERS Handbook

\n',406,0,1,'CC-BY-SA','UNIX',0,0,1), (3657,'2022-08-09','Small time sysadmin',1568,'How I maintain my Linux Box, Part One.','
    \n
  1. Creating Backups.
  2. \n
\n\n
#!/bin/bash\n#License: GPL v3\n# This program is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program.  If not, see <https://www.gnu.org/licenses/>.\n\n#Name: getoverhere.sh\n#Purpose:\n#Version: beta 0.07\n#Author: SGOTI (Some Guy On The Internet)\n#Date: Sat 29 Jan 2022 02:19:29 AM EST\n\n#variables:\nVAR_TBALL=\nVAR_TARGET=\nVAR_JUMP=\nVAR_VALUE=\n\n#start:\ncat << "EOT01"\nOptions:\n    email |"${HOME}/.thunderbird/"\n    jop |"${HOME}/Documents/joplin"\n    dots |"${HOME}/.bashrc .vimrc .bash_aliases"\nEOT01\n\necho -e "What do you want to backup? : \\c."\nread VAR_VALUE\n\ncase ${VAR_VALUE} in\n    "email" )\nVAR_TBALL="INSERT_EMAIL_NAME$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET="msgFilterRules.dat"\nVAR_JUMP="${HOME}/.thunderbird/*.default-release/ImapMail/imap.mail.yahoo.com/"\n    echo -e "Grabbing INSERT_EMAIL_NAME...\\n"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    sleep 1\n\nVAR_TBALL="INSERT_EMAIL_NAME$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET="msgFilterRules.dat"\nVAR_JUMP="${HOME}/.thunderbird/*.default-release/ImapMail/imap.gmail.com/"\n    echo -e "Grabbing INSERT_EMAIL_NAME...\\n"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    sleep 1\n\nVAR_TBALL="EMAIL_ARCHIVES$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET="Mail/"\nVAR_JUMP="${HOME}/.thunderbird/*.default-release/"\n    echo -e "Grabbing email EMAIL_ARCHIVES...\\n"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    echo -e "Creating List for ${VAR_TBALL}...\\n"\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} > EMAIL_ARCHIVES$(date +%m-%d-%Y).txt\n    sleep 1\n\nVAR_TBALL="THUNDERBIRD_CALENDER$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET="calenders/"\nVAR_JUMP="${HOME}/Documents/"\n    echo -e "Grabbing email THUNDERBIRD_CALENDER...\\n"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    echo -e "Creating List for ${VAR_TBALL}...\\n"\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} > THUNDERBIRD_CALENDER$(date +%m-%d-%Y).txt\n    sleep 1\n\nVAR_TBALL="THUNDERBIRD_ADDRESS_BOOK$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET="address-book/"\nVAR_JUMP="${HOME}/Documents/"\n    echo -e "Grabbing ${VAR_TARGET}...\\n"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    echo -e "Creating List for ${VAR_TBALL}...\\n"\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} > THUNDERBIRD_ADDRESS_BOOK$(date +%m-%d-%Y).txt\n    sleep 1\n\nVAR_TBALL="THUNDERBIRD_ALL$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET=".thunderbird/"\nVAR_JUMP="${HOME}/"\n    echo -e "Grabbing ${VAR_TARGET}...\\n"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    echo -e "Creating List for ${VAR_TBALL}...\\n"\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} > THUNDERBIRD_ALL$(date +%m-%d-%Y).txt ;;\n\n    "jop" )\nVAR_TBALL="JOPLIN$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET="joplin/"\nVAR_JUMP="${HOME}/Documents/"\n    echo "Grabbing ${VAR_TARGET}"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    sleep 1\n    echo -e "Creating List for ${VAR_TBALL}...\\n"\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} > JOPLIN$(date +%m-%d-%Y).txt ;;\n\n    "dots" )\nVAR_TBALL="dots$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET=".bashrc .vimrc .bash_aliases"\nVAR_JUMP="${HOME}/"\n    echo "Grabbing ${VAR_TARGET}"\ntar -v -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET} ;;\n\n    * )\n    echo "Good Heavens..." ;;\nesac\nexit;\n
\n
\n
    \n
  1. Restoring from backups.
  2. \n
\n\n
VAR_TBALL="EMAIL_ARCHIVES*.tar.gz"\nVAR_JUMP="${HOME}/.thunderbird/*.default-release/"\n    echo -e "Restoring EMAIL_ARCHIVES...\\n"\ntar --extract --directory= ${VAR_JUMP} --file ${VAR_TBALL}\n    echo -e "EMAIL_ARCHIVES restored.\\n"\n
\n',391,0,0,'CC-BY-SA','sysadmin, system maintenance, tar, backups',0,0,1), (3664,'2022-08-18','Secret hat conversations',1070,'You\'ll need your tin hat for this one.','

The Tin Foil Hat often worn in the belief or hope that it shields the brain from threats such as electromagnetic fields, mind control, and mind reading.

\n
    \n
  1. Proper hat construction video. Also includes the “why” along with the “how”.
  2. \n
  3. Proper hat construction music. Just something to keep you focused.
  4. \n
\n
\n

FCC Caller ID Spoofing info: Spoofing is when a caller deliberately falsifies the information transmitted to your caller ID display to disguise their identity.

\n

FCC Call Blocking info: Call blocking is a tool used by phone companies to stop illegal and unwanted calls from reaching your phone. A second annual FCC report released in June 2021 found that many voice service providers and third-party analytics companies are improving their call blocking and labeling services and use new data to better detect robocalls. Billions of unwanted calls to American consumers are being blocked each year.

\n

The PinePhone Pro Explorer Edition is aimed at Linux developers with an extensive knowledge of embedded systems and/or experience with mobile Linux.

\n

Time-based one-time password (TOTP) is a computer algorithm that generates a one-time password (OTP) that uses the current time as a source of uniqueness. As an extension of the HMAC-based one-time password algorithm (HOTP), it has been adopted as Internet Engineering Task Force (IETF) standard RFC 6238.

\n

Matrix is an open standard for interoperable, decentralised, real-time communication over IP.

\n
\n

Password Managers: Used by Some Guy On The Internet.
\nBitwarden
\nKeePassXC

\n
\n',391,0,1,'CC-BY-SA','Tin hat, call spoofing',0,0,1), -(3936,'2023-09-04','HPR Community News for August 2023',0,'HPR Volunteers talk about shows released and comments posted in August 2023','\n\n

New hosts

\n

\nWelcome to our new host:
\n\n Fred Black.\n

\n\n

Last Month\'s Shows

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
IdDayDateTitleHost
3912Tue2023-08-01Emergency Show: Biltong and RooibosShane Shennan
3913Wed2023-08-02Lurking Prion Q and ALurking Prion
3914Thu2023-08-03how to deal with blistersdnt
3915Fri2023-08-04Why the hell is my audio clipping?MrX
3916Mon2023-08-07HPR Community News for July 2023HPR Volunteers
3917Tue2023-08-08Response to \"Permission Tickets\" by oneofspoonsdnt
3918Wed2023-08-09Emacs package curation, part 3dnt
3919Thu2023-08-10How I hacked my voicetuturto
3920Fri2023-08-11RV Trip 2022-2023: Southeast USAhuka
3921Mon2023-08-14HPR AudioBook Club 23 - John Carter of Mars (Books 1-3)HPR_AudioBookClub
3922Tue2023-08-15Silent KeyTrey
3923Wed2023-08-16Meal preparation.Some Guy On The Internet
3924Thu2023-08-17Mass Quick Tips for August 2023operat0r
3925Fri2023-08-18Uncommon tools and social mediaDaniel Persson
3926Mon2023-08-21Karate Do: An OverviewHipernike
3927Tue2023-08-22Audacity Update 20230702Ahuka
3928Wed2023-08-23RE: Klaatu.Some Guy On The Internet
3929Thu2023-08-24Some experiences with different notes appsLee
3930Fri2023-08-25Playing Civilization II Test of TimeAhuka
3931Mon2023-08-28What Instrument was played in hpr3905?Fred Black
3933Wed2023-08-30Planning for a planner.Some Guy On The Internet
3934Thu2023-08-31Crusader Kings IItuturto
\n\n

Comments this month

\n\n

Note to Volunteers: Comments marked in green were read in the last\nCommunity News show and should be ignored in this one.

These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 11 comments in total.

\n

Past shows

\n

There are 4 comments on\n4 previous shows:

\n

Updated on 2023-08-21 14:48:04

\n

This month\'s shows

\n

There are 7 comments on 5 of this month\'s shows:

\n\n\n

Mailing List discussions

\n

\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n

\n

The threaded discussions this month can be found here:

\nhttps://lists.hackerpublicradio.com/pipermail/hpr/2023-August/thread.html\n\n\n

Events Calendar

\n

With the kind permission of LWN.net we are linking to\nThe LWN.net Community Calendar.

\n

Quoting the site:

\n
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n

Any other business

\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1), +(3936,'2023-09-04','HPR Community News for August 2023',0,'HPR Volunteers talk about shows released and comments posted in August 2023','\n\n

New hosts

\n

\nWelcome to our new host:
\n\n Fred Black.\n

\n\n

Last Month\'s Shows

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
IdDayDateTitleHost
3912Tue2023-08-01Emergency Show: Biltong and RooibosShane Shennan
3913Wed2023-08-02Lurking Prion Q and ALurking Prion
3914Thu2023-08-03how to deal with blistersdnt
3915Fri2023-08-04Why the hell is my audio clipping?MrX
3916Mon2023-08-07HPR Community News for July 2023HPR Volunteers
3917Tue2023-08-08Response to \"Permission Tickets\" by oneofspoonsdnt
3918Wed2023-08-09Emacs package curation, part 3dnt
3919Thu2023-08-10How I hacked my voicetuturto
3920Fri2023-08-11RV Trip 2022-2023: Southeast USAhuka
3921Mon2023-08-14HPR AudioBook Club 23 - John Carter of Mars (Books 1-3)HPR_AudioBookClub
3922Tue2023-08-15Silent KeyTrey
3923Wed2023-08-16Meal preparation.Some Guy On The Internet
3924Thu2023-08-17Mass Quick Tips for August 2023operat0r
3925Fri2023-08-18Uncommon tools and social mediaDaniel Persson
3926Mon2023-08-21Karate Do: An OverviewHipernike
3927Tue2023-08-22Audacity Update 20230702Ahuka
3928Wed2023-08-23RE: Klaatu.Some Guy On The Internet
3929Thu2023-08-24Some experiences with different notes appsLee
3930Fri2023-08-25Playing Civilization II Test of TimeAhuka
3931Mon2023-08-28What Instrument was played in hpr3905?Fred Black
3932Tue2023-08-29Short introduction to inxifolky
3933Wed2023-08-30Planning for a planner.Some Guy On The Internet
3934Thu2023-08-31Crusader Kings IItuturto
\n\n

Comments this month

\n\n

Note to Volunteers: Comments marked in green were read in the last\nCommunity News show and should be ignored in this one.

These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 16 comments in total.

\n

Past shows

\n

There are 5 comments on\n5 previous shows:

\n

Updated on 2023-08-23 22:52:00

\n

This month\'s shows

\n

There are 11 comments on 7 of this month\'s shows:

\n\n\n

Mailing List discussions

\n

\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n

\n

The threaded discussions this month can be found here:

\nhttps://lists.hackerpublicradio.com/pipermail/hpr/2023-August/thread.html\n\n\n

Events Calendar

\n

With the kind permission of LWN.net we are linking to\nThe LWN.net Community Calendar.

\n

Quoting the site:

\n
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n

Any other business

\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1), (3666,'2022-08-22','One Weird Trick',997,'I talk about getting into or advancing in cybersecurity & how keyboards could trick malware.','

In this episode, I talk about getting in to the field of cybersecurity or moving up in the field. I also talk about how keyboards could keep malware from going Boom on your system.

\n

Links:

\n\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,malware, career',0,0,1), (3669,'2022-08-25','My First Podcast: My Journey into the Computer World',1207,'How I was introduced into computers, Linux, robotics, programming, cibersecurity and more...','

Milestones in my Journey

\n
    \n
  1. Studied Windows office and played online games
  2. \n
  3. Electronics
  4. \n
  5. Programming with Scratch
  6. \n
  7. Studied Javascript with Khan Academy
  8. \n
  9. Used Processing
  10. \n
  11. Learned Arduino and robotics
  12. \n
  13. Programmed with Visual Studio Code
  14. \n
  15. Learned Git
  16. \n
  17. Learned Windows Batch, VBS, registry, and others
  18. \n
  19. Introduction to Linux and disks with Tails
  20. \n
  21. Installation of Linux mint
  22. \n
  23. Installation of Debian
  24. \n
  25. Learned Apt, sudo, and other commands
  26. \n
  27. Discovered the Raspberry Pi
  28. \n
  29. Learned ssh, vnc, servers and networking with the Raspberry Pi
  30. \n
  31. Received a Thinkpad laptop and installed on it Bodhi Linux, Linux Lite and Alpine Linux
  32. \n
  33. Learned about erasure, recovery and encryption of data
  34. \n
  35. Learned more about Linux (Screen, network configuration, emacs, programming in C)
  36. \n
  37. Discovered Nethack and Open Adventure console games
  38. \n
  39. Studied hacking and pentesting
  40. \n
  41. Helped a company with its computers and learned from it guys
  42. \n
  43. Introduction to Python and BSD
  44. \n
\n',410,29,0,'CC-BY-SA','linux, programming, cibersecurity, robotics, hardware',0,0,1), (3678,'2022-09-07','\"Stupid Users\" ... no, not those users, the other \"stupid users\"',907,'Brady & I discuss stupid things done by those of us who really should know better.','

In this week\'s episode, I chat with R. Brady Frost about the little plumber vs the gigantic rock. Then we move in to a discussion about the fallacy of stupid users with some great stories of stupid things done by those of us who really should know better. The moral of the story, is that we are all human and nothing will ever change that. Instead, we need to be prepared for when humans are human.

\n

Links:

\n\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,users,stupid human tricks,customer service',0,0,1), @@ -20191,8 +20214,9 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti (3931,'2023-08-28','What Instrument was played in hpr3905?',2040,'I reveal what instrument was played in hpr3905','

If you didn\'t really understand my mumbling and stuttering, here is\nthe page ;-)

\n

https://en.wikipedia.org/wiki/Nyckelharpa

\n',422,0,0,'CC-BY-SA','Music, quiz, Instrument',0,0,1), (3938,'2023-09-06','An open directory of web audio stream',1116,'I was looking for an open directory of web audio streams and found radio hyphen browser dot info.','

References

\n

https://www.radio-browser.info\nthe site has good searching features, and even has a player. It has a\nmap view that\'s cute but not too useful because it doesn\'t zoom in\nenough. Still fun to fly around the world and tune in simply by clicking\nthe balloons, you should try it.

\n

Mobile apps that use this directory are found on https://www.radio-browser.info/users.\nThe ones I\'ve used are TuneFM (with ads, pay what you want (I think) to\nremove ads, but very good Android Auto), and Transistor (no Android\nAuto, otherwise perfect). Open Radio is pretty good but the Android Auto\nis buggy. I have not tried any others.

\n

The episode in which Ken Fallon interviewed one of the maintainers of\nFunkwhale was hpr3808.

\n

Some stations I\'ve been listening to:

\n\n',399,0,0,'CC-BY-SA','\"internet radio\", \"free culture\"',0,0,1), (3951,'2023-09-25','Cell Phone Screen Protectors',1720,'I talk about how I fail at Cell Phone Screen Protectors','

I talk about how I fail at Cell Phone Screen Protectors

\n',36,0,1,'CC-BY-SA','tech,phone repair,cell phones,Screen Protectors',0,0,1), -(3932,'2023-08-29','Short introduction to inxi',437,'folky gives the show about inxi that Ken wished for','

Link:

\n\n',309,23,0,'CC-BY-SA','shell,inxi,forum',0,0,0), -(3971,'2023-10-23','RERERE: How to make friends.',2164,'Sgoti and Mugs chat with friends about how to make friends on the internet.','

RERERE: How to make friends.

\n

We could make a series of this?
\n

\n\n

I thought this was funny: How to Ask a\nFriend to Hang Out.

\n',391,0,1,'CC-BY-SA','making friends, Mugsup, group chat',0,0,0); +(3932,'2023-08-29','Short introduction to inxi',437,'folky gives the show about inxi that Ken wished for','

Link:

\n\n',309,23,0,'CC-BY-SA','shell,inxi,forum',0,0,1), +(3971,'2023-10-23','RERERE: How to make friends.',2164,'Sgoti and Mugs chat with friends about how to make friends on the internet.','

RERERE: How to make friends.

\n

We could make a series of this?
\n

\n\n

I thought this was funny: How to Ask a\nFriend to Hang Out.

\n',391,0,1,'CC-BY-SA','making friends, Mugsup, group chat',0,0,1), +(3944,'2023-09-14','Race for the Galaxy',947,'tuturto explains very basics of card game called Race for the Galaxy','

Race for the galaxy

\n

Race for the galaxy is a four player card game published by Rio\nGrande Games.

\n

The goal of the game is to build a space imperium and the player with\nmost victory points wins.

\n

There\'s also a computer version of the game, which saves you from\npacking up the game after playing.

\n

Turn sequence

\n

There are five phases in turn:

\n\n

At the beginning of turn, every player selects one of these phases\nand selections are revealed simultaneously. Only selected phases will be\nplayed. Player who selected a phase gets a small bonus.

\n

Explore

\n\n

Develop

\n\n

Settle

\n\n

Consume:

\n\n

Produce:

\n\n

repeat until:

\n\n

score:

\n\n

special rules

\n\n

Examples of cards

\n

Star nomad raiders

\n\n

Terraforming robots

\n\n

Public works

\n\n

Expansions

\n

All expansions add new cards.

\n

The gathering storm

\n
\n\n
\n

Rebel vs. Imperium

\n
\n\n
\n

Brink of War

\n
\n
\n
- prestige
\n
\n
    \n
  • counts as VP in the end
  • \n
  • can be used to perform actions
  • \n
\n
\n
\n\n
\n

Alien Artifacts

\n
\n\n
\n

Verdict

\n\n

Example

\n\n

In closing

\n
\n
- questions, comments, feedback?
\n
\n\n
\n
\n',364,0,0,'CC-BY-SA','race for the galaxy, card game',0,0,1); /*!40000 ALTER TABLE `eps` ENABLE KEYS */; UNLOCK TABLES; @@ -21113,4 +21137,4 @@ UNLOCK TABLES; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2023-08-23 7:57:37 +-- Dump completed on 2023-08-24 7:44:45